static HENGAI_HEALTH_SEND_TYPE_ENUM s_hengai_bp_send_code = HENGAI_HEALTH_SEND_NONE; //
+// back measure data
+void mmi_hengai_tcp_bp_back_measure_raw_data_send(void)
+{
+ HENGAI_HEALTH_DEBUG_PRINTF("[@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;
+
+ // json body
+ json_data = lv_mem_alloc(json_data_len);
+ if(NULL == json_data)
+ {
+ HENGAI_HEALTH_DEBUG_PRINTF("[@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, "\"mac\":\"%s\",", imei);
+
+ char * begin_time_str = mmi_hengai_bp_measure_action_time_string_get(1);
+ temp_len += sprintf(json_data + temp_len, "\"begin_time\":\"%s\",", begin_time_str);
+
+ char * end_time_str = mmi_hengai_bp_measure_action_time_string_get(0);
+ temp_len += sprintf(json_data + temp_len, "\"end_time\":\"%s\",", end_time_str);
+
+ uint16_t i = 0;
+ int * temp_int_ptr = mmi_hengai_bp_raw_data_ptr_get();
+ int temp_int_len = mmi_hengai_bp_raw_data_len_get();
+ temp_len += sprintf(json_data + temp_len, "\"pulse_wave\":[");
+ for(i = 0; i < temp_int_len; i++)
+ {
+ if(i == (temp_int_len - 1))
+ {
+ temp_len += sprintf(json_data + temp_len, "%d],", temp_int_ptr[i]);
+ }
+ else
+ {
+ temp_len += sprintf(json_data + temp_len, "%d,", temp_int_ptr[i]);
+ }
+ }
+
+ temp_len += sprintf(json_data + temp_len, "\"sample_rate\":%d}", MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE);
+
+ HENGAI_HEALTH_DEBUG_PRINTF("[@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)
+ {
+ HENGAI_HEALTH_DEBUG_PRINTF("[@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))
+ {
+ HENGAI_HEALTH_DEBUG_PRINTF("[@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, "]}");
+
+ HENGAI_HEALTH_DEBUG_PRINTF("[@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)
+ {
+ HENGAI_HEALTH_DEBUG_PRINTF("[@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))
+ {
+ HENGAI_HEALTH_DEBUG_PRINTF("[@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)
+ {
+ HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+ goto FREE_AND_EXIT;
+ }
+ _lv_memset_00(data_ptr, data_len);
+
+ #if 1
+ sprintf(data_ptr, ",POST,%s%s,%s,%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, "/health/bp/measurement", encode_header_str, encode_str);
+ #else
+ sprintf(data_ptr, "POST,%s%s,%s,%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, "/health/bp/measurement", encode_header_str, encode_str);
+ #endif
+ data_len = strlen(data_ptr);
+ HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, data_len);
+
+ s_hengai_bp_send_code = HENGAI_HEALTH_SEND_BACK_MEASURE_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;
+ }
+}
+
// measure data
void mmi_hengai_tcp_bp_measure_raw_data_send(void)
{
mmi_ui_msg_action_hengai_bp_calibrate_result(status_value);
break;
- case HENGAI_HEALTH_SEND_MEASURE_DATA:
+ case HENGAI_HEALTH_SEND_MEASURE_DATA: // ui measure
if(cJSON_IsTrue(cJSON_GetObjectItem(json_recv, "status")))
{
HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: true\n", __FUNCTION__, __LINE__);
}
break;
+ case HENGAI_HEALTH_SEND_BACK_MEASURE_DATA: // back measure
+ if(cJSON_IsTrue(cJSON_GetObjectItem(json_recv, "status")))
+ {
+ HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: true\n", __FUNCTION__, __LINE__);
+
+ cJSON * json_data = cJSON_GetObjectItem(json_recv, "data");
+ uint16_t bp_value_high = cJSON_GetIntValue(cJSON_GetObjectItem(json_data, "sbp"));
+ uint16_t bp_value_low = cJSON_GetIntValue(cJSON_GetObjectItem(json_data, "dbp"));
+ //char * description = cJSON_GetStringValue(cJSON_GetObjectItem(json_data, "description"));
+
+ // update
+ mmi_hengai_bp_back_measure_result(bp_value_high, bp_value_low);
+ }
+ break;
+
default:
break;
}