From ae7da0770bb60c4add9c06d9dda93045a003281c Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sun, 2 Dec 2012 15:26:14 +0100 Subject: [PATCH 1/5] GINPUT MCU driver update --- .../ginput_lld_mouse_board_olimex_stm32_lcd.h | 10 +++---- .../touch/MCU/ginput_lld_mouse_config.h | 4 +-- drivers/touchscreen/MCU/touchscreen_lld.c | 28 +++++++++---------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h b/drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h index 84f3416c..fa3dca7e 100644 --- a/drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h +++ b/drivers/ginput/touch/MCU/ginput_lld_mouse_board_olimex_stm32_lcd.h @@ -105,7 +105,7 @@ static __inline void release_bus(void) { * * @notapi */ -static __inline uint16_t read_x_value(void) { +static uint16_t read_x_value(void) { uint16_t val1, val2; adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH]; @@ -113,7 +113,7 @@ static __inline uint16_t read_x_value(void) { palSetPadMode(GPIOC, 1, PAL_MODE_INPUT_ANALOG); palSetPadMode(GPIOC, 2, PAL_MODE_OUTPUT_PUSHPULL); palSetPadMode(GPIOC, 3, PAL_MODE_OUTPUT_PUSHPULL); - + palSetPad(GPIOC, 2); palClearPad(GPIOC, 3); chThdSleepMilliseconds(1); @@ -135,7 +135,7 @@ static __inline uint16_t read_x_value(void) { * * @notapi */ -static __inline uint16_t read_y_value(void) { +static uint16_t read_y_value(void) { uint16_t val1, val2; adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH]; @@ -143,8 +143,8 @@ static __inline uint16_t read_y_value(void) { palSetPadMode(GPIOC, 3, PAL_MODE_INPUT_ANALOG); palSetPadMode(GPIOC, 0, PAL_MODE_OUTPUT_PUSHPULL); palSetPadMode(GPIOC, 1, PAL_MODE_OUTPUT_PUSHPULL); - return 42; - palSetPad(GPIOC, 1); + + palSetPad(GPIOC, 1); palClearPad(GPIOC, 0); chThdSleepMilliseconds(1); adcConvert(&ADCD1, &adc_y_config, samples, ADC_BUF_DEPTH); diff --git a/drivers/ginput/touch/MCU/ginput_lld_mouse_config.h b/drivers/ginput/touch/MCU/ginput_lld_mouse_config.h index e1aa15f3..4711625b 100644 --- a/drivers/ginput/touch/MCU/ginput_lld_mouse_config.h +++ b/drivers/ginput/touch/MCU/ginput_lld_mouse_config.h @@ -28,9 +28,9 @@ #define _LLD_GINPUT_MOUSE_CONFIG_H #define GINPUT_MOUSE_EVENT_TYPE GEVENT_TOUCH -#define GINPUT_MOUSE_NEED_CALIBRATION FALSE +#define GINPUT_MOUSE_NEED_CALIBRATION TRUE #define GINPUT_MOUSE_LLD_CALIBRATION_LOADSAVE FALSE -#define GINPUT_MOUSE_MAX_CALIBRATION_ERROR -1 +#define GINPUT_MOUSE_MAX_CALIBRATION_ERROR 10 #define GINPUT_MOUSE_READ_CYCLES 4 #define GINPUT_MOUSE_POLL_PERIOD 100 #define GINPUT_MOUSE_MAX_CLICK_JITTER 4 diff --git a/drivers/touchscreen/MCU/touchscreen_lld.c b/drivers/touchscreen/MCU/touchscreen_lld.c index d34228a6..2e3c9aea 100644 --- a/drivers/touchscreen/MCU/touchscreen_lld.c +++ b/drivers/touchscreen/MCU/touchscreen_lld.c @@ -98,27 +98,27 @@ static void ts_lld_filter(void) { * @notapi */ uint16_t ts_lld_read_x(void) { - uint16_t val1, val2; - adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH]; + uint16_t val1, val2; + adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH]; - palSetPadMode(ts->yd_port, ts->yd_pin, PAL_MODE_INPUT_ANALOG); - palSetPadMode(ts->yu_port, ts->yu_pin, PAL_MODE_INPUT_ANALOG); - palSetPadMode(ts->xl_port, ts->xl_pin, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(ts->xr_port, ts->xr_pin, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 0, PAL_MODE_INPUT_ANALOG); + palSetPadMode(GPIOC, 1, PAL_MODE_INPUT_ANALOG); + palSetPadMode(GPIOC, 2, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(GPIOC, 3, PAL_MODE_OUTPUT_PUSHPULL); - palSetPad(ts->xl_port, ts->xl_pin); - palClearPad(ts->xr_port, ts->xr_pin); + palSetPad(GPIOC, 2); + palClearPad(GPIOC, 3); chThdSleepMilliseconds(1); - adcConvert(ts->adc_driver, &adc_x_config, samples, ADC_BUF_DEPTH); + adcConvert(&ADCD1, &adc_x_config, samples, ADC_BUF_DEPTH); val1 = ((samples[0] + samples[1])/2); - - palClearPad(ts->xl_port, ts->xl_pin); - palSetPad(ts->xr_port, ts->xr_pin); + + palClearPad(GPIOC, 2); + palSetPad(GPIOC, 3); chThdSleepMilliseconds(1); - adcConvert(ts->adc_driver, &adc_x_config, samples, ADC_BUF_DEPTH); + adcConvert(&ADCD1, &adc_x_config, samples, ADC_BUF_DEPTH); val2 = ((samples[0] + samples[1])/2); - return ((val1+((1<<12)-val2))/4); + return ((val1+((1<<12)-val2))/4); } /** From 2d449b1f7c2efbbd7e1c3ea4478eaa21fe4ccb84 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sun, 2 Dec 2012 15:36:55 +0100 Subject: [PATCH 2/5] fix --- drivers/touchscreen/MCU/touchscreen_lld.c | 28 +++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/drivers/touchscreen/MCU/touchscreen_lld.c b/drivers/touchscreen/MCU/touchscreen_lld.c index 2e3c9aea..d34228a6 100644 --- a/drivers/touchscreen/MCU/touchscreen_lld.c +++ b/drivers/touchscreen/MCU/touchscreen_lld.c @@ -98,27 +98,27 @@ static void ts_lld_filter(void) { * @notapi */ uint16_t ts_lld_read_x(void) { - uint16_t val1, val2; - adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH]; + uint16_t val1, val2; + adcsample_t samples[ADC_NUM_CHANNELS * ADC_BUF_DEPTH]; - palSetPadMode(GPIOC, 0, PAL_MODE_INPUT_ANALOG); - palSetPadMode(GPIOC, 1, PAL_MODE_INPUT_ANALOG); - palSetPadMode(GPIOC, 2, PAL_MODE_OUTPUT_PUSHPULL); - palSetPadMode(GPIOC, 3, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(ts->yd_port, ts->yd_pin, PAL_MODE_INPUT_ANALOG); + palSetPadMode(ts->yu_port, ts->yu_pin, PAL_MODE_INPUT_ANALOG); + palSetPadMode(ts->xl_port, ts->xl_pin, PAL_MODE_OUTPUT_PUSHPULL); + palSetPadMode(ts->xr_port, ts->xr_pin, PAL_MODE_OUTPUT_PUSHPULL); - palSetPad(GPIOC, 2); - palClearPad(GPIOC, 3); + palSetPad(ts->xl_port, ts->xl_pin); + palClearPad(ts->xr_port, ts->xr_pin); chThdSleepMilliseconds(1); - adcConvert(&ADCD1, &adc_x_config, samples, ADC_BUF_DEPTH); + adcConvert(ts->adc_driver, &adc_x_config, samples, ADC_BUF_DEPTH); val1 = ((samples[0] + samples[1])/2); - - palClearPad(GPIOC, 2); - palSetPad(GPIOC, 3); + + palClearPad(ts->xl_port, ts->xl_pin); + palSetPad(ts->xr_port, ts->xr_pin); chThdSleepMilliseconds(1); - adcConvert(&ADCD1, &adc_x_config, samples, ADC_BUF_DEPTH); + adcConvert(ts->adc_driver, &adc_x_config, samples, ADC_BUF_DEPTH); val2 = ((samples[0] + samples[1])/2); - return ((val1+((1<<12)-val2))/4); + return ((val1+((1<<12)-val2))/4); } /** From 537f76bedf88516542ee8eb64daef02694ab9f95 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sun, 2 Dec 2012 16:06:15 +0100 Subject: [PATCH 3/5] ILI9320 fix --- drivers/gdisp/ILI9320/gdisp_lld_config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gdisp/ILI9320/gdisp_lld_config.h b/drivers/gdisp/ILI9320/gdisp_lld_config.h index ca534568..d55f2115 100644 --- a/drivers/gdisp/ILI9320/gdisp_lld_config.h +++ b/drivers/gdisp/ILI9320/gdisp_lld_config.h @@ -40,8 +40,8 @@ #define GDISP_HARDWARE_CLEARS TRUE #define GDISP_HARDWARE_FILLS TRUE -#define GDISP_HARDWARE_BITFILLS TRUE -#define GDISP_HARDWARE_SCROLL TRUE +#define GDISP_HARDWARE_BITFILLS FALSE +#define GDISP_HARDWARE_SCROLL FALSE #define GDISP_HARDWARE_PIXELREAD TRUE #define GDISP_HARDWARE_CONTROL TRUE From ff8f6e4409b976a726a9523951e5ed33d9de7d94 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sun, 2 Dec 2012 16:10:46 +0100 Subject: [PATCH 4/5] demo doc --- demos/modules/ginput_touch_driver_test/main.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/demos/modules/ginput_touch_driver_test/main.c b/demos/modules/ginput_touch_driver_test/main.c index dc8bb0f9..d586ee6f 100644 --- a/demos/modules/ginput_touch_driver_test/main.c +++ b/demos/modules/ginput_touch_driver_test/main.c @@ -18,6 +18,24 @@ along with this program. If not, see . */ +/* + * Make sure you have the following enabled in your halconf.h: + * + * #define GFX_USE_GDISP TRUE + * #define GFX_USE_GINPUT TRUE + * #define GFX_USE_GEVENT TRUE + * #define GFX_USE_GTIMER TRUE + * #define GFX_USE_GWIN TRUE + * + * #define GWIN_NEED_CONSOLE TRUE + * #define GWIN_NEED_BUTTON TRUE + * + * #define GINPUT_NEED_MOUSE TRUE + * #define GINPUT_NEED_TOUCH TRUE + * + * #define GDISP_NEED_CLIP TRUE + */ + #include "ch.h" #include "hal.h" #include "chprintf.h" From 09fc35864aa695cc46dcb95ed3951a365622b709 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Mon, 3 Dec 2012 22:54:49 +0100 Subject: [PATCH 5/5] title justify to left instead of center in ginput touch code --- demos/modules/ginput_touch_driver_test/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/demos/modules/ginput_touch_driver_test/main.c b/demos/modules/ginput_touch_driver_test/main.c index d586ee6f..78f29f86 100644 --- a/demos/modules/ginput_touch_driver_test/main.c +++ b/demos/modules/ginput_touch_driver_test/main.c @@ -71,7 +71,7 @@ int main(void) { ghNext = ghPrev = 0; // Create our title - gdispFillStringBox(0, 0, swidth, 20, "Touch Calibration", &fontUI2, Red, White, justifyCenter); + gdispFillStringBox(0, 0, swidth, 20, "Touch Calibration", &fontUI2, Red, White, justifyLeft); // Create our main display window ghc = gwinCreateConsole(&gc, 0, 20, swidth, sheight-20, &fontUI2); @@ -246,7 +246,7 @@ StepCalibrate: } // Calibration used the whole screen - re-establish our title - gdispFillStringBox(0, 0, swidth, 20, "Touch Calibration", &fontUI2, Green, White, justifyCenter); + gdispFillStringBox(0, 0, swidth, 20, "Touch Calibration", &fontUI2, Green, White, justifyLeft); gwinButtonDraw(ghNext); gwinButtonDraw(ghPrev);