• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  * Description: 蓝牙SDK API头文件(此文件为DEMO,需集成方适配修改)
15  */
16 #ifndef HILINK_BT_API_H
17 #define HILINK_BT_API_H
18 
19 #include "ble_cfg_net_api.h"
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 /* 销毁蓝牙协议栈标志 */
26 #define BLE_DEINIT_FALG 0x1234ABCD
27 
28 /* 产品信息定义结构体 */
29 typedef struct {
30     char *manuName;       /* 设备制造商,长度范围(0,4] */
31     char *devName;        /* 设备名称 */
32     char *productId;      /* 设备HiLink认证号,长度范围(0,5] */
33     char *sn;             /* 设备唯一标识,比如sn号,长度范围(0,40] */
34     char *mac;            /* 设备MAC地址,固定32字节 */
35     char *subProductId;   /* 设备子productId */
36     char *model;          /* 设备型号,长度范围(0,32] */
37     char *devType;        /* 设备类型,长度范围(0,4] */
38     char *hiv;            /* 设备Hilink协议版本,长度范围(0,32] */
39     int protType;         /* 设备协议类型,取值范围[1,3] */
40 } HILINK_BT_DevInfo;
41 
42 /* 发送蓝牙数据回调函数类型 */
43 typedef int (*HILINK_BT_SendBtDataCallback)(const unsigned char *buf, unsigned int len);
44 
45 /* 厂家实现协议栈使用,注册蓝牙数据发送接口 */
46 int HILINK_BT_RegisterBtDataSendCallback(HILINK_BT_SendBtDataCallback callback);
47 
48 /* 厂家实现协议栈使用,注册蓝牙OTA数据发送接口 */
49 int HILINK_BT_RegisterOtaDataSendCallback(HILINK_BT_SendBtDataCallback callback);
50 
51 /* 厂家实现协议栈使用,处理蓝牙数据 */
52 int HILINK_BT_ProcessBtData(const unsigned char *buf, unsigned int len);
53 
54 /* 厂家实现协议栈使用,处理蓝牙OTA的控制数据 */
55 int HILINK_BT_ProcessOtaCtrl(const unsigned char *buf, unsigned int len);
56 
57 /* 厂家实现协议栈使用,处理蓝牙OTA的传输数据 */
58 int HILINK_BT_ProcessOtaData(const unsigned char *buf, unsigned int len);
59 
60 /* 厂家实现协议栈使用,断开蓝牙连接时,释放通道占用资源 */
61 void HILINK_BT_DisconnectFreeResource(void);
62 
63 /* 返回值0代表支持本地控和二次配网,其他值代表不支持 */
64 int HILINK_BT_SupportLocalControl(void);
65 
66 /* 设备硬重置时厂商调用的接口 */
67 int HILINK_BT_HardRevoke(void);
68 
69 /*
70  * 获取设备表面的最强点信号发射功率强度,最强点位置的确定以及功率测试方
71  * 法,参照hilink认证蓝牙靠近发现功率设置及测试方法指导文档,power为出参
72  * ,单位dbm,返回设备表面的最强信号强度值,如果厂商不想使用蓝牙靠近发现功
73  * 能,接口直接返-1,如果需要使用蓝牙靠近发现,则接口返回0,如需及时生效,需
74  * 调用HILINK_BT_StartAdvertise()方法启动广播
75  */
76 int HILINK_BT_GetDevSurfacePower(char *power);
77 
78 /**
79  * @brief 注册服务白名单,注册在白名单中的服务支持不加密处理
80  *
81  * @param services [IN] 字符串列表,成员可读数量至少为size,应为静态或全局变量指针
82  * @param size [IN] 字符串列表大小
83  * @return 0成功,其他失败
84  * @attention 在ble sdk初始化之前调用
85  */
86 int HILINK_BT_RegisterReqSvcTrustList(const char *services[], unsigned int size);
87 
88 /*
89  * 获取设备的子型号,长度固定两个字节
90  * subProdId为保存子型号的缓冲区,len为缓冲区的长度
91  * 如果产品定义有子型号,则填入两字节子型号,并以'\0'结束, 返回0
92  * 没有定义子型号,则返回-1
93  * 该接口需设备开发者实现
94  * 与hilink sdk相同定义,双模组模式只需一份,已提供给第三方厂家,暂不按编程规范整改
95  */
96 int HILINK_GetSubProdId(char *subProdId, int len);
97 
98 /*
99  * 获取设备SN
100  * 与hilink sdk相同定义,双模组模式只需一份,已提供给第三方厂家,暂不按编程规范整改
101  */
102 void HILINK_GetDeviceSn(unsigned int len, char *sn);
103 
104 /*
105  * 获取设备相关版本号
106  * 返回0表示版本号获取成功,返回其他表示版本号获取失败
107  * 注意,此接口为HiLink内部调用函数
108  * 与hilink sdk相同定义,双模组模式只需一份,已提供给第三方厂家,暂不按编程规范整改
109  */
110 int getDeviceVersion(char **firmwareVer, char **softwareVer, char **hardwareVer);
111 
112 /*
113  * 蓝牙处理任务休眠,当前仅harmony版本支持
114  */
115 void HILINK_BT_SuspendScheduleTask(void);
116 
117 /*
118  * 蓝牙处理任务唤醒,当前仅harmony版本支持
119  */
120 void HILINK_BT_ResumeScheduleTask(void);
121 
122 /*
123  * 获取蓝牙mac地址
124  * 返回0表示获取成功,返回其他表示获取失败
125  */
126 int HILINK_BT_GetMacAddr(unsigned char *mac, unsigned int len);
127 
128 /*
129  * 获取厂商定制信息
130  * 返回0表示获取成功,返回其他表示获取失败
131  */
132 int HILINK_GetCustomInfo(char *customInfo, unsigned int len);
133 
134 /*
135  * 获取厂家ID
136  * 返回0表示获取成功,返回其他表示获取失败
137  */
138 int HILINK_GetManuId(char *manuId, unsigned int len);
139 
140 #ifdef __cplusplus
141 }
142 #endif
143 #endif
144