#include "factorytestService.h"\r
#include "wearable_log.h"\r
#include "custom_utils.h"\r
+#include "app_common_api.h"\r
+#include "lcd_private.h"\r
+#include "app_at_process.h"\r
+#include "cywee_hal.h"\r
+#include "hx3695.h"\r
+#include "ppg_service.h"\r
+#include "button_porting.h"\r
+#include "cat1_ctl.h"\r
+#include "cat1_server.h"\r
+#include "hx3695_hrs_agc.h"\r
+#include "hx3695_spo2_agc.h"\r
+#include "hx3695_factory_test.h"\r
+#include "power_display_service.h"\r
\r
#pragma pack(1)\r
typedef struct factorytest_cmd_header_t\r
}factorytest_cmd_header_t;\r
#pragma pack()\r
\r
+static osTimerId_t g_ble_vibrator_timer;\r
+\r
+static osTimerId_t g_ble_acc_timer;\r
+\r
+static osTimerId_t g_ble_hrs_timer;\r
+static osTimerId_t g_ble_spo2_timer;\r
+static osTimerId_t g_ble_graycard_timer;\r
+static osTimerId_t g_ble_leaklight_timer;\r
+\r
+static uint8_t graycard_flag = 0;\r
+static uint8_t leaklight_flag = 0;\r
+\r
+static uint16_t cycle_time_ms = 200;\r
+static uint16_t duty = 20;\r
+\r
uint16_t modbus_crc16(uint8_t *data, uint16_t length) { \r
uint8_t crc_hi = 0xFF; \r
uint8_t crc_lo = 0xFF; \r
\r
uint8_t * replybuf=NULL;\r
errcode_t ret;\r
- uint16_t total_len = input_len +1+2+1+1+1+2;//头+长度+mode+submod+testitem+crc\r
+ uint8_t total_len = input_len +1+2+1+1+1+2;//头+长度+mode+submod+testitem+crc\r
replybuf = malloc(total_len);\r
if(replybuf == NULL) return ERRCODE_MALLOC;\r
factorytest_cmd_header_t *pcmdheader = (factorytest_cmd_header_t*)replybuf;\r
pcmdheader->header = BLE_TEST_PROTOCOL_HEADER;\r
- pcmdheader->len = total_len - 2 -1 - 2; //去掉头,长度,crc\r
+ pcmdheader->len = (total_len - 2 -1 - 2); //去掉头,长度,crc\r
pcmdheader->mode = mode;\r
pcmdheader->submod = submode;\r
pcmdheader->testitem = testitem;\r
//计算除了crc外的所有数据\r
uint16_t crc16 = modbus_crc16(replybuf,total_len - 2);\r
\r
- *(replybuf+(total_len-1)) = ((uint8_t *) &crc16 )[1];\r
- *(replybuf+(total_len-2)) = ((uint8_t *) &crc16 )[0];\r
+ uint8_t* plen =(uint8_t*)(&pcmdheader->len);\r
+ uint8_t t = plen[0];\r
+ plen[0] = plen[1];\r
+ plen[1] = t;\r
+\r
+ replybuf[(total_len-1)] = ((uint8_t *) &crc16 )[0];\r
+ replybuf[(total_len-2)] = ((uint8_t *) &crc16 )[1];\r
\r
ret = ble_factorytest_server_send_input_report(replybuf,total_len);\r
free(replybuf);\r
return ret;\r
}\r
+\r
+void ble_vibrator_check_timer_callback(void)\r
+{\r
+ vibrator_cyclicity(duty,cycle_time_ms,1000);\r
+}\r
+\r
+void ble_acc_check_timer_callback(void)\r
+{\r
+ uint16_t databuf[6];\r
+ get_gsensor_single(databuf);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_ACC,\r
+ 0x05,\r
+ databuf,\r
+ strlen(databuf));\r
+}\r
+\r
+\r
+void ble_hrs_check_timer_callback(void)\r
+{\r
+ uint32_t databuf[4] = {0};\r
+ int32_t ppg_buf;\r
+\r
+ if(ble_hrs_flag == 1)\r
+ {\r
+ ble_hrs_flag = 0;\r
+ osTimerDelete(g_ble_hrs_timer);\r
+ ppg_send_cmd_to_driver("hrs",0);\r
+ return;\r
+ }\r
+\r
+ if(ble_hrs_data > 10000)\r
+ {\r
+ ppg_buf = ble_hrs_data;\r
+\r
+ databuf[0] = (uint32_t)((ppg_buf & 0xFF000000) >> 24);\r
+ databuf[1] = (uint32_t)((ppg_buf & 0x00FF0000) >> 16);\r
+ databuf[2] = (uint32_t)((ppg_buf & 0x0000FF00) >> 8);\r
+ databuf[3] = (uint32_t)((ppg_buf & 0x000000FF) >> 0);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS,\r
+ 0x03,\r
+ databuf,\r
+ strlen(databuf));\r
+ }\r
+\r
+}\r
+\r
+void ble_spo2_check_timer_callback(void)\r
+{\r
+ uint32_t databuf[4] = {0};\r
+ int32_t red_buf;\r
+\r
+ if(ble_spo2_flag == 1)\r
+ {\r
+ ble_spo2_flag = 0;\r
+ osTimerDelete(g_ble_spo2_timer);\r
+ ppg_send_cmd_to_driver("spo2",0);\r
+ return;\r
+ }\r
+\r
+ if(ble_hrs_data > 10000)\r
+ {\r
+ red_buf = ble_spo2_data;\r
+\r
+ databuf[0] = (uint32_t)((red_buf & 0xFF000000) >> 24);\r
+ databuf[1] = (uint32_t)((red_buf & 0x00FF0000) >> 16);\r
+ databuf[2] = (uint32_t)((red_buf & 0x0000FF00) >> 8);\r
+ databuf[3] = (uint32_t)((red_buf & 0x000000FF) >> 0);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS,\r
+ 0x04,\r
+ databuf,\r
+ strlen(databuf));\r
+ }\r
+\r
+}\r
+\r
+void ble_graycard_check_timer_callback(void)\r
+{\r
+ if(graycard_flag == 10)\r
+ {\r
+ graycard_flag = 0;\r
+ osTimerDelete(g_ble_graycard_timer);\r
+ return;\r
+ }\r
+ ppg_send_cmd_to_driver("graycard",1);\r
+ FT_RESULTS_t ft_result = hx3695_factroy_test(GRAY_CARD_TEST);\r
+ ppg_send_cmd_to_driver("graycard",0);\r
+ uint32_t databuf[12] = {0};\r
+\r
+ databuf[0] = (uint32_t)((ft_result.gr_data_final & 0xFF000000) >> 24);\r
+ databuf[1] = (uint32_t)((ft_result.gr_data_final & 0x00FF0000) >> 16);\r
+ databuf[2] = (uint32_t)((ft_result.gr_data_final & 0x0000FF00) >> 8);\r
+ databuf[3] = (uint32_t)((ft_result.gr_data_final & 0x000000FF) >> 0);\r
+\r
+ databuf[4] = (uint32_t)((ft_result.red_data_final & 0xFF000000) >> 24);\r
+ databuf[5] = (uint32_t)((ft_result.red_data_final & 0x00FF0000) >> 16);\r
+ databuf[6] = (uint32_t)((ft_result.red_data_final & 0x0000FF00) >> 8);\r
+ databuf[7] = (uint32_t)((ft_result.red_data_final & 0x000000FF) >> 0);\r
+\r
+ databuf[8] = (uint32_t)((ft_result.ir_data_final & 0xFF000000) >> 24);\r
+ databuf[9] = (uint32_t)((ft_result.ir_data_final & 0x00FF0000) >> 16);\r
+ databuf[10] = (uint32_t)((ft_result.ir_data_final & 0x0000FF00) >> 8);\r
+ databuf[11] = (uint32_t)((ft_result.ir_data_final & 0x000000FF) >> 0);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS,\r
+ 0x05,\r
+ databuf,\r
+ strlen(databuf));\r
+ graycard_flag++;\r
+}\r
+\r
+void ble_leaklight_check_timer_callback(void)\r
+{\r
+ if(leaklight_flag == 10)\r
+ {\r
+ leaklight_flag = 0;\r
+ osTimerDelete(g_ble_leaklight_timer);\r
+ return;\r
+ }\r
+ ppg_send_cmd_to_driver("leaklight",1);\r
+ FT_RESULTS_t ft_result = hx3695_factroy_test(LEAK_LIGHT_TEST);\r
+ ppg_send_cmd_to_driver("leaklight",0);\r
+ uint32_t databuf[12] = {0};\r
+\r
+ databuf[0] = (uint32_t)((ft_result.gr_data_final & 0xFF000000) >> 24);\r
+ databuf[1] = (uint32_t)((ft_result.gr_data_final & 0x00FF0000) >> 16);\r
+ databuf[2] = (uint32_t)((ft_result.gr_data_final & 0x0000FF00) >> 8);\r
+ databuf[3] = (uint32_t)((ft_result.gr_data_final & 0x000000FF) >> 0);\r
+\r
+ databuf[4] = (uint32_t)((ft_result.red_data_final & 0xFF000000) >> 24);\r
+ databuf[5] = (uint32_t)((ft_result.red_data_final & 0x00FF0000) >> 16);\r
+ databuf[6] = (uint32_t)((ft_result.red_data_final & 0x0000FF00) >> 8);\r
+ databuf[7] = (uint32_t)((ft_result.red_data_final & 0x000000FF) >> 0);\r
+\r
+ databuf[8] = (uint32_t)((ft_result.ir_data_final & 0xFF000000) >> 24);\r
+ databuf[9] = (uint32_t)((ft_result.ir_data_final & 0x00FF0000) >> 16);\r
+ databuf[10] = (uint32_t)((ft_result.ir_data_final & 0x0000FF00) >> 8);\r
+ databuf[11] = (uint32_t)((ft_result.ir_data_final & 0x000000FF) >> 0);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS,\r
+ 0x06,\r
+ databuf,\r
+ strlen(databuf));\r
+ leaklight_flag++;\r
+}\r
+\r
/**\r
* BLE_TEST_CMD_MODE_COMMON\r
* factorytest_protocol_common_decode\r
case BLE_TEST_CMD_COMMON_SUB_MODE_SYSTEM_VERSION:\r
if (testitem == 0x02)\r
{\r
-\r
+ //获取软件版本\r
uint8_t buildversion[64]={0};\r
uint16_t versionlen = 0;\r
ret = uapi_get_buildversion(buildversion,&versionlen);\r
}\r
break;\r
\r
+ case BLE_TEST_CMD_COMMON_SUB_MODE_POWER_ON_OFF_DEVICE:\r
+\r
+ if(testitem == 0x01)\r
+ {\r
+ //系统自检(未完成)\r
+ }\r
+\r
+ if(testitem == 0x02)\r
+ {\r
+ //关机\r
+ uint8_t send_data = 0x00;\r
+ uint16_t len = sizeof(send_data);\r
+ uapi_poweroff_device();\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
+ BLE_TEST_CMD_COMMON_SUB_MODE_POWER_ON_OFF_DEVICE,\r
+ 0x02,\r
+ &send_data,\r
+ len);\r
+ } else if(testitem == 0x03) \r
+ {\r
+ //重启\r
+ uint8_t send_data = 0x00;\r
+ uint16_t len = sizeof(send_data);\r
+ uapi_reboot_device();\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
+ BLE_TEST_CMD_COMMON_SUB_MODE_POWER_ON_OFF_DEVICE,\r
+ 0x03,\r
+ &send_data,\r
+ len);\r
+ } else if(testitem == 0x05)\r
+ {\r
+ //恢复出厂设置(未完成)\r
+ uint8_t send_data = 0x00;\r
+ uint16_t len = sizeof(send_data);\r
+ //bluetooth_factory_reset();\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_COMMON,\r
+ BLE_TEST_CMD_COMMON_SUB_MODE_POWER_ON_OFF_DEVICE,\r
+ 0x05,\r
+ &send_data,\r
+ len);\r
+ }\r
+ break;\r
+\r
+ case BLE_TEST_CMD_COMMON_SUB_MODE_POWERCONSUMPTION:\r
+ break;\r
+\r
+ case BLE_TEST_CMD_COMMON_SUB_MODE_OTA:\r
+ break;\r
+\r
+ default:\r
+ printf("");\r
+ break;\r
+\r
+ }\r
+}\r
+\r
+/**\r
+ * BLE_TEST_CMD_MODE_SOFT_TEST\r
+ * factorytest_protocol_soft_test_decode\r
+*/\r
+\r
+void factorytest_protocol_soft_test_decode(uint8_t submode,uint8_t testitem,uint8_t* data,uint16_t len)\r
+{\r
+ errcode_t ret;\r
+ switch(submode)\r
+ {\r
+ printf("submode 0x%02X testitem 0x%02X\r\n",submode,testitem);\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_BLE:\r
+ if (testitem == 0x02)\r
+ {\r
+ //获取蓝牙地址\r
+ uint8_t btaddr[64]={0};\r
+ uint32_t btaddrlen = 0;\r
+ uapi_get_btaddr(btaddr,&btaddrlen);\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_BLE,\r
+ 0x02,\r
+ btaddr,\r
+ btaddrlen);\r
+ }\r
+ //获取蓝牙信号强度(未完成)\r
+ if (testitem == 0x03)\r
+ {\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_BLE,\r
+ 0x03,\r
+ &send_data,\r
+ datalen);\r
+ }\r
+ //发射功率(未完成)\r
+ if (testitem == 0x05)\r
+ {\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_BLE,\r
+ 0x05,\r
+ &send_data,\r
+ len);\r
+ }\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR:\r
+\r
+ if(testitem == 0x01)\r
+ {\r
+ PRINT("222\r\n");\r
+ //打开马达\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ g_ble_vibrator_timer = osTimerNew((osTimerFunc_t)ble_vibrator_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
+\r
+ osTimerStart(g_ble_vibrator_timer,1000);\r
+ \r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR,\r
+ 0x01,\r
+ &send_data,\r
+ datalen);\r
+\r
+ } else if(testitem == 0x02)\r
+ {\r
+ //关闭马达\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ cycle_time_ms = 200;\r
+ duty = 20;\r
+\r
+ osTimerDelete(g_ble_vibrator_timer);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR,\r
+ 0x02,\r
+ &send_data,\r
+ datalen);\r
+ } else if(testitem == 0x03) \r
+ {\r
+ //打开周期性马达\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ cycle_time_ms = data[0];\r
+ duty = data[1];\r
+\r
+ g_ble_vibrator_timer = osTimerNew((osTimerFunc_t)ble_leaklight_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
+\r
+ osTimerStart(g_ble_vibrator_timer,1000);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR,\r
+ 0x03,\r
+ &send_data,\r
+ datalen);\r
+\r
+ } else if(testitem == 0x04)\r
+ {\r
+ //关闭周期性马达\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ osTimerDelete(g_ble_vibrator_timer);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR,\r
+ 0x04,\r
+ &send_data,\r
+ datalen);\r
+ }\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_KEY:\r
+ //按键测试(未完成)\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_RTC:\r
+\r
+ if(testitem == 0x01)\r
+ {\r
+ //写入RTC\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+ set_system_time((char *)data);\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_RTC,\r
+ 0x01,\r
+ &send_data,\r
+ datalen);\r
+ } else if(testitem == 0x02)\r
+ {\r
+ //获取RTC\r
+ uint32_t send_data[64] = {0};\r
+ get_system_time(&send_data[1]);\r
+ uint16_t datalen = strlen(send_data);\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_VIBRATOR,\r
+ 0x02,\r
+ &send_data,\r
+ datalen);\r
+ }\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CUSTOM_CMD:\r
+ if(testitem == 0x01)\r
+ {\r
+ //写SN\r
+ uint8_t send_data = 0x00;\r
+\r
+ zh_set_sn(data,len);\r
+\r
+ uint16_t datalen = strlen(send_data);\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CUSTOM_CMD,\r
+ 0x01,\r
+ &send_data,\r
+ datalen);\r
+ } else if(testitem == 0x02)\r
+ {\r
+ //读SN\r
+ uint8_t send_data[64] = {0};\r
+ uint32_t datalen;\r
+ zh_get_sn(&send_data[1],&datalen);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CUSTOM_CMD,\r
+ 0x02,\r
+ send_data,\r
+ datalen+1);\r
+ } else if(testitem == 0x11)\r
+ {\r
+ uint8_t i;\r
+ //获取soc_id\r
+ uint8_t soc_id[21]; // 20 is soc id length\r
+ soc_id[0] = 0;\r
+ uapi_soc_read_id(&soc_id[1], 21);\r
+\r
+ uint16_t datalen = strlen((char *)soc_id);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CUSTOM_CMD,\r
+ 0x11,\r
+ soc_id,\r
+ datalen);\r
+ }\r
+\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_LCD:\r
+ if(testitem == 0x01)\r
+ {\r
+ //获取LCD_ID\r
+ uint32_t id;\r
+ uint8_t lcd_id[3] = {0};\r
+ lcd_getid(&id);\r
+\r
+ lcd_id[0] = 0;\r
+ lcd_id[1] = id >> 8;\r
+ lcd_id[2] = id;\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_LCD,\r
+ 0x01,\r
+ lcd_id,\r
+ strlen((char *)lcd_id));\r
+ } else if(testitem == 0x02)\r
+ {\r
+ PRINT("333\r\n");\r
+ //LCD 上电\r
+\r
+ mcu_pm_lcd_on(0,0);\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ mcu_pm_lcd_on(0,0);\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_LCD,\r
+ 0x02,\r
+ &send_data,\r
+ datalen);\r
+ } else if(testitem == 0x03) \r
+ {\r
+ //LCD下电\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ mcu_pm_lcd_off(0,0);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_LCD,\r
+ 0x03,\r
+ &send_data,\r
+ datalen);\r
+\r
+ } else if(testitem == 0x04)\r
+ {\r
+ //LCD显示颜色\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+ uint32_t color_buf[5] = {0xffff0000,0xff00ff00,0xff0000ff,0xffffffff,0xff000000};\r
+ switch (data[0])\r
+ {\r
+ case 1:\r
+ lcd_fill(color_buf[0], 4);\r
+ break;\r
+ case 2:\r
+ lcd_fill(color_buf[1], 4);\r
+ break;\r
+ case 3:\r
+ lcd_fill(color_buf[2], 4);\r
+ break;\r
+ case 4:\r
+ lcd_fill(color_buf[3], 4);\r
+ break;\r
+ case 5:\r
+ lcd_fill(color_buf[4], 4);\r
+ break;\r
+\r
+ default:\r
+ break;\r
+ }\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_LCD,\r
+ 0x04,\r
+ &send_data,\r
+ datalen);\r
+ } else if(testitem == 0x05)\r
+ {\r
+ uint8_t send_data = 0;\r
+ uint16_t datalen = sizeof(send_data);\r
+ uint32_t timeout = *data;\r
+ //修改自动灭屏时间\r
+ power_display_set_screen_auto_off_timeout(timeout);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_LCD,\r
+ 0x05,\r
+ &send_data,\r
+ datalen);\r
+ }\r
+\r
+\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_TP:\r
+ if(testitem == 0x01)\r
+ {\r
+ //获取ID\r
+ uint16_t id[16] = {0};\r
+ touch_getid(&id[1]);\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_TP,\r
+ 0x01,\r
+ id,\r
+ strlen(id));\r
+ } else if(testitem == 0x03)\r
+ {\r
+ //触摸测试\r
+ uint8_t send_data = 0x01;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_TP,\r
+ 0x03,\r
+ &send_data,\r
+ datalen);\r
+\r
+ send_data = 0x00;\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_TP,\r
+ 0x03,\r
+ &send_data,\r
+ datalen);\r
+\r
+ \r
+ } else if(testitem == 0x05)\r
+ {\r
+ //获取原始数据\r
+ int16_t x,y;\r
+ get_tp_info(&x,&y);\r
+ uint16_t databuf[3] = {0};\r
+\r
+ databuf[1] = x & 0XFF;\r
+ databuf[2] = y & 0XFF;\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_TP,\r
+ 0x05,\r
+ databuf,\r
+ strlen(databuf));\r
+ }\r
+\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_ACC:\r
+ if(testitem == 0x01)\r
+ {\r
+ //acc ID(未完成)\r
+ uint8_t acc_id[2] = {0};\r
+ acc_id[1] = 0x44;\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_ACC,\r
+ 0x01,\r
+ &acc_id,\r
+ strlen((char *)acc_id));\r
+\r
+ } else if(testitem == 0x04)\r
+ {\r
+ //单次获得acc\r
+ uint16_t databuf[6];\r
+ get_gsensor_single(databuf);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_ACC,\r
+ 0x04,\r
+ databuf,\r
+ strlen(databuf));\r
+\r
+ } else if(testitem == 0x05)\r
+ {\r
+ //连续获得acc\r
+ g_ble_acc_timer = osTimerNew((osTimerFunc_t)ble_acc_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
+ osTimerStart(g_ble_acc_timer,1000);\r
+\r
+ } else if(testitem == 0x06)\r
+ {\r
+ //关闭连续acc\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ osTimerStop(g_ble_acc_timer);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_ACC,\r
+ 0x06,\r
+ &send_data,\r
+ datalen);\r
+ }\r
+\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS:\r
+ if(testitem == 0x01)\r
+ {\r
+ //获取chip_id\r
+ uint8_t chip_id;\r
+ chip_id = hx3695_get_chip_id();\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS,\r
+ 0x01,\r
+ &chip_id,\r
+ sizeof(chip_id));\r
+\r
+ } else if(testitem == 0x02)\r
+ {\r
+ //关闭所有LED\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+ send_ppg_cmd_msg("ledoff");\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_HRS,\r
+ 0x02,\r
+ &send_data,\r
+ datalen);\r
+ } else if(testitem == 0x03)\r
+ {\r
+ //打开心率检测\r
+ g_ble_hrs_timer = osTimerNew((osTimerFunc_t)ble_hrs_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
+ osTimerStart(g_ble_hrs_timer,400);\r
+ ppg_send_cmd_to_driver("hrs",1);\r
+\r
+ } else if(testitem == 0x04)\r
+ {\r
+ //打开血氧检测\r
+ g_ble_spo2_timer = osTimerNew((osTimerFunc_t)ble_spo2_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
+ osTimerStart(g_ble_spo2_timer,400);\r
+ ppg_send_cmd_to_driver("spo2",1);\r
+\r
+ } else if(testitem == 0x05)\r
+ {\r
+ //灰卡测试\r
+ g_ble_graycard_timer = osTimerNew((osTimerFunc_t)ble_graycard_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
+ osTimerStart(g_ble_graycard_timer,400);\r
+\r
+ } else if(testitem == 0x06)\r
+ {\r
+ //漏光测试\r
+ g_ble_leaklight_timer = osTimerNew((osTimerFunc_t)ble_leaklight_check_timer_callback, osTimerPeriodic, NULL, NULL);\r
+ osTimerStart(g_ble_leaklight_timer,400);\r
+\r
+ }\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_COMPASS:\r
+ if(testitem == 0x01)\r
+ {\r
+ //获取mmc5603 ID\r
+ unsigned char chip_id;\r
+ mmc5603_getid(&chip_id);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_COMPASS,\r
+ 0x01,\r
+ &chip_id,\r
+ sizeof(chip_id));\r
+\r
+ } else if(testitem == 0x02)\r
+ {\r
+ //地磁sensor测试\r
+ float fAzimuth,fPitch,fRoll;\r
+ mmc5603_getdata(&fAzimuth,&fPitch,&fRoll);\r
+ \r
+ uint16_t databuf[6] = {0};\r
+\r
+ databuf[0] = (uint16_t)(((uint16_t)fAzimuth & 0xFF00) >> 8);\r
+ databuf[1] = (uint16_t)((uint16_t)fAzimuth & 0x00FF);\r
+\r
+ databuf[2] = (uint16_t)(((uint16_t)fPitch & 0xFF00) >> 8);\r
+ databuf[3] = (uint16_t)((uint16_t)fPitch & 0x00FF);\r
+\r
+ databuf[4] = (uint16_t)(((uint16_t)fRoll & 0xFF00) >> 8);\r
+ databuf[5] = (uint16_t)((uint16_t)fRoll & 0x00FF);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_COMPASS,\r
+ 0x02,\r
+ databuf,\r
+ strlen(databuf));\r
+ }\r
+\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_PM:\r
+ if(testitem == 0x02)\r
+ {\r
+ //获取充电状态\r
+ bool state;\r
+ state = uapi_get_charger_plug_status();\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_PM,\r
+ 0x02,\r
+ &state,\r
+ sizeof(state));\r
+\r
+ } else if(testitem == 0x03)\r
+ {\r
+ //获取电量\r
+ uint8_t power;\r
+ battery_getvolpower(&power);\r
+\r
+ uint8_t send_data[2] = {0};\r
+ send_data[1] = power & 0XFF;\r
+ uint16_t datalen = strlen((char *)send_data);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_PM,\r
+ 0x03,\r
+ &send_data,\r
+ datalen);\r
+ } else if(testitem == 0x04)\r
+ {\r
+ //获取电压\r
+ float voltage;\r
+ battery_getvoltage(&voltage);\r
+\r
+ uint8_t send_data[2] = {0};\r
+ send_data[1] = (uint8_t)voltage & 0XFF;\r
+ uint16_t datalen = strlen((char *)send_data);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_PM,\r
+ 0x04,\r
+ &send_data,\r
+ datalen);\r
+ } else if(testitem == 0x05)\r
+ {\r
+ //关机\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+ uapi_poweroff_device();\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_PM,\r
+ 0x05,\r
+ &send_data,\r
+ datalen);\r
+ }\r
+\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_EXTFLASH:\r
+ if(testitem == 0x01)\r
+ {\r
+ //获得flash_id\r
+ uint32_t id;\r
+ flash_getid(&id);\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_EXTFLASH,\r
+ 0x01,\r
+ &id,\r
+ sizeof(id));\r
+\r
+ } else if(testitem == 0x02)\r
+ {\r
+ //flash自检\r
+ uint8_t send_data = 0x01;\r
+ uint16_t datalen = sizeof(send_data);\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_EXTFLASH,\r
+ 0x02,\r
+ &send_data,\r
+ datalen);\r
+\r
+ send_data = 0x02;\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_EXTFLASH,\r
+ 0x02,\r
+ &send_data,\r
+ datalen);\r
+ } else if(testitem == 0x03)\r
+ {\r
+ //flash擦除\r
+ uint8_t send_data = 0x01;\r
+ uint16_t datalen = sizeof(send_data);\r
+ flash_erase();\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_PM,\r
+ 0x05,\r
+ &send_data,\r
+ datalen);\r
+ }\r
+\r
+ break;\r
+\r
+ //扩展RAM(未完成)\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_EXTRAM:\r
+ break;\r
+\r
+ case BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1:\r
+ if(testitem == 0x01)\r
+ {\r
+ //打开cat1\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ uapi_cat1_power_on(1);\r
+ uapi_cat1_reset(0);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
+ 0x01,\r
+ &send_data,\r
+ datalen);\r
+\r
+ } else if(testitem == 0x02)\r
+ {\r
+ //关闭cat1\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ uapi_cat1_power_on(0);\r
+ uapi_cat1_reset(1);\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
+ 0x02,\r
+ &send_data,\r
+ datalen);\r
+\r
+\r
+ } else if(testitem == 0x03)\r
+ {\r
+ //查看sim卡插入状态(未完成)\r
+ // uint8_t send_data = 0x00;\r
+ // uint16_t len = sizeof(send_data);\r
+\r
+ // factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ // BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
+ // 0x03,\r
+ // &send_data,\r
+ // len);\r
+ } else if(testitem == 0x04)\r
+ {\r
+ //查看信号强度(未完成)\r
+ // uint8_t send_data = 0x00;\r
+ // uint16_t len = sizeof(send_data);\r
+\r
+ // factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ // BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
+ // 0x04,\r
+ // &send_data,\r
+ // len);\r
+ } else if(testitem == 0x05)\r
+ {\r
+ //查看网络类型(未完成)\r
+ // uint8_t send_data = 0x00;\r
+ // uint16_t len = sizeof(send_data);\r
+\r
+ // factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ // BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
+ // 0x05,\r
+ // &send_data,\r
+ // len);\r
+ } else if(testitem == 0x06)\r
+ {\r
+ //拨打电话\r
+ \r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ cat1_call_dial((char *)data);\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
+ 0x06,\r
+ &send_data,\r
+ datalen);\r
+\r
+ } else if(testitem == 0x07)\r
+ {\r
+ //接听电话\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+\r
+ cat1_call_answer();\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
+ 0x07,\r
+ &send_data,\r
+ datalen);\r
+ }\r
+\r
+ else if(testitem == 0x08)\r
+ {\r
+ //挂断电话\r
+ uint8_t send_data = 0x00;\r
+ uint16_t datalen = sizeof(send_data);\r
+ cat1_call_hungup();\r
+\r
+ factorytest_protocol_replymsg(BLE_TEST_CMD_MODE_SOFT_TEST,\r
+ BLE_TEST_CMD_SOFT_TEST_SUB_MODE_CAT1,\r
+ 0x08,\r
+ &send_data,\r
+ datalen);\r
+ }\r
+ \r
+ break;\r
+\r
default:\r
printf("");\r
break;\r
\r
}\r
}\r
+\r
+\r
errcode_t factorytest_protocol_decode(uint8_t *buf, uint16_t event_size)\r
{\r
+ //if(buf != NULL && event_size>=(1+2+1+1+1+2/*header+len+mod+submod+item+crc*/))\r
if(buf != NULL && event_size>=(1+2+1+1+1+2/*header+len+mod+submod+item+crc*/))\r
{\r
factorytest_cmd_header_t header ={0};\r
\r
// 主模式ID 生产软件 0x02\r
case BLE_TEST_CMD_MODE_SOFT_TEST:\r
+ PRINT("111\r\n");\r
+ factorytest_protocol_soft_test_decode(header.submod,header.testitem,\r
+ buf+1+2+1+1+1,\r
+ header.len);\r
break;\r
\r
// 主模式ID 硬测接口 0x03\r