/* initialize for touch & calibration */ int touch_calibration_init(void) { rt_uint8_t magic = 0; calculate_data_t data; struct rtgui_calibration_ops *ops; ops = calibration_get_ops(); /* initialization the eeprom on chip */ EEPROM_Init(); /* initialization the touch driver */ rtgui_touch_hw_init("spi10"); /* set callback to save calibration data */ calibration_set_after(calibration_data_save); /* initialization rtgui tonch server */ rtgui_touch_init(ops); /* restore calibration data */ EEPROM_Read(0, CALIBRATION_DATA_PAGE, &magic, MODE_8_BIT, 1); if (CALIBRATION_DATA_MAGIC != magic) { rt_kprintf("touch is not calibration,now calibration it please.\n"); calibration_init(RT_NULL); } else { EEPROM_Read(CALIBRATION_DATA_OFFSET, CALIBRATION_DATA_PAGE, &data, MODE_8_BIT, sizeof(calculate_data_t)); calibration_set_data(&data); } /* power down the EEPROM */ EEPROM_PowerDown(ENABLE); return 0; }
void test_last_point(void) { calibration_set_data(calibration_data); TEST_ASSERT_EQUAL(400, get_calibration(200)); }
void test_above_bounds(void) { calibration_set_data(calibration_data); TEST_ASSERT_EQUAL(0, get_calibration(201)); }
void test_interpolation(void) { calibration_set_data(calibration_data); TEST_ASSERT_EQUAL(142, get_calibration(42)); }
void test_middle_point(void) { calibration_set_data(calibration_data); TEST_ASSERT_EQUAL(200, get_calibration(100)); }
void test_first_point(void) { calibration_set_data(calibration_data); TEST_ASSERT_EQUAL(100, get_calibration(0)); }
void test_below_bounds(void) { calibration_set_data(calibration_data); TEST_ASSERT_EQUAL(0, get_calibration(-10)); }
void test_empty(void) { calibration_set_data(calibration_empty_data); TEST_ASSERT_EQUAL(0, get_calibration(10)); }