/**************************************************************************** Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED. This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT be copied by any method or incorporated into another program without the express written consent of Aerospace C.Power. This Information or any portion thereof remains the property of Aerospace C.Power. The Information contained herein is believed to be accurate and Aerospace C.Power assumes no responsibility or liability for its use in any way and conveys no license or title under any patent or copyright and makes no representation or warranty that this Information is free from patent or copyright infringement. ****************************************************************************/ #ifndef _IOT_BT_EXT_API_H_ #define _IOT_BT_EXT_API_H_ #ifdef __cplusplus extern "C" { #endif #include "iot_pkt_api.h" /* bluetooth mac address length */ #define IOT_BT_EXT_MAC_ADDR_LEN 6 /* bluetooth user port support num, not modify this define */ #define IOT_BT_EXT_PORT_USER_NUM (IOT_BT_EXT_PORT_USER_END \ - IOT_BT_EXT_PORT_USER_BASE) /* bluetooth user port define. * add new port id before IOT_BT_EXT_PORT_USER_END */ typedef enum { /* bluetooth first user port id */ IOT_BT_EXT_PORT_USER_BASE = 4, /* bluetooth virtual ir port */ IOT_BT_EXT_PORT_USER_VIRTUAL_IR = IOT_BT_EXT_PORT_USER_BASE, /* bluttooth virtual cli port */ IOT_BT_EXT_PORT_USER_VIRTUAL_CLI, /* user port end id */ IOT_BT_EXT_PORT_USER_END, } IOT_BT_EXT_PORT_USER_ID; /* @brief peripheral receive a packet success report function callback * * @param pkt: recevived pkt. user need to free the pkt. * @return: none */ typedef void (*iot_bt_ext_rpt_func_t)(iot_pkt_t *pkt); /* @brief peripheral receive report register * * @param port: protocol port id, see IOT_BT_EXT_PORT_XXX * @param cb: report callback * @return: error code. */ uint32_t iot_bt_ext_rpt_register(uint8_t port, iot_bt_ext_rpt_func_t cb); /* @brief alloc bt protocol send pkt * * @param len: send data len * @return: alloc pkt ptr */ iot_pkt_t *iot_bt_ext_send_pkt_get(uint32_t len); /* @brief send bt protocol packet * * @param port: protocol port id, see IOT_BT_EXT_PORT_XXX * @param pkt: send pkt, user need alloc pkt use iot_bt_ext_send_pkt_get * api, then call the api to send data, the bt_ext task will * free the pkt. * @return: none */ void iot_bt_ext_send(uint8_t port, iot_pkt_t *pkt); /* @brief get bluetooth mac address * * @param addr: bluetooth mac address pointer. little endian byte order. * length = 6bytes. * this buffer must be alloc by the caller. * @return: error code. see ERR_XXX. */ uint32_t iot_bt_ext_get_mac_addr(uint8_t *addr); /* @brief set bluetooth mac address * * @param addr: bluetooth mac address pointer. little endian byte order. * length = 6bytes. * this buffer must be alloc by the caller. * @return: error code. see ERR_XXX. */ uint32_t iot_bt_ext_set_mac_addr(uint8_t *addr); /* @brief set bluetooth device local name * * @param name: bluetooth device name pointer. little endian byte order. * @param len: device name string length(39byte max) * * @return: error code. see ERR_XXX. */ uint32_t iot_bt_ext_set_local_name(uint8_t *name, uint8_t len); /* @brief set bluetooth security pair enable/disable * * @param is_enable: 0-disable, others-enable * * @return: error code. see ERR_XXX. */ uint32_t iot_bt_ext_set_security_pair(uint8_t is_enable); #ifdef __cplusplus } #endif #endif