\r
static uint8_t time_cnt = 0;\r
\r
-static uint8_t history_wear_status = 2;\r
-\r
-static uint8_t cywee_wear_status = 0;\r
+static int history_wear_status = -1;\r
\r
//============================================================================\r
// Private function\r
\r
static void error_handle(void);\r
\r
-static void pah8009_wearstatus_update(void)\r
-{\r
- if(history_wear_status != cywee_wear_status)\r
- {\r
- history_wear_status = cywee_wear_status;\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,&cywee_wear_status);\r
-#endif\r
- }\r
-}\r
\r
static void pah8009_unwearstatus_update(void)\r
{\r
func(PPG_MSG_TYPE_WEARSTAT_UPDATE,&data,1);\r
func(PPG_MSG_TYPE_WEARSTAT_UPDATE,&data,1);\r
}\r
+#endif\r
+} \r
\r
- if(uapi_dev_runtime_get_train_status())\r
+static void pah8009_wearstatus_update(int wear_status)\r
+{\r
+ if(history_wear_status != wear_status)\r
{\r
- cywee_wear_status = 0;\r
- pah8009_wearstatus_update();\r
+ history_wear_status = wear_status;\r
#ifdef SUPPORT_CYWEE_SERVICE\r
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_CHANGE,&data);\r
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE,(uint8_t *)&history_wear_status);\r
#endif\r
}\r
-#endif\r
-} \r
+\r
+ if(wear_status != 1)\r
+ {\r
+ pah8009_unwearstatus_update();\r
+ }\r
+}\r
\r
static void bubblesort(float *input,int count) \r
{\r
\r
// PRINT("touch_flag : %d\n",touch_flag);\r
\r
-#ifdef SUPPORT_PPG_SERVICE\r
- // ppg_msg_callback_t func = ppg_get_send_msg_callback_func();\r
-\r
- // if(func != NULL)\r
- // {\r
- // uint8_t data = (uint8_t)touch_flag;\r
- // cywee_wear_status = data;\r
- // func(PPG_MSG_TYPE_WEARSTAT_UPDATE, &data, 1);\r
- // }\r
-#endif\r
+ pah8009_wearstatus_update(touch_flag);\r
\r
if (_main.ppg_is_enabled)\r
{\r
pah_sensor_stop();\r
if(uapi_dev_runtime_get_sleep_monitoring_status() && uapi_dev_runtime_get_hrs_passivity_flag())\r
{\r
- pah8009_wearstatus_update(); \r
+ pah8009_wearstatus_update(history_wear_status); \r
uapi_dev_runtime_set_hrs_passivity(0); \r
}\r
}\r
void mixo_check(void)
{
- if(mixo_get_check_mode() == TIMER_MODE)
+ // if(mixo_get_check_mode() == TIMER_MODE)
mixo_ots_timer_callback();
// else if(mixo_get_check_mode() == INT_MODE)
// {
* @Author: penglei 1624952103@qq.com
* @Date: 2025-01-04 10:53:54
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-01-04 16:38:46
+ * @LastEditTime: 2025-07-05 15:32:27
* @FilePath: /sdk615/code/sdk/zhihui/drivers/rotary_encoder/mixo/src/mixo_ots_access.c
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/
*regData = 0x00; // 清空数据
// printf("<-%02X,%02X,%02X\r\n",slave_addr,regAddr,*regData);
// return mixo_gpio_i2c_write_read(slave_addr, ®Addr, 1, regData, 1);
- return custom_i2c_read_regs(slave_addr, regAddr, 1, regData, 1,MIXO_OTS_I2C_BUS);
+ custom_i2c_read_regs(slave_addr, regAddr, 1, regData, 1,MIXO_OTS_I2C_BUS);
+ return 0;
}
int mixo_ots_reg_consecutive_read(uint8_t regStartAddr,int len,uint8_t* regData)
// uint8_t tmp[2] = {regAddr, regData};
// printf("->%02X,%02X,%02X\r\n",slave_addr,regAddr,regData);
// return mixo_gpio_i2c_write_read(slave_addr, tmp, 2, NULL, 0);
- return custom_i2c_write_reg(slave_addr, regAddr, 1, ®Data, 1,MIXO_OTS_I2C_BUS);
+ custom_i2c_write_reg(slave_addr, regAddr, 1, ®Data, 1,MIXO_OTS_I2C_BUS);
+ return 0;
}
{
return;
}
- if(abs(x)>=16 )
+ if(abs(x)>=8 )
{
- ots_result += x/16; //大于4的值除以4, 代表角度, 单位0.5°
+ ots_result += x/8; //大于4的值除以4, 代表角度, 单位0.5°
}
else
{
g_encoder_callback();
}
+static void report_zero_data_for_start_stop_flag(void)
+{
+ ots_result = 0;
+
+ if (g_encoder_callback != NULL)
+ g_encoder_callback();
+}
void mixo_ots_timer_callback(void)
{
uint8_t mot_status = 0x00;
mixo_ots_get_mot_status(&mot_status);
-
+ // printf("mot_status:0x%x\n",mot_status);
if ((mot_status & 0x80) == 0x80)
{
timer_cnt = 0;
// printf("%ld,%d,%d,%d,%d\r\n", timestamp, raw_data.dx, raw_data.dy, mot_status, dx_sum);
// PRINT("%d,%d,%d,%d\r\n",raw_data.dx, raw_data.dy, mot_status, dx_sum);
- put_crown_result(raw_data.dx);
+ // ots_result = raw_data.dx;
+
+ if (stand_still == 1)
+ {
+ //上次是静止,上报状态改变
+ report_zero_data_for_start_stop_flag();
+ }
stand_still = 0;
- if (g_encoder_callback != NULL)
- g_encoder_callback();
+ put_crown_result(raw_data.dx);
+
+ // if (g_encoder_callback != NULL)
+ // g_encoder_callback();
}
else
// mixo_ots_forced_clear_int(); // 强制拉高MOT脚
// int_mode = 1;
// }
+ if (stand_still == 0)
+ {
+ //上次是转动,上报状态改变
+ report_zero_data_for_start_stop_flag();
+ }
stand_still = 1;
}
}
*/
#define MIXO_SERVICE_CMD_TIMER_CHECK 0x11
-#define MIXO_SERVICE_TIMER_CHECK_MS 30
+#define MIXO_SERVICE_TIMER_CHECK_MS 20
static bool g_mixo_service_initialled = false;
if(mixo_service_timer_running == true && g_mixo_service_timer)
{
mixo_suspend();
- mixo_clean_result();
+ // mixo_clean_result();
osTimerStop(g_mixo_service_timer);
mixo_service_timer_running = false;
}
}
}
-#define MIXO_BOARD_TASK_SIZE 0x500
+#define MIXO_BOARD_TASK_SIZE 0x1000
errcode_t uapi_mixo_service_init(void)
{
PRINT("uapi_mixo_service_init !\r\n");
app_task_definition_t taskcfg={0};
taskcfg.create_queue_handle = create_mixo_queue;
taskcfg.attr.name="mixo_service";
- taskcfg.attr.priority = osPriorityBelowNormal4;
+ taskcfg.attr.priority = osPriorityNormal1;
taskcfg.attr.stack_size = MIXO_BOARD_TASK_SIZE;
taskcfg.func = mixo_service_check_task;
taskcfg.use_mem = USE_EXTEND_MEM;
return ERRCODE_FAIL;
}
- mixo_init();
+ // mixo_init();
g_mixo_service_timer = osTimerNew((osTimerFunc_t)mixo_service_timer_callback, osTimerPeriodic, NULL, NULL);
void power_on_cat1(void)
{
- #if defined(FD230) && !(defined(BOARD_W9) || defined(BOARD_N9))
+ #if defined(BOARD_FD230)
uapi_cat1_power_on(1);
uapi_cat1_reset(0);
- #else
+ #elif (defined(BOARD_W9) || defined(BOARD_N9))
uapi_cat1_reset(0);
uapi_cat1_power_on(1);
uapi_cat1_bat_on(1);
void power_off_cat1(void)
{
- #if defined(FD230) && !(defined(BOARD_W9) || defined(BOARD_N9))
+ #if defined(BOARD_FD230)
uapi_cat1_reset(1);
uapi_cat1_power_on(0);
- #else
+ #elif (defined(BOARD_W9) || defined(BOARD_N9))
uapi_cat1_bat_on(0);
uapi_cat1_reset(1);
uapi_cat1_power_on(1);
{
return;
}
+
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
+ if (cnt == 0)
+ {
+ uapi_pm_add_sleep_veto(PM_ID_CAT1);
+ }
+
uapi_save_runtime_log(RUNTIME_LOG_CAT1_4G_OPEN);
power_on_cat1();
// if(!uapi_dev_runtime_get_saveele_status())
}
#endif
+
+ cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
+ if (cnt == 1)
+ {
+ uapi_pm_remove_sleep_veto(PM_ID_CAT1);
+ }
}
else
{
/*4G 开电有时有干扰进日志串口,因此关闭4G才开启日志串口*/
// uapi_custom_set_uart_rx_enable_flag(true);
- uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
- if (cnt == 1)
- {
- uapi_pm_remove_sleep_veto(PM_ID_CAT1);
- }
-
#ifdef SUPPORT_TCPIP
tcp_thread_id = tcp_get_thread_id();
if(tcp_thread_id != NULL)
PRINT("tcpip_thread_suspend succed\n");
}
#endif
+
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
+ if (cnt == 1)
+ {
+ uapi_pm_remove_sleep_veto(PM_ID_CAT1);
+ }
+
}
}