\r
#include "bts_def.h"\r
#include "bts_br_gap.h"\r
-\r
+#include <string>\r
namespace OHOS {\r
\r
\r
} BluetoothCaseInfo;\r
\r
\r
+typedef struct {\r
+ uint8_t id;\r
+ uint32_t timetamp_begin;\r
+ uint32_t timetamp_end;\r
+ std::string titel;\r
+ std::string content;\r
+}ScheduleInfo;\r
+\r
+\r
+\r
\r
class BluetoothItemView;\r
class BluetoothModel {\r
int uapi_reconnect(void);\r
int uapi_set_acl_connect_A2DP(void);\r
void uapi_get_br_address(bd_addr_t *bdaddr);\r
+void uapi_set_br_address(bd_addr_t *bdaddr);\r
\r
#ifdef __cplusplus\r
}\r
// }\r
// uapi_a2dp_snk_connect();\r
// a2dp_snk_connect(bdAddr);\r
- if(cm_custom_ble_service_on_flag() && !get_ble_pair())\r
+ if(cm_custom_ble_service_on_flag() && !get_ble_pair()&& (status == GAP_PAIR_PAIRED))\r
{\r
- if(cm_get_A2DP_switch() || cm_get_HFP_switch())\r
- uapi_a2dp_snk_connect();\r
+ send_pair_succ((bd_addr_t*)bdAddr);\r
+ // if(cm_get_A2DP_switch() || cm_get_HFP_switch())\r
+ // uapi_a2dp_snk_connect();\r
+ hand_watch_first_time_Paired();\r
+ svr_ble_adv_stop();\r
//uapi_reconnect();\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "uapi_a2dp_snk_connect");\r
}\r
\r
if(BtGapPair_bdAddr.addr[0]==0 && BtGapPair_bdAddr.addr[1]==0 &&\r
BtGapPair_bdAddr.addr[2]==0 && BtGapPair_bdAddr.addr[3]==0 )\r
- get_phone_addr(bdaddr);\r
- else\r
+ {\r
+ uint8_t MacType = 0;\r
+ uint8_t mac_data[6];\r
+ memset(mac_data,0,6);\r
+ GetwatchSaveMac(mac_data,&MacType);\r
+ BtGapPair_bdAddr.addr[0]=mac_data[0];\r
+ BtGapPair_bdAddr.addr[1]=mac_data[1];\r
+ BtGapPair_bdAddr.addr[2]=mac_data[2];\r
+ BtGapPair_bdAddr.addr[3]=mac_data[3];\r
+ BtGapPair_bdAddr.addr[4]=mac_data[4];\r
+ BtGapPair_bdAddr.addr[5]=mac_data[5];\r
+ BtGapPair_bdAddr.type=MacType;\r
+ }\r
memcpy(bdaddr,&BtGapPair_bdAddr,sizeof(bd_addr_t));\r
+}\r
\r
+void uapi_set_br_address(bd_addr_t *bdaddr)\r
+{\r
+ memcpy(&BtGapPair_bdAddr,bdaddr,sizeof(bd_addr_t));\r
}\r
+\r
static uint8_t br_cmd=0;\r
int uapi_a2dp_snk_connect()\r
{\r
}
+bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_end,char *title,char *data)
+{
+ OHOS::ScheduleInfo info;
+ info.id=id;
+ info.timetamp_begin=timetamp_begin;
+ info.timetamp_end=timetamp_end;
+ info.titel.append(title,strlen(title)+1);
+ info.content.append(data,strlen(data)+1);
+
+ printf("///////////////////日程数据////////////////////\r\n");
+ printf("id:%d\r\n",info.id);
+ printf("timetamp_begin:%d\r\n",info.timetamp_begin);
+ printf("timetamp_end:%d\r\n",info.timetamp_end);
+ printf("titel:%s\r\n",info.titel.c_str());
+ printf("content:%s\r\n",info.content.c_str());
+
+ printf("//////////////////////////////////////////////\r\n");
+
+}
+
+
+
//在此处实现,给UI回复消息。
void ble_app_reply(bool data)
{
uint32_t freq;
}msg_drink_info_t;
+
+
+
void read_message_data(void);//读内存信息数据开机读一次
struct message_infor_t *get_message_info(void);
void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight);
void set_br_pair(void);
bool get_lcd_state(void);
+//////////////////////////////////////////////////////////////////////////
+bool Ble_Set_ScheduleInfo(uint8_t id,uint32_t timetamp_begin,uint32_t timetamp_end,char *title,char *data);
#ifdef __cplusplus
#if __cplusplus
// printf("gap_ble_pair_remote_device 333333333 %x-%x-%x-%x-%x-%x\r\n",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5]);\r
// 一键双连使能(依赖安全连接参数配置)\r
\r
- \r
- errcode_t code = gap_ble_pair_remote_device(&phone_addr);\r
- if(code!=ERRCODE_SUCC)\r
+ if(get_ble_pair())\r
{\r
- printf("gap_ble_pair_remote_device fail %X\r\n",code);\r
+ errcode_t code = gap_ble_pair_remote_device(&phone_addr);\r
+ if(code!=ERRCODE_SUCC)\r
+ {\r
+ printf("gap_ble_pair_remote_device fail %X\r\n",code);\r
+ }\r
}\r
+ \r
}else{\r
first_bond = 0;\r
errcode_t ret = 0;\r
printf("phone_addr:%02x-%02x-%02x-%02x-%02x-%02x type:%d ",phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],\r
phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5],phone_addr.type);\r
\r
-\r
- ret = gap_ble_pair_remote_device(&phone_addr);\r
- printf("gap_ble_pair_remote_device ret:%x \r\n",ret);\r
+ if(get_ble_pair())\r
+ {\r
+ errcode_t code = gap_ble_pair_remote_device(&phone_addr);\r
+ if(code!=ERRCODE_SUCC)\r
+ {\r
+ printf("gap_ble_pair_remote_device fail %X\r\n",code);\r
+ }\r
+ }\r
+ // ret = gap_ble_pair_remote_device(&phone_addr);\r
+ // printf("gap_ble_pair_remote_device ret:%x \r\n",ret);\r
bond = 0x02;//手表与该手机绑定过\r
value[17] = bond;//\r
value[18] = Calculate_CRC(value,18);\r
set_weather_one_data(tempMin,iconDay,fxDate,tempMax,textDay,i);\r
\r
}\r
- \r
+\r
if( cm_custom_ble_service_on_flag() && cm_get_HFP_switch())\r
uapi_pbap_cmd_start_client();\r
\r
+ bd_addr_t bdaddr={0};\r
+ uapi_get_br_address(&bdaddr);\r
+ if( cm_custom_ble_service_on_flag() && (cm_get_HFP_switch()||cm_get_A2DP_switch()))\r
+ {\r
+ if (false==bt_is_acl_connected(&bdaddr))\r
+ {\r
+ int ret = gap_reconnect_media_device(&bdaddr);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, " gap_reconnect_media_device ret = %u", ret);\r
+ } \r
+\r
+ }\r
+ \r
+\r
ble_UpdateMainWeatherData();\r
cJSON_Delete(root);\r
*check = 1;\r
//offset+=1;\r
}\r
if(offset>=len)break;\r
+\r
if(buf[offset]==0)\r
{\r
offset++;\r
memcpy_s(error_buf,256,&buf[offset],txt_len);\r
printf("binCheck_AI Question txtbuf:%s %d\r\n",error_buf,txt_len);\r
ble_set_ai_Answer_str(error_buf,0);\r
-\r
+ offset+=txt_len;\r
printf("AI 解析失败\r\n");\r
\r
}\r
memcpy_s(error_buf,256,&buf[offset],txt_len);\r
printf("binCheck_AI Question txtbuf:%s %d\r\n",error_buf,txt_len);\r
ble_set_ai_Answer_str(error_buf,3);\r
-\r
- printf("AI 解析失败\r\n");\r
+ offset+=txt_len;\r
+ printf("AI 回应错误\r\n");\r
\r
}\r
if(offset>=len)break;\r
printf("binCheck_AI Question txtbuf:%s %d\r\n",error_buf,txt_len);\r
ble_set_ai_Answer_str(error_buf,4);\r
\r
- printf("AI 解析失败\r\n");\r
+ offset+=txt_len;\r
+ //printf("AI 解析失败\r\n");\r
\r
}\r
if(offset>=len)break;\r
} \r
}\r
\r
+\r
+bool bin_Check_schedule(uint8_t *data,uint16_t len)\r
+{\r
+ uint16 offset=0;\r
+ uint16 buf_len=0;\r
+ while (offset<len)\r
+ {\r
+ uint8_t id;\r
+ id=data[offset];\r
+ offset++;\r
+ if(offset>=len)\r
+ break;\r
+\r
+ memcpy_s(&buf_len,2,&data[offset],2);\r
+ offset+=2;\r
+ if(offset>=len)\r
+ break;\r
+\r
+ char *title=(char*)malloc(buf_len+1);\r
+ memset_s(title,512,0,buf_len+1);\r
+ memcpy_s(title,512,&data[offset],buf_len);\r
+\r
+ offset+=buf_len;\r
+ if(offset>=len)\r
+ {\r
+ if(title)\r
+ {\r
+ free(title);\r
+ }\r
+ break;\r
+ }\r
+ uint32_t timetemp_begin=0;\r
+ memcpy_s(&timetemp_begin,4,&data[offset],4);\r
+ offset+=4;\r
+ if(offset>=len)\r
+ break;\r
+ uint32_t timetemp_end=0;\r
+ memcpy_s(&timetemp_end,4,&data[offset],4);\r
+ offset+=4;\r
+ if(offset>=len)\r
+ break;\r
+\r
+ memcpy_s(&buf_len,2,&data[offset],2);\r
+ offset+=2;\r
+ if(offset>=len)\r
+ break;\r
+\r
+ char *data=(char*)malloc(buf_len+1);\r
+ memset_s(data,512,0,buf_len+1);\r
+ memcpy_s(data,512,&data[offset],buf_len);\r
+\r
+ offset+=buf_len;\r
+ if(offset>=len)\r
+ {\r
+ if(title)\r
+ {\r
+ free(title);\r
+ }\r
+ if(data)\r
+ {\r
+ free(data);\r
+ }\r
+ break;\r
+ }\r
+ Ble_Set_ScheduleInfo(id,timetemp_begin,timetemp_end,title,data);\r
+ if(title)\r
+ {\r
+ free(title);\r
+ }\r
+ if(data)\r
+ {\r
+ free(data);\r
+ }\r
+\r
+ }\r
+ return true;\r
+}\r
+void APP_send_schedule_Cmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)\r
+{\r
+ uint32_t tmp = 1;\r
+ uint16_t tmp_data = 1;\r
+ uint8_t sendBuf[19];\r
+ memset(sendBuf,0,19);\r
+ sendBuf[0] = 0x72;\r
+ sendBuf[1] = 0x02;\r
+ sendBuf[2] = 0x24;\r
+ memcpy(sendBuf+3,&tmp,4);\r
+ memcpy(sendBuf+7,&tmp,4);\r
+ memcpy(sendBuf+11,&tmp,4);\r
+ memcpy(sendBuf+15,&tmp_data,2);\r
+ // printf("GetWeatherCmd:len:%d data:%s\r\n",len,data);\r
+ //"sk-proj-04ogvrZQqyaiv1OWw8OZT3BlbkFJG9Gyr8oFvRdmr3oXQNbX"\r
+ if(Check_CRC(data,len,crcvalue))\r
+ {\r
+ \r
+ \r
+ if(bin_Check_schedule(data,len))\r
+ {\r
+ sendBuf[17] = 1;\r
+ }\r
+ else\r
+ {\r
+ sendBuf[17] = 2;\r
+ }\r
+ sendBuf[18] = Calculate_CRC(sendBuf,18);\r
+ sendBleData(sendBuf,19);\r
+ }\r
+ else\r
+ {\r
+ sendBuf[17] = 0;\r
+ sendBuf[18] = Calculate_CRC(sendBuf,18);\r
+ sendBleData(sendBuf,19);\r
+ } \r
+}\r
+\r
+\r
+\r
void GetGPSCmd(uint16_t cmd,uint8_t *data,uint16_t len,uint8_t *totalData,uint8_t crcvalue)\r
{\r
send_big_data(1,NULL,0,0,1,1,0x4f,2);\r
case APP_SEND_AI_KEY_IS_AVAILABLE_CMD:\r
APP_reply_AI_is_ready(data,datalen);\r
break;\r
+ case SYN_APP_SCHEDULE_DATA_CMD:\r
+ APP_send_schedule_Cmd(typeID,data,datalen,totalData,crcvalue);\r
+ break;\r
+ \r
\r
default:\r
break;\r
#define DELETE_FILE_CMD 0x0222 //删除指定文件
#define SYN_BASIC_REAL_HEATR_CMD 0x024B //同步基础训练试试心率记录
#define APP_SEND_CHATGPT_KEY_CMD 0x0223 //APP发送chatGPT key
+#define SYN_APP_SCHEDULE_DATA_CMD 0x0224 //同步schedule信息
#define SYN_TODAY_BASIC_TRAIN_TXT_CMD 0x024D //同步当天任意时间之后的基础训练记录
#define APP_SEND_AI_KEY_IS_AVAILABLE_CMD 0x0506 //查询AI是否可用,APP 回复
uint8_t parse_jsonCheck_weather(uint8_t *buf,uint8_t *check);//json 格式解析 天气数据
uint8_t read_jsonHistory_weather(void);
+void GetwatchSaveMac(uint8_t *mac,uint8_t *mactype);
///////////////////////////自定义文件传输协议/////////////////////////////
#define OTA_FILE_MSG_CMD 0x0601
#define OTA_FILE_DATA_CMD 0x0602
memcpy(&phone_addr,addr,sizeof(bd_addr_t));\r
memcpy(&disconect_addr,addr,sizeof(bd_addr_t));\r
}\r
+\r
enum{\r
BLE_CHARACTERISTIC_RECV_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_NOTIFY|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP|GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_READ,\r
BLE_CHARACTERISTIC_SNED_SHORT_ID_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,\r
\r
if(!get_br_is_pair())\r
{ \r
- gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, sec); \r
+ //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, sec); \r
}\r
}\r
\r
gap_ble_pair_state_t pair_state, gap_ble_disc_reason_t disc_reason)\r
{\r
\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "svr_ble_connstate_change_cb gap_ble_conn_state_t conn_state:%d pair_state:%d disc_reason:%d\r\n",conn_state,pair_state,disc_reason);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,\r
+ "svr_ble_connstate_change_cb gap_ble_conn_state_t conn_state:%d pair_state:%d disc_reason:%d\r\n",\r
+ conn_state,pair_state,disc_reason);\r
+\r
\r
g_ble_conn_id = conn_id;\r
if (GAP_BLE_STATE_DISCONNECTED == conn_state) { // restart ble adv when disconnected\r
\r
\r
//int ret= a2dp_snk_connect(addr);\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x playing_state: %x\n",\r
- // g_bd_addr.addr[3], g_bd_addr.addr[2], g_bd_addr.addr[1], g_bd_addr.addr[0], g_bd_addr.type); /* 3 2 1 0 idx */\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "addr: ****%02x%02x%02x%02x \n",\r
+ addr->addr[3], addr->addr[2], addr->addr[1], addr->addr[0]); /* 3 2 1 0 idx */\r
\r
//WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"state(int): %x\n", ret);\r
\r
\r
}\r
\r
- // int ret = gap_connect_remote_device(addr);\r
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_connect_remote_device!!! %X\r\n",ret);\r
+ int ret = gap_connect_remote_device(addr);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "gap_connect_remote_device!!! %X\r\n",ret);\r
\r
\r
}\r
/******************* gap_ble ************************************/\r
void svr_gap_ble_auth_complete_callback(uint16_t conn_id, const bd_addr_t *addr, errcode_t status,ble_auth_info_evt_t* evt)\r
{\r
- sendParieSuccess(1,&phone_addr);\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_gap_ble_auth_complete_callback %x %x %x %x %x %x\r\n",addr->addr[0],addr->addr[1],addr->addr[2],addr->addr[3],addr->addr[4],addr->addr[5]);\r
+ //sendParieSuccess(1,&phone_addr); //????\r
+ sendParieSuccess(1,addr);\r
+ uapi_set_br_address(addr);\r
+\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_gap_ble_auth_complete_callback %x %x %x %x %x %x\r\n",\r
+ phone_addr.addr[0],phone_addr.addr[1],phone_addr.addr[2],phone_addr.addr[3],phone_addr.addr[4],phone_addr.addr[5]);\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "svr_gap_ble_auth_complete_callback %x %x %x %x %x %x\r\n",\r
+ addr->addr[0],addr->addr[1],addr->addr[2],addr->addr[3],addr->addr[4],addr->addr[5]);\r
}\r
\r
\r
\r
AdverFlag = true;\r
svr_ble_adv_start_param();\r
- \r
- gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0);\r
+ gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE_GENERAL_DISCOVERABLE, 0); \r
+ //gap_br_set_bt_scan_mode(GAP_SCAN_MODE_CONNECTABLE, 0);\r
\r
}\r
\r
return ERRCODE_SUCC;\r
}\r
\r
+void send_pair_succ(bd_addr_t *addr)\r
+{\r
+ sendParieSuccess(1,addr);\r
+}\r
\r
\r
\r
void br_adv_start(uint8_t sec);
void br_adv_stop(void);
+
+void send_pair_succ(bd_addr_t *addr);
+
#ifdef __cplusplus
}
#endif