diff --git a/src/W800 SDK v1.00.08/app/gfx/gfx_task.c b/src/W800 SDK v1.00.08/app/gfx/gfx_task.c index 112f0bc..991a640 100644 --- a/src/W800 SDK v1.00.08/app/gfx/gfx_task.c +++ b/src/W800 SDK v1.00.08/app/gfx/gfx_task.c @@ -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); + }*/ } } \ No newline at end of file