diff options
author | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2009-06-16 17:04:47 +0000 |
---|---|---|
committer | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2009-06-16 17:04:47 +0000 |
commit | b8435f54464fd50c145d321b118d773ea05ef6a2 (patch) | |
tree | a514bbe44e41c454dfca56184376209787c40268 /apps/settings_list.c | |
parent | b1a60934c5d178842ec3bec83a3e5286410cab7d (diff) | |
download | rockbox-b8435f54464fd50c145d321b118d773ea05ef6a2.tar.gz rockbox-b8435f54464fd50c145d321b118d773ea05ef6a2.zip |
Touchscreen targets: add calibration screen + rewrite calibration driver (FS#10295)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21312 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/settings_list.c')
-rw-r--r-- | apps/settings_list.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/apps/settings_list.c b/apps/settings_list.c index 74e2cab3cd..dcad718ee5 100644 --- a/apps/settings_list.c +++ b/apps/settings_list.c | |||
@@ -53,6 +53,10 @@ | |||
53 | #include "iap.h" | 53 | #include "iap.h" |
54 | #endif | 54 | #endif |
55 | #include "statusbar.h" | 55 | #include "statusbar.h" |
56 | #ifdef HAVE_TOUCHSCREEN | ||
57 | #include "touchscreen.h" | ||
58 | #include "ctype.h" /* For isspace() */ | ||
59 | #endif | ||
56 | 60 | ||
57 | #define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT) | 61 | #define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT) |
58 | /** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h | 62 | /** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h |
@@ -452,6 +456,48 @@ static void qs_set_default(void* setting, void* defaultval) | |||
452 | find_setting(defaultval, (int*)setting); | 456 | find_setting(defaultval, (int*)setting); |
453 | } | 457 | } |
454 | #endif | 458 | #endif |
459 | #ifdef HAVE_TOUCHSCREEN | ||
460 | static void tsc_load_from_cfg(void* setting, char*value) | ||
461 | { | ||
462 | struct touchscreen_parameter *var = (struct touchscreen_parameter*) setting; | ||
463 | |||
464 | /* Replacement for sscanf(value, "%d ..., &var->A, ...); */ | ||
465 | int vals[7], count = 0; | ||
466 | while(*value != 0 && count < 7) | ||
467 | { | ||
468 | if(isspace(*value)) | ||
469 | value++; | ||
470 | else | ||
471 | { | ||
472 | vals[count++] = atoi(value); | ||
473 | while(!isspace(*value)) | ||
474 | value++; | ||
475 | } | ||
476 | } | ||
477 | var->A = vals[0]; | ||
478 | var->B = vals[1]; | ||
479 | var->C = vals[2]; | ||
480 | var->D = vals[3]; | ||
481 | var->E = vals[4]; | ||
482 | var->F = vals[5]; | ||
483 | var->divider = vals[6]; | ||
484 | } | ||
485 | |||
486 | static char* tsc_write_to_cfg(void* setting, char*buf, int buf_len) | ||
487 | { | ||
488 | const struct touchscreen_parameter *var = (const struct touchscreen_parameter*) setting; | ||
489 | snprintf(buf, buf_len, "%d %d %d %d %d %d %d", var->A, var->B, var->C, var->D, var->E, var->F, var->divider); | ||
490 | return buf; | ||
491 | } | ||
492 | static bool tsc_is_changed(void* setting, void* defaultval) | ||
493 | { | ||
494 | return memcmp(setting, defaultval, sizeof(struct touchscreen_parameter)) != 0; | ||
495 | } | ||
496 | static void tsc_set_default(void* setting, void* defaultval) | ||
497 | { | ||
498 | memcpy(setting, defaultval, sizeof(struct touchscreen_parameter)); | ||
499 | } | ||
500 | #endif | ||
455 | const struct settings_list settings[] = { | 501 | const struct settings_list settings[] = { |
456 | /* sound settings */ | 502 | /* sound settings */ |
457 | SOUND_SETTING(F_NO_WRAP,volume, LANG_VOLUME, "volume", SOUND_VOLUME), | 503 | SOUND_SETTING(F_NO_WRAP,volume, LANG_VOLUME, "volume", SOUND_VOLUME), |
@@ -1470,6 +1516,10 @@ const struct settings_list settings[] = { | |||
1470 | CHOICE_SETTING(0, touch_mode, LANG_TOUCHSCREEN_MODE, TOUCHSCREEN_BUTTON, | 1516 | CHOICE_SETTING(0, touch_mode, LANG_TOUCHSCREEN_MODE, TOUCHSCREEN_BUTTON, |
1471 | "touchscreen mode", "point,grid", NULL, 2, | 1517 | "touchscreen mode", "point,grid", NULL, 2, |
1472 | ID2P(LANG_TOUCHSCREEN_POINT), ID2P(LANG_TOUCHSCREEN_GRID)), | 1518 | ID2P(LANG_TOUCHSCREEN_POINT), ID2P(LANG_TOUCHSCREEN_GRID)), |
1519 | CUSTOM_SETTING(0, ts_calibration_data, -1, | ||
1520 | &default_calibration_parameters, "touchscreen calibration", | ||
1521 | tsc_load_from_cfg, tsc_write_to_cfg, | ||
1522 | tsc_is_changed, tsc_set_default), | ||
1473 | #endif | 1523 | #endif |
1474 | OFFON_SETTING(0, prevent_skip, LANG_PREVENT_SKIPPING, false, "prevent track skip", NULL), | 1524 | OFFON_SETTING(0, prevent_skip, LANG_PREVENT_SKIPPING, false, "prevent track skip", NULL), |
1475 | }; | 1525 | }; |