char * name;
int total_duration;
int remain_duration;
- int happiness_value;
+ float happiness_value; // int happiness_value;
TIMER_ID cycle_timer_id;
TASK_HANDLE * task_id;
}k18_nfc_expr_data_t;
static k18_nfc_expr_data_t s_experience_data = {0};
static bool s_screen_is_active = false;
+
static unsigned char s_get_value_count = 0;
+static char s_happiness_begin_time_str[24] = {0}, s_happiness_end_time_str[24] = {0};
+static int * s_happiness_raw_data_ptr = NULL;
+static int s_happiness_raw_data_len = 0;
static void mmi_k18_nfc_experience_happiness_value_get(void);
{
K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- watch_set_suspend_enable(true, ACT_ID_K18_NFC_EXPERIENCE, 0);
- watch_wakeup_time_reset();
+ //watch_set_suspend_enable(true, ACT_ID_K18_NFC_EXPERIENCE, 0);
+ //watch_wakeup_time_reset();
if(NULL != s_experience_data.name)
{
s_experience_data.name = NULL;
}
- mmi_k18_nfc_experience_timer_deinit();
- mmi_k18_nfc_experience_task_deinit();
+ //mmi_k18_nfc_experience_timer_deinit();
+ //mmi_k18_nfc_experience_task_deinit();
+ //mmi_k18_nfc_experience_happiness_deinit();
lv_watch_png_cache_all_free();
if(LV_EVENT_CLICKED != e)
return;
+ watch_set_suspend_enable(true, ACT_ID_K18_NFC_EXPERIENCE, 0);
+ watch_wakeup_time_reset();
+
mmi_k18_nfc_experience_timer_deinit();
+ mmi_k18_nfc_experience_happiness_deinit();
+
mmi_k18_nfc_experience_task_msg_send(MSG_EXPERIENCE_INTERRUPT);
mmi_k18_nfc_experience_screen_clean();
}
-void mmi_k18_nfc_experience_finish_task_cb(lv_task_t * task)
-{
- K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
- mmi_k18_nfc_experience_screen_clean();
- lv_watch_go_home();
-}
+//void mmi_k18_nfc_experience_finish_task_cb(lv_task_t * task)
+//{
+// K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+//
+// mmi_k18_nfc_experience_screen_clean();
+// lv_watch_go_home();
+//}
void mmi_k18_nfc_experience_finish_screen(lv_obj_t * par)
{
lv_obj_t * label_value = lv_label_create(img_value, NULL);
lv_obj_add_style(label_value, LV_LABEL_PART_MAIN, &lv_watch_font24);
- char temp_value[4] = {0};
- snprintf(temp_value, 4, "%d", s_experience_data.happiness_value);
+ char temp_value[16] = {0};
+ uint8_t value1 = 0, value2 = 0, value3 = 0;
+ value1 = (uint8_t)(s_experience_data.happiness_value);
+ value2 = (uint8_t)((s_experience_data.happiness_value - value1) * 10);
+ value3 = (uint8_t)(((s_experience_data.happiness_value - value1) * 10 - value2) * 10);
+ if(0 == value3)
+ {
+ if(0 == value2)
+ sprintf(temp_value, "%d", value1);
+ else
+ sprintf(temp_value, "%d.%d", value1, value2);
+ }
+ else
+ {
+ sprintf(temp_value, "%d.%d%d", value1, value2, value3);
+ }
lv_label_set_text(label_value, temp_value);
- lv_obj_align(label_value, NULL, LV_ALIGN_CENTER, 0, 0);
+ lv_obj_align(label_value, NULL, LV_ALIGN_CENTER, 0, -10);
- lv_obj_t * label_unit = lv_label_create(img, NULL);
- lv_obj_add_style(label_unit, LV_LABEL_PART_MAIN, &lv_watch_font20);
- snprintf(temp_value, 4, "bpm");
- lv_label_set_text(label_unit, temp_value);
- lv_obj_align(label_unit, img_value, LV_ALIGN_OUT_RIGHT_BOTTOM, 0, -5);
+ //lv_obj_t * label_unit = lv_label_create(img, NULL);
+ //lv_obj_add_style(label_unit, LV_LABEL_PART_MAIN, &lv_watch_font20);
+ //snprintf(temp_value, 4, "bpm");
+ //lv_label_set_text(label_unit, temp_value);
+ //lv_obj_align(label_unit, img_value, LV_ALIGN_OUT_RIGHT_BOTTOM, 0, -5);
lv_obj_t * label_info = lv_label_create(img, NULL);
lv_obj_add_style(label_info, LV_LABEL_PART_MAIN, &lv_watch_font36);
lv_label_set_text_id(label_info, WATCH_TEXT_ID_HAPPINESS_VALUE);
lv_obj_align(label_info, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -45);
- lv_task_t * task_p = lv_task_create(mmi_k18_nfc_experience_finish_task_cb, 1000 * 5, LV_TASK_PRIO_HIGH, NULL);
- lv_task_once(task_p);
+// lv_task_t * task_p = lv_task_create(mmi_k18_nfc_experience_finish_task_cb, 1000 * 5, LV_TASK_PRIO_HIGH, NULL);
+// lv_task_once(task_p);
}
static void mmi_k18_nfc_experience_timer_time_cb(void * para)
}
else
{
+ watch_set_suspend_enable(true, ACT_ID_K18_NFC_EXPERIENCE, 0);
+ watch_wakeup_time_reset();
+
mmi_k18_nfc_experience_timer_deinit();
+ mmi_k18_nfc_experience_happiness_deinit();
+
mmi_k18_nfc_experience_task_msg_send(MSG_EXPERIENCE_FINISHED);
lv_ntc_experience_ext_t * ext = mmi_k18_nfc_experience_ext_get();
lv_obj_clean(ext->img);
mmi_k18_nfc_experience_finish_screen(ext->img);
}
+ ext->old_ext.slide_enable = 1; /*able to slide to the right*/
}
}
}
-#if 0 // __test__
+#if 0 // __now_test__
char *project_name = (char *)lv_lang_get_text(WATCH_TEXT_ID_OUTDOOR_RUNNING); // "8DD16B65673A";
int temp_len = strlen(project_name);
char *temp_ptr = lv_mem_alloc(temp_len + 1);
s_experience_data.name = temp_ptr;
s_experience_data.total_duration = 60 * 3;
s_experience_data.remain_duration = s_experience_data.total_duration;
- s_experience_data.happiness_value = 168;
+ s_experience_data.happiness_value = 76.89; // 168;
#endif
s_get_value_count = 0;
mmi_k18_nfc_experience_timer_init();
mmi_k18_nfc_experience_task_init();
+ mmi_k18_nfc_experience_happiness_init();
}
void mmi_ui_msg_update_k18_nfc_experience(void)
if(NULL != s_experience_data.task_id)
{
uos_delete_task(s_experience_data.task_id);
+ s_experience_data.task_id = NULL;
}
}
K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: task_id=0x%x\n", __FUNCTION__, __LINE__, s_experience_data.task_id);
}
+
+void mmi_hengai_happinss_value_set(float value_happiness)
+{
+ if(0 == s_experience_data.remain_duration)
+ {
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: finished\n", __FUNCTION__, __LINE__);
+ return;
+ }
+
+ uint8_t value1 = 0, value2 = 0, value3 = 0;
+ value1 = (uint8_t)(value_happiness);
+ value2 = (uint8_t)((value_happiness - value1) * 10);
+ value3 = (uint8_t)(((value_happiness - value1) * 10 - value2) * 10);
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: %d-%d-%d\n", __FUNCTION__, __LINE__, value1, value2, value3);
+
+ s_experience_data.happiness_value = value_happiness;
+
+ nv_watch_health_info_t health_info = {0};
+ mmi_health_info_get(&health_info);
+ health_info.happiness_value = value_happiness;
+ mmi_health_info_set(&health_info);
+}
+
+void mmi_happiness_raw_data_time_str_set(uint8_t is_begin)
+{
+ hal_rtc_t cur_time = {0};
+
+ Hal_Rtc_Gettime(&cur_time);
+ if(is_begin)
+ {
+ sprintf(s_happiness_begin_time_str, "%04d-%02d-%02d %02d:%02d:%02d",
+ cur_time.tm_year,
+ cur_time.tm_mon,
+ cur_time.tm_mday,
+ cur_time.tm_hour,
+ cur_time.tm_min,
+ cur_time.tm_sec);
+ }
+ else
+ {
+ sprintf(s_happiness_end_time_str, "%04d-%02d-%02d %02d:%02d:%02d",
+ cur_time.tm_year,
+ cur_time.tm_mon,
+ cur_time.tm_mday,
+ cur_time.tm_hour,
+ cur_time.tm_min,
+ cur_time.tm_sec);
+ }
+}
+
+void mmi_happiness_raw_data_fill(void)
+{
+ if(NULL != s_happiness_raw_data_ptr)
+ {
+ lv_mem_free(s_happiness_raw_data_ptr);
+ s_happiness_raw_data_ptr = NULL;
+ }
+ s_happiness_raw_data_len = 0;
+
+ int buff_len = MMI_HENGAI_BP_RAW_DATA_LEN * sizeof(int);
+ s_happiness_raw_data_ptr = (int *)lv_mem_alloc(buff_len);
+ if(NULL == s_happiness_raw_data_ptr)
+ {
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: malloc fail\n", __FUNCTION__, __LINE__);
+ return;
+ }
+ _lv_memset_00(s_happiness_raw_data_ptr, buff_len);
+ _lv_memcpy(s_happiness_raw_data_ptr, fr8012haq_blood_data_get(&s_happiness_raw_data_len), buff_len);
+
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: raw_data_len=%d, buff_len=%d\n", __FUNCTION__, __LINE__, s_happiness_raw_data_len, buff_len);
+}
+
+void mmi_happiness_raw_data_send(void)
+{
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ char * data_ptr = NULL;
+ uint32_t data_len = 0;
+ char * encode_str = NULL;
+ uint32_t encode_len = 0;
+ char * encode_header_str = NULL;
+ uint32_t encode_header_len = 0;
+ uint32_t output_len = 0;
+ uint32_t output_header_len = 0;
+ int temp_len = 0;
+ int json_data_len = MMI_HENGAI_BP_RAW_DATA_LEN * 11 + 256;
+ char * json_data = NULL;
+
+ if(NULL == s_happiness_raw_data_ptr || 0 == s_happiness_raw_data_len)
+ {
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: no data\n", __FUNCTION__, __LINE__);
+ goto FREE_AND_EXIT;
+ }
+
+ // json body
+ json_data = lv_mem_alloc(json_data_len);
+ if(NULL == json_data)
+ {
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+ goto FREE_AND_EXIT;
+ }
+ _lv_memset_00(json_data, json_data_len);
+
+ temp_len = 0;
+ temp_len += sprintf(json_data + temp_len, "{\"app_key\":\"%s\",", HENGAI_HTTP_POST_APP_KEY);
+
+ char imei[16 + 1] = {0};
+ app_adp_get_imei_req(imei);
+ temp_len += sprintf(json_data + temp_len, "\"device_code\":\"%s\",", imei);
+
+ temp_len += sprintf(json_data + temp_len, "\"begin_time\":\"%s\",", s_happiness_begin_time_str);
+
+ temp_len += sprintf(json_data + temp_len, "\"end_time\":\"%s\",", s_happiness_end_time_str);
+
+ uint16_t i = 0;
+ temp_len += sprintf(json_data + temp_len, "\"ppg_data\":[");
+ for(i = 0; i < s_happiness_raw_data_len; i++)
+ {
+ if(i == (s_happiness_raw_data_len - 1))
+ {
+ temp_len += sprintf(json_data + temp_len, "%d],", s_happiness_raw_data_ptr[i]);
+ }
+ else
+ {
+ temp_len += sprintf(json_data + temp_len, "%d,", s_happiness_raw_data_ptr[i]);
+ }
+ }
+
+ temp_len += sprintf(json_data + temp_len, "\"ppg_fs\":%d,", MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE);
+
+ temp_len += sprintf(json_data + temp_len, "\"measure_mode\":1,"); /* ²âÁ¿Ä£Ê½(0:±»¶¯²âÁ¿/1:Ö÷¶¯²âÁ¿/2:Á¬Ðø²âÁ¿/3:ÆäËû²âÁ¿) */
+
+ temp_len += sprintf(json_data + temp_len, "\"measure_type\":7}"); /* ²âÁ¿ÀàÐÍ(2:ѪÑõÏà¹Ø²âÁ¿/6:ÇéÐ÷Ïà¹Ø²âÁ¿/7:ѪѹÏà
+ ¹Ø²âÁ¿/8:ѪÌÇÏà¹Ø²âÁ¿/9:HRVÏà¹Ø²âÁ¿/10:Ѫѹ±ê¶¨
+ ²âÁ¿/11:ѪÌDZ궨²âÁ¿/)
+ */
+
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, temp_len);
+
+ // base64 body
+ encode_len = temp_len * 3 / 2;
+ encode_str = lv_mem_alloc(encode_len);
+ if(NULL == encode_str)
+ {
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+ goto FREE_AND_EXIT;
+ }
+ _lv_memset_00(encode_str, encode_len);
+ if(0 != mbedtls_base64_encode(encode_str, encode_len, &output_len, json_data, temp_len))
+ {
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: base64 encode failed\n", __FUNCTION__, __LINE__);
+ goto FREE_AND_EXIT;
+ }
+
+ // json header
+ _lv_memset_00(json_data, json_data_len);
+
+ temp_len = 0;
+ temp_len += sprintf(json_data + temp_len, "{\"headers\":[");
+
+ temp_len += sprintf(json_data + temp_len, "{\"key\":\"token\",");
+
+ char * token = mmi_hengai_health_token_get();
+ temp_len += sprintf(json_data + temp_len, "\"value\":\"%s\"}", token);
+
+ temp_len += sprintf(json_data + temp_len, "]}");
+
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, temp_len);
+
+ // base64 header
+ encode_header_len = temp_len * 3 / 2;
+ encode_header_str = lv_mem_alloc(encode_header_len);
+ if(NULL == encode_header_str)
+ {
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+ goto FREE_AND_EXIT;
+ }
+ _lv_memset_00(encode_header_str, encode_header_len);
+ if(0 != mbedtls_base64_encode(encode_header_str, encode_header_len, &output_header_len, json_data, temp_len))
+ {
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: base64 encode failed\n", __FUNCTION__, __LINE__);
+ goto FREE_AND_EXIT;
+ }
+
+ // content
+ data_len = output_len + output_header_len + 128;
+ data_ptr = lv_mem_alloc(data_len);
+ if(NULL == data_ptr)
+ {
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+ goto FREE_AND_EXIT;
+ }
+ _lv_memset_00(data_ptr, data_len);
+
+ sprintf(data_ptr, ",POST,%s%s,%s,%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, "/health/synthesis/create", encode_header_str, encode_str);
+ data_len = strlen(data_ptr);
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, data_len);
+
+ mmi_hengai_health_send_type_set(HENGAI_HEALTH_SEND_HAPPINESS_DATA);
+ mmi_protocol_fzd_action_tcp_http(data_ptr, data_len);
+
+FREE_AND_EXIT:
+ if(NULL != json_data)
+ {
+ lv_mem_free(json_data);
+ json_data = NULL;
+ }
+ if(NULL != encode_str)
+ {
+ lv_mem_free(encode_str);
+ encode_str = NULL;
+ }
+ if(NULL != encode_header_str)
+ {
+ lv_mem_free(encode_header_str);
+ encode_header_str = NULL;
+ }
+ if(NULL != data_ptr)
+ {
+ lv_mem_free(data_ptr);
+ data_ptr = NULL;
+ }
+
+ // next time str
+ mmi_happiness_raw_data_time_str_set(1);
+}
+
static void mmi_k18_nfc_experience_happiness_value_get(void)
{
+ //data
+ mmi_happiness_raw_data_fill();
+ //time
+ mmi_happiness_raw_data_time_str_set(0);
-// s_experience_data.happiness_value
+ //send
+ mmi_happiness_raw_data_send();
+}
+void mmi_k18_nfc_experience_happiness_deinit(void)
+{
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ //sensor
+ mmi_hsensor_close();
+ //flag
+ mmi_hengai_bp_measuring_flag_set(false);
+
+ //free
+ if(NULL != s_happiness_raw_data_ptr)
+ {
+ lv_mem_free(s_happiness_raw_data_ptr);
+ s_happiness_raw_data_ptr = NULL;
+ }
+ s_happiness_raw_data_len = 0;
+}
+
+void mmi_k18_nfc_experience_happiness_init(void)
+{
+ K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ mmi_health_measure_factory_mode_clean();
+ //sensor
+ mmi_hsensor_blood_open();
+ //time
+ mmi_happiness_raw_data_time_str_set(1);
+ //flag
+ mmi_hengai_bp_measuring_flag_set(true);
}