void BtGapDiscoveryResultCallback(const bd_addr_t *bdAddr)\r
{\r
if ((gap_get_device_class(bdAddr) & 0x200) != 0) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "BtGapDiscoveryResultCallback: Mobile Phone Device");\r
- return;\r
+ WEARABLE_LOGE(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_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
+ 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
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_LOGD(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GapAclStateChangedCallback: Mobile Phone Device");\r
return;\r
}\r
GraphicService::GetInstance()->PostGraphicEvent(\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "BtGattsRequestWriteCallback");\r
}\r
\r
+/* 与设备建立A2DP连接 */\r
+static int wstp_a2dp_snk_connect(const bd_addr_t *bd_addr)\r
+{\r
+ int ret = a2dp_snk_connect(bd_addr);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,"a2dp_snk_connect ret(int): %x\n", ret);\r
+ return ret;\r
+}\r
+\r
+/* 与设备断开A2DP连接 */\r
+static int wstp_a2dp_snk_disconnect(const bd_addr_t *bd_addr)\r
+{\r
+ int ret = a2dp_snk_disconnect(bd_addr);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP,"a2dp_snk_disconnect ret(int): %x\n", ret);\r
+ return ret;\r
+}\r
+\r
static void BtA2dpSnkAcceptTimerStop(void)\r
{\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "stop timer\n");\r
{\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x conn_state: %x\n",\r
bd_addr->addr[3], bd_addr->addr[2], bd_addr->addr[1], bd_addr->addr[0], conn_state); /* 3 2 1 0 idx */\r
+ \r
}\r
\r
static void BtA2dpSnkStartStreamReqCb(bd_addr_t *bd_addr)\r
\r
void BtA2dpDeInit(void)\r
{\r
-\r
- \r
- \r
a2dp_src_deregister_callbacks(&g_a2dpSrcCallbacks);\r
a2dp_snk_deregister_callbacks(&g_a2dp_snk_callbacks);\r
\r
#include "build_version.h"\r
#include "custom_runtime.h"\r
#include "custom_utils.h"\r
-\r
+#include "bletest.h"\r
\r
\r
// extern void bts_data_to_uuid_len2(uint16_t uuid_data, bt_uuid_t *out_uuid);\r
uint16_t data2ae3Cmd = 0;//2ae3短指令特征值\r
uint16_t data2ae4Cmd = 0;\r
uint16_t data2ae5Cmd = 0;\r
+uint16_t data2ae2Cmd = 0;//read\r
uint16_t data2ae1Cmd = 0;//安卓消息来电\r
uint16_t data2ae0Cmd = 0;//OTA\r
\r
BLE_CHARACTERISTIC_SNED_LONG_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
BLE_CHARACTERISTIC_SNED_OTA_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
BLE_CHARACTERISTIC_SNED_ANDRIOD_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
- BLE_CHARACTERISTIC_READ_BATTERY_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_READ,\r
+ BLE_CHARACTERISTIC_READ_BATTERY_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_READ|GATT_CHARACTER_PROPERTY_BIT_NOTIFY,\r
};\r
static uint8_t ble_adv_falg = 0;\r
void svr_ble_adv_stop(void)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "2ae2 result->value_handle6 %d\r\n",result->value_handle);\r
// shortCmdChara = result->value_handle;\r
+ if(data2ae2Cmd == 0){\r
+ data2ae2Cmd = result->value_handle;\r
+ }\r
}\r
if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data_2ae4))\r
{\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
g_ble_conn_id, g_ble_server_handle,data_len);\r
\r
- return ret;\r
+ return ret; \r
+}\r
+\r
+errcode_t svr_ble_read_data_value_updata_noyify(void)//2ae2\r
+{\r
+ gatts_ntf_ind_t data_info;\r
+ data_info.attr_handle = data2ae2Cmd;\r
+ static uint8_t battery_point_val[20] = {0};\r
+ // 获取电池电压值\r
+ float voltage = 0.0F;\r
+ uint8_t power = 0;\r
+ power =battery_get_voltage(&voltage);\r
+ battery_point_val[0] +=1;//power ;//power;//电量90\r
+ uint16_t dial = ble_get_dial_id();\r
+ memcpy_s(&battery_point_val[1],2,&dial,2);\r
+\r
+ uint8_t _major,_mid,_minor;\r
+ uapi_get_fw_version(&_major,&_mid,&_minor);\r
+\r
+ battery_point_val[3] = _major;//固件版本号\r
+ battery_point_val[4] = _mid;\r
+ battery_point_val[5] = _minor;\r
+\r
+ bd_addr_t addr_info;\r
+ errcode_t ret = gap_ble_get_local_addr(&addr_info);\r
+ battery_point_val[6] = addr_info.addr[5];\r
+ battery_point_val[7] = addr_info.addr[4];\r
+ battery_point_val[8] = addr_info.addr[3];\r
+ battery_point_val[9] = addr_info.addr[2];\r
+ battery_point_val[10] = addr_info.addr[1];\r
+ battery_point_val[11] = addr_info.addr[0];\r
+\r
+ battery_point_val[12] = 0;//消息推送开关 默认是关闭 0\r
+ battery_point_val[13] = 0;//多媒体开关\r
+ battery_point_val[14] = 5;//客户编号\r
+ battery_point_val[15] = 5;//产品编号\r
+\r
+ battery_point_val[16] = 0;//硬件版本号\r
+ battery_point_val[17] = 1;\r
+\r
+ battery_point_val[18] = 0;//ble版本号\r
+ battery_point_val[19] = 1;\r
+\r
+\r
+ data_info.value = battery_point_val;\r
+ data_info.value_len = 20;\r
+ ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, &data_info);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "gatts_notify_indicate ret:0x%x. serverid:%u,conn_id:%u,handle:%u.data_len:%d", ret, g_ble_server_id,\r
+ g_ble_conn_id, g_ble_server_handle,20);\r
\r
+ return ret; \r
}\r
+\r
+\r
static void svr_ble_bt_gatts_req_read_cb(uint8_t server_id, uint16_t conn_id, gatts_req_read_cb_t *read_cb_para,\r
errcode_t status)\r
{\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "svr_ble_bt_gatts_req_read_cb ret:is_long:%d",read_cb_para->is_long);\r
+\r
+ //WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_ble_bt_gatts_req_read_cb ret:is_long:%d 2ae2 %d read_cb_para->handle :%d",read_cb_para->is_long,data2ae2Cmd,read_cb_para->handle);\r
+ if(read_cb_para->handle!=data2ae2Cmd)\r
+ return;\r
+\r
+ static uint8_t battery_point_val[20] = {0};\r
+ // 获取电池电压值\r
+ float voltage = 0.0F;\r
+ uint8_t power = 0;\r
+ power =battery_get_voltage(&voltage);\r
+ battery_point_val[0] =power;//power ;//power;//电量90\r
+ uint16_t dial = ble_get_dial_id();\r
+ memcpy_s(&battery_point_val[1],2,&dial,2);\r
+\r
+ uint8_t _major,_mid,_minor;\r
+ uapi_get_fw_version(&_major,&_mid,&_minor);\r
+\r
+ battery_point_val[3] = _major;//固件版本号\r
+ battery_point_val[4] = _mid;\r
+ battery_point_val[5] = _minor;\r
+\r
+ bd_addr_t addr_info;\r
+ errcode_t ret = gap_ble_get_local_addr(&addr_info);\r
+ battery_point_val[6] = addr_info.addr[5];\r
+ battery_point_val[7] = addr_info.addr[4];\r
+ battery_point_val[8] = addr_info.addr[3];\r
+ battery_point_val[9] = addr_info.addr[2];\r
+ battery_point_val[10] = addr_info.addr[1];\r
+ battery_point_val[11] = addr_info.addr[0];\r
+\r
+ battery_point_val[12] = 0;//消息推送开关 默认是关闭 0\r
+ battery_point_val[13] = 0;//多媒体开关\r
+ battery_point_val[14] = 5;//客户编号\r
+ battery_point_val[15] = 5;//产品编号\r
+\r
+ battery_point_val[16] = 0;//硬件版本号\r
+ battery_point_val[17] = 1;\r
+\r
+ battery_point_val[18] = 0;//ble版本号\r
+ battery_point_val[19] = 1;\r
+\r
+ static gatts_ntf_ind_t gatts_ntf_ind;\r
+ gatts_ntf_ind.attr_handle=read_cb_para->handle;\r
+ gatts_ntf_ind.value=battery_point_val;\r
+ gatts_ntf_ind.value_len=20;\r
+ //read_cb_para->need_rsp=0;\r
+ gatts_notify_indicate(server_id,conn_id,&gatts_ntf_ind);\r
}\r
\r
\r