#define TIMING_FIRST_TIMER_INTERVAL (3 * 1000) // ms
#define TIMING_TIMER_INTERVAL (20 * 1000) // ms
+#define MMI_GUI_TIMING_TASK_PRIORITY 219
+#define MMI_GUI_TIMING_TASK_STACK_SIZE (1 * 1024)
+#define MMI_GUI_TIMING_MSG_QUEUE_SIZE (16)
+
+TASK_HANDLE * s_gui_timing_task_id = NULL;
+
+static void mmi_gui_timing_task_20_second_mission(void * time_param);
+static void mmi_gui_timing_task_1_minute_mission(void * time_param);
+
+
+void mmi_gui_timing_task_msg_send(MMI_GUI_TIMING_MSG_ID_E msg_id, void * msg_param)
+{
+ if(NULL == s_gui_timing_task_id)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: task not exist\n",__FUNCTION__,__LINE__);
+ if(NULL != msg_param)
+ Hal_Mem_Free(msg_param);
+
+ return;
+ }
+
+ if((MMI_GUI_TIMING_MSG_QUEUE_SIZE - 1) < Hal_Get_Message_Count(s_gui_timing_task_id))
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: msg queue full\n",__FUNCTION__,__LINE__);
+ if(NULL != msg_param)
+ Hal_Mem_Free(msg_param);
+
+ return;
+ }
+
+ printf("[@CHENG_DEBUG][%s][%d]: msg_id=%d\n",__FUNCTION__,__LINE__, msg_id);
+ mmi_gui_timing_task_msg_t * msg = Hal_Mem_Alloc(sizeof(mmi_gui_timing_task_msg_t));
+ if(NULL == msg)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n",__FUNCTION__,__LINE__);
+ if(NULL != msg_param)
+ Hal_Mem_Free(msg_param);
+
+ return;
+ }
+ msg->msg_id = msg_id;
+ msg->msg_param = msg_param;
+
+ Hal_Send_Message((TASK_ID)s_gui_timing_task_id, (void *)msg);
+}
+
+static void mmi_gui_timing_task_handle(void * param)
+{
+ mmi_gui_timing_task_msg_t * msg = (mmi_gui_timing_task_msg_t *)param;
+ MMI_GUI_TIMING_MSG_ID_E msg_id = msg->msg_id;
+ void * msg_param = msg->msg_param;
+
+ printf("[@CHENG_DEBUG][%s][%d]: msg_id=%d\n",__FUNCTION__,__LINE__, msg_id);
+ switch(msg_id)
+ {
+ case MMI_GUI_TIMING_MSG_20_SECOND:
+ mmi_gui_timing_task_20_second_mission(msg_param);
+ break;
+
+ case MMI_GUI_TIMING_MSG_1_MINUTE:
+ mmi_gui_timing_task_1_minute_mission(msg_param);
+ break;
+
+ default:
+ break;
+ }
+}
+
+static void mmi_gui_timing_task_entry(void * para)
+{
+ while(NULL == s_gui_timing_task_id)
+ {
+ uos_sleep(10);
+ }
+
+ while(1)
+ {
+ mmi_gui_timing_task_msg_t * msg = (mmi_gui_timing_task_msg_t *)Hal_Receive_Message((TASK_ID)s_gui_timing_task_id, TRUE);
+
+ mmi_gui_timing_task_handle(msg);
+
+ Hal_Mem_Free(msg->msg_param);
+ Hal_Mem_Free(msg);
+ }
+}
+
+void mmi_gui_timing_task_create(void)
+{
+ s_gui_timing_task_id = uos_create_task(mmi_gui_timing_task_entry,
+ NULL,
+ MMI_GUI_TIMING_MSG_QUEUE_SIZE,
+ MMI_GUI_TIMING_TASK_STACK_SIZE,
+ MMI_GUI_TIMING_TASK_PRIORITY,
+ "mmi_gui_timing_task");
+
+ printf("[@CHENG_DEBUG][%s][%d]: task_id=0x%x\n",__FUNCTION__,__LINE__, s_gui_timing_task_id);
+}
+
+static void mmi_gui_timing_task_20_second_mission(void * time_param)
+{
+ hal_rtc_t cur_time = {0};
+
+ Hal_Mem_Copy(&cur_time, time_param, sizeof(hal_rtc_t));
+
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ // pedometer
+ mmi_pedometer_steps_mission(cur_time);
+
+
+
+
+}
+
+static void mmi_gui_timing_task_1_minute_mission(void * time_param)
+{
+ hal_rtc_t cur_time = {0};
+
+ Hal_Mem_Copy(&cur_time, time_param, sizeof(hal_rtc_t));
+
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ // check remind
+ mmi_remind_mission_check(cur_time);
+
+ // check sleep time
+#ifdef __MMI_SLEEP_FUNCTION_SUPPORT__
+ mmi_watch_sleep_time_mission_check();
+#endif
+
+ // check tcms
+#ifdef __MMI_CUSTOM_HENGAI_TCMS__
+ mmi_hengai_tcms_mission_check();
+#endif
+
+
+
+
+}
+
static void timing_timer_callback(uint32_t param)
{
hal_rtc_t cur_time = {0};
Hal_Rtc_Gettime(&cur_time);
- printf("[@CHENG_DEBUG][%s][%d]: %d,%d,%d\n", __FUNCTION__, __LINE__, cur_time.tm_hour, cur_time.tm_min, cur_time.tm_sec);
+ printf("[@CHENG_DEBUG][%s][%d]: %02d:%02d:%02d\n", __FUNCTION__, __LINE__, cur_time.tm_hour, cur_time.tm_min, cur_time.tm_sec);
uos_timer_stop(s_timing_control_timer);
uos_timer_start(s_timing_control_timer, MS_TO_TICKS(TIMING_TIMER_INTERVAL), 0, timing_timer_callback, NULL);
- // pedometer
- mmi_pedometer_steps_mission(cur_time);
+ hal_rtc_t * p_cur_time_20 = Hal_Mem_Alloc(sizeof(hal_rtc_t));
+ Hal_Mem_Copy(p_cur_time_20, &cur_time, sizeof(hal_rtc_t));
+ mmi_gui_timing_task_msg_send(MMI_GUI_TIMING_MSG_20_SECOND, p_cur_time_20);
- // every minuter check mission
if(cur_time.tm_min != s_timing_control_last_min)
{
- printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ printf("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_timing_control_last_min);
s_timing_control_last_min = cur_time.tm_min;
-
- // check remind
- mmi_remind_mission_check(cur_time);
-
- // check sleep time
- #ifdef __MMI_SLEEP_FUNCTION_SUPPORT__
- mmi_watch_sleep_time_mission_check();
- #endif
-
- // check tcms
- #ifdef __MMI_CUSTOM_HENGAI_TCMS__
- mmi_hengai_tcms_mission_check();
- #endif
-
-
-
+ hal_rtc_t * p_cur_time_60 = Hal_Mem_Alloc(sizeof(hal_rtc_t));
+ Hal_Mem_Copy(p_cur_time_60, &cur_time, sizeof(hal_rtc_t));
+ mmi_gui_timing_task_msg_send(MMI_GUI_TIMING_MSG_1_MINUTE, p_cur_time_60);
}
}
void app_adaptor_timing_control_init(void)
{
+ mmi_gui_timing_task_create();
+
uos_timer_create(&s_timing_control_timer);
uos_timer_start(s_timing_control_timer, MS_TO_TICKS(TIMING_FIRST_TIMER_INTERVAL), 0, timing_timer_callback, NULL);
}