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