优化蓝牙bleservice和alipay service之间切换逻辑、支付宝启动屏幕常亮 22/1 22/head 23/target/1 24/target/1
authorSnickerSun <snickersun@163.com>
Wed, 17 Apr 2024 01:30:02 +0000 (09:30 +0800)
committerSnickerSun <snickersun@163.com>
Wed, 17 Apr 2024 01:30:02 +0000 (09:30 +0800)
16 files changed:
code/sdk/application/brandy/brandy_standard/thread_pri_init.c
code/sdk/application/wearable/alipay/driver_adapt/vendor_product.c
code/sdk/application/wearable/alipay/service/alipay_bluetooth.c
code/sdk/application/wearable/alipay/service/alipay_feature.c
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayModel.cpp
code/sdk/application/wearable/fd230app/nativeui/alipay/src/AlipayPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/bluetooth/src/BluetoothModel.cpp
code/sdk/application/wearable/fd230app/nativeui/classicbluetooth/src/ClassicBlueToothPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModelC.h
code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemView.cpp
code/sdk/application/wearable/service/ble_service/bleservice/bleService.c
code/sdk/application/wearable/service/ble_service/bleservice/bleService.h
code/sdk/drivers/chips/brandy/porting/uart/uart_porting.c
code/sdk/drivers/peripheral/utils/custom_utils.c
code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c

index 4b14ac0..fec0bbc 100755 (executable)
@@ -369,15 +369,6 @@ static void thread_main(const void *unused)
     uapi_cywee_service_init();\r
 #endif \r
 \r
-#ifdef SUPPORT_BLE_SERVICE\r
-    if(start_ble_service_on_bootup_flag())\r
-    {\r
-        PRINT("start custom protocol classic bt ble service !\r\n");\r
-        openBle();\r
-\r
-    }\r
-#endif \r
-\r
 #ifdef SUPPORT_ALIPAY_SEC\r
     uapi_alipay_svr_init();\r
 #endif\r
index 1452888..6f74fe9 100755 (executable)
@@ -101,6 +101,7 @@ csi_error_t csi_get_sn(uint8_t *buf_sn, uint32_t *len_sn)
         return CSI_ERROR;
     }
 
+#if 1
     bd_addr_t addr_info;
     gap_ble_get_local_addr(&addr_info);
     char str[18] = {0};
@@ -111,7 +112,11 @@ csi_error_t csi_get_sn(uint8_t *buf_sn, uint32_t *len_sn)
 #endif
     *len_sn = strlen(str);
     memcpy(buf_sn, str, strlen(str));
-
+#else
+    const char *mock_sn = "";    
+    *len_sn = strlen(mock_sn);
+    memcpy(buf_sn, mock_sn, strlen(mock_sn));
+#endif
     return CSI_OK;
 }
 
index 101e021..1653ff2 100644 (file)
@@ -61,7 +61,8 @@ static void svr_alipay_ble_adv_data_set(int adv_id)
     memset_s(&adv_data_info, sizeof(gap_ble_config_adv_data_t), 0, sizeof(gap_ble_config_adv_data_t));\r
 \r
     int32_t ret = gap_ble_get_local_name(ble_name, &ble_name_len);\r
-    if (ret != 0) {\r
+    if (ret != 0) \r
+    {\r
         ALIPAY_PRINT_ERR(0, "gap_ble_get_local_name fail, name:%s,len:%u,ret:%u.", ble_name, ble_name_len, ret);\r
         memset_s(ble_name, ALIPAY_BLE_NAME_LENGTH, 0, ALIPAY_BLE_NAME_LENGTH);\r
         memcpy_s(ble_name, ALIPAY_BLE_NAME_LENGTH, ALIPAY_BLE_DEFAULT_NAME, ALIPAY_BLE_DEFAULT_NAME_LEN);\r
@@ -98,10 +99,10 @@ static void svr_alipay_ble_adv_data_set(int adv_id)
     memcpy_s(adv_data + adv_data_len, sizeof(adv_mac_head), adv_mac_head, sizeof(adv_mac_head));\r
     adv_data_len = adv_data_len + sizeof(adv_mac_head);\r
 \r
-    uint8_t scan_data[20];\r
-    memset(scan_data,0,20);\r
-    adv_data_info.scan_rsp_data = scan_data;\r
-    adv_data_info.scan_rsp_length = 0;\r
+//    uint8_t scan_data[20];\r
+//    memset(scan_data,0,20);\r
+//    adv_data_info.scan_rsp_data = scan_data;\r
+//    adv_data_info.scan_rsp_length = 0;\r
     adv_data_info.adv_data = adv_data;\r
     adv_data_info.adv_length = adv_data_len;\r
     ALIPAY_PRINT_ERR(0, "adv_data_info.adv_length:%u.", adv_data_len);\r
@@ -138,7 +139,7 @@ void svr_alipay_ble_adv_start(void)
     }\r
     ALIPAY_PRINT_ERR(0, "svr_alipay_ble_adv_start bt gap_ble_start_adv  ret = 0x%x", ret);\r
 }\r
-extern void svr_alipay_reset_init(void);\r
+// extern void svr_alipay_reset_init(void);\r
 static void svr_alipay_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t *addr, gap_ble_conn_state_t conn_state,\r
     gap_ble_pair_state_t pair_state, gap_ble_disc_reason_t disc_reason)\r
 \r
@@ -147,9 +148,9 @@ static void svr_alipay_ble_connstate_change_cb(unsigned short conn_id, bd_addr_t
         conn_state, pair_state);\r
     g_alipay_conn_id = conn_id;\r
     if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected\r
-        // svr_alipay_ble_adv_start();\r
-        svr_alipay_reset_init();\r
-        // gap_ble_start_adv(ALIPAY_BLE_ADV_ID);\r
+        svr_alipay_ble_adv_start();\r
+        // svr_alipay_reset_init();\r
+        //gap_ble_start_adv(ALIPAY_BLE_ADV_ID);\r
     } else {\r
         svr_alipay_set_adv_start_state(false);\r
     }\r
@@ -170,11 +171,11 @@ static void svr_alipay_ble_adv_stop_cb(uint8_t adv_id, adv_status_t status)
 {\r
     ALIPAY_PRINT_DEBUG(0, "BleAdvStopCallback adv_id: %d, status:%d\n", adv_id, status);\r
 }\r
-static uint16_t alipay_server_handle = 0;\r
+// static uint16_t alipay_server_handle = 0;\r
 static void svr_alipay_bt_gatts_service_add_cb(uint8_t server_id, bt_uuid_t *uuid, uint16_t srv_handle,\r
     errcode_t status)\r
 {\r
-    alipay_server_handle = srv_handle;\r
+    // alipay_server_handle = srv_handle;\r
     ALIPAY_PRINT_DEBUG(0, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x 0x%x", status, server_id, srv_handle,\r
         *((uint16_t *)uuid->uuid));\r
     int ret;\r
@@ -299,7 +300,7 @@ void svr_alipay_bt_gatts_noyify(uint8_t *data, uint16_t data_len)
     ALIPAY_PRINT_ERR(0, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.", ret, g_alipay_server_id,\r
         g_alipay_conn_id, g_alipay_server_handle);\r
 }\r
-extern void srv_ble_gap_register_cb(void);\r
+\r
 static void svr_alipay_btcallback_reg(void)\r
 {\r
     g_alipay_gapble_cbs.conn_state_change_cb = svr_alipay_ble_connstate_change_cb;\r
@@ -332,7 +333,7 @@ static void svr_alipay_bt_init_gatts(void)
     memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&service_id, sizeof(service_id));\r
     ret = gatts_register_server(&uuid, &server_id); /* 注册gatt server */\r
     if (ret != ERRCODE_SUCC) {\r
-        // ALIPAY_PRINT_ERR(0, "gatts_register_server err ret:%u.\r\n", ret);\r
+        ALIPAY_PRINT_ERR(0, "gatts_register_server ret:%u.\r\n", ret);\r
     }\r
     ALIPAY_PRINT_ERR(0, "gatts_register_server ret: 0x%x server_id = 0x%x", ret, server_id);\r
     g_alipay_server_id = server_id;\r
@@ -340,51 +341,35 @@ static void svr_alipay_bt_init_gatts(void)
     memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&service_id, sizeof(service_id));\r
     ret = gatts_add_service(server_id, &uuid, true);\r
     if (ret != ERRCODE_SUCC) {\r
-        \r
+         //ALIPAY_PRINT_ERR(0, "gatts_add_service ret:%u.\r\n", ret);\r
     }\r
     ALIPAY_PRINT_ERR(0, "gatts_add_service ret:%u.\r\n", ret);\r
     return;\r
 }\r
 void alipay_unregist_server(void)\r
 {\r
+    svr_alipay_ble_adv_stop();\r
     gatts_delete_all_services(g_alipay_server_id);\r
     gatts_unregister_server(g_alipay_server_id);\r
-    svr_alipay_ble_adv_stop();\r
+    g_alipay_ble_init_flag = false;\r
+    g_alipay_server_id = 1;\r
+    g_alipay_server_handle = 0;\r
+    g_alipay_conn_id = 0;\r
 }\r
-#ifdef SUPPORT_BLE_SERVICE\r
-extern void ble_unregist_server(void);\r
-#endif\r
 \r
 void svr_alipay_bluetooth_init(void)\r
 {\r
-    #ifdef SUPPORT_BLE_SERVICE\r
-    ble_unregist_server();\r
-    #endif\r
-    disable_bt_stack();\r
-    svr_alipay_ble_adv_stop();\r
-    osDelay(100);\r
     bool ret = enable_bt_stack();\r
     if (ret != ERRCODE_SUCC) {\r
         ALIPAY_PRINT_ERR(0, "enable_bt_stack ret:%u.\r\n", ret);\r
     }\r
-    // if (g_alipay_ble_init_flag == true) {\r
-    //     return;\r
-    // }\r
+    if (g_alipay_ble_init_flag == true) {\r
+        return;\r
+    }\r
     svr_alipay_btcallback_reg();\r
     svr_alipay_bt_init_gatts();\r
     svr_alipay_ble_adv_start();\r
     g_alipay_ble_init_flag = true;\r
     return;\r
 }\r
-void svr_alipay_reset_init(void)//重新启动alipa的服务\r
-{\r
-    #ifdef SUPPORT_BLE_SERVICE\r
-    ble_unregist_server();\r
-    #endif\r
-    osDelay(100);\r
-    svr_alipay_btcallback_reg();\r
-    svr_alipay_bt_init_gatts();\r
-    svr_alipay_ble_adv_start();\r
-    return;\r
-}\r
 #endif
\ No newline at end of file
index f22d366..d4d435d 100755 (executable)
@@ -69,18 +69,17 @@ static mc_payment_state_t svr_alipay_get_paystate(void)
 {
     return PAYMENT_UNSUPPORTED;
 }
-extern void svr_alipay_reset_init(void);
+// extern void svr_alipay_reset_init(void);
 static int32_t svr_alipay_notify_bt(bool value)
 {
     if (value) {
         printf("svr_alipay_notify_bt true:%d",value);
-        svr_alipay_bluetooth_init();
+
+               svr_alipay_ble_adv_start();
     } else {
         printf("svr_alipay_notify_bt false:%d",value);
-        #ifdef SUPPORT_BLE_SERVICE  
-        svr_bluetooth_init();
-        #endif
-        // svr_alipay_ble_adv_stop();
+
+        svr_alipay_ble_adv_stop();
     }
     return 0;
 }
index b169557..3b83d60 100644 (file)
@@ -585,10 +585,12 @@ void AlipayModel::AlipayScreenControl(bool turnOnFlag)
     if(turnOnFlag)\r
     {\r
         const power_display_svr_api_t *display_api = power_display_svr_get_api();\r
+        display_api->set_screen_set_keepon_timeout(0);\r
         if (display_api->get_screen_state() != SCREEN_ON)\r
         {\r
             display_api->turn_on_screen();\r
         }\r
+        LOS_Msleep(50);\r
         //当设置的值是-1 的时候,设置屏幕常亮\r
         display_api->set_screen_set_keepon_timeout(-1);\r
     }\r
index 4e6faae..388d10f 100644 (file)
@@ -18,7 +18,8 @@
 #include "AlipayListItemView.h"\r
 #include "AlipayTransListItemView.h"\r
 #include "AlipayTransListView.h"\r
-\r
+#include "custom_utils.h"\r
+#include "common/key_code.h"\r
 namespace OHOS {\r
 static AlipayPresenter *g_alipayPresenter = nullptr;\r
 \r
@@ -49,7 +50,8 @@ void AlipayPresenter::OnStart()
 {\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStart");\r
     Presenter<AlipayMainView>::OnStart();\r
-\r
+    /**启动alipay蓝牙服务*/\r
+    start_alipay_ble_service();\r
     /* -------------------------------- 设置支付宝界面常亮 ------------------------------- */\r
     alipayMode_->AlipayScreenControl(true);\r
     /* -------------------------------------------------------------------------- */\r
@@ -69,6 +71,10 @@ void AlipayPresenter::OnResume(void) {}
 \r
 void AlipayPresenter::OnStop(void)\r
 {\r
+\r
+    /**关闭alipay蓝牙服务*/\r
+    stop_alipay_ble_service();\r
+\r
     WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "AlipayPresenter OnStop");\r
     svr_alipay_destroy_task();\r
     alipayMode_->AlipayDeinitModel();\r
@@ -421,8 +427,9 @@ bool AlipayPresenter::OnKeyAct(UIView &view, const KeyEvent &event)
 {\r
     WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "AlipayPresenter::OnKeyAct");\r
     uint16 keyID = event.GetKeyId();\r
+    uint16_t keyState = event.GetState();\r
     // 如果是power键就返回上一级\r
-    if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER))\r
+    if (keyID == static_cast<uint16_t>(ZliteKeyCode::ZLITE_KEY_POWER) &&  keyState == 0 && uapi_get_screen_state() == 0)\r
     {\r
         uint16_t preSlice = NativeAbility::GetInstance().GetPreSliceId();\r
         NativeAbility::GetInstance().ChangeSlice(preSlice);\r
index 9ec56c4..411616b 100644 (file)
@@ -77,17 +77,29 @@ BluetoothModel *BluetoothModel::GetInstance(void)
 \r
 void BluetoothModel::Init()\r
 {\r
-    // bool ret = enable_bt_stack();\r
-    // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %d", ret);\r
 \r
-    BtInitCallBacks();\r
+/**\r
+ *  由于 是否开启蓝牙,并不确认,需要根据客户选择来执行,\r
+ * 因此此处只做 基本数据的初始化,以及某些不会变动的 callback函数注册\r
+ */\r
+#if 0\r
+    bool ret = enable_bt_stack();\r
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %d", ret);\r
+    //gatt ble 信息在 支付宝和私有 ble协议中都会用到,因此在对应的应用里进行初始化。\r
 #ifdef SUPPORT_ALIPAY_SEC\r
-    // svr_alipay_bluetooth_init();\r
+    svr_alipay_bluetooth_init();\r
 #else\r
     BtInitCallBacksEx();\r
     BtInitGatts();\r
 #endif\r
-    BtInitSpp();\r
+\r
+#endif\r
+\r
+    /**初始化 经典蓝牙callback  经典蓝牙不改动,因此启动就初始化好 */\r
+    BtInitCallBacks();\r
+\r
+    /**启动spp服务 */\r
+    // BtInitSpp();\r
 \r
     SetUpListCase();\r
     SetUpConnedDevicesList();\r
@@ -1164,7 +1176,6 @@ static a2dp_snk_callbacks_t g_a2dp_snk_callbacks = {
 \r
 void BtInitCallBacks()\r
 {\r
-    #if 0\r
     g_btGapCallBacks.discovery_result_callback = BtGapDiscoveryResultCallback;\r
     g_btGapCallBacks.discovery_state_changed_callback = BtGapDiscoveryStateChangedCallback;\r
     g_btGapCallBacks.acl_state_changed_callbak = GapAclStateChangedCallback;\r
@@ -1180,15 +1191,12 @@ void BtInitCallBacks()
     g_a2dpSrcCallbacks.configuration_changed_cb = A2dpSrcConfigureChanged;\r
     g_a2dpSrcCallbacks.playing_state_changed_cb = A2dpSrcPlayingStateChanged;\r
     a2dp_src_register_callbacks(&g_a2dpSrcCallbacks);\r
-    #endif\r
-\r
     /* a2dp sink */\r
-    // a2dp_snk_register_callbacks(&g_a2dp_snk_callbacks);\r
+    a2dp_snk_register_callbacks(&g_a2dp_snk_callbacks);\r
 }\r
 \r
 void BtInitCallBacksEx()\r
 {\r
-    #if 0\r
     g_gapBleCallbacks.conn_state_change_cb = BleConnStateChangeCallback;\r
     g_gapBleCallbacks.start_adv_cb = BleAdvStartCallback;\r
     g_gapBleCallbacks.stop_adv_cb = BleAdvStopCallback;\r
@@ -1204,12 +1212,10 @@ void BtInitCallBacksEx()
     g_btGattsCallbacks.write_request_cb = BtGattsRequestWriteCallback;\r
     g_btGattsCallbacks.mtu_changed_cb = NULL;\r
     gatts_register_callbacks(&g_btGattsCallbacks);\r
-    #endif\r
 }\r
 \r
 void BtInitGatts(void)\r
 {\r
-    #if 0\r
     uint16_t id = BLE_SERVICE_UUID;\r
     uint16_t ser_id = 0x1FFF;\r
     uint8_t serverId = 0;\r
@@ -1225,7 +1231,6 @@ void BtInitGatts(void)
     memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&id, sizeof(id));\r
     ret = gatts_add_service(serverId, &uuid, true);\r
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_service ret: 0x%x", ret);\r
-    #endif\r
 }\r
 \r
 static uint8_t Char2Num(int8_t c)\r
index 75bcee2..a10e505 100644 (file)
@@ -124,17 +124,13 @@ namespace OHOS
 \r
             ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON,true);\r
 \r
-            #ifdef SUPPORT_BLE_SERVICE\r
-            openBle();//主动开启蓝牙\r
-            #endif\r
+            start_custom_ble_service();//主动开启蓝牙\r
             break;\r
         case UICheckBox::UNSELECTED:\r
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BlueTooth Capability Is Disabled");\r
             ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON,false);\r
 \r
-            #ifdef SUPPORT_BLE_SERVICE\r
-            closeBle();\r
-            #endif      \r
+            stop_custom_ble_service();\r
             break;\r
         default:\r
             break;\r
index 202183b..845fb9e 100644 (file)
@@ -16,7 +16,7 @@ uint32_t ConfigModelInit(void);
 /***
  * 蓝牙服务是否开启
  */
-bool start_ble_service_on_bootup_flag(void);
+bool custom_ble_service_on_flag(void);
 /***
  * Cat1服务是否开启
  */
index 06ae027..cf522e3 100644 (file)
@@ -712,7 +712,7 @@ uint32_t ConfigModelInit(void)
 /***
  * 蓝牙服务是否开启
  */
-bool start_ble_service_on_bootup_flag(void)
+bool custom_ble_service_on_flag(void)
 {
     return OHOS::ConfigModel::GetInstance()->GetClassicBlueToothState();
 }
index 6bae158..c52e0c9 100644 (file)
@@ -4,7 +4,6 @@
 #include "bleService.h"\r
 #include "battery_hal.h"\r
 extern uint8_t battery_get_voltage(float *voltage);\r
-extern void openBle(void);\r
 namespace OHOS\r
 {\r
 \r
index af60f70..5d9f924 100644 (file)
@@ -85,7 +85,7 @@ static bool g_ble_init_flag = false;
 static const uint8_t ble_adv_type[BLE_ADV_TYPE_LENTH] = {2, 1, 2};\r
 static const uint8_t ble_adv_uuid[BLE_ADV_UUID_LENTH] = {0x3, 0x3, 0xe0, 0x18};\r
 static const uint8_t ble_adv_tx[4] = {0x03,0x03,0xe0,0x18};\r
-static bool AdverFlag = true;\r
+static bool AdverFlag = false;\r
 \r
 static uint8_t scan_data[BLE_SCAN_MAC_LENTH] = {0};\r
 \r
@@ -806,7 +806,11 @@ static void svr_ble_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, g
 { \r
      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_ble_server_handle %d conn_id :%d write_cb_para->length:%d write_cb_para->handle %d write_cb_para->request_id:%d",g_ble_server_handle,conn_id,write_cb_para->length,\r
      write_cb_para->handle,write_cb_para->request_id);\r
-    \r
+    for(uint16_t i = 0;i<write_cb_para->length;i++)\r
+    {   \r
+        printf("%x ",write_cb_para->value[i]);\r
+       \r
+    }\r
     //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"handle :%d %d %d".write_cb_para->handle,get_factory_ate_write_handl(),get_factory_ota_write_handl());\r
     if (write_cb_para->handle == get_factory_ate_write_handl()) \r
     {\r
@@ -816,11 +820,6 @@ static void svr_ble_bt_gatts_req_write_cb(uint8_t server_id, uint16_t conn_id, g
     {\r
         factory_recv_ota_data(write_cb_para->value,write_cb_para->length,write_cb_para->handle);\r
     }else{\r
-        for(uint16_t i = 0;i<write_cb_para->length;i++)\r
-        {   \r
-            printf("%02x ",write_cb_para->value[i]);\r
-        \r
-        }\r
         revBleOldData(write_cb_para->value,write_cb_para->length,write_cb_para->handle);\r
     }\r
 }\r
@@ -1221,23 +1220,23 @@ bool ble_gatts_cmp_uuid(const bt_uuid_t *tgt_uuid, const bt_uuid_t *src_uuid)//
 extern void alipay_unregist_server(void);\r
 void ble_unregist_server(void)\r
 {\r
+    svr_ble_adv_stop();\r
     gatts_delete_all_services(g_ble_server_id);\r
     gatts_unregister_server(g_ble_server_id);\r
-    svr_ble_adv_stop();\r
     \r
 }\r
-void svr_ble_reset_init(void)//重新启ble服务\r
-{\r
-    alipay_unregist_server();\r
-    osDelay(100);\r
-    svr_ble_btcallback_reg();\r
-    svr_ble_bt_init_gatts();\r
-    ble_hid_server_init();\r
-    ble_factory_server_init();\r
-    svr_ble_adv_start_param();\r
-}\r
-\r
-void svr_bluetooth_init(void)\r
+// void svr_ble_reset_init(void)//重新启ble服务\r
+// {\r
+//     alipay_unregist_server();\r
+//     osDelay(100);\r
+//     svr_ble_btcallback_reg();\r
+//     svr_ble_bt_init_gatts();\r
+//     ble_hid_server_init();\r
+//     ble_factory_server_init();\r
+//     svr_ble_adv_start_param();\r
+// }\r
+\r
+static void svr_bluetooth_init(void)\r
 {\r
     bool ret = enable_bt_stack();\r
     // bool ret = enable_ble();\r
@@ -1276,9 +1275,14 @@ void closeBle(void)
         // ret = gap_ble_remove_all_pairs();//删除和所有配对的手机app\r
         // gap_remove_all_pairs();\r
         svr_ble_adv_stop();//停止广播 不发送广播数据 就是app搜索不到该设备了\r
-        // ret = disable_bt_stack();//关闭ble 直接断开和当前连接的手机app\r
-        ret = disable_ble();//关闭ble 直接断开和当前连接的手机app\r
+\r
+        ble_recv_register_msg_callback(NULL);\r
+        ret = disable_bt_stack();//关闭ble 直接断开和当前连接的手机app\r
+        // ret = disable_ble();//关闭ble 直接断开和当前连接的手机app\r
         WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "closeBle ret%d 0x%x-0x%x-0x%x-0x%x-0x%x-0x%x\r\n",ret,bd_addr.addr[0],bd_addr.addr[1],bd_addr.addr[2],bd_addr.addr[3],bd_addr.addr[4],bd_addr.addr[5]);\r
+    }else{\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AdverFlag false no need closeBle\r\n");\r
+\r
     }\r
 }\r
 //开启蓝牙\r
@@ -1289,6 +1293,9 @@ void openBle(void)
     {\r
         AdverFlag = true;\r
         svr_bluetooth_init();\r
+    }else{\r
+        WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "AdverFlag true no need openBle again\r\n");\r
+\r
     }\r
 }\r
 #endif\r
index 742b767..c0a877c 100644 (file)
@@ -20,7 +20,7 @@ extern uint8_t devpair_state;
 extern uint8_t data2ae3Cmd;//2ae3短指令特征值
 extern uint8_t data2ae4Cmd;//长指令特征值 大于20个字节的数据app下发的
 extern uint16_t ble_nus_max_data_len;
-void svr_bluetooth_init(void);//蓝牙服务初始化
+// void svr_bluetooth_init(void);//蓝牙服务初始化
 void closeBle(void);//主动关闭蓝牙
 void openBle(void);//主动开启蓝牙
 void svr_ble_adv_start_param(void);//开始蓝牙广播
index b0905ba..d2203a1 100755 (executable)
 #define UARTRESET       (M_CTL_RB_BASE + 0x0168)
 #define UARTBUS0        0x1
 #define UARTBUS1        0x0
+
+/** 
+ * CUSTOM_UART_RATE = 500000 可以看蓝牙日志
+ *                    2000000 可以加快下载文件速度
+*/
+#define CUSTOM_UART_RATE 2000000  
 typedef struct {
     pin_mode_t tx_pin_mode;
     pin_mode_t rx_pin_mode;
@@ -184,7 +190,7 @@ static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
             #ifdef ENABLE_SLIP
             .baud_rate = 921600,
             #else
-            .baud_rate = 2000000,
+            .baud_rate = CUSTOM_UART_RATE,
             #endif
             .data_bits = UART_DATA_BIT_8,
             .parity = UART_PARITY_NONE,
@@ -225,7 +231,7 @@ static uart_config_t g_uart_config[UART_BUS_MAX_NUMBER] = {
         log_factory_at_callback,
 #endif
         {
-            .baud_rate = 2000000,
+            .baud_rate = CUSTOM_UART_RATE,
             .data_bits = UART_DATA_BIT_8,
             .parity = UART_PARITY_NONE,
             .stop_bits = UART_STOP_BIT_1,
index cce9b22..b55ff2a 100644 (file)
@@ -123,6 +123,12 @@ void uapi_reboot_device(void)
 {
     mcu_os_sys_reset(NULL,NULL);
 }
+
+void shutdown_reboot_prejobs_task(void)
+{
+    uapi_calendar_store_date();
+    sync_all_config_to_disk();
+}
 static bool doing_shutdown_or_reboot = false;
 void shutdown_reboot_prejobs(void)
 {
@@ -132,7 +138,7 @@ void shutdown_reboot_prejobs(void)
     taskcfg.attr.name="shutdown_reboot_prejobs";
     taskcfg.attr.priority = osPriorityNormal;
     taskcfg.attr.stack_size = 0x1000;
-    taskcfg.func = sync_all_config_to_disk;
+    taskcfg.func = shutdown_reboot_prejobs_task;
     taskcfg.use_mem = USE_EXTEND_MEM;
     
     errcode_t ret=uapi_create_osThread_custom(&taskcfg);
@@ -202,6 +208,8 @@ void startup_post_init_task(void)
 {
 
     PRINT("startup_post_init_task !\r\n");
+    uapi_calendar_recover_date();
+
     if(custom_ble_service_on_flag())
     {
         start_custom_ble_service();
@@ -293,7 +301,7 @@ errcode_t uapi_get_timestampe_ms(uint64_t *tm)
 static uint32_t get_sec_time_from_cat1time(char* time , uint32_t *second , uint8_t *zone)
 {
 
-    struct tm tm = { 0 };
+    struct tm _tm = { 0 };
     char* ptr = time;
     char* tmp;
 
@@ -311,8 +319,8 @@ static uint32_t get_sec_time_from_cat1time(char* time , uint32_t *second , uint8
     if (tmp == NULL) { return 1; }
     *tmp = '\0';
     // 年的计算需要减去1900
-    tm.tm_year = strtol(ptr, NULL, DECIMAL) - 1900;
-    if (tm.tm_year < TIME_YEAR_OFFSET) {
+    _tm.tm_year = strtol(ptr, NULL, DECIMAL) - 1900;
+    if (_tm.tm_year < TIME_YEAR_OFFSET) {
         printf("ERR!year num must bigger than 1970!");
         return 3;
     }
@@ -325,7 +333,7 @@ static uint32_t get_sec_time_from_cat1time(char* time , uint32_t *second , uint8
     if (tmp == NULL) { return 1; }
     *tmp = '\0';
     // 月的计算需要减1
-    tm.tm_mon = strtol(ptr, NULL, DECIMAL) - 1;
+    _tm.tm_mon = strtol(ptr, NULL, DECIMAL) - 1;
     ptr = tmp + 1;
 
     // 日
@@ -333,7 +341,7 @@ static uint32_t get_sec_time_from_cat1time(char* time , uint32_t *second , uint8
     tmp = strchr(ptr, ',');
     if (tmp == NULL) { return 1; }
     *tmp = '\0';
-    tm.tm_mday = strtol(ptr, NULL, DECIMAL);
+    _tm.tm_mday = strtol(ptr, NULL, DECIMAL);
     ptr = tmp + 1;
 
     // 时
@@ -341,7 +349,7 @@ static uint32_t get_sec_time_from_cat1time(char* time , uint32_t *second , uint8
     tmp = strchr(ptr, ',');
     if (tmp == NULL) { return 1; }
     *tmp = '\0';
-    tm.tm_hour = strtol(ptr, NULL, DECIMAL);
+    _tm.tm_hour = strtol(ptr, NULL, DECIMAL);
     ptr = tmp + 1;
 
     // 分
@@ -349,7 +357,7 @@ static uint32_t get_sec_time_from_cat1time(char* time , uint32_t *second , uint8
     tmp = strchr(ptr, ',');
     if (tmp == NULL) { return 1; }
     *tmp = '\0';
-    tm.tm_min = strtol(ptr, NULL, DECIMAL);
+    _tm.tm_min = strtol(ptr, NULL, DECIMAL);
     ptr = tmp + 1;
 
     // 秒
@@ -357,7 +365,7 @@ static uint32_t get_sec_time_from_cat1time(char* time , uint32_t *second , uint8
     tmp = strchr(ptr, ',');
     if (tmp == NULL) { return 1; }
     *tmp = '\0';
-    tm.tm_sec = strtol(ptr, NULL, DECIMAL);
+    _tm.tm_sec = strtol(ptr, NULL, DECIMAL);
     ptr = tmp + 1;
 
     //毫秒
@@ -372,10 +380,10 @@ static uint32_t get_sec_time_from_cat1time(char* time , uint32_t *second , uint8
     //时区
     if ( *ptr == ' ') { ptr = ptr + 1; }
     *zone = strtol(ptr, NULL, DECIMAL);
-    *second = (uint32_t)__tm_to_secs(&tm);
+    *second = (uint32_t)__tm_to_secs(&_tm);
      *second -= *zone * 3600; //cat1获得的时间时当下时间,实际上要减去zone的时间
 
-    //  printf("%04d-%02d-%02d %02d:%02d:%02d %d\n",tm.tm_year,tm.tm_mon,tm.tm_mday,tm.tm_hour,tm.tm_min,tm.tm_sec,*zone);
+    //  printf("%04d-%02d-%02d %02d:%02d:%02d %d\n",_tm.tm_year,_tm.tm_mon,_tm.tm_mday,_tm.tm_hour,_tm.tm_min,_tm.tm_sec,*zone);
     return 0;
 }
 errcode_t uapi_set_time_from_cat1(char* cat1time)
@@ -1283,5 +1291,61 @@ int enter_recovery(void)
     //upg_reboot();
 }
 
+#include "driver/calendar.h"
+
+uint32_t uapi_calendar_store_date(void)
+{
+
+    calendar_t date;
+
+    time_t rawtime;
+    struct tm* timeinfo;
+    time(&rawtime);
+    timeinfo = localtime(&rawtime);
+    date.year = timeinfo->tm_year + 1900;
+    date.mon = timeinfo->tm_mon + 1;
+    date.day = timeinfo->tm_mday;
+    date.hour = timeinfo->tm_hour;
+    date.min = timeinfo->tm_min;
+    date.sec = timeinfo->tm_sec;
+
+    errcode_t ret = uapi_calendar_set_datetime(&date);
+    if (ret == ERRCODE_SUCC) {
+        printf("store datetime success: %d-%d-%d %d:%d:%d\r\n", date.year, date.mon, date.day, date.hour, date.min,
+            date.sec);
+        return ERRCODE_SUCC;
+    }
+    printf("Set datetime failed, error code = %d \r\n", ret);
+    return ret;
+}
+
+uint32_t uapi_calendar_recover_date(void)
+{
 
+    calendar_t date;
+    errcode_t ret = uapi_calendar_get_datetime(&date);
+    if (ret == ERRCODE_SUCC) {
+        printf("Get datetime success: %d-%d-%d %d:%d:%d\r\n", date.year, date.mon, date.day, date.hour, date.min,
+            date.sec);
+        
+        {//设置时间
+            struct timeval tv = { 0 };
+            struct tm _tm={0};
+            _tm.tm_year = date.year -1900;
+            _tm.tm_mon = date.mon -1;
+            _tm.tm_mday = date.day;
+            _tm.tm_hour = date.hour;
+            _tm.tm_min = date.min;
+            _tm.tm_sec = date.sec;
+            uint32_t sec = (uint32_t)__tm_to_secs(&_tm);
+            tv.tv_sec = sec;
+            tv.tv_usec = 0;
+            settimeofday(&tv, NULL);
+        }
+        
+        return ERRCODE_SUCC;
+    }
+    printf("Get datetime failed, error code = %d \r\n", ret);
+    return ret;
+}
 
index 16b8740..0d31d7a 100644 (file)
@@ -145,30 +145,45 @@ static uint32_t custom_start_ota_download(uint8_t *para, uint32_t paraLen, char
     return ERRCODE_SUCC;
 }
 
-// static uint32_t custom_vibrator_swtich(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
-// {
-//     UNUSED(strCommonCmd);
+static uint32_t custom_dsp_power_test(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
+{
+    UNUSED(strCommonCmd);
+
+    uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN] = { 0 };
+    uint32_t argc = 0;
 
-//     uint8_t argv[CUSTOM_UTILS_MAX_ARGC][CUSTOM_UTILS_MAX_ARGV_LEN] = { 0 };
-//     uint32_t argc = 0;
+    int ret = ConvertCmdToParam(para, paraLen, argv, &argc);
+    if (ret != CUSTOM_UTILS_SUCCESS) {
+        PRINT("CUSTOM_UTILSTEST ATCMD Convert Command Failed\n");
+        return ERRCODE_FAIL;
+    }
 
-//     int ret = ConvertCmdToParam(para, paraLen, argv, &argc);
-//     if (ret != CUSTOM_UTILS_SUCCESS) {
-//         PRINT("CUSTOM_UTILSTEST ATCMD Convert Command Failed\n");
-//         return ERRCODE_FAIL;
-//     }
+    if (argc != 1) {
+        PRINT("CUSTOM_UTILSTEST power_test ATCMD Set Parameter Failed argc %d\r\nPM_DSP_POWER_UP_AND_RUN=2  PM_DSP_POWER_OFF=3\r\n",argc);
+        return ERRCODE_FAIL;
+    }
 
-//     if (argc != 1) {
-//         PRINT("CUSTOM_UTILSTEST ATCMD Set Parameter Failed argc %d\n",argc);
-//         return ERRCODE_FAIL;
-//     }
 
-//     uint8_t cmd = atoi((char*)argv[0]);
+    uint8_t cmd = atoi((char*)argv[0]);
 
-//     Vibrator_swtich(cmd);
+    if (cmd == 2  )
+    {
+        PRINT("PM_DSP_POWER_UP_AND_RUN=2\r\n",argc);
+        uapi_pm_control(PM_DSP_POWER_UP_AND_RUN);
+
+    }else if (cmd ==3 ){
+        PRINT("PM_DSP_POWER_OFF=3\r\n",argc);
+        uapi_pm_control(PM_DSP_POWER_OFF);
+     }else if (cmd ==0 ){
+        errcode_t ret = gap_ble_stop_scan();
+        PRINT("gap_ble_stop_scan ret %x\r\n",ret);
+    }else{
+        PRINT("arguments only support PM_DSP_POWER_UP_AND_RUN: 2  or  PM_DSP_POWER_OFF: 3\r\n");
+    }
+   
 
-//     return ERRCODE_SUCC;
-// }
+    return ERRCODE_SUCC;
+}
 
 static uint32_t custom_lcd_getid(uint8_t *para, uint32_t paraLen, char *strCommonCmd)
 {
@@ -349,11 +364,10 @@ static uint32_t custom_bleservice_test(uint8_t *para, uint32_t paraLen, char *st
     
     if (_switch == 1)
     {
-        openBle();
+        start_custom_ble_service();
     }else{
-        ble_unregist_server();
-        closeBle();
-    }   
+        stop_custom_ble_service();
+    }  
     
     return ERRCODE_SUCC;
 }
@@ -392,6 +406,7 @@ static const at_cmd_table_t g_custom_utils_cmd[] = {
 
     { (char *)"AT^GETTP",      custom_get_tpinfo, (char *)" " },
     { (char *)"AT^BLESERVICE",      custom_bleservice_test, (char *)" " },
+    { (char *)"AT^DSPPWR",      custom_dsp_power_test, (char *)" " },
 
 };