summaryrefslogtreecommitdiff
path: root/apps/settings_list.c
diff options
context:
space:
mode:
authorMaurus Cuelenaere <mcuelenaere@gmail.com>2009-06-16 17:04:47 +0000
committerMaurus Cuelenaere <mcuelenaere@gmail.com>2009-06-16 17:04:47 +0000
commitb8435f54464fd50c145d321b118d773ea05ef6a2 (patch)
treea514bbe44e41c454dfca56184376209787c40268 /apps/settings_list.c
parentb1a60934c5d178842ec3bec83a3e5286410cab7d (diff)
downloadrockbox-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.c50
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
460static 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
486static 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}
492static bool tsc_is_changed(void* setting, void* defaultval)
493{
494 return memcmp(setting, defaultval, sizeof(struct touchscreen_parameter)) != 0;
495}
496static void tsc_set_default(void* setting, void* defaultval)
497{
498 memcpy(setting, defaultval, sizeof(struct touchscreen_parameter));
499}
500#endif
455const struct settings_list settings[] = { 501const 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};