蓝牙产测
authorpenglei <1624952103@qq.com>
Sat, 30 Mar 2024 15:07:15 +0000 (23:07 +0800)
committerpenglei <1624952103@qq.com>
Sat, 30 Mar 2024 15:07:15 +0000 (23:07 +0800)
20 files changed:
code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c
code/sdk/application/wearable/service/power_manager/include/power_display_service.h
code/sdk/application/wearable/service/power_manager/src/power_display_service.c
code/sdk/application/wstp/at_service/app/app_at_process.c
code/sdk/application/wstp/at_service/app/app_at_process.h
code/sdk/application/wstp/at_service/app/app_common_api.c
code/sdk/application/wstp/at_service/app/app_common_api.h
code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h
code/sdk/drivers/peripheral/cywee/src/main_dml.c
code/sdk/drivers/peripheral/mag/mmc5603/MMC5603.c
code/sdk/drivers/peripheral/mag/mmc5603/MMC5603.h
code/sdk/drivers/peripheral/mag/mmc5603/mmc5603_main.c
code/sdk/drivers/peripheral/mag/service/mag_service.h
code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695.h
code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils.h
code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c
code/sdk/drivers/peripheral/vibrator/vibrator.c

index 6bafd53..3c6c55a 100644 (file)
@@ -6,6 +6,19 @@
 #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
@@ -18,6 +31,21 @@ typedef struct factorytest_cmd_header_t
 }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
@@ -43,12 +71,12 @@ errcode_t factorytest_protocol_replymsg(uint8_t mode, uint8_t submode,uint8_t te
 \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
@@ -57,13 +85,171 @@ errcode_t factorytest_protocol_replymsg(uint8_t mode, uint8_t submode,uint8_t te
     //计算除了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
@@ -77,7 +263,7 @@ void factorytest_protocol_common_decode(uint8_t submode,uint8_t testitem,uint8_t
         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
@@ -89,14 +275,768 @@ void factorytest_protocol_common_decode(uint8_t submode,uint8_t testitem,uint8_t
             }\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
@@ -137,6 +1077,10 @@ errcode_t factorytest_protocol_decode(uint8_t *buf, uint16_t event_size)
                     \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
index 9c54682..332d870 100755 (executable)
@@ -418,6 +418,9 @@ errcode_t power_display_task_init(void);
  */
 screen_context_t *power_display_get_screen_context(void);
 
+extern errcode_t power_display_set_screen_auto_off_timeout(uint32_t timeout);
+
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index 5db3374..df57279 100755 (executable)
@@ -99,7 +99,7 @@ static screen_state_t power_display_get_screen_state(void)
     return g_screen_context.current_state;
 }
 
-static errcode_t power_display_set_screen_auto_off_timeout(uint32_t timeout)
+errcode_t power_display_set_screen_auto_off_timeout(uint32_t timeout)
 {
     if (g_screen_context.time_out_enable == false) {
         return ERRCODE_FAIL;
index 47d45da..a68127b 100755 (executable)
@@ -2359,7 +2359,8 @@ static uint32_t mcu_get_time(uint8_t *para, uint32_t para_len)
 {\r
     unused(para);\r
     unused(para_len);\r
-    return get_system_time();\r
+    uint32_t timebuf;\r
+    return get_system_time(&timebuf);\r
 }\r
 \r
 #ifdef SUPPORT_POWER_MANAGER\r
index 3dccec7..d954b1e 100755 (executable)
@@ -69,6 +69,7 @@ extern uint32_t mcu_pm_lcd_off(uint8_t *para, uint32_t para_len);
 extern errcode_t upg_flash_write(const uint32_t flash_offset, uint32_t size, const uint8_t *ram_data, bool do_erase);\r
 extern uint32_t mcu_pm_lcd_on(uint8_t *para, uint32_t para_len);\r
 extern uint32_t mcu_pm_lcd_off(uint8_t *para, uint32_t para_len);\r
+extern uint32_t lcd_fill(uint8_t *data, uint32_t data_len);\r
 \r
 #ifdef __cplusplus\r
 #if __cplusplus\r
index c45989b..3fc8baa 100755 (executable)
@@ -181,7 +181,7 @@ uint32_t set_system_time(char* time)
     return ERRCODE_SUCC;
 }
 
-uint32_t get_system_time(void)
+uint32_t get_system_time(uint32_t *timedata)
 {
     char timebuf[TIME_MAX] = { 0 };
     struct tm tm;
@@ -197,9 +197,13 @@ uint32_t get_system_time(void)
         wstp_print("%s", timebuf);
     }
 
+    memcmp(timedata,&timebuf,strlen(&timebuf));
+
     uint32_t millisec = tv.tv_usec / USEC_TO_MILLI;
     wstp_print(":%03d\n", millisec);
 
+    timedata = strcat(timedata,&millisec);
+
     return ERRCODE_SUCC;
 }
 
index 5edaf08..bd42cf0 100755 (executable)
@@ -1,3 +1,13 @@
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-03-13 15:08:38
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-03-30 21:22:18
+ * @FilePath: /FD230/code/sdk/application/wstp/at_service/app/app_common_api.h
+ * @Description: 
+ * 
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. 
+ */
 /**
  * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
  *
@@ -30,7 +40,7 @@ int add_function(char *name, char *description, int (*func)(int argc, char *argv
 #endif
 uint32_t get_sec_time(char* time);
 uint32_t set_system_time(char* time);
-uint32_t get_system_time(void);
+uint32_t get_system_time(uint32_t *timebuf);
 uint32_t nandflash_aging_test(char* para);
 uint32_t flash_aging_test(char* para);
 uint32_t freertos_heap_print(void);
index 4b63a57..d46b831 100644 (file)
@@ -429,7 +429,7 @@ typedef struct
 
 
 extern void get_gsonsen_xyz(gsenson_t *t);
-extern void gsensor_get_n_data(uint8_t cnt);
+void gsensor_get_n_data(uint8_t cnt,gsenson_t t[]);
 
 
 #pragma pack()
index d3b01a5..15f2fc6 100644 (file)
@@ -44,35 +44,39 @@ static int16 right_falg=-1;
 
 void get_gsonsen_xyz(gsenson_t *t)
 {
-        if(osal_mutex_trylock(&mutex_gsenson_queue)==0)
-        {
-            CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
-            return;
-        }
+        // if(osal_mutex_trylock(&mutex_gsenson_queue)==0)
+        // {
+        //     CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
+        //     return;
+        // }
         t->x = gxyz_t_queue[left_falg].x;
         t->y = gxyz_t_queue[left_falg].y;
         t->z = gxyz_t_queue[left_falg].z;
-        osal_mutex_unlock(&mutex_gsenson_queue);
+        //osal_mutex_unlock(&mutex_gsenson_queue);
 }
 
-void gsensor_get_n_data(uint8_t cnt)
+void gsensor_get_n_data(uint8_t cnt,gsenson_t t[])
 {
      for(int i=0;i<cnt;i++)
     {
-        if(osal_mutex_trylock(&mutex_gsenson_queue)==0)
-        {
-            CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
-            return;
-        }
+        // if(osal_mutex_trylock(&mutex_gsenson_queue)==0)
+        // {
+        //     CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
+        //     return;
+        // }
         CWM_OS_dbgPrintf("x : %d , y : %d , z : %d\n", gxyz_t_queue[left_falg].x, gxyz_t_queue[left_falg].y, gxyz_t_queue[left_falg].z);
-        if(num_falg==0)
+        t[i].x= gxyz_t_queue[left_falg].x;
+        t[i].y= gxyz_t_queue[left_falg].y;
+        t[i].z= gxyz_t_queue[left_falg].z;
+
+        if(num_falg)
         {
-            break;
-        }
-        left_falg++;
-        left_falg=left_falg%16;
-        num_falg--;
-        osal_mutex_unlock(&mutex_gsenson_queue);
+            left_falg++;
+            left_falg=left_falg%16;
+            num_falg--;
+
+        }   
+        // osal_mutex_unlock(&mutex_gsenson_queue);
     }
 
 }
@@ -82,11 +86,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
         case IDX_ACCEL:
 
         #if 1  
-        if(osal_mutex_trylock(&mutex_gsenson_queue)==0)
-        {
-            CWM_OS_dbgPrintf("get_gsonsen_xxxxxxxx_fail\n");
-            break;
-        }
+
         if(num_falg==16)
         {
             left_falg++;
@@ -111,7 +111,6 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
             CWM_OS_dbgPrintf("write: x=%d, y=%d, z=%d\n", gxyz_t_queue[right_falg].x ,gxyz_t_queue[right_falg].y ,gxyz_t_queue[right_falg].z);
         
         }
-        osal_mutex_unlock(&mutex_gsenson_queue);
 
         #endif
             break;
index e28bde1..f36a730 100644 (file)
@@ -164,10 +164,15 @@ int MMC5603_CheckID(void)
        I2C_Read_Reg(MMC5603_7BITI2C_ADDRESS, MMC5603_REG_PRODUCTID1, &pro_id); \r
        if(pro_id != MMC5603_PRODUCT_ID)\r
                return -1;\r
-       \r
+       PRINT("MMC5603 ID : 0x%x\r\n",pro_id);\r
        return 1;\r
 }\r
 \r
+void MMC5603_GETID(unsigned char *id)\r
+{\r
+       I2C_Read_Reg(MMC5603_7BITI2C_ADDRESS, MMC5603_REG_PRODUCTID1, id);      \r
+}\r
+\r
 /*********************************************************************************\r
 * decription: Auto self-test registers configuration\r
 *********************************************************************************/\r
@@ -458,14 +463,3 @@ void MMC5603_GetData(float *mag_out)
                        \r
        return;\r
 }\r
-\r
-void MMC5603_GETID(void)\r
-{\r
-       unsigned char id = 0;\r
-       \r
-       /* Read register 0x39, check product ID */\r
-       I2C_Read_Reg(MMC5603_7BITI2C_ADDRESS, MMC5603_REG_PRODUCTID1, &id);     \r
-\r
-       PRINT("MCC5603 ID: 0x%x \r\n",id);\r
-\r
-}
\ No newline at end of file
index 417d4cc..9a751ac 100644 (file)
@@ -123,7 +123,7 @@ void MMC5603_Disable(void);
  */\r
 void MMC5603_GetData(float *mag_out);\r
 \r
-void MMC5603_GETID(void);\r
+void MMC5603_GETID(unsigned char *id);\r
 \r
 #endif\r
 \r
index 23f82dc..81da814 100644 (file)
@@ -368,8 +368,19 @@ void mag_coordinate_raw_to_real(int layout, float *in, float *out)
 }\r
 float mag_service_get_fAzimuth(void)\r
 {\r
-       return fAzimuth ;\r
+       return fAzimuth;\r
 }\r
+\r
+float mag_service_get_fPitch(void)\r
+{\r
+       return fPitch;\r
+}\r
+\r
+float mag_service_get_fRoll(void)\r
+{\r
+       return fRoll;\r
+}\r
+\r
 int mag_service_get_iAccuracy(void)\r
 {\r
        return iAccuracy ;\r
index ffc1fdd..62bbe0e 100644 (file)
@@ -31,6 +31,10 @@ void uapi_mag_service_deinit(void);
 void do_mag_service_check_msg(int cmd);
 
 float mag_service_get_fAzimuth(void);
+float mag_service_get_fPitch(void);
+float mag_service_get_fRoll(void);
+
+
 int mag_service_get_iAccuracy(void);
 
 #ifdef __cplusplus
index 4db8ed6..91c7687 100644 (file)
 // #include "lv_dev.h"\r
 // #include "app_task.h"\r
 \r
+#include "cywee_hal.h"\r
+\r
 FT_CUSTOM_RESULTS_t hrsresult ={0};\r
 \r
 int16_t gsen_fifo_x[64]={0};\r
 int16_t gsen_fifo_y[64]={0};\r
 int16_t gsen_fifo_z[64]={0};\r
 \r
+gsenson_t gsensordata[8];\r
 \r
 #ifdef SPO2_VECTOR\r
 #include "spo2_vec.h"\r
@@ -137,6 +140,14 @@ const  uint16_t  IR_FFT_POW_THRE = 500;           //fft_pow_min
 const  uint8_t   SLOPE_PARA_MAX = 28;\r
 const  uint8_t   SLOPE_PARA_MIN = 3;\r
 \r
+int32_t ble_hrs_data = 0;\r
+uint8_t ble_hrs_flag = 0;\r
+\r
+int32_t ble_spo2_data = 0;\r
+uint8_t ble_spo2_flag = 0;\r
+\r
+\r
+\r
 #ifdef SPO2_DATA_CALI\r
 static int32_t red_data_fifo[4] = {0};\r
 static int32_t ir_data_fifo[4] = {0};\r
@@ -2211,6 +2222,7 @@ bool hx3695_init(WORK_MODE_T mode)
 {\r
   hx3695_msg_callback_t func;\r
 \r
+\r
        TYHX_LOG("this chip hx3695_init  mode: %d !! \r\n", mode);\r
        \r
        hx3695_ppg_on();\r
@@ -2674,11 +2686,19 @@ void hx3695_hrs_ppg_Int_handle(void)
     tyhx_hrs_alg_send_data(PPG_buf_vec,*count, gsen_fifo_x_send, gsen_fifo_y_send, gsen_fifo_z_send);\r
 \r
 #else\r
-    \r
+\r
     if(hx3695_hrs_read(&hrs_s_dat) == 0)\r
     {\r
         return;\r
     }\r
+\r
+  for(ii = 0; ii < hrs_s_dat.count; ii++)\r
+    {\r
+      if(PPG_buf[ii] > 10000)\r
+      {\r
+          ble_hrs_data = PPG_buf[ii];\r
+      }\r
+    }\r
                \r
 #ifndef GSEN_40MS_TIMMER\r
     //readFifoByHrsModule();\r
@@ -2712,6 +2732,26 @@ void hx3695_hrs_ppg_Int_handle(void)
        // result.ir_data_final = hrs_s_dat.ir_data[0];\r
        // hx3695_factory_test_process(NULL, APP_FACTORY_TEST_HR_START, &result);\r
 \r
+    //gsensor_get_n_data(8,gsensordata);\r
+\r
+    // for(ii=0; ii<*count; ii++)\r
+    //  {\r
+    //     if(ii == 8)\r
+    //     {\r
+    //         gsen_fifo_x_send[ii] = gsen_fifo_x_send[ii - 1];\r
+    //         gsen_fifo_y_send[ii] = gsen_fifo_y_send[ii - 1];\r
+    //         gsen_fifo_z_send[ii] = gsen_fifo_z_send[ii - 1];\r
+    //     }\r
+    //     else\r
+    //     {\r
+    //         gsen_fifo_x_send[ii] = gsensordata[ii].x;\r
+    //         gsen_fifo_y_send[ii] = gsensordata[ii].y;\r
+    //         gsen_fifo_z_send[ii] = gsensordata[ii].z;\r
+    //     }\r
+\r
+    //     PRINT("hxdata:%d/%d %d %d %d %d %d %d\r\n" ,1+ii,*count,PPG_buf[ii],ir_buf[0],gsen_fifo_x[ii],gsen_fifo_y[ii],gsen_fifo_z[ii],ppg_s_data.green_cur);\r
+    // }\r
+\r
     hrs_wear_status = hx3695_hrs_get_wear_status();\r
        PRINT("hrs_wear_status:    %d !!\r\n", hrs_wear_status);\r
        \r
@@ -2755,6 +2795,12 @@ void hx3695_hrs_ppg_Int_handle(void)
                \r
     PRINT("hx3695 data_cnt: %d,  hr_living: %d, hr_living_qu: %d, hr_living_std: %d, hr_result:%d \r\n",\r
                alg_results.data_cnt,  hrsresult.hr_living, hrsresult.hr_living_qu, hrsresult.hr_living_std, hrsresult.lastesthrs);\r
+\r
+    if(hrsresult.lastesthrs > 0)\r
+    {\r
+        ble_hrs_flag = 1;\r
+    }\r
+\r
        if(hrs_wear_status == MSG_HRS_WEAR && hrsresult.hr_living == MSG_LIVING_TRUE)\r
     {\r
 //             app_hr_reset_stop_timer();\r
@@ -3069,6 +3115,14 @@ void hx3695_spo2_ppg_Int_handle(void)
         return;\r
     }\r
                \r
+      for(ii = 0; ii < hrs_s_dat.count; ii++)\r
+    {\r
+      if(red_buf[ii] > 10000)\r
+      {\r
+          ble_spo2_data = red_buf[ii];\r
+      }\r
+    }\r
+               \r
                \r
 #ifndef GSEN_40MS_TIMMER\r
 //    readFifoByHrsModule();\r
@@ -3154,6 +3208,9 @@ void hx3695_spo2_ppg_Int_handle(void)
     DEBUG_PRINTF("block_cnt: %d, data_cnt:%d, hr_result:%d,ir_quality:%d,motion:%d,poor_signal:%d,reliable_score_result:%d,screen_up:%d,spo2_result:%d\r\n",spo2_alg_results.block_cnt,spo2_alg_results.data_cnt,spo2_alg_results.hr_result,spo2_alg_results.ir_quality,spo2_alg_results.motion,spo2_alg_results.poor_signal,spo2_alg_results.reliable_score_result,spo2_alg_results.screen_up,spo2_alg_results.spo2_result);\r
 \r
     hrsresult.lastestspo2 = spo2_alg_results.spo2_result;\r
+\r
+    if(hrsresult.lastestspo2 > 0)\r
+      ble_spo2_flag = 1;\r
 //     if(hrsresult.lastestspo2)\r
        {\r
                // store_latest_spo2(hrsresult.lastestspo2);\r
index b35d7a2..7a7ad4d 100644 (file)
@@ -295,7 +295,15 @@ void agc_timeout_handler(void * p_context);
 void heart_rate_meas_timeout_handler(void * p_context);\r
 void Efuse_Mode_Check(void);\r
 \r
+uint8_t hx3695_get_chip_id(void);\r
+\r
+\r
 #include "hx3695_hal.h"\r
 \r
+extern int32_t ble_hrs_data;\r
+extern uint8_t ble_hrs_flag;\r
+\r
+extern int32_t ble_spo2_data;\r
+extern uint8_t ble_spo2_flag;\r
 \r
 #endif\r
index 4d4d723..749efac 100644 (file)
@@ -1,3 +1,13 @@
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-03-13 15:08:38
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-03-29 10:51:50
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
+ * @Description: 
+ * 
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved. 
+ */
 
 #include <stdio.h>
 #include <stdbool.h>
@@ -44,7 +54,9 @@ void ppg_send_cmd_to_driver(char* mode, uint8_t enable)
         md = FT_LEAK_LIGHT_MODE;
     } else if (strcmp(mode, "graycard") == 0) {
         md = FT_GRAY_CARD_MODE;
-    }
+    } else if (strcmp(mode, "ledoff") == 0) {
+        md = FT_LED_OFF_MODE;
+    } 
 
    
     if (enable == 1) {
@@ -56,7 +68,7 @@ void ppg_send_cmd_to_driver(char* mode, uint8_t enable)
     } else {
 
     //    ppg_service_running_stat = false;
-       if(md == HRS_MODE|| md == FT_LEAK_LIGHT_MODE || md == FT_GRAY_CARD_MODE)
+       if(md == HRS_MODE|| md == FT_LEAK_LIGHT_MODE || md == FT_GRAY_CARD_MODE || md == FT_GRAY_CARD_MODE)
         {
 #ifdef HRS_ALG_LIB   
             hx3695_hrs_disable();
index f1c3f8d..461cf9a 100644 (file)
@@ -658,16 +658,33 @@ errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len)
     return ERRCODE_SUCC;
 }
 
-// #include "vibrator.h"
+#include "vibrator.h"
+
+
+void vibrator_switch(uint8_t cmd)
+{
+    //g_VibratorFunc_Swtich(cmd);
+}
+
+void vibrator_cyclicity(uint16_t duty , uint16_t cycle_time_ms,uint16_t duration_time_ms)
+{
+    g_VibratorFunc(duty,cycle_time_ms,duration_time_ms);
+}
+
+void VibratorFunc_PowerOn(void)
+{
+     //g_VibratorFunc_PowerOn();
+}
+
+void VibratorFunc_PowerOff(void)
+{
+     //g_VibratorFunc_PowerOff();
+}
 
-// void Vibrator_swtich(uint8_t cmd)
-// {
-//     g_Vibrator_swtich(cmd);
-// }
 
 #include "lcd_common.h"
 
-void lcd_getid(void)
+void lcd_getid(uint32_t *id)
 {
     lcd_drv_common *lcd_drv_comm_api = NULL;
     lcd_drv_cfg *lcd_cfg = NULL;
@@ -682,16 +699,62 @@ void lcd_getid(void)
         if (lcd_cfg == NULL) {
             PRINT("lcd_cfg is null.\r\n");
         }else
+        {
             PRINT("LCD ID : 0x%x\r\n",(uint32_t)lcd_cfg->lcd_id);
+            *id = (uint32_t)lcd_cfg->lcd_id;
+        }
     }
 }
 
-
+#include "ft6x46_ctrl.h"
 #include "ft6x46_touch1.h"
 #define FTS_REG_CHIP_ID                                0xA3
 #define FTS_REG_CHIP_ID2                               0x9F
+/*Max point numbers of touch trace*/
+#define MAX_POINTS_TOUCH_TRACE                         1
+/*Length of touch information*/
+#define MAX_LEN_TOUCH_INFO                                 (MAX_POINTS_TOUCH_TRACE * 6 + 2)
+#define        FTS_MAX_POINTS_SUPPORT                                          10
+
+struct fts_ts_event {
+    int x;             /*x coordinate */
+    int y;             /*y coordinate */
+    int p;             /* pressure */
+    int type;  /* touch event flag: 0 -- down; 1-- up; 2 -- contact */
+    int id;    /*touch ID */
+    int area;   /*touch area*/
+};
+
+
+void get_tp_info(int16_t *x,int16_t *y)
+{
+    uint8_t i = 0;
+    uint8_t base = 0;
+    uint8_t regaddr = 0x01;
+    uint8_t buf[MAX_LEN_TOUCH_INFO];/*A maximum of two points are supported*/
+
+    struct fts_ts_event events[FTS_MAX_POINTS_SUPPORT];    /* multi-touch */
+    /*read touch information from reg0x01*/
+    tp_ft6x46_i2c_data_read(regaddr, buf, MAX_LEN_TOUCH_INFO);
+
+    memset(events, 0xFF, sizeof(struct fts_ts_event) * FTS_MAX_POINTS_SUPPORT);
+
+    for (i = 0; i < MAX_POINTS_TOUCH_TRACE; i++) 
+    {
+        base = 2 + i * 6;
+
+        events[i].x = ((buf[base] & 0x0F) << 8) + buf[base + 1];
+        events[i].y = ((buf[base + 2] & 0x0F) << 8) + buf[base + 3];
+
+        *x = events[i].x;
+        *y = events[i].y;
 
-void touch_getid(void)
+        PRINT("X : %d, y : %d \r\n",*x,*y);
+    }
+}
+
+
+void touch_getid(uint16_t *id)
 {
     ext_errno ret;
     uint8_t chip_id[2] = { 0 };
@@ -704,9 +767,11 @@ void touch_getid(void)
         if (ret != EXT_ERR_SUCCESS) {
             PRINT("get ic information error2");
         } else
+        {
             PRINT("TOUCH CHIP ID = 0x%02x%02x",  chip_id[0], chip_id[1]);
+            sprintf(id,"0x%02x%02x",  chip_id[0], chip_id[1]);
+        }
     }
-
 }
 
 #include "touch_screen_drv.h"
@@ -719,10 +784,17 @@ void touch_getstate(void)
 }
 
 #include "MMC5603.h"
+#include "mag_service.h"
+void mmc5603_getid(unsigned char *id)
+{
+    MMC5603_GETID(id);
+}
 
-void mmc5603_getid(void)
+void mmc5603_getdata(float *fAzimuth,float *fPitch,float *fRoll)
 {
-    MMC5603_GETID();
+    *fAzimuth = mag_service_get_fAzimuth();
+    *fPitch = mag_service_get_fPitch();
+    *fRoll = mag_service_get_fRoll();
 }
 
 
@@ -736,41 +808,58 @@ void charge_getstate(void)
 }
 
 #include "battery_service.h"
-#define batteryservice_VOLTAGE_MAX (4.2f)
-#define batteryservice_VOLTAGE_MIN (3.2f)
 
-void battery_getpower(void)
+void battery_getvolpower(uint8_t *power)
 {
-    float vol = 0;
-    uint8_t per;
-    battery_info_t *current_battery_info = get_current_battery_info();
-    vol = current_battery_info->battery_voltage;
-    per = (vol - batteryservice_VOLTAGE_MIN)*100/(batteryservice_VOLTAGE_MAX - batteryservice_VOLTAGE_MIN) ;
-    if(per <= 0)
-        per = 0;
-    else if(per >= 100)
-        per = 100;
-    PRINT("power : %d \r\n",per);
+    float voltage;
+    *power = battery_get_voltage(&voltage);
 }
 
-void battery_getvoltage(void)
+void battery_getvoltage(float *voltage)
 {
-    battery_info_t *current_battery_info = get_current_battery_info();
-    batteryservice_get_voltage_by_channel(&current_battery_info->battery_voltage,ADC_CHANNEL_BAT_VOLTAGE);
-    PRINT("voltage : %f \r\n",current_battery_info->battery_voltage);
+    battery_get_voltage(voltage);
 }
 
 
 #include "flash.h"
 
+void flash_getid(uint32_t *id)
+{
+    flash_info_t norflash_id;
+    uapi_flash_get_info(0, &norflash_id);
+    *id = norflash_id.flash_id;
+}
+
 void flash_erase(void)
 {
-    if (uapi_flash_chip_erase(CHIP_FLASH_ID) != ERRCODE_SUCC)
-        PRINT("flash erase err !!! \r\n");
-    else    
-        PRINT("flash erase succ !!! \r\n");
+    uapi_flash_chip_erase(0);
+    uapi_flash_chip_erase(1);
 }
 
+#include "cywee_hal.h"
+
+void get_gsensor_single(uint16_t *databuf)
+{
+    gsenson_t *t;
+    get_gsonsen_xyz(t);
+
+    databuf[0] = (uint16_t)((t->x & 0xFF00) >> 8);
+    databuf[1] = (uint16_t)(t->x & 0x00FF);
+
+    databuf[2] = (uint16_t)((t->y & 0xFF00) >> 8);
+    databuf[3] = (uint16_t)(t->y & 0x00FF);
+
+    databuf[4] = (uint16_t)((t->z & 0xFF00) >> 8);
+    databuf[5] = (uint16_t)(t->z & 0x00FF);
+}
+
+void gsensor_get_single_data(gsenson_t *t)
+{
+    get_gsonsen_xyz(t);
+}
+
+//#include "lis2doc_reg.h"
+
 #include "stdio.h"
 
 /**** 静态全局变量 ****/
index 2a3592d..7fe824b 100644 (file)
@@ -62,28 +62,32 @@ errcode_t uapi_get_buildversion(uint8_t *para, uint32_t para_len);
  */
 
 //开关马达
-void Vibrator_swtich(uint8_t cmd);
+void vibrator_switch(uint8_t cmd);
+void vibrator_cyclicity(uint16_t duty , uint16_t cycle_time_ms,uint16_t duration_time_ms);
 
 //获取lcd id
-void lcd_getid(void);
+void lcd_getid(uint32_t *id);
 
 //获取TP ID
-void touch_getid(void);
+void touch_getid(uint16_t *id);
+void get_tp_info(int16_t *x,int16_t *y);
 
 //获取触摸屏状态
 void touch_getstate(void);
 
 //获取MMC5063 ID
-void mmc5603_getid(void);
+void mmc5603_getid(unsigned char *id);
+void mmc5603_getdata(float *fAzimuth,float *fPitch,float *fRoll);
 
 //获取充电状态
 void charge_getstate(void);
 
 //获取电压
-void battery_getvoltage(void);
-void battery_getvolpower(void);
+void battery_getvoltage(float *voltage);
+void battery_getvolpower(uint8_t *power);
 
 //flash整片擦除
+void flash_getid(uint32_t *id);
 void flash_erase(void);
 
 //进入recovery
@@ -91,7 +95,7 @@ int enter_recovery(void);
 //设置bmp图片
 int set_bmp(void);
 
-
+void get_gsensor_single(uint16_t *databuf);
 
 #ifdef __cplusplus
 }
index 3e78e36..8cd4516 100644 (file)
@@ -175,7 +175,7 @@ static uint32_t custom_lcd_getid(uint8_t *para, uint32_t paraLen, char *strCommo
 
     UNUSED(strCommonCmd);
 
-    lcd_getid();
+    //lcd_getid();
 
     return ERRCODE_SUCC;
 }
@@ -185,7 +185,7 @@ static uint32_t custom_touch_getid(uint8_t *para, uint32_t paraLen, char *strCom
 
     UNUSED(strCommonCmd);
 
-    touch_getid();
+    //touch_getid();
 
     return ERRCODE_SUCC;
 }
@@ -205,7 +205,7 @@ static uint32_t custom_mmc5603_getid(uint8_t *para, uint32_t paraLen, char *strC
 
     UNUSED(strCommonCmd);
 
-    mmc5603_getid();
+    //mmc5603_getid();
 
     return ERRCODE_SUCC;
 }
@@ -225,7 +225,7 @@ static uint32_t custom_battery_getpower(uint8_t *para, uint32_t paraLen, char *s
 
     UNUSED(strCommonCmd);
 
-    battery_getpower();
+    //battery_getpower();
 
     return ERRCODE_SUCC;
 }
@@ -235,7 +235,7 @@ static uint32_t custom_battery_getvoltage(uint8_t *para, uint32_t paraLen, char
 
     UNUSED(strCommonCmd);
 
-    battery_getvoltage();
+    //battery_getvoltage();
 
     return ERRCODE_SUCC;
 }
@@ -261,9 +261,48 @@ static uint32_t custom_enter_recovery(uint8_t *para, uint32_t paraLen, char *str
     return ERRCODE_SUCC;
 }
 
+static uint32_t custom_vibrator_on(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+
+    UNUSED(strCommonCmd);
+
+    VibratorFunc_PowerOn();
+
+    return ERRCODE_SUCC;
+}
+
+static uint32_t custom_vibrator_off(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+
+    UNUSED(strCommonCmd);
+
+    VibratorFunc_PowerOff();
+
+    return ERRCODE_SUCC;
+}
+
+#include "cywee_hal.h"
+#include "hx3695_hrs_agc.h"
+static uint32_t custom_gsensor_getdata(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    // gsenson_t *t;
+    // uint16_t databuf[6];
+    UNUSED(strCommonCmd);
+
+    return ERRCODE_SUCC;
+}
+
+static uint32_t custom_get_tpinfo(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    int16_t x,y;
+
+    UNUSED(strCommonCmd);
+
 
+    get_tp_info(&x,&y);
 
-//       { (char *)"AT^VIBRATOR",      custom_vibrator_swtich, (char *)" " },
+    return ERRCODE_SUCC;
+}
 
 static const at_cmd_table_t g_custom_utils_cmd[] = {
     { (char *)"AT^CUSTOM_SN",      custom_utils_setsn, (char *)"123456789ABCDEF2345678" },
@@ -271,6 +310,11 @@ static const at_cmd_table_t g_custom_utils_cmd[] = {
     { (char *)"AT^DOWNLOADOTA",  custom_start_ota_download, (char *)" " },
     { (char *)"AT^STARTOTA",      custom_start_ota, (char *)" " },
 
+    { (char *)"AT^VIBRATORON",      custom_vibrator_on, (char *)" " },
+
+    { (char *)"AT^VIBRATOROFF",      custom_vibrator_off, (char *)" " },
+
+    { (char *)"AT^VIBRATORSWITCH",      custom_vibrator_switch, (char *)" " },
 
     { (char *)"AT^LCDID",      custom_lcd_getid, (char *)" " },
 
@@ -289,6 +333,10 @@ static const at_cmd_table_t g_custom_utils_cmd[] = {
     { (char *)"AT^FLASHERASE",      custom_flash_erase, (char *)" " },
 
     { (char *)"AT^RECOVERY",      custom_enter_recovery, (char *)" " },
+
+    { (char *)"AT^GSENSOR",      custom_gsensor_getdata, (char *)" " },
+
+    { (char *)"AT^GETTP",      custom_get_tpinfo, (char *)" " },
 };
 
 at_cmd_table_t *get_custom_utils_cmd_table(uint32_t *cmd_count)
index 7e50e18..c13f35f 100644 (file)
@@ -126,7 +126,7 @@ static  pin_t pin = VIBRATOR_GPIOPPIN;
 static  pin_mode_t mode = VIBRATORPIN_MODE;
 
 static uint8_t vibrating = 0;
-
+static uint8_t switch_flag = 1;
 
 void g_VibratorFunc(uint16_t duty , uint16_t cycle_time_ms,uint16_t duration_time_ms)
 {
@@ -171,4 +171,5 @@ void g_VibratorFunc(uint16_t duty , uint16_t cycle_time_ms,uint16_t duration_tim
     }
 }
 
+
 #endif