*/\r
#include <cstdint>\r
#include "BluetoothModel.h"\r
+#include "BluetoothWrapper.h"\r
#include "BluetoothPresenter.h"\r
#include "ConnectPhonePresenter.h"\r
#include "BluetoothView.h"\r
#include "alipay_feature.h"\r
#endif\r
#include "bts_a2dp_sink.h"\r
+#include "bts_feature.h"\r
#include "bt_audio_hal_interface.h"\r
#include "audio_manager_c_wrapper.h"\r
#include "bts_avrcp_target.h"\r
#include "msg_center_msg.h"\r
+#include "dfx_channel.h"\r
+#include "tcxo.h"\r
#include "custom_runtime.h"\r
namespace OHOS {\r
\r
osal_timer g_a2dp_stream_accept_timer = {nullptr, nullptr, 0, 0};\r
#define A2DP_STREAM_ACCEPT_TIMER_PERIOD 500\r
AudioFormatConfig g_audio_format_config = {AUDIO_DEFAULT, 0, 0};\r
+static uint16_t g_sample_svr_handle = 0;\r
+static uint16_t g_sample_characteristic_handle = 0;\r
+static uint16_t g_diag_characteristic_handle = 0;\r
+constexpr uint16_t g_sample_adv_id = 2;\r
+static bd_addr_t g_bd_addr = { 0 };\r
\r
void BluetoothModel::SetBluetoothCalleridStatus(int16_t value)\r
{\r
callerid = value;\r
}\r
-static bool Productfalg=false;\r
-\r
-// void BluetoothModel::SetProductfalg(bool falg)\r
-// {\r
-// callerid = value;\r
-// }\r
\r
int BluetoothModel::GetBluetoothCalleridStatus(void)\r
{\r
return &instance;\r
}\r
\r
+char* BluetoothModel::getWatchName(void)\r
+{\r
+ return watchName;\r
+}\r
+\r
+void BluetoothModel::InitBluetoothInfo(void)\r
+{\r
+ errcode_t ret;\r
+ unsigned char nameLen = BD_NAME_LEN;\r
+ memset_s(watchName, sizeof(watchName), 0, sizeof(watchName));\r
+ ret = bluetooth_get_local_name((unsigned char *)watchName, &nameLen);\r
+ // 为了实验室测试需要,客户需要自己修改\r
+ if ((nameLen == strlen("WatchDemo") + 1) && (strcmp("WatchDemo", watchName) == 0)) {\r
+ uint32_t currentUs = uapi_tcxo_get_us();\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "currentUs 0x%x", currentUs);\r
+ // 设置蓝牙名称\r
+ (void)sprintf_s(watchName, sizeof(watchName), "Watch%x", (currentUs & 0xFFFF));\r
+ ret = bluetooth_set_local_name((unsigned char*)watchName, strlen((char*)watchName) + 1);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_set_local_name %s ret = %u", watchName, ret);\r
+\r
+ // 设置蓝牙地址\r
+ bd_addr_t addr = {{0x0, 0x0, 0x33, 0x44, 0x55, 0x66} ,0};\r
+ addr.addr[0] = currentUs & 0xFF;\r
+ addr.addr[1] = (currentUs & 0XFF00) >> 8;\r
+ ret = bluetooth_set_local_addr(addr.addr, BD_ADDR_LEN);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bluetooth_set_local_addr [0x%x:0x%x] ret = %u", addr.addr[0], addr.addr[1], ret);\r
+ } else {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "watchName: %s", watchName);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "nameLen: %u", nameLen);\r
+ }\r
+}\r
void BluetoothModel::Init()\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
+#ifndef SUPPORT_AUTO_OTA\r
+ errcode_t ret;\r
+\r
+ // 设置自动回连,ios一键双连依赖此配置\r
+ bts_feature_t bts_feature = { 0 };\r
+ bts_feature.bt_auto_reconnect_closed = 0;\r
+ ret = bts_set_features(&bts_feature);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt bts_set_features ret = %u", ret);\r
\r
+ ret = enable_bt_stack();\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %u", ret);\r
+\r
+ // 设置安全连接\r
+ gap_ble_sec_params_t sec_param = { 1, GAP_BLE_IO_CAPABILITY_NOINPUTNOOUTPUT, 1, GAP_BLE_GAP_SECURITY_MODE1_LEVEL3 };\r
+ ret = gap_ble_set_sec_param(&sec_param);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt gap_ble_set_sec_param ret = %u", ret);\r
+\r
+ InitBluetoothInfo();\r
BtInitCallBacks();\r
+ wrapper_ble_register();\r
#ifdef SUPPORT_ALIPAY_SEC\r
svr_alipay_bluetooth_init();\r
-#else\r
+#endif\r
BtInitCallBacksEx();\r
BtInitGatts();\r
-#endif\r
BtInitSpp();\r
-#endif\r
+\r
SetUpListCase();\r
SetUpConnedDevicesList();\r
+#endif\r
}\r
\r
void BluetoothModel::SetCaseListClear()\r
for (auto it = btScansDevicesList_.begin(); it != btScansDevicesList_.end(); it++) {\r
if ((it->addr[0] == bdAddr->addr[0]) && (it->addr[1] == bdAddr->addr[1])\r
&& (it->addr[2] == bdAddr->addr[2]) && (it->addr[3] == bdAddr->addr[3])\r
- && (it->addr[4] == bdAddr->addr[4]) && (it->addr[5] == bdAddr->addr[5])) \r
- {\r
+ && (it->addr[4] == bdAddr->addr[4]) && (it->addr[5] == bdAddr->addr[5])) {\r
it->temp = rssi;\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "btScansDevicesList_ rssi:%d deviceName:%s", it->temp, it->deviceName);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "btScansDevicesList_ rssi:%d deviceName:%s", it->temp, it->deviceName);\r
}\r
}\r
}\r
void BtGapReadRemoteRssiEventCallback(const bd_addr_t *bdAddr, int rssi, int status)\r
{\r
UNUSED(status);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtGapReadRemoteRssiEventCallback addr: %02x%02x%02x%02x%02x%02x",\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapReadRemoteRssiEventCallback addr: %02x%02x%02x%02x%02x%02x",\r
bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
BluetoothModel::GetInstance()->SetScansCaseRssi(bdAddr, rssi);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt BtGapReadRemoteRssiEventCallback SetSortCaseRssi: %d status: %d", rssi, status);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapReadRemoteRssiEventCallback SetSortCaseRssi: %d status: %d", rssi, status);\r
}\r
\r
// 回调:发现状态变化上报/扫描结束\r
void BtGapDiscoveryStateChangedCallback(int status)\r
{\r
UNUSED(status);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryStateChangedCallback %d", status);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryStateChangedCallback %d", status);\r
}\r
\r
static void ChangeScanView()\r
\r
unsigned char nameLen = BD_NAME_LEN;\r
bool getNameRet = gap_get_device_name(&bdAddr, caseInfo.deviceName, &nameLen);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback getNameRet(bool): %d nameLen: %d name:%s",\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_discovery_result_callback getNameRet(bool): %d nameLen: %d name:%s",\r
getNameRet, nameLen, caseInfo.deviceName);\r
\r
\r
if (nameLen == 0) { // 过滤未扫描到名字的设备\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nameLen == 0 return");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "nameLen == 0 return");\r
return;\r
}\r
// 去重操作\r
BluetoothModel::GetInstance()->AddCase(caseInfo); // 增加扫描设备信息\r
}\r
bool ret = gap_read_remote_rssi_value(&bdAddr); // 获取rssi\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_read_remote_rssi_value ret = %d", ret);\r
-\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gap_read_remote_rssi_value ret = %d", ret);\r
BluetoothEarPhoneView *bluetoothEarPhoneView = BluetoothEarPhoneView::GetInstance();\r
if (bluetoothEarPhoneView == nullptr) {\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bluetoothEarPhoneView nullptr");\r
} // 刷新\r
bluetoothEarListView->GetScanUIList()->RefreshList();\r
}\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryResultCallback end");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt BtGapDiscoveryResultCallback end");\r
}\r
\r
void BtGapPairStatusChangedCallback(const bd_addr_t *bdAddr, int status)\r
// 回调:扫描结果处理/发现结果上报\r
void BtGapDiscoveryResultCallback(const bd_addr_t *bdAddr)\r
{\r
- if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BtGapDiscoveryResultCallback: Mobile Phone Device");\r
- //return;\r
+ if ((gap_get_device_class(bdAddr) & DEVICE_MAJOR_CLASS_PHONE) != 0) {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapDiscoveryResultCallback: Mobile Phone Device");\r
+ return;\r
}\r
\r
if (bdAddr == nullptr) {\r
// 回调:ACL连接状态上报\r
void GapAclStateChangedCallback(const bd_addr_t *bdAddr, gap_acl_state_t state, unsigned int reason)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "bt GapAclStateChangedCallback state %d, reason %x succ or err", state, reason);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr: %02x%02x%02x%02x%02x%02x",\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "bt GapAclStateChangedCallback state %d, reason %x succ or err", state, reason);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "addr: %02x%02x%02x%02x%02x%02x",\r
bdAddr->addr[5], bdAddr->addr[4], bdAddr->addr[3], /* mac下标 0 1 2 3 4 5 */\r
bdAddr->addr[2], bdAddr->addr[1], bdAddr->addr[0]); /* mac下标 0 1 2 3 4 5 */\r
if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
return;\r
}\r
GraphicService::GetInstance()->PostGraphicEvent(\r
if (GAP_BLE_STATE_DISCONNECTED == connState) { // restart ble adv when disconnected\r
/* 通知msg_center,ble状态仍用bt状态,此处不区分 */\r
SendMsgToMsgCenterService(BT_DISCONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
- BleAdvStart();\r
} else {\r
- BluetoothModel::GetInstance()->SetAdvStartState(false);\r
SendMsgToMsgCenterService(BT_CONNECTED_TO_MSGCENTER, 0, nullptr, 0);\r
+ (void)memcpy_s(&g_bd_addr, sizeof(bd_addr_t), addr, sizeof(bd_addr_t));\r
}\r
}\r
\r
static void BleAdvStartCallback(uint8_t advId, adv_status_t status)\r
{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStartCallback advId: %d, status:%d\n", advId, status);\r
- BluetoothModel::GetInstance()->SetAdvStartState(true);\r
+ if (g_sample_adv_id == advId) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStartCallback advId: %d, status:%d\n", advId, status);\r
+ BluetoothModel::GetInstance()->SetAdvStartState(true);\r
+ }\r
}\r
\r
static void BleAdvStopCallback(uint8_t advId, adv_status_t status)\r
{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStopCallback advId: %d, status:%d\n", advId, status);\r
+ if (g_sample_adv_id == advId) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStopCallback advId: %d, status:%d\n", advId, status);\r
+ BluetoothModel::GetInstance()->SetAdvStartState(false);\r
+ }\r
+}\r
+\r
+static void BleAdvTerminateCallback(uint8_t advId, adv_status_t status)\r
+{\r
+ if (g_sample_adv_id == advId) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvTerminateCallback advId: %d, status:%d\n", advId, status);\r
+ BluetoothModel::GetInstance()->SetAdvStartState(false);\r
+ // 此处开广播是为了实验室测试需要,客户需要自己修改\r
+ BleAdvStart();\r
+ }\r
}\r
\r
static void BtGattsServiceAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, errcode_t status)\r
{\r
- int ret;\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x",\r
- status, serverId, srvcHandle);\r
-\r
if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF0)) {\r
- uint16_t id = 0x1FF1;\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceAddCallback 0x%x 0x%x 0x%x",\r
+ status, serverId, srvcHandle);\r
+ uint16_t sample_id = 0x1FF1;\r
+ uint16_t diag_id = 0x1FF2;\r
gatts_add_chara_info_t character;\r
uint16_t value = 0;\r
\r
memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
- character.chara_uuid.uuid_len = sizeof(id);\r
- memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&id, sizeof(id));\r
+ character.chara_uuid.uuid_len = sizeof(sample_id);\r
+ memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&sample_id, sizeof(sample_id));\r
character.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE;\r
- character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE;\r
+ character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP;\r
+ character.value_len = (uint16_t)sizeof(value);\r
+ character.value = (uint8_t *)(&value);\r
+ int ret = gatts_add_characteristic(serverId, srvcHandle, &character);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_characteristic sample ret 0x%x", ret);\r
+\r
+ memset_s(&character, sizeof(gatts_add_chara_info_t), 0, sizeof(gatts_add_chara_info_t));\r
+ character.chara_uuid.uuid_len = sizeof(diag_id);\r
+ memcpy_s(character.chara_uuid.uuid, sizeof(character.chara_uuid.uuid), (char *)&diag_id, sizeof(diag_id));\r
+ character.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ;\r
+ character.properties = GATT_CHARACTER_PROPERTY_BIT_WRITE | GATT_CHARACTER_PROPERTY_BIT_READ;\r
character.value_len = (uint16_t)sizeof(value);\r
character.value = (uint8_t *)(&value);\r
\r
ret = gatts_add_characteristic(serverId, srvcHandle, &character);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_characteristic ret 0x%x", ret);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_characteristic diag ret 0x%x", ret);\r
+\r
+ g_sample_svr_handle = srvcHandle;\r
}\r
}\r
\r
static void BtGattsCharacteristicAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, gatts_add_character_result_t *result, errcode_t status)\r
{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x",\r
- status, serverId, srvcHandle);\r
-\r
if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF1)) {\r
+ g_sample_characteristic_handle = result->value_handle;\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x",\r
+ status, serverId, srvcHandle, g_sample_characteristic_handle);\r
+ }\r
+ if ((uuid->uuid_len == sizeof(uint16_t)) && (*((uint16_t*)uuid->uuid) == 0x1FF2)) {\r
+ g_diag_characteristic_handle = result->value_handle;\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsCharacteristicAddCallback 0x%x 0x%x 0x%x 0x%x",\r
+ status, serverId, srvcHandle, g_diag_characteristic_handle);\r
+ }\r
+ if (g_sample_characteristic_handle != 0 && g_diag_characteristic_handle !=0) {\r
int ret = gatts_start_service(serverId, srvcHandle);\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_start_service ret 0x%x", ret);\r
}\r
\r
static void BtGattsDescriptorAddCallback(uint8_t serverId, bt_uuid_t *uuid, uint16_t srvcHandle, uint16_t descriptorHandle, errcode_t status)\r
{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x",\r
- status, serverId, srvcHandle, descriptorHandle);\r
+ if (g_sample_svr_handle == srvcHandle) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsDescriptorAddCallback 0x%x 0x%x 0x%x 0x%x",\r
+ status, serverId, srvcHandle, descriptorHandle);\r
+ }\r
}\r
\r
static void BtGattsServiceStartCallback(uint8_t serverId, uint16_t srvcHandle, errcode_t status)\r
{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceStartCallback 0x%x 0x%x 0x%x", status, serverId, srvcHandle);\r
+ if (g_sample_svr_handle == srvcHandle) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsServiceStartCallback 0x%x 0x%x 0x%x", status, serverId, srvcHandle);\r
+ }\r
}\r
\r
static void BtGattsServiceStopCallback(uint8_t serverId, uint16_t srvcHandle, errcode_t status)\r
\r
static void BtGattsRequestWriteCallback(uint8_t serverId, uint16_t connId, gatts_req_write_cb_t *writeCbPara, errcode_t status)\r
{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback");\r
+ if (g_sample_characteristic_handle == writeCbPara->handle) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback");\r
+ if (writeCbPara->length == 9) {\r
+ uint8_t ctkd[] = {'o', 'p', 'e', 'n', ' ', 'c', 't', 'k', 'd'};\r
+ if (memcmp(ctkd, writeCbPara->value, writeCbPara->length) == 0) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "enable ctkd");\r
+ // 一键双连使能(依赖安全连接参数配置)\r
+ errcode_t ret = gap_ble_set_ctkd_enable(true);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %u", ret);\r
+\r
+ // 发起ble配对\r
+ ret = gap_ble_pair_remote_device(&g_bd_addr);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_pair_remote_device ret = %u ", ret);\r
+ }\r
+ } else if (writeCbPara->length == 10) {\r
+ uint8_t ctkd[] = {'c', 'l', 'o', 's', 'e', ' ', 'c', 't', 'k', 'd'};\r
+ if (memcmp(ctkd, writeCbPara->value, writeCbPara->length) == 0) {\r
+ // 一键双连去使能\r
+ errcode_t ret = gap_ble_set_ctkd_enable(false);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_disable ret = %u", ret);\r
+ }\r
+ }\r
+ } else if (g_diag_characteristic_handle == writeCbPara->handle) {\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "diag_gatt_write_req_cbk");\r
+ diag_gatt_write_req_cbk(serverId, connId, writeCbPara, status);\r
+ }\r
}\r
\r
+static void BtGattsMtuChangedCallback(uint8_t serverId, uint16_t connId, uint16_t mtuSize, errcode_t status)\r
+{\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsMtuChangedCallback connId = %u mtuSize = %u", connId, mtuSize);\r
+}\r
/* 与设备建立A2DP连接 */\r
static int wstp_a2dp_snk_connect(const bd_addr_t *bd_addr)\r
{\r
g_gapBleCallbacks.conn_state_change_cb = BleConnStateChangeCallback;\r
g_gapBleCallbacks.start_adv_cb = BleAdvStartCallback;\r
g_gapBleCallbacks.stop_adv_cb = BleAdvStopCallback;\r
- gap_ble_register_callbacks(&g_gapBleCallbacks);\r
+ g_gapBleCallbacks.terminate_adv_cb = BleAdvTerminateCallback;\r
+ wrapper_gap_ble_register_callbacks(&g_gapBleCallbacks);\r
\r
g_btGattsCallbacks.add_service_cb = BtGattsServiceAddCallback;\r
g_btGattsCallbacks.add_characteristic_cb = BtGattsCharacteristicAddCallback;\r
g_btGattsCallbacks.delete_service_cb = BtGattsServiceDeleteCallback;\r
g_btGattsCallbacks.read_request_cb = BtGattsRequestReadCallback;\r
g_btGattsCallbacks.write_request_cb = BtGattsRequestWriteCallback;\r
- g_btGattsCallbacks.mtu_changed_cb = nullptr;\r
- gatts_register_callbacks(&g_btGattsCallbacks);\r
+ g_btGattsCallbacks.mtu_changed_cb = BtGattsMtuChangedCallback;\r
+ wrapper_gatts_register_callbacks(&g_btGattsCallbacks);\r
}\r
\r
void BtInitGatts(void)\r
\r
uuid.uuid_len = sizeof(ser_id);\r
memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&ser_id, sizeof(ser_id));\r
- ret = gatts_register_server(&uuid, &serverId); /* 注册gatt server */\r
+ ret = wrapper_gatts_register_server(&uuid, &serverId); /* 注册gatt server */\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_register_server ret: 0x%x serverId = 0x%x", ret, serverId);\r
\r
uuid.uuid_len = sizeof(id);\r
memcpy_s(uuid.uuid, sizeof(uuid.uuid), (char *)&id, sizeof(id));\r
- ret = gatts_add_service(serverId, &uuid, true);\r
+ ret = wrapper_gatts_add_service(serverId, &uuid, true);\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gatts_add_service ret: 0x%x", ret);\r
+\r
+ wrapper_gatts_service_start();\r
}\r
\r
static uint8_t Char2Num(int8_t c)\r
\r
void BleAdvStart(void)\r
{\r
- int advId = 1;\r
+ int advId = g_sample_adv_id;\r
if (BluetoothModel::GetInstance()->GetAdvStartState()) {\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BleAdvStart already started");\r
gap_ble_stop_adv(advId);\r
}\r
gap_ble_adv_params_t adv_para;\r
memset_s(&adv_para, sizeof(gap_ble_adv_params_t), 0, sizeof(gap_ble_adv_params_t));\r
- adv_para.min_interval = 140;//0x30;\r
- adv_para.max_interval = 160;//0x60;\r
+ adv_para.min_interval = 0x30;//140;//0x30;\r
+ adv_para.max_interval = 0x60;//160;//0x60;\r
adv_para.adv_type = GAP_BLE_ADV_CONN_SCAN_UNDIR;\r
adv_para.channel_map = 0x7;\r
adv_para.duration = 0;\r