int temp_value = 0;
unsigned int x_step_value = 0;
unsigned int y_step_value = 0;
+ int max_value = 0;
+ int min_value = 0;
+ int mid_value = 0;
+ int base_value = 0;
if(NULL == line)
{
temp_ptr = fr8012haq_blood_data_get(&s_current_raw_data_len);
temp_len = s_current_raw_data_len - s_last_raw_data_len;
- HENGAI_HEALTH_UART_LOG("[@CHENG_DEBUG][%s][%d]: total=%d,last=%d\n", __FUNCTION__, __LINE__, s_current_raw_data_len, s_last_raw_data_len);
if(0 >= temp_len)
return -2;
if(BP_POINT_NUM_MAX < temp_len)
_lv_memcpy(s_line_y_array_ptr, temp_ptr + s_last_raw_data_len, sizeof(int) * temp_len);
s_last_raw_data_len = s_current_raw_data_len;
+#if 0
temp_value = s_line_y_array_ptr[0];
for(i = 0; i < temp_len; i++)
{
s_line_point_array[i].y = (BP_OBJ_LINE_CONT_H / 2) - (s_line_y_array_ptr[i] / y_step_value);
}
}
- lv_line_set_points(line, s_line_point_array, temp_len);
+#else
+ max_value = s_line_y_array_ptr[0];
+ min_value = s_line_y_array_ptr[0];
+ for(i = 1; i < temp_len; i++)
+ {
+ if(max_value < s_line_y_array_ptr[i])
+ max_value = s_line_y_array_ptr[i];
+
+ if(min_value > s_line_y_array_ptr[i])
+ min_value = s_line_y_array_ptr[i];
+ }
+
+ x_step_value = BP_OBJ_LINE_CONT_W / temp_len;
+ y_step_value = BP_ABS(max_value - min_value) / (BP_OBJ_LINE_CONT_H - 10 * 2);
+ if(0 == y_step_value)
+ {
+ _lv_memset_00(s_line_point_array, sizeof(lv_point_t) * BP_POINT_NUM_MAX);
+ goto SET_LINE_POINT;
+ }
+ mid_value = min_value + (max_value - min_value) / 2;
+ if(0 > mid_value)
+ base_value = (BP_OBJ_LINE_CONT_H / 2) - (BP_ABS(mid_value) / y_step_value);
+ else
+ base_value = (BP_OBJ_LINE_CONT_H / 2) + (mid_value / y_step_value);
+
+ for(i = 0; i < temp_len; i++)
+ {
+ if(0 < i)
+ s_line_point_array[i].x = s_line_point_array[i-1].x + x_step_value;
+ else
+ s_line_point_array[i].x = 5;
+
+ if(0 > s_line_y_array_ptr[i])
+ s_line_point_array[i].y = base_value + (BP_ABS(s_line_y_array_ptr[i]) / y_step_value);
+ else
+ s_line_point_array[i].y = base_value - (s_line_y_array_ptr[i] / y_step_value);
+ }
+#endif
+
- HENGAI_HEALTH_UART_LOG("[@CHENG_DEBUG][%s][%d]: max=%d,len=%d,x_step=%d,y_step=%d\n", __FUNCTION__, __LINE__,
- temp_value, temp_len, x_step_value, y_step_value);
+SET_LINE_POINT:
+ lv_line_set_points(line, s_line_point_array, temp_len);
+
+
+ HENGAI_HEALTH_UART_LOG("[@CHENG_DEBUG][%s][%d]: total=%d,last=%d\n", __FUNCTION__, __LINE__, s_current_raw_data_len, s_last_raw_data_len);
+ HENGAI_HEALTH_UART_LOG("[@CHENG_DEBUG][%d]: max=%d,min=%d,mid=%d,len=%d,x_step=%d,y_step=%d,base=%d\n", __LINE__,
+ max_value, min_value, mid_value, temp_len, x_step_value, y_step_value, base_value);
HENGAI_HEALTH_UART_LOG("[@CHENG_DEBUG][%d]: %d,%d,%d,%d,%d,%d,%d,%d,%d\n", __LINE__,
s_line_y_array_ptr[0],
s_line_y_array_ptr[5],
int temp_value = 0;
unsigned int x_step_value = 0;
unsigned int y_step_value = 0;
+ int max_value = 0;
+ int min_value = 0;
+ int mid_value = 0;
+ int base_value = 0;
if(NULL == line)
{
_lv_memcpy(s_line_y_array_ptr, temp_ptr + s_last_raw_data_len, sizeof(int) * temp_len);
s_last_raw_data_len = s_current_raw_data_len;
+#if 0
temp_value = s_line_y_array_ptr[0];
for(i = 0; i < temp_len; i++)
{
s_line_point_array[i].y = (PULSE_WAVE_LINE_CONT_H / 2) - (s_line_y_array_ptr[i] / y_step_value);
}
}
+#else
+ max_value = s_line_y_array_ptr[0];
+ min_value = s_line_y_array_ptr[0];
+ for(i = 1; i < temp_len; i++)
+ {
+ if(max_value < s_line_y_array_ptr[i])
+ max_value = s_line_y_array_ptr[i];
+
+ if(min_value > s_line_y_array_ptr[i])
+ min_value = s_line_y_array_ptr[i];
+ }
+
+ x_step_value = PULSE_WAVE_LINE_CONT_W / temp_len;
+ y_step_value = PULSE_WAVE_ABS(max_value - min_value) / (PULSE_WAVE_LINE_CONT_H - 10 * 2);
+ if(0 == y_step_value)
+ {
+ _lv_memset_00(s_line_point_array, sizeof(lv_point_t) * PULSE_WAVE_POINT_NUM_MAX);
+ goto SET_LINE_POINT;
+ }
+ mid_value = min_value + (max_value - min_value) / 2;
+ if(0 > mid_value)
+ base_value = (PULSE_WAVE_LINE_CONT_H / 2) - (PULSE_WAVE_ABS(mid_value) / y_step_value);
+ else
+ base_value = (PULSE_WAVE_LINE_CONT_H / 2) + (mid_value / y_step_value);
+
+ for(i = 0; i < temp_len; i++)
+ {
+ if(0 < i)
+ s_line_point_array[i].x = s_line_point_array[i-1].x + x_step_value;
+ else
+ s_line_point_array[i].x = 5;
+
+ if(0 > s_line_y_array_ptr[i])
+ s_line_point_array[i].y = base_value + (PULSE_WAVE_ABS(s_line_y_array_ptr[i]) / y_step_value);
+ else
+ s_line_point_array[i].y = base_value - (s_line_y_array_ptr[i] / y_step_value);
+ }
+#endif
+
+
+SET_LINE_POINT:
lv_line_set_points(line, s_line_point_array, temp_len);
+#if 0
+ cplog_printf("[@CHENG_DEBUG][%s][%d]: total=%d,last=%d\n", __FUNCTION__, __LINE__, s_current_raw_data_len, s_last_raw_data_len);
+ cplog_printf("[@CHENG_DEBUG][%d]: max=%d,min=%d,mid=%d,len=%d,x_step=%d,y_step=%d,base=%d\n", __LINE__,
+ max_value, min_value, mid_value, temp_len, x_step_value, y_step_value, base_value);
+ cplog_printf("[@CHENG_DEBUG][%d]: %d,%d,%d,%d,%d,%d,%d,%d,%d\n", __LINE__,
+ s_line_y_array_ptr[0],
+ s_line_y_array_ptr[5],
+ s_line_y_array_ptr[10],
+ s_line_y_array_ptr[20],
+ s_line_y_array_ptr[30],
+ s_line_y_array_ptr[40],
+ s_line_y_array_ptr[50],
+ s_line_y_array_ptr[60],
+ s_line_y_array_ptr[70]
+ );
+ cplog_printf("[@CHENG_DEBUG][%d]: %d,%d,%d,%d,%d,%d,%d,%d,%d\n", __LINE__,
+ s_line_point_array[0].y,
+ s_line_point_array[5].y,
+ s_line_point_array[10].y,
+ s_line_point_array[20].y,
+ s_line_point_array[30].y,
+ s_line_point_array[40].y,
+ s_line_point_array[50].y,
+ s_line_point_array[60].y,
+ s_line_point_array[70].y
+ );
+#endif
+
return 0;
}