Test code to try the touch screen driver out (CST816D)

This commit is contained in:
Th3maz1ng 2023-01-01 19:01:37 +01:00
parent 857cfef622
commit b5fc007404

View File

@ -37,6 +37,7 @@ static void date_time_cb(struct tm * const dateTime)
{
if(!dateTime)return;
tls_get_rtc(dateTime);
//APP_LOG_DEBUG("RTC time : %d:%d:%d", dateTime->tm_hour, dateTime->tm_min, dateTime->tm_sec);
}
WatchFace_t watchFace;
@ -47,6 +48,7 @@ SettingsScreen_t settingsScreen;
struct bma4_dev bma;
struct bma4_accel_config accel_conf;
struct bma456w_wrist_wear_wakeup_params setting;
struct bma4_int_pin_config pin_config;
uint16_t int_status;
static void setBrightnessCb(uint8_t brightness)
@ -118,6 +120,18 @@ static void delay_us(uint32_t period, void *intf_ptr)
}
/*uint16_t x = 0, y = 0, action = 0;
static void touch_screen_isr(void *arg)
{
tls_clr_gpio_irq_status(WM_IO_PB_00);
uint8_t tc_data[9];
i2c_read(0x15, 0x00, tc_data, sizeof tc_data);
x = ((tc_data[3] & 0x0f) << 8) | tc_data[4];
y = ((tc_data[5] & 0x0f) << 8) | tc_data[6];
action = tc_data[3] >> 6;
}*/
void gfx_task(void *param)
{
APP_LOG_TRACE("starting");
@ -131,7 +145,7 @@ void gfx_task(void *param)
display_driver.hor_res = LCD_PIXEL_WIDTH;
display_driver.ver_res = LCD_PIXEL_HEIGHT;
display_driver.rotated = LV_DISP_ROT_180;
display_driver.rotated = LV_DISP_ROT_NONE;
lv_disp_draw_buf_init(&lvgl_draw_buffer_dsc, lvgl_draw_buffer, NULL, LVGL_GFX_BUFFER_SIZE);
@ -178,7 +192,7 @@ void gfx_task(void *param)
lv_scr_load(watchFace.display);
/* Let's init the I2C interface */
i2c_init(WM_IO_PA_04, WM_IO_PA_01, 400000);
i2c_init(WM_IO_PA_04, WM_IO_PA_01, 100000);
uint8_t aliveCounter = 0;
@ -200,7 +214,8 @@ void gfx_task(void *param)
else
APP_LOG_INFO("QMC5883L configured");
QMC5883L_set_calibration_data(-900, 2500, -1400, 1400, 2300, 7500, 0.0);
//QMC5883L_set_calibration_data(-900, 2500, -1400, 1400, 2300, 7500, 0.0);
QMC5883L_set_calibration_data(4812, 8550, -3200, 20, -2200, 3500, 0.0);
/* Init the BMP280 */
if(!BMP280_init())
@ -223,7 +238,7 @@ void gfx_task(void *param)
bma.delay_us = &(delay_us);
bma.read_write_len = 46;
bma.perf_mode_status = BMA4_DISABLE;
if(bma456w_init(&bma) == BMA4_OK)
APP_LOG_INFO("BMA456 init");
else
@ -258,18 +273,30 @@ void gfx_task(void *param)
APP_LOG_DEBUG("%d %d %d %d %d %d %d %d", setting.min_angle_focus, setting.min_angle_non_focus, setting.angle_landscape_right, setting.angle_landscape_left, setting.angle_portrait_up, setting.angle_portrait_down, setting.min_dur_moved, setting.min_dur_quite);
bma456w_map_interrupt(BMA4_INTR1_MAP, BMA456W_WRIST_WEAR_WAKEUP_INT, BMA4_ENABLE, &bma);
if(bma4_get_int_pin_config(&pin_config, BMA4_INTR1_MAP, &bma) == BMA4_OK)
APP_LOG_INFO("BMA456 get pin conf ok");
else
APP_LOG_INFO("BMA456 get pin conf failed");
//bma456w_map_interrupt(BMA4_INTR1_MAP, (BMA456W_ANY_MOT_INT | BMA456W_NO_MOT_INT), BMA4_ENABLE, &bma);
if(bma456w_map_interrupt(BMA4_INTR1_MAP, BMA456W_WRIST_WEAR_WAKEUP_INT, BMA4_ENABLE, &bma) == BMA4_OK)
APP_LOG_INFO("BMA456 map int ok");
else
APP_LOG_INFO("BMA456 map int failed");
/*struct bma456w_any_no_mot_config any_no_mot = {.threshold = 10, .duration = 4, .axes_en = BMA456W_EN_ALL_AXIS};
bma456w_set_any_mot_config(&any_no_mot, &bma);
bma456w_set_no_mot_config(&any_no_mot, &bma);*/
pin_config.edge_ctrl = BMA4_EDGE_TRIGGER;
pin_config.output_en = BMA4_OUTPUT_ENABLE;
pin_config.lvl = BMA4_ACTIVE_LOW;
pin_config.od = BMA4_PUSH_PULL;
pin_config.input_en = BMA4_INPUT_DISABLE;
if(bma4_set_int_pin_config(&pin_config, BMA4_INTR1_MAP, &bma) == BMA4_OK)
APP_LOG_INFO("BMA456 set pin conf ok");
else
APP_LOG_INFO("BMA456 set pin conf failed");
/*tls_gpio_cfg(WM_IO_PB_00, WM_GPIO_DIR_INPUT, WM_GPIO_ATTR_PULLHIGH);
tls_gpio_isr_register(WM_IO_PB_00, &(touch_screen_isr), NULL);
tls_gpio_irq_enable(WM_IO_PB_00, WM_GPIO_IRQ_TRIG_FALLING_EDGE);*/
for(;;)
{
@ -278,35 +305,46 @@ void gfx_task(void *param)
if(compass_screen_is_in_use(&compassScreen) && QMC5883L_is_data_available())
{
//QMC5883L_MData_t MDataRaw = QMC5883L_get_MFields_raw();
//APP_LOG_TRACE("X %d Y %d Z %d", MDataRaw.MFieldX, MDataRaw.MFieldY, MDataRaw.MFieldZ);
/*__disable_irq();
QMC5883L_MData_t MDataRaw = QMC5883L_get_MFields_raw();
APP_LOG_TRACE("X %d Y %d Z %d", MDataRaw.MFieldX, MDataRaw.MFieldY, MDataRaw.MFieldZ);
__enable_irq();*/
QMC5883L_MData_calibrated_t MData = QMC5883L_get_MFields_calibrated();
compass_screen_set_azimuth(&compassScreen, angle_with_offset(QMC5883L_get_azimuth(MData), 180));
}
uint8_t rslt = bma456w_read_int_status(&int_status, &bma);
/*uint8_t rslt = bma456w_read_int_status(&int_status, &bma);
if(rslt != BMA4_OK)
APP_LOG_DEBUG("Failed to read int status");
/* Check if step counter interrupt is triggered */
if((BMA4_OK == rslt) && (int_status & BMA456W_ANY_MOT_INT))
{
APP_LOG_DEBUG("Motion detected");
}
if((BMA4_OK == rslt) && (int_status & BMA456W_WRIST_WEAR_WAKEUP_INT))
{
APP_LOG_DEBUG("Wrist tilt");
}
}*/
if(++aliveCounter % 200 == 0)
{
float temp = BMP280_get_temperature();
BMP280_trigger_measurement();
APP_LOG_DEBUG("GFX thread, temp : %0.2f", temp);
//APP_LOG_DEBUG("------------ x %d y %d, action : %d", x, y, action);
aliveCounter = 0;
}
/* Handle inactivity periods : */
/*if(lv_disp_get_inactive_time(NULL) > 10000)
{
// First, we disable the display backlight and we set all the peripherals in their low power mode
lcd_set_backlight(&LCDConfig, 0);
// Let's sleep
tls_pmu_sleep_start();
// On wake up, we force the watch face to sync up with the rtc /!\ RTC update delay WTF ?
tls_os_time_delay(1);
watch_face_force_sync(&watchFace);
lv_disp_trig_activity(NULL);
lcd_set_backlight(&LCDConfig, 255);
}*/
}
}