first_bond = 1;\r
// 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
- errcode_t ret = gap_ble_set_ctkd_enable(true);\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret);\r
+ \r
\r
errcode_t code = gap_ble_pair_remote_device(&phone_addr);\r
if(code!=ERRCODE_SUCC)\r
uapi_reboot_device();\r
}\r
}\r
+static bool ctkd_flag_ble=false;\r
+\r
+void set_ctkd_flag(bool flag)\r
+{\r
+ ctkd_flag_ble=flag;\r
+}\r
+bool get_ctkd_flag(void)\r
+{\r
+ return true;//ctkd_flag_ble;\r
+}\r
void sendBindInfor(uint8_t *data)\r
{\r
uint8_t value[19];\r
if(save_mac[0] == 0 && save_mac[1] == 0 && save_mac[2] == 0 && save_mac[3] == 0 && save_mac[4] == 0 && save_mac[5] == 0)//只要手表本地存储没有mac地址就走连接流程重新绑定\r
{\r
bond = 0x01;//手表未和任何手机绑定过\r
+ //未配过使能一键双联\r
+ errcode_t ret = gap_ble_set_ctkd_enable(true);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret);\r
+ set_ctkd_flag(true);\r
+\r
+\r
+\r
value[17] = bond;//\r
value[18] = Calculate_CRC(value,18);\r
sendBleData(value,19);\r
int result = memcmp(copare_mac,save_mac,6);\r
if(result == 0)\r
{\r
+ //已经配对就关闭一键双连\r
+ errcode_t ret = gap_ble_set_ctkd_enable(true);\r
+ WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "gap_ble_set_ctkd_enable ret = %x", ret);\r
+ set_ctkd_flag(false);\r
+\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
- ret = gap_ble_set_ctkd_enable(true);\r
- printf("gap_ble_set_ctkd_enable ret = %x ", ret);\r
\r
ret = gap_ble_pair_remote_device(&phone_addr);\r
printf("gap_ble_pair_remote_device ret:%x ",ret);\r
if(Check_CRC(data,len,crcvalue))\r
{\r
msg_get_heart_set_param_info_t set_data;\r
+\r
set_data.frequence = data[0];\r
set_data.remind_on=data[1];\r
set_data.max_min=data[2];\r
set_data.heart=data[3];\r
+\r
Set_heart_cmd(&set_data);\r
sendBuf[17] = 1;\r
sendBuf[18] = Calculate_CRC(sendBuf,18);\r
{\r
uint8_t file_type= data[0];//1 ota 2 MP3\r
\r
- TRANSMIT_DATA=TRANS_FREE;\r
- CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+ // TRANSMIT_DATA=TRANS_FREE;\r
+ // CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
\r
value[17] = 1; //\r
value[18] = Calculate_CRC(value,18);\r
value[18] = heart_param.remind_on;//\r
value[19] = heart_param.max_min;//\r
value[20] = heart_param.heart;// \r
+ \r
+ printf("%d %d %d %d ",value[17],value[18],value[19],value[20]);\r
+\r
value[21] = Calculate_CRC(value,21);\r
sendBleData(value,22);\r
}else\r
if(data==NULL)\r
{\r
send_big_data(1,NULL,0,0,1,1,id,1);\r
- sendbigDataBufState = false;//分包同步数据不允许打断\r
+ printf("Read_BIN_file_buf_send_bin_Data is NULL");\r
return;\r
}\r
\r
return ERRCODE_FAIL;\r
}\r
}\r
+static uint8_t timer_flie_type=0;\r
+static uint32_t timer_flie_flag=0;\r
+ble_read_data* ble_read_timer_p=NULL;\r
+\r
errcode_t cancel_recv_file(ble_read_data *buffer_handle)\r
{\r
\r
}\r
buffer_handle->file_recv_stat.recv_file_stat = -1;\r
\r
+ if(BR_TRANSFER_timer)\r
+ {\r
+ timer_flie_flag=1;\r
+ }\r
+\r
ble_reply_cmd(FILE_RECV_REPLY_STAT_CMD,0);//接收失败\r
}\r
return ERRCODE_SUCC;\r
}\r
\r
-static uint8_t timer_flie_type=0;\r
-static uint32_t timer_flie_flag=0;\r
-ble_read_data* ble_read_timer_p=NULL;\r
+\r
static void ble_transfer_Timer_CallBack(int data)\r
{\r
timer_flie_flag--;\r
{\r
TRANSMIT_DATA=TRANS_FREE;\r
}\r
+ \r
+ ble_read_timer_p->receive_file_flag = 0;\r
+\r
if (ble_read_timer_p->file_recv_stat.recv_file_stat != 2) //已经下载完毕的文件,没有必要cancel了。\r
{\r
\r
}\r
ble_read_timer_p->file_recv_stat.recv_file_stat = -1;\r
\r
+ ble_read_timer_p=NULL;\r
+\r
ble_reply_cmd(FILE_RECV_REPLY_STAT_CMD,0);//接收失败\r
}\r
CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,&TRANSMIT_DATA,1);\r
+\r
if(BR_TRANSFER_timer)\r
{\r
osTimerStop(BR_TRANSFER_timer);\r
//心率相关
CONFIGMODEL_ITEM_HEARTRATE_DETECTED,//心率周期频率 0(关闭) 1 5 10
CONFIGMODEL_ITEM_HEARTRATE_REMIND,//提醒开关
- CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN,//高于低于
CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE,//阈值
+ CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN,//高于低于
//血氧相关
CONFIGMODEL_ITEM_OXYGEN_DETECTED,//频率
CONFIGMODEL_ITEM_OXYGEN_REMIND,//开关
{ConfigDataType::DATATYPE_INT, "traningfreq", "10" },// CONFIGMODEL_ITEM_TRANING_FREQ //训练实时数据上传频率//单位秒
{ConfigDataType::DATATYPE_INT, "traningauto", "0" },//CONFIGMODEL_ITEM_TRANING_AUTO,//开启关闭自动获取实时数据
{ConfigDataType::DATATYPE_INT, "traningheart", "190" },//CONFIGMODEL_ITEM_TRAINING_HEART_MAX//训练最高心率
+ //心率相关
{ConfigDataType::DATATYPE_INT, "heartrate_freq", "0" },// CONFIGMODEL_ITEM_HEARTRATE_DETECTED//心率周期检测频率
- {ConfigDataType::DATATYPE_INT, "heartrate_remind", "0" },// CONFIGMODEL_ITEM_HEARTRATE_REMIND//提醒开关
- {ConfigDataType::DATATYPE_INT, "MAX_MIN", "0" },// CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN//最大值还是最小值
- {ConfigDataType::DATATYPE_INT, "heartrate_threshold_value", "0" },// CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE//
+ {ConfigDataType::DATATYPE_INT, "heartrate_remind", "0"},// CONFIGMODEL_ITEM_HEARTRATE_REMIND//提醒开关
+
+ {ConfigDataType::DATATYPE_INT, "heartrate_threshold_value", "0"},// CONFIGMODEL_ITEM_HEARTRATE_THRESHOLD_VALUE//
+ {ConfigDataType::DATATYPE_BOOL, "heart_max_min", "0"},// CONFIGMODEL_ITEM_HEARTRATE_MAX_MIN//最大值还是最小值
+
+
{ConfigDataType::DATATYPE_INT, "oxygen_freq", "0" },// CONFIGMODEL_ITEM_OXYGEN_DETECTED,//频率
{ConfigDataType::DATATYPE_INT, "oxygen_remind", "0" },//CONFIGMODEL_ITEM_OXYGEN_REMIND,//开关
{ConfigDataType::DATATYPE_INT, "oxygen_threshold_value", "0" },//CONFIGMODEL_ITEM_OXYGEN_THRESHOLD_VALUE,//阈值
+
{ConfigDataType::DATATYPE_INT, "notify", "0" },// CONFIGMODEL_ITEM_NOTIFY//消息通知开关
{ConfigDataType::DATATYPE_INT, "quick_auxil_parameter", "0" },// CONFIGMODEL_ITEM_QUICK_AUXILIARY_PARAMETERS//快捷辅助功能参数
{ConfigDataType::DATATYPE_INT, "drink", "0" },// CONFIGMODEL_ITEM_DRINK,//开关 0 关闭 1开始 2间隔提醒