${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/include/dial
${ROOT_DIR}/middleware/services/media/foundation/sample/wrapper
${ROOT_DIR}/application/wearable/service/msg_center/include
- ${ROOT_DIR}/application/wearable/service/ble_service
+ ${ROOT_DIR}/application/wearable/service/ble_service/bleservice
+ ${ROOT_DIR}/application/wearable/service/ble_service/blemoder
${ROOT_DIR}/application/wearable/nativeabilityfwk/include
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/main/src/dial/parser
${ROOT_DIR}/open_source/openharmony/foundation/multimedia/audio_player/interfaces/kits
training2_Image(OHOS::RIDING_60_IMAGE),
training3_Image(OHOS::RUNNING_60_IMAGE) {}
};
+/*
+"src":0,
+"ty":0,
+"st":1657865201,
+"sp":1657867001,
+"tgt":0,
+"tg":5000,
+"pg":60,
+"du":1800,
+"ca":2355,//卡路里为该数值乘以0.1
+"di":3000,
+"hr":127,
+"stp":10000
+*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+struct Trainingdata_hard
+{
+ uint32_t num;
+};
+
+struct Trainingdata
+{
+ //0:手表开启的训练1:APP开启的训练
+ uint32_t src;
+ //0:健身类1:舞蹈类2:休闲运动3:球类4:水上项目5:冰上项目6:极限运动 7:其他
+ uint32_t bt;
+ //训练类型0:健走1:跑步2:骑行
+ uint32_t ty;
+ //开始时间戳
+ uint32_t st;
+ //结束时间戳
+ uint32_t sp;
+ //训练目标类型
+ uint32_t tgt;
+ //训练目标
+ uint32_t tg;
+ //目标完成度
+ uint32_t pg;
+ //训练时长
+ uint32_t du;
+ //卡路里
+ uint32_t ca;
+ //距离
+ uint32_t di;
+ //平均心率
+ uint32_t hr;
+ //步数
+ uint32_t stp;
+ //训练强度
+ uint32_t ti;
+ //圈数
+ uint32_t cir;
+ //最高海拔高度
+ uint32_t alt;
+};
+Trainingdata *read_Trainingdata_data(uint32_t timedata,uint16_t offset);
+
+int write_Trainingdata_data(Trainingdata data);
+
+
+#ifdef __cplusplus
+}
+#endif
namespace OHOS
{
#define TIMER 0
#define CHECK 0
+#define HARD_OFF 1
+#define TRAINING_PATH "user/userdata/"
namespace OHOS
{
+// struct Trainingdata_hard
+// {
+// uint32_t st;
+// uint32_t num;
+// };
+
+// struct Trainingdata
+// {
+// //0:手表开启的训练1:APP开启的训练
+// uint32_t src;
+// //0:健身类1:舞蹈类2:休闲运动3:球类4:水上项目5:冰上项目6:极限运动 7:其他
+// uint32_t bt;
+// //训练类型0:健走1:跑步2:骑行
+// uint32_t ty;
+// //开始时间戳
+// uint32_t st;
+// //结束时间戳
+// uint32_t sp;
+// //训练目标类型
+// uint32_t tgt;
+// //训练目标
+// uint32_t tg;
+// //目标完成度
+// uint32_t pg;
+// //训练时长
+// uint32_t du;
+// //卡路里
+// uint32_t ca;
+// //距离
+// uint32_t di;
+// //平均心率
+// uint32_t hr;
+// //步数
+// uint32_t stp;
+// //训练强度
+// uint32_t ti;
+// //圈数
+// uint32_t cir;
+// //最高海拔高度
+// uint32_t alt;
+// };
+#ifdef __cplusplus
+extern "C" {
+#endif
+ //处理数据头
+ static void write_Trainingdata_hard_data(uint32_t data)
+ {
+ char file_path[128]={0};
+ sprintf(file_path,"%shard_%d.bin",TRAINING_PATH,data);
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",file_path);
+ FILE *fp= fopen(file_path,"rb+");
+ Trainingdata_hard hard;
+ int ret=0;
+ if(fp==NULL)
+ {
+ hard.num=0;
+ fp= fopen(file_path,"wb+");
+ }
+ else
+ {
+ ret=fread((void *)&hard,sizeof(Trainingdata_hard),1,fp);
+ }
+
+ fseek(fp, 0, SEEK_SET);
+ fclose(fp);
+
+ fp= fopen(file_path,"wb+");
+ hard.num++;
+ ret=fwrite((void *)&hard,sizeof(Trainingdata_hard),1,fp);
+ fseek(fp, 0, SEEK_SET);
+ fclose(fp);
+ }
+ //获得数据个数
+ static int get_Trainingdata_data_num(uint32_t data)
+ {
+
+ char file_path[128]={0};
+ sprintf(file_path,"%shard_%d.bin",TRAINING_PATH,data);
+
+ FILE *fp= fopen(file_path,"ab");
+ if(fp==NULL)
+ {
+ return 0xffffff;
+ }
+ fseek(fp,0,SEEK_SET);
+ Trainingdata_hard hard;
+ int ret=fread((void *)&hard,sizeof(Trainingdata_hard),1,fp);
+ fseek(fp, 0, SEEK_SET);
+ fclose(fp);
+ return hard.num;
+
+ }
+
+ //写数据
+ int write_Trainingdata_data(Trainingdata data)
+ {
+ uint64_t time;
+ uapi_get_timestampe_ms(&time);
+ uint32_t timeday = time/1000/60/60/12;
+ char file_path[128]={0};
+ sprintf(file_path,"%s%d.bin",TRAINING_PATH,timeday);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",file_path);
+ write_Trainingdata_hard_data(timeday);
+ FILE *fp= fopen(file_path,"ab");
+ if(fp==NULL)
+ {
+ fopen(file_path,"wb+");
+ }
+ #if HARD_OFF
+ int ret=0;
+
+ ret=fwrite((void *)&data,sizeof(Trainingdata),1,fp);
+ if(ret!=1)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "2 fwrite_data %d",ret);
+ }
+
+
+ #else
+ if(fp==NULL)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "file is NULL");
+ }
+ Trainingdata_hard hard={0};
+ fseek(fp,0,SEEK_SET);
+ int ret=fread((void *)&hard,sizeof(Trainingdata_hard),1,fp);
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "hard num %d",hard.num);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fread %d",ret);
+ if(ret==0)
+ {
+ hard.num=1;
+ hard.st=timeday;
+ fseek(fp,0,SEEK_SET);
+ ret=fwrite((void *)&hard,sizeof(Trainingdata_hard),1,fp);
+
+ if(ret!=1)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fwrite_hard %d",ret);
+ }
+
+ ret=fwrite((void *)&data,sizeof(Trainingdata),1,fp);
+ if(ret!=1)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "1 fwrite_data %d",ret);
+ }
+ }
+ else
+ {
+ ret=fseek(fp,8,SEEK_END);
+ if(ret!=0)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fseek %d",ret);
+ }
+ hard.num++;
+ ret=fwrite((void *)&(hard),sizeof(Trainingdata_hard),1,fp);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "hard num %d",hard.num);
+ if(ret)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "fwrite_hard %d",ret);
+ }
+
+ fseek(fp,0,SEEK_END);
+ // fclose(fp);
+
+ // fp= fopen(file_path,"ab+");
+ ret=fwrite((void *)&data,sizeof(Trainingdata),1,fp);
+ if(ret!=1)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "2 fwrite_data %d",ret);
+ }
+ }
+ #endif
+
+ fseek(fp, 0, SEEK_SET);
+ fclose(fp);
+ return 1;
+ }
+//读数据
+Trainingdata *read_Trainingdata_data(uint32_t timedata,uint16_t offset)
+{
+ char file_path[128]={0};
+ sprintf(file_path,"%s%d.bin",TRAINING_PATH,timedata);
+
+ FILE *fp= fopen(file_path,"rb+");
+ Trainingdata* data=(Trainingdata*)malloc(sizeof(Trainingdata));
+ if(fp==NULL || get_Trainingdata_data_num(timedata)<offset)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "file is NULL %d",get_Trainingdata_data_num(timedata));
+ return NULL;
+ }
+ #if HARD_OFF
+ fseek(fp,sizeof(Trainingdata)*offset,SEEK_SET);
+ fread((void *)data,sizeof(Trainingdata),1,fp);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d",data->src);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d %d ",offset,sizeof(Trainingdata));
+ #else
+ fseek(fp,0,SEEK_SET);
+ Trainingdata_hard hard;
+ int ret=fread((void *)&hard,sizeof(Trainingdata_hard),1,fp);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "hard num %d",hard.num);
+ if(ret==0)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "file is NULL");
+ return NULL;
+
+ }
+ else
+ {
+ fread((void *)data,sizeof(Trainingdata),1,fp);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d",data->src);
+ }
+ #endif
+ fseek(fp, 0, SEEK_SET);
+ fclose(fp);
+ return data;
+}
+#ifdef __cplusplus
+}
+#endif
+
+
#if TIMER
// 声明定时器变量
static osTimerId_t g_timer = NULL;
#define WEATHER_MODEL_H
#include "wearable_log.h"
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#include "string.h"
+struct Weather_data
+{
+ int humidity;
+ char windScale[16];
+ char textNight[16];
+ int uvIndex;
+ int temp;
+ int iconNight;
+};
+
+// "address":
+// {"lat":225737664,
+// "atm":"1010",
+// "city":"深圳",
+// "subLocality":"宝安",
+// "lon":1138535138},
+struct Weather_data_address
+{
+ int lat;
+ char atm[16];
+ char city[32];
+ char subLocality[32];
+ int lon;
+};
+
+//{"tempMin":22,"iconDay":6,"fxDate":1712505600,"textDay":"阵雨","tempMax":29},
+struct ONE_DAY_DATA
+{
+ int tempMin;
+ int iconDay;
+ int fxDate;
+ char textDay[16];
+ int tempMax;
+};
+
+void UI_set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight);
+
+void UI_set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon);
+
+void UI_set_weather_seven_day_data(struct ONE_DAY_DATA *t);
+#if __cplusplus
+}
+#endif /* __cplusplus */
namespace OHOS
{
+
+
class WeatherModel
{
public:
*/
#include "weather/include/WeatherModel.h"
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+Weather_data Weather_data_t_now;
+Weather_data_address Weather_data_t_address;
+ONE_DAY_DATA Weather_data_seven_data[7];
+void UI_set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight)
+{
+ Weather_data_t_now.humidity=humidity;
+ memset((void*)Weather_data_t_now.windScale,0,16);
+ strcpy(Weather_data_t_now.windScale,windScale);
+ memset((void*)Weather_data_t_now.textNight,0,16);
+ strcpy(Weather_data_t_now.textNight,textNight);
+ Weather_data_t_now.uvIndex=uvIndex;
+ Weather_data_t_now.temp=temp;
+ Weather_data_t_now.iconNight=iconNight;
+}
+
+void UI_set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon)
+{
+ Weather_data_t_address.lat=lat;
+ Weather_data_t_address.lon=lon;
+ memset((void*)Weather_data_t_address.atm,0,16);
+ strcpy(Weather_data_t_address.atm,atm);
+ memset((void*)Weather_data_t_address.city,0,32);
+ strcpy(Weather_data_t_address.city,city);
+ memset((void*)Weather_data_t_address.subLocality,0,32);
+ strcpy(Weather_data_t_address.subLocality,subLocality);
+}
+
+void UI_set_weather_seven_day_data(struct ONE_DAY_DATA *t)
+{
+ for(int i=0;i<7;i++)
+ {
+ Weather_data_seven_data[i].fxDate=t[i].fxDate;
+ Weather_data_seven_data[i].iconDay=t[i].iconDay;
+ Weather_data_seven_data[i].tempMax=t[i].tempMax;
+ Weather_data_seven_data[i].tempMin=t[i].tempMin;
+ Weather_data_seven_data[i].fxDate=t[i].fxDate;
+ memset((void*)Weather_data_seven_data[i].textDay,0,16);
+ strcpy(Weather_data_seven_data[i].textDay,t[i].textDay);
+ }
+}
+
+
+#if __cplusplus
+}
+#endif /* __cplusplus */
namespace OHOS
{
WeatherModel::WeatherModel()
-set(COMPONENT_NAME "ble_service")
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}
-)
-
-
-set(PRIVATE_HEADER
-
-)
-set(SOURCES
- ${CMAKE_CURRENT_SOURCE_DIR}/bleService.c
- ${CMAKE_CURRENT_SOURCE_DIR}/bleEvent.c
-)
-
-set(COMPONENT_PUBLIC_CCFLAGS
-)
-
-set(COMPONENT_CCFLAGS
-)
-
-set(WHOLE_LINK
- true
-)
-
-set(MAIN_COMPONENT
- false
-)
-
-set(PUBLIC_DEFINES
-)
-
-set(PRIVATE_DEFINES
-)
-
-build_component()
+add_subdirectory_if_exist(bleservice)
+add_subdirectory_if_exist(blemoder)
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
+#===============================================================================
+
+set(COMPONENT_NAME "blemoder")
+
+set(PUBLIC_HEADER
+${CMAKE_CURRENT_SOURCE_DIR}
+)
+set(PRIVATE_HEADER
+${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/innerkits
+${ROOT_DIR}/middleware/services/gui/uikit/utils/interfaces/kits
+${ROOT_DIR}/application/wearable/nativeapp/nativeui/heartrate/include
+${ROOT_DIR}/application/wearable/fd230app/nativeui/weather/include
+
+)
+
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/bletest.cpp
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+ -std=c++11
+ -Wno-error
+ -Wno-unused-parameter
+ -fno-exceptions
+ -fno-unwind-tables
+ -fno-asynchronous-unwind-tables
+ -Wno-undef
+ -Wno-bitwise-op-parentheses
+ -Wno-shift-op-parentheses
+ -nostdlibinc
+ -nostdinc
+ -nostdlib
+ -Wno-c++11-narrowing
+ -Wno-error=unused-function
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+set(PUBLIC_DEFINES
+SUPPORT_PPG_SERVICE
+SUPPORT_AT_PPG
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
--- /dev/null
+/**
+ * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
+ *
+ * Description: Test source \n
+ * Author: @CompanyNameTag \n
+ * History: \n
+ * 2022-08-16, Create file. \n
+ */
+#include "wearable_log.h"
+#include "securec.h"
+#include "broadcast_service.h"
+#include "broadcast_feature.h"
+#include "service_id_define.h"
+#include "samgr_lite.h"
+#include "thread_adapter.h"
+#include "graphic_service.h"
+#include "WeatherModel.h"
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#include "pinctrl.h"
+#include "debug_print.h"
+#include "soc_osal.h"
+#include "tcxo.h"
+#include "irmalloc.h"
+#include "errcode.h"
+#include "common_def.h"
+
+#include "chip_core_irq.h"
+#include "chip_io.h"
+#include "gpio.h"
+#include "pm_veto.h"
+
+#include "rtc.h"
+#include "timer.h"
+#include "systick.h"
+#include "cmsis_os2.h"
+#include "los_printf.h"
+
+#include "custom_utils.h"
+#include "string.h"
+// struct Weather_data
+// {
+// int humidity;
+// char* windScale;
+// char* textNight;
+// int uvIndex;
+// int temp;
+// int iconNight;
+// };
+
+
+void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight)
+{
+ return UI_set_weather_now_data(humidity, windScale, textNight,uvIndex,temp,iconNight);
+}
+
+void set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon)
+{
+ return UI_set_weather_address_data(lat, atm, city,subLocality,lon);
+}
+// struct ONE_DAY_DATA
+// {
+// int tempMin;
+// int iconDay;
+// int fxDate;
+// char textDay[16];
+// int tempMax;
+// };
+
+static struct ONE_DAY_DATA data_t[7];
+void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int x)
+{
+ data_t[x].tempMin=tempMin;
+ data_t[x].iconDay=iconDay;
+ data_t[x].fxDate=fxDate;
+ data_t[x].tempMax=tempMax;
+ memset((void*)data_t[x].textDay,0,16);
+ strcpy(data_t[x].textDay,textDay);
+
+ if(x==6)
+ return UI_set_weather_seven_day_data(data_t);
+}
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
--- /dev/null
+/**
+ * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
+ *
+ * Description: Test adc header \n
+ * Author: @CompanyNameTag \n
+ * History: \n
+ * 2022-08-16, Create file. \n
+ */
+
+#ifndef BLE_MODER_H__
+#define BLE_MODER_H__
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#include "stdint.h"
+#include "errcode.h"
+
+void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight);
+
+void set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon);
+void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int x) ;
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#endif
\ No newline at end of file
--- /dev/null
+
+set(COMPONENT_NAME "bleservice")
+set(PUBLIC_HEADER
+ ${CMAKE_CURRENT_SOURCE_DIR}
+
+)
+
+
+set(PRIVATE_HEADER
+ #${CMAKE_CURRENT_SOURCE_DIR}/../../fd230app/nativeui/weather/include
+)
+set(SOURCES
+ ${CMAKE_CURRENT_SOURCE_DIR}/bleService.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/bleEvent.c
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+set(PUBLIC_DEFINES
+)
+
+set(PRIVATE_DEFINES
+
+)
+
+build_component()
+
* Create:\r
*/\r
\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
#include "common_def.h"\r
#include "bts_def.h"\r
#include "bts_gatt_stru.h"\r
#include "bleEvent.h"\r
#include "ppg_service.h"\r
#include "broadcast_feature.h"\r
-#ifdef SUPPORT_BLE_SERVICE\r
+#if 1//#ifdef //SUPPORT_BLE_SERVICE\r
#include "app_common_api.h"\r
#include "hidService.h"\r
#include "../../../../../open_source/openharmony/third_party/cJSON/cJSON.h"\r
#include "errcode.h"\r
#define PHONE_WATCH_CONFIG_PATH "/user/userdata/phone_watch.json"\r
#define ALARM_DATA_CONFIG_PATH "/user/userdata/alarm_test.json"\r
+#include "bletest.h"\r
+\r
+\r
uint8_t *bigDataBuf = NULL;//大数据buf\r
uint8_t bigDataBufLen=0;\r
bool sendbigDataBufState = false;//发送大数据表示不要被其他指令打断\r
lrcValue =lrcValue+ crcnum[i];\r
// printf("%02x ",crcnum[i]);\r
}\r
+ //"{\"pn\":\"iPhone\",\"tp\":1}";\r
+ \r
crcbuf = lrcValue%256;\r
crcbuf = 256-crcbuf;\r
crcbuf = crcbuf%256;\r
WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Check_CRC ret:0x%x len:%d\r\n",crcbuf,len);\r
- if(crcbuf == crcvalue)\r
- {\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Check_CRC true:\r\n");\r
- return true;\r
- }\r
- else{\r
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Check_CRC false:\r\n");\r
- return false;\r
- }\r
+\r
+ return true;\r
+ // if(crcbuf == crcvalue)\r
+ // {\r
+ // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Check_CRC true:\r\n");\r
+ // return true;\r
+ // }\r
+ // else{\r
+ // WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "Check_CRC false:\r\n");\r
+ // return false;\r
+ // }\r
\r
}\r
static uint8_t Calculate_CRC(uint8_t *crcnum,uint16_t len)//计算20byte\r
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
- gap_ble_pair_remote_device(&phone_addr);\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
}else{\r
first_bond = 0;\r
printf("gap_ble_pair_remote_device 444444444\r\n");\r
inforaddr.addr[5] = mac_data[5];\r
inforaddr.type = MacType;\r
// printf("inforaddr:%x-%x-%x-%x-%x-%x",inforaddr.addr[0],inforaddr.addr[1],inforaddr.addr[2],inforaddr.addr[3],inforaddr.addr[4],inforaddr.addr[5]);\r
- gap_ble_remove_pair(&inforaddr);//清除配对信息\r
+ errcode_t ret= gap_ble_remove_pair(&inforaddr);//清除配对信息\r
+ if(ret!=ERRCODE_SUCC)\r
+ {\r
+ printf("gap_ble_remove_pair : %X\r\n",ret);\r
+ }\r
//清除保存的文件信息\r
+ if(0!=remove(PHONE_WATCH_CONFIG_PATH))\r
+ {\r
+ printf("json remove fail\r\n");\r
+ } \r
+\r
}\r
void sendBindInfor(uint8_t *crcnum)\r
{\r
\r
GetwatchSaveMac(&save_mac,&MacType);//获取手表设备本地保存的mac地址和mac地址类型 \r
getPhoneMac(crcnum,&copare_mac);\r
- memset(copare_mac,0,6);\r
+ \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
#ifdef SUPPORT_DEVICE_PAIRING_NOTIFICATION\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "sendParieSuccess:0x%x-0x%x-0x%x-0x%x-0x%x-0x%x\r\n",addr->addr[0],addr->addr[1],addr->addr[2],addr->addr[3],addr->addr[4],addr->addr[5]);\r
if(first_bond == 1 && phoneDataFlag == 1)//第一次连接绑定\r
- // if(1)\r
{\r
uint8_t value[25];\r
uint8_t length = 0;\r
}\r
phoneDataFlag = 0;\r
}\r
+\r
\r
}\r
\r
int alarmCount = cJSON_GetArraySize(alarms);\r
printf("alarmCount %d\n",alarmCount);\r
}\r
+\r
void GetAlarmDataCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//获取app下发的屏幕参数\r
{\r
uint32_t tmp = 1;\r
sendBuf[17] = 0;\r
sendBuf[18] = Calculate_CRC(sendBuf,18);\r
sendBleData(sendBuf,19);\r
- }\r
- \r
+ } \r
}\r
\r
\r
\r
+\r
void GetWatchLcdParamCmd(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//获取app下发的屏幕参数\r
{\r
uint32_t tmp = 1;\r
{\r
uint8_t *json;\r
json = buf;\r
+ #if 0\r
+ FILE *fp=fopen("user/weather.json","wb+");\r
+ printf("jsonCheck_weather len %d",strlen((char *)buf)+1);\r
+ //fwrite((void*)buf,1,strlen((char *)buf)+1,fp);\r
+ fputs((char *)buf,fp);\r
+ fclose(fp);\r
+ #endif\r
cJSON* root = cJSON_Parse((const char *)json);\r
if (root == NULL) {\r
printf("天气 JSON解析错误\n");\r
return;\r
}\r
- cJSON *address_cjson = cJSON_GetObjectItem(root, "address");\r
- cJSON *city_cjson = cJSON_GetObjectItem(address_cjson, "city");\r
+ cJSON *now_cjson = cJSON_GetObjectItem(root, "now");\r
\r
- if (cJSON_IsString(city_cjson)) {\r
- printf("city: %s\n", city_cjson->valuestring);\r
+ int humidity = cJSON_GetObjectItem(now_cjson, "humidity")->valueint;\r
+ char * windScale = cJSON_GetObjectItem(now_cjson, "windScale")->valuestring;\r
+ char *textNight = cJSON_GetObjectItem(now_cjson, "textNight")->valuestring;\r
+ int uvIndex = cJSON_GetObjectItem(now_cjson, "uvIndex")->valueint;\r
+ int temp = cJSON_GetObjectItem(now_cjson, "temp")->valueint;\r
+ int iconNight = cJSON_GetObjectItem(now_cjson, "iconNight")->valueint;\r
+\r
+ set_weather_now_data(humidity,windScale,textNight,uvIndex,temp,iconNight);\r
+\r
+// "address":\r
+// {"lat":225737664,\r
+// "atm":"1010",\r
+// "city":"深圳",\r
+// "subLocality":"宝安",\r
+// "lon":1138535138},\r
+\r
+ cJSON *address_cjson = cJSON_GetObjectItem(root, "address");\r
+ char*city = cJSON_GetObjectItem(address_cjson, "city")->valuestring;\r
+ char*subLocality = cJSON_GetObjectItem(address_cjson, "subLocality")->valuestring;\r
+ char*atm = cJSON_GetObjectItem(address_cjson, "atm")->valuestring;\r
+ int lat = cJSON_GetObjectItem(address_cjson, "lat")->valueint;\r
+ int lon = cJSON_GetObjectItem(address_cjson, "lon")->valueint;\r
+ set_weather_address_data(lat,atm,city,subLocality,lon);\r
+\r
+ cJSON *daily = cJSON_GetObjectItem(root, "daily");\r
+ for(int i=0;i<7;i++)\r
+ { \r
+ //{"tempMin":22,"iconDay":6,"fxDate":1712505600,"textDay":"阵雨","tempMax":29},\r
+ cJSON *data=cJSON_GetArrayItem(daily,i);\r
+ int tempMin=cJSON_GetObjectItem(data,"tempMin")->valueint;\r
+ int iconDay=cJSON_GetObjectItem(data,"iconDay")->valueint;\r
+ int fxDate=cJSON_GetObjectItem(data,"fxDate")->valueint;\r
+ char * textDay=cJSON_GetObjectItem(data,"textDay")->valueint;\r
+ int tempMax=cJSON_GetObjectItem(data,"tempMax")->valueint;\r
+ set_weather_one_data(tempMin,iconDay,fxDate,textDay,tempMax,i);\r
}\r
+ \r
+ //cJSON_GetObjectItem(daily, "daily");\r
+\r
+\r
+ \r
+ // if (cJSON_IsString(city_cjson)) {\r
+ // printf("city: %s\n", city_cjson->valuestring);\r
+ // }\r
cJSON_Delete(root);\r
printf("weather data!!!!!!!!!!end\r\n");\r
}\r
}\r
}\r
\r
+void getTRAIN_TARGETInfo(uint16_t cmd,uint8_t *crcnum,uint16_t len,uint8_t *totalData,uint8_t crcvalue)//\r
+{\r
+\r
+}\r
//02 类型\r
void type2AE4Data(uint8_t *buf_cmd,uint8_t *data,uint16_t datalen,uint8_t *totalData,uint8_t crcvalue)\r
{\r
getPhoneInfo_test();\r
break;\r
case SET_TRAIN_TARGET_CMD:\r
+\r
break;\r
case SET_ALARM_DATA_CMD:\r
GetAlarmDataCmd(typeID,data,datalen,totalData,crcvalue);\r
{\r
uint8_t type=buf_cmd[1];\r
printf("type:%d %d data_size:%d data:%d crcvalue:%x",buf_cmd[0],type,data_size,data[0],crcvalue);\r
+ FILE *fp= fopen("user/ble_test.json","w+");\r
+ fwrite((void *)data,1,data_size,fp);\r
+ fclose(fp);\r
switch (type)\r
{\r
case 0x02://获取手机信息\r
type2AE4Data(buf_cmd,data,data_size,totalData,crcvalue);\r
break;\r
+ // case 0x02://获取手机信息\r
+ // type2AE4Data(buf_cmd,data,data_size,totalData,crcvalue);\r
+ // break;\r
default:\r
break;\r
}\r
uint8_t cmd_data[17];\r
void bleDataRecv(uint8_t *totalData, uint16_t event_size,uint16_t handle)\r
{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xhandle %d,%d %d",data2ae3Cmd,data2ae4Cmd,handle);\r
if(sendbigDataBufState == true)//正在发送大数据不接收任何app指令下发的数据\r
{\r
return;\r
free(recvData);\r
}\r
}\r
- }else if(data2ae4Cmd == handle)\r
+ }else if(handle)\r
{\r
while (1)\r
{\r
}\r
}\r
}\r
+ // else if(data2ae5Cmd == handle)\r
+ // {\r
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xhandle %d,%d %d",data2ae3Cmd,data2ae4Cmd,handle);\r
+ // }\r
}\r
//接收app下发的原始数据 \r
void revBleOldData(uint8_t *buf, uint16_t event_size,uint16_t handle)//每包的数据大小\r
{\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "xxxxxxxxxxxxxxxx");\r
printf("handle :%d data2ae3Cmd:%d data2ae4Cmd:%d buf:%d event_size %d\r\n",handle,data2ae3Cmd,data2ae4Cmd,buf,event_size);\r
bleDataRecv(buf,event_size,handle);\r
}\r
#endif\r
+#endif\r
+#ifdef __cplusplus\r
+}\r
#endif
\ No newline at end of file
#ifndef _BLE_EVENT_H
#define _BLE_EVENT_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
#include <stdint.h>
#include <stdio.h>
#include "stdbool.h"
#include "errcode.h"
#include "bts_def.h"
-#ifdef __cplusplus
-extern "C" {
-#endif
+
#define READ_FLASH_DATA 0x01 //读flash数据
#define WRITE_FLASH_DATA 0x02 //写flash数据
typedef struct {
#define SYN_BASIC_TRANIN_HISTORY_DATA_CMD 0x0149 //同步基础训练历史数据basic training
#define SYN_SLEEP_HISTORY_DATA_CMD 0x014B //同步睡眠历史数据
+#define FIND_PHONE_CMD 0x0501 //同步睡眠历史数据
+
/*******************data structure*************************/
#pragma pack(1)
* Create:\r
*/\r
\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
#include "common_def.h"\r
#include "bts_def.h"\r
#include "bts_gatt_stru.h"\r
#include "bleEvent.h"\r
#include "hidService.h"\r
#include "factorytestService.h"\r
+\r
+// extern void bts_data_to_uuid_len2(uint16_t uuid_data, bt_uuid_t *out_uuid);\r
+// extern void bts_init_128bit_uuid(const bt_uuid_t *uuid);\r
// #include "ble_hid_take_photo_server.h"\r
/* Gatt service UUID */\r
#define BLE_SERVICE_UUID 0x18e0\r
#define BLE_DEFAULT_NAME "KUMI U6"\r
#define BLE_DEFAULT_NAME_LEN 32\r
#define BLE_MAC_MAX_LEN 6 //蓝牙mac地址最大个数6个\r
+\r
+\r
// 蓝牙模块全局变量\r
static gap_ble_callbacks_t g_ble_gapble_cbs;\r
static gatts_callbacks_t g_ble_gatts_cbs;\r
\r
uint8_t data2ae3Cmd = 0;//2ae3短指令特征值\r
uint8_t data2ae4Cmd = 0;\r
-#ifdef SUPPORT_BLE_SERVICE\r
+uint8_t data2ae5Cmd = 0;\r
+#if 1//def SUPPORT_BLE_SERVICE\r
static void set_phone_info(bd_addr_t *addr)//保存手机信息 包含手机mac地址\r
{\r
bd_addr_t new_addr;\r
gap_ble_config_adv_data_t adv_data_info;\r
memset_s(&adv_data_info, sizeof(gap_ble_config_adv_data_t), 0, sizeof(gap_ble_config_adv_data_t));\r
\r
-#if U6_DEBUG\r
- unsigned char set_mac[6] = {0x61,0x22,0x33,0x44,0x09,0x17};\r
+#if 1\r
+ unsigned char set_mac[6] = {0x61,0x22,0x33,0x44,0x09,0x20};\r
bluetooth_set_local_addr(set_mac,6);\r
bd_addr_t addr_info;\r
int32_t ret= 0;\r
set_phone_info(addr);\r
Bleconnect = GAP_BLE_STATE_CONNECTED;//蓝牙已连接\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GAP_BLE_STATE_CONNECTED!!! 0x%x\r\n",pair_state);\r
- svr_ble_adv_stop();\r
\r
}\r
}\r
if(ble_gatts_cmp_uuid(uuid, &chara_uuid_data1))\r
{\r
g_ble_server_handle = result->value_handle;\r
+ data2ae5Cmd = result->value_handle;\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "result->value_handle1 %d\r\n",result->value_handle);\r
}\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
factory_recv_cmd_data(write_cb_para->value,write_cb_para->length,write_cb_para->handle);\r
svr_bluetooth_init();\r
}\r
}\r
+#endif\r
+#ifdef __cplusplus\r
+}\r
#endif
\ No newline at end of file
#ifndef __BLESERVICE_H
#define __BLESERVICE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
#include <stdint.h>
#include <stdio.h>
#include "stdbool.h"
errcode_t svr_ble_bt_gatts_noyify(uint8_t *data, uint16_t data_len);
void svr_ble_adv_start(void);
void svr_ble_adv_stop(void);
+#ifdef __cplusplus
+}
+#endif
#endif
# "acc_sensor",
"cywee",
"batterry_service",
- "ble_service",
+ "bleservice",
+ "blemoder",
"factorytest_service",
"hid_service"
],