1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openLuat-luatos-soc-air101

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
wm_bt_def.h 60 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Dozingfiretruck Отправлено 3 лет назад c770552
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055
/**
* @file wm_bt_def.h
*
* @brief Bluetooth Define
*
* @author WinnerMicro
*
* Copyright (c) 2020 Winner Microelectronics Co., Ltd.
*/
#ifndef WM_BT_DEF_H
#define WM_BT_DEF_H
/** Bluetooth Error Status */
typedef enum
{
TLS_BT_STATUS_SUCCESS, /**< success */
TLS_BT_STATUS_FAIL,
TLS_BT_STATUS_NOT_READY,
TLS_BT_STATUS_NOMEM, /**< alloc memory failed */
TLS_BT_STATUS_BUSY,
TLS_BT_STATUS_DONE, /**< request already completed */
TLS_BT_STATUS_UNSUPPORTED,
TLS_BT_STATUS_PARM_INVALID,
TLS_BT_STATUS_UNHANDLED,
TLS_BT_STATUS_AUTH_FAILURE,
TLS_BT_STATUS_RMT_DEV_DOWN,
TLS_BT_STATUS_AUTH_REJECTED,
TLS_BT_STATUS_THREAD_FAILED, /**< create internal thread failed */
TLS_BT_STATUS_INTERNAL_ERROR, /**< controller stack internal error */
TLS_BT_STATUS_CTRL_ENABLE_FAILED,
TLS_BT_STATUS_HOST_ENABLE_FAILED,
TLS_BT_STATUS_CTRL_DISABLE_FAILED,
TLS_BT_STATUS_HOST_DISABLE_FAILED,
} tls_bt_status_t;
typedef enum
{
TLS_BT_CTRL_IDLE = (1<<0),
TLS_BT_CTRL_ENABLED = (1<<1),
TLS_BT_CTRL_SLEEPING = (1<<2),
TLS_BT_CTRL_BLE_ROLE_MASTER = (1<<3),
TLS_BT_CTRL_BLE_ROLE_SLAVE = (1<<4),
TLS_BT_CTRL_BLE_ROLE_END = (1<<5),
TLS_BT_CTRL_BLE_STATE_IDLE = (1<<6),
TLS_BT_CTRL_BLE_STATE_ADVERTISING = (1<<7),
TLS_BT_CTRL_BLE_STATE_SCANNING = (1<<8),
TLS_BT_CTRL_BLE_STATE_INITIATING = (1<<9),
TLS_BT_CTRL_BLE_STATE_STOPPING = (1<<10),
TLS_BT_CTRL_BLE_STATE_TESTING = (1<<11),
} tls_bt_ctrl_status_t;
/** Bluetooth Adapter State */
typedef enum
{
WM_BT_STATE_OFF,
WM_BT_STATE_ON
} tls_bt_state_t;
/** bluetooth host statck events */
typedef enum
{
WM_BT_ADAPTER_STATE_CHG_EVT = (0x01<<0),
WM_BT_ADAPTER_PROP_CHG_EVT = (0x01<<1),
WM_BT_RMT_DEVICE_PROP_EVT = (0x01<<2),
WM_BT_DEVICE_FOUND_EVT = (0x01<<3),
WM_BT_DISCOVERY_STATE_CHG_EVT=(0x01<<4),
WM_BT_REQUEST_EVT = (0x01<<5),
WM_BT_SSP_REQUEST_EVT = (0x01<<6),
WM_BT_PIN_REQUEST_EVT = (0x01<<7),
WM_BT_BOND_STATE_CHG_EVT = (0x01<<8),
WM_BT_ACL_STATE_CHG_EVT = (0x01<<9),
WM_BT_ENERGY_INFO_EVT = (0x01<<10),
WM_BT_LE_TEST_EVT = (0x01<<11),
} tls_bt_host_evt_t;
typedef struct
{
tls_bt_state_t status; /**< bluetooth adapter state */
} tls_bt_adapter_state_change_msg_t;
/** Bluetooth Adapter and Remote Device property types */
typedef enum
{
/* Properties common to both adapter and remote device */
/**
* Description - Bluetooth Device Name
* Access mode - Adapter name can be GET/SET. Remote device can be GET
* Data type - bt_bdname_t
*/
WM_BT_PROPERTY_BDNAME = 0x1,
/**
* Description - Bluetooth Device Address
* Access mode - Only GET.
* Data type - bt_bdaddr_t
*/
WM_BT_PROPERTY_BDADDR,
/**
* Description - Bluetooth Service 128-bit UUIDs
* Access mode - Only GET.
* Data type - Array of bt_uuid_t (Array size inferred from property length).
*/
WM_BT_PROPERTY_UUIDS,
/**
* Description - Bluetooth Class of Device as found in Assigned Numbers
* Access mode - Only GET.
* Data type - uint32_t.
*/
WM_BT_PROPERTY_CLASS_OF_DEVICE,
/**
* Description - Device Type - BREDR, BLE or DUAL Mode
* Access mode - Only GET.
* Data type - bt_device_type_t
*/
WM_BT_PROPERTY_TYPE_OF_DEVICE,
/**
* Description - Bluetooth Service Record
* Access mode - Only GET.
* Data type - bt_service_record_t
*/
WM_BT_PROPERTY_SERVICE_RECORD,
/* Properties unique to adapter */
/**
* Description - Bluetooth Adapter scan mode
* Access mode - GET and SET
* Data type - bt_scan_mode_t.
*/
WM_BT_PROPERTY_ADAPTER_SCAN_MODE,
/**
* Description - List of bonded devices
* Access mode - Only GET.
* Data type - Array of bt_bdaddr_t of the bonded remote devices
* (Array size inferred from property length).
*/
WM_BT_PROPERTY_ADAPTER_BONDED_DEVICES,
/**
* Description - Bluetooth Adapter Discovery timeout (in seconds)
* Access mode - GET and SET
* Data type - uint32_t
*/
WM_BT_PROPERTY_ADAPTER_DISCOVERY_TIMEOUT,
/* Properties unique to remote device */
/**
* Description - User defined friendly name of the remote device
* Access mode - GET and SET
* Data type - bt_bdname_t.
*/
WM_BT_PROPERTY_REMOTE_FRIENDLY_NAME,
/**
* Description - RSSI value of the inquired remote device
* Access mode - Only GET.
* Data type - int32_t.
*/
WM_BT_PROPERTY_REMOTE_RSSI,
/**
* Description - Remote version info
* Access mode - SET/GET.
* Data type - bt_remote_version_t.
*/
WM_BT_PROPERTY_REMOTE_VERSION_INFO,
/**
* Description - Local LE features
* Access mode - GET.
* Data type - bt_local_le_features_t.
*/
WM_BT_PROPERTY_LOCAL_LE_FEATURES,
WM_BT_PROPERTY_REMOTE_DEVICE_TIMESTAMP = 0xFF,
} tls_bt_property_type_t;
/** Bluetooth Adapter Property data structure */
typedef struct
{
tls_bt_property_type_t type;
int len;
void *val;
} tls_bt_property_t;
typedef struct
{
tls_bt_status_t status;
int num_properties;
tls_bt_property_t *properties; /**< bluetooth adapter property data */
} tls_bt_adapter_prop_msg_t;
typedef enum
{
WM_BLE_SCAN_STOP = 0,
WM_BLE_SCAN_PASSIVE = 1,
WM_BLE_SCAN_ACTIVE = 2,
} wm_ble_scan_type_t;
typedef enum
{
WM_BLE_ADV_DATA = 0,
WM_BLE_ADV_RSP_DATA,
} wm_ble_gap_data_t;
typedef enum{
WM_BLE_ADV_STOP = 0,
WM_BLE_ADV_IND,
WM_BLE_ADV_DIRECT_IND_HDC, /*<high duty cycle, directed advertising>*/
WM_BLE_ADV_SCAN_IND,
WM_BLE_ADV_NONCONN_IND,
WM_BLE_ADV_DIRECT_IND_LDC, /*<low duty cycle, directed advertising>*/
} wm_ble_adv_type_t;
#define WM_BLE_GAP_EVENT_CONNECT (0x01<<0)
#define WM_BLE_GAP_EVENT_DISCONNECT (0x01<<1)
/* Reserved 2 */
#define WM_BLE_GAP_EVENT_CONN_UPDATE (0x01<<3)
#define WM_BLE_GAP_EVENT_CONN_UPDATE_REQ (0x01<<4)
#define WM_BLE_GAP_EVENT_L2CAP_UPDATE_REQ (0x01<<5)
#define WM_BLE_GAP_EVENT_TERM_FAILURE (0x01<<6)
#define WM_BLE_GAP_EVENT_DISC (0x01<<7)
#define WM_BLE_GAP_EVENT_DISC_COMPLETE (0x01<<8)
#define WM_BLE_GAP_EVENT_ADV_COMPLETE (0x01<<9)
#define WM_BLE_GAP_EVENT_ENC_CHANGE (0x01<<10)
#define WM_BLE_GAP_EVENT_PASSKEY_ACTION (0x01<<11)
#define WM_BLE_GAP_EVENT_NOTIFY_RX (0x01<<12)
#define WM_BLE_GAP_EVENT_NOTIFY_TX (0x01<<13)
#define WM_BLE_GAP_EVENT_SUBSCRIBE (0x01<<14)
#define WM_BLE_GAP_EVENT_MTU (0x01<<15)
#define WM_BLE_GAP_EVENT_IDENTITY_RESOLVED (0x01<<16)
#define WM_BLE_GAP_EVENT_REPEAT_PAIRING (0x01<<17)
#define WM_BLE_GAP_EVENT_PHY_UPDATE_COMPLETE (0x01<<18)
#define WM_BLE_GAP_EVENT_EXT_DISC (0x01<<19)
#define WM_BLE_GAP_EVENT_PERIODIC_SYNC (0x01<<20)
#define WM_BLE_GAP_EVENT_PERIODIC_REPORT (0x01<<21)
#define WM_BLE_GAP_EVENT_PERIODIC_SYNC_LOST (0x01<<22)
#define WM_BLE_GAP_EVENT_SCAN_REQ_RCVD (0x01<<23)
#define WM_BLE_GAP_EVENT_PERIODIC_TRANSFER (0x01<<24)
#define WM_BLE_GAP_EVENT_HOST_SHUTDOWN (0x01<<31)
/** Bluetooth Address */
typedef struct
{
uint8_t address[6];
} __attribute__((packed))tls_bt_addr_t;
typedef struct
{
tls_bt_status_t status;
tls_bt_addr_t *address;
int num_properties;
tls_bt_property_t *properties; /**< bluetooth adapter property data */
} tls_bt_remote_dev_prop_msg_t;
typedef struct
{
int num_properties;
tls_bt_property_t *properties; /**< bluetooth adapter property data */
} tls_bt_device_found_msg_t;
/** Bluetooth Adapter Discovery state */
typedef enum
{
WM_BT_DISCOVERY_STOPPED,
WM_BT_DISCOVERY_STARTED
} tls_bt_discovery_state_t;
typedef struct
{
tls_bt_discovery_state_t state;
} tls_bt_discovery_state_chg_msg_t;
/** Bluetooth Device Name */
typedef struct
{
uint8_t name[249];
} __attribute__((packed))tls_bt_bdname_t;
typedef struct
{
tls_bt_addr_t *remote_bd_addr;
tls_bt_bdname_t *bd_name;
uint32_t cod;
uint8_t min_16_digit;
} tls_bt_pin_request_msg_t;
/** Bluetooth SSP Bonding Variant */
typedef enum
{
WM_BT_SSP_VARIANT_PASSKEY_CONFIRMATION,
WM_BT_SSP_VARIANT_PASSKEY_ENTRY,
WM_BT_SSP_VARIANT_CONSENT,
WM_BT_SSP_VARIANT_PASSKEY_NOTIFICATION
} tls_bt_ssp_variant_t;
/** Bluetooth PinKey Code */
typedef struct
{
uint8_t pin[16];
} __attribute__((packed))tls_bt_pin_code_t;
typedef struct
{
tls_bt_addr_t *remote_bd_addr;
tls_bt_bdname_t *bd_name;
uint32_t cod;
tls_bt_ssp_variant_t pairing_variant;
uint32_t pass_key;
} tls_bt_ssp_request_msg_t;
/** Bluetooth Bond state */
typedef enum
{
WM_BT_BOND_STATE_NONE,
WM_BT_BOND_STATE_BONDING,
WM_BT_BOND_STATE_BONDED
} tls_bt_bond_state_t;
typedef struct
{
tls_bt_status_t status;
tls_bt_addr_t *remote_bd_addr;
tls_bt_bond_state_t state;
} tls_bt_bond_state_chg_msg_t;
/** Bluetooth ACL connection state */
typedef enum
{
WM_BT_ACL_STATE_CONNECTED,
WM_BT_ACL_STATE_DISCONNECTED
} tls_bt_acl_state_t;
typedef struct
{
tls_bt_status_t status;
tls_bt_addr_t *remote_address;
uint8_t link_type;
tls_bt_acl_state_t state;
} tls_bt_acl_state_chg_msg_t;
typedef struct
{
uint8_t status;
uint8_t ctrl_state; /* stack reported state */
uint64_t tx_time; /* in ms */
uint64_t rx_time; /* in ms */
uint64_t idle_time; /* in ms */
uint64_t energy_used; /* a product of mA, V and ms */
} __attribute__((packed))tls_bt_activity_energy_info;
typedef struct
{
tls_bt_activity_energy_info *energy_info;
} tls_bt_energy_info_msg_t;
typedef struct
{
uint8_t status;
uint32_t count;
} tls_bt_ble_test_msg_t;
typedef union
{
tls_bt_adapter_state_change_msg_t adapter_state_change;
tls_bt_adapter_prop_msg_t adapter_prop;
tls_bt_remote_dev_prop_msg_t remote_device_prop;
tls_bt_device_found_msg_t device_found;
tls_bt_discovery_state_chg_msg_t discovery_state;
tls_bt_pin_request_msg_t pin_request;
tls_bt_ssp_request_msg_t ssp_request;
tls_bt_bond_state_chg_msg_t bond_state;
tls_bt_acl_state_chg_msg_t acl_state;
tls_bt_energy_info_msg_t energy_info;
tls_bt_ble_test_msg_t ble_test;
} tls_bt_host_msg_t;
/** BT host callback function */
typedef void (*tls_bt_host_callback_t)(tls_bt_host_evt_t event, tls_bt_host_msg_t *p_data);
typedef enum
{
TLS_BT_LOG_NONE = 0,
TLS_BT_LOG_ERROR = 1,
TLS_BT_LOG_WARNING = 2,
TLS_BT_LOG_API = 3,
TLS_BT_LOG_EVENT = 4,
TLS_BT_LOG_DEBUG = 5,
TLS_BT_LOG_VERBOSE = 6,
} tls_bt_log_level_t;
typedef struct
{
uint8_t uart_index; /**< uart port index, 1~4 */
uint32_t band_rate; /**< band rate: 115200 ~ 2M */
uint8_t data_bit; /**< data bit:5 ~ 8 */
uint8_t verify_bit; /**< 0:NONE, 1 ODD, 2 EVEN */
uint8_t stop_bit; /**< 0:1bit; 1:1.5bit; 2:2bits */
} tls_bt_hci_if_t;
typedef enum
{
TLS_BLE_PWR_TYPE_CONN_HDL0,
TLS_BLE_PWR_TYPE_CONN_HDL1,
TLS_BLE_PWR_TYPE_CONN_HDL2,
TLS_BLE_PWR_TYPE_CONN_HDL3,
TLS_BLE_PWR_TYPE_CONN_HDL4,
TLS_BLE_PWR_TYPE_CONN_HDL5,
TLS_BLE_PWR_TYPE_CONN_HDL6,
TLS_BLE_PWR_TYPE_CONN_HDL7,
TLS_BLE_PWR_TYPE_CONN_HDL8,
TLS_BLE_PWR_TYPE_ADV,
TLS_BLE_PWR_TYPE_SCAN,
TLS_BLE_PWR_TYPE_DEFAULT,
} tls_ble_power_type_t;
typedef enum
{
WM_AUDIO_OVER_HCI = 0,
WM_AUDIO_INTERNAL_MODE,
} tls_sco_data_path_t;
typedef struct
{
void (*notify_controller_avaiable_hci_buffer)(int cnt);
void (*notify_host_recv_h4)(uint8_t *ptr, uint16_t length);
} tls_bt_host_if_t;
/*****************************************************************************
** Constants and Type Definitions
*****************************************************************************/
/** Attribute permissions */
#define WM_GATT_PERM_READ (1 << 0) /**< bit 0 - 0x0001 */
#define WM_GATT_PERM_READ_ENCRYPTED (1 << 1) /**< bit 1 - 0x0002 */
#define WM_GATT_PERM_READ_ENC_MITM (1 << 2) /**< bit 2 - 0x0004 */
#define WM_GATT_PERM_WRITE (1 << 4) /**< bit 4 - 0x0010 */
#define WM_GATT_PERM_WRITE_ENCRYPTED (1 << 5) /**< bit 5 - 0x0020 */
#define WM_GATT_PERM_WRITE_ENC_MITM (1 << 6) /**< bit 6 - 0x0040 */
#define WM_GATT_PERM_WRITE_SIGNED (1 << 7) /**< bit 7 - 0x0080 */
#define WM_GATT_PERM_WRITE_SIGNED_MITM (1 << 8) /**< bit 8 - 0x0100 */
/** definition of characteristic properties */
#define WM_GATT_CHAR_PROP_BIT_BROADCAST (1 << 0) /**< 0x01 */
#define WM_GATT_CHAR_PROP_BIT_READ (1 << 1) /**< 0x02 */
#define WM_GATT_CHAR_PROP_BIT_WRITE_NR (1 << 2) /**< 0x04 */
#define WM_GATT_CHAR_PROP_BIT_WRITE (1 << 3) /**< 0x08 */
#define WM_GATT_CHAR_PROP_BIT_NOTIFY (1 << 4) /**< 0x10 */
#define WM_GATT_CHAR_PROP_BIT_INDICATE (1 << 5) /**< 0x20 */
#define WM_GATT_CHAR_PROP_BIT_AUTH (1 << 6) /**< 0x40 */
#define WM_GATT_CHAR_PROP_BIT_EXT_PROP (1 << 7) /**< 0x80 */
#define WM_BLE_MAX_ATTR_LEN 600
/** max client application WM BLE Client can support */
#ifndef WM_BLE_CLIENT_MAX
#define WM_BLE_CLIENT_MAX 3
#endif
/** max server application WM BLE Server can support */
#define WM_BLE_SERVER_MAX 4
#define WM_BLE_ATTRIBUTE_MAX 50
#ifndef WM_BLE_SERVER_SECURITY
#define WM_BLE_SERVER_SECURITY BTA_DM_BLE_SEC_NONE
#endif
#define WM_BLE_INVALID_IF 0xFF
#define WM_BLE_INVALID_CONN 0xFFFF
#define WM_BLE_GATT_TRANSPORT_LE 0x02
#define WM_BLE_GATT_TRANSPORT_BR_EDR 0x01
#define WM_BLE_GATT_TRANSPORT_LE_BR_EDR 0x03
#define WM_BLE_MAX_PDU_LENGTH 251
/** BLE events */
typedef enum
{
/** BLE Client events */
WM_BLE_CL_REGISTER_EVT, /**< BLE client is registered. */
WM_BLE_CL_DEREGISTER_EVT, /**< BLE client is deregistered. */
WM_BLE_CL_READ_CHAR_EVT,
WM_BLE_CL_WRITE_CHAR_EVT,
WM_BLE_CL_PREP_WRITE_EVT,
WM_BLE_CL_EXEC_CMPL_EVT, /**< Execute complete event */
WM_BLE_CL_SEARCH_CMPL_EVT, /**< GATT discovery complete event */
WM_BLE_CL_SEARCH_RES_EVT, /**< GATT discovery result event */
WM_BLE_CL_READ_DESCR_EVT,
WM_BLE_CL_WRITE_DESCR_EVT,
WM_BLE_CL_NOTIF_EVT, /**< GATT attribute notification event */
WM_BLE_CL_OPEN_EVT, /**< BLE open request status event */
WM_BLE_CL_CLOSE_EVT, /**< GATTC close request status event */
WM_BLE_CL_LISTEN_EVT,
WM_BLE_CL_CFG_MTU_EVT, /**< configure MTU complete event */
WM_BLE_CL_CONGEST_EVT, /**< GATT congestion/uncongestion event */
WM_BLE_CL_REPORT_DB_EVT,
WM_BLE_CL_REG_NOTIFY_EVT,
WM_BLE_CL_DEREG_NOTIFY_EVT,
/** BLE Server events */
WM_BLE_SE_REGISTER_EVT, /**< BLE Server is registered */
WM_BLE_SE_DEREGISTER_EVT, /**< BLE Server is deregistered */
WM_BLE_SE_CONNECT_EVT,
WM_BLE_SE_DISCONNECT_EVT,
WM_BLE_SE_CREATE_EVT, /**< Service is created */
WM_BLE_SE_ADD_INCL_SRVC_EVT,
WM_BLE_SE_ADD_CHAR_EVT, /**< char data is added */
WM_BLE_SE_ADD_CHAR_DESCR_EVT,
WM_BLE_SE_START_EVT, /**< Service is started */
WM_BLE_SE_STOP_EVT, /**< Service is stopped */
WM_BLE_SE_DELETE_EVT,
WM_BLE_SE_READ_EVT, /**< Read request from client */
WM_BLE_SE_WRITE_EVT, /**< Write request from client */
WM_BLE_SE_EXEC_WRITE_EVT, /**< Execute Write request from client */
WM_BLE_SE_CONFIRM_EVT, /**< Confirm event */
WM_BLE_SE_RESP_EVT,
WM_BLE_SE_CONGEST_EVT, /**< Congestion event */
WM_BLE_SE_MTU_EVT,
} tls_ble_evt_t;
/* WM BLE Client Host callback events */
/* Client callback function events */
/** Bluetooth 128-bit UUID */
typedef struct
{
uint8_t uu[16];
} tls_bt_uuid_t;
/* callback event data for WM_BLE_CL_REGISTER_EVT/ event */
typedef struct
{
uint8_t status; /**< operation status */
uint8_t client_if; /**< Client interface ID */
tls_bt_uuid_t app_uuid; /**< Client uuid*/
} tls_ble_cl_register_msg_t;
/** callback event data for WM_BLE_CL_READ_CHAR_EVT /WM_BLE_CL_READ_CHAR_EVTevent */
typedef struct
{
uint16_t conn_id;
uint8_t status;
uint16_t handle;
uint16_t len;
uint8_t *value;
uint16_t value_type;
} tls_ble_cl_read_msg_t;
/** callback event data for WM_BLE_CL_WRITE_CHAR_EVT/WM_BLE_CL_PREP_WRITE_EVT/WM_BLE_CL_WRITE_DESCR_EVT event */
typedef struct
{
uint16_t conn_id;
uint8_t status;
uint16_t handle;
} tls_ble_cl_write_msg_t;
/** callback event data for WM_BLE_CL_EXEC_CMPL_EVT event */
typedef struct
{
uint16_t conn_id;
uint8_t status;
} tls_ble_cl_exec_cmpl_msg_t;
/** callback event data for WM_BLE_CL_SEARCH_CMPL_EVT event */
typedef struct
{
uint16_t conn_id;
uint8_t status; /**< operation status */
} tls_ble_cl_search_cmpl_msg_t;
/** callback event data for WM_BLE_CL_SEARCH_RES_EVT event */
typedef struct
{
uint16_t conn_id;
tls_bt_uuid_t uuid;
uint8_t inst_id;
} tls_ble_cl_search_res_msg_t;
/** callback event data for WM_BLE_CL_NOTIF_EVT event */
typedef struct
{
uint16_t conn_id;
uint8_t *value;
uint8_t bda[6];
uint16_t handle;
uint16_t len;
bool is_notify;
} tls_ble_cl_notify_msg_t;
/** callback event data for WM_BLE_CL_OPEN_EVT event */
typedef struct
{
uint16_t conn_id;
uint8_t status; /**< operation status */
uint8_t client_if; /**< Client interface ID */
uint8_t bd_addr[6];
} tls_ble_cl_open_msg_t;
/** callback event data for WM_BLE_CL_CLOSE_EVT event */
typedef struct
{
uint16_t conn_id;
uint8_t status;
uint8_t client_if;
uint8_t remote_bda[6];
uint16_t reason; /**< disconnect reason code, not useful when connect event is reported */
} tls_ble_cl_close_msg_t;
/** callback event data for WM_BLE_CL_LISTEN_EVT event */
typedef struct
{
uint8_t status;
uint8_t client_if;
} tls_ble_cl_listen_msg_t;
/** callback event data for WM_BLE_CL_CFG_MTU_EVT event */
typedef struct
{
uint16_t conn_id;
uint8_t status;
uint16_t mtu;
} tls_ble_cl_cfg_mtu_msg_t;
typedef struct
{
uint16_t conn_id;
bool congested; /**< congestion indicator */
} tls_ble_cl_congest_msg_t;
typedef enum
{
WM_BTGATT_DB_PRIMARY_SERVICE,
WM_BTGATT_DB_SECONDARY_SERVICE,
WM_BTGATT_DB_INCLUDED_SERVICE,
WM_BTGATT_DB_CHARACTERISTIC,
WM_BTGATT_DB_DESCRIPTOR,
} tls_bt_gatt_db_attribute_type_t;
typedef struct
{
uint16_t id;
tls_bt_uuid_t uuid;
tls_bt_gatt_db_attribute_type_t type;
uint16_t attribute_handle;
/*
* If |type| is |BTGATT_DB_PRIMARY_SERVICE|, or
* |BTGATT_DB_SECONDARY_SERVICE|, this contains the start and end attribute
* handles.
*/
uint16_t start_handle;
uint16_t end_handle;
/*
* If |type| is |BTGATT_DB_CHARACTERISTIC|, this contains the properties of
* the characteristic.
*/
uint8_t properties;
} tls_btgatt_db_element_t;
typedef struct
{
uint16_t conn_id;
tls_btgatt_db_element_t *db;
int count;
uint8_t status;
} tls_ble_cl_gatt_db_msg_t;
typedef struct
{
uint16_t conn_id;
uint8_t status;
bool reg;
uint16_t handle;
} tls_ble_cl_reg_notify_msg_t;
/* WM BLE Server Host callback events */
/* Server callback function events */
/** callback event data for WM_BLE_SE_REGISTER_EVT/WM_BLE_SE_DEREGISTER_EVT event */
typedef struct
{
uint8_t status; /* operation status */
uint8_t server_if; /* Server interface ID */
tls_bt_uuid_t app_uuid;
} tls_ble_se_register_msg_t;
/** callback event data for WM_BLE_SE_CONNECT_EVT/WM_BLE_SE_DISCONNECT_EVT event */
typedef struct
{
uint16_t conn_id;
uint8_t server_if; /**< Server interface ID */
bool connected;
uint16_t reason;
uint8_t addr[6];
} tls_ble_se_connect_msg_t;
typedef tls_ble_se_connect_msg_t tls_ble_se_disconnect_msg_t;
/** callback event data for WM_BLE_SE_CREATE_EVT event */
typedef struct
{
uint8_t status; /**< operation status */
uint8_t server_if;
bool is_primary;
uint8_t inst_id;
tls_bt_uuid_t uuid;
uint16_t service_id;
} tls_ble_se_create_msg_t;
/** callback event data for WM_BLE_SE_ADD_INCL_SRVC_EVT event */
typedef struct
{
uint8_t status; /**< operation status */
uint8_t server_if;
uint16_t service_id;
uint16_t attr_id;
} tls_ble_se_add_incl_srvc_msg_t;
/** callback event data for WM_BLE_SE_ADDCHAR_EVT event */
typedef struct
{
uint8_t status; /**< operation status */
uint8_t server_if;
tls_bt_uuid_t uuid;
uint16_t service_id;
uint16_t attr_id;
} tls_ble_se_add_char_msg_t;
typedef tls_ble_se_add_char_msg_t tls_ble_se_add_char_descr_msg_t;
/** callback event data for WM_BLE_SE_START_EVT event */
typedef struct
{
uint8_t status; /**< operation status */
uint8_t server_if;
uint16_t service_id;
} tls_ble_se_start_msg_t;
typedef tls_ble_se_start_msg_t tls_ble_se_stop_msg_t;
typedef tls_ble_se_start_msg_t tls_ble_se_delete_msg_t;
typedef struct
{
uint16_t conn_id;
uint32_t trans_id;
uint8_t remote_bda[6];
uint16_t handle;
uint16_t offset;
bool is_long;
} tls_ble_se_read_msg_t;
typedef struct
{
uint16_t conn_id;
uint32_t trans_id;
uint8_t remote_bda[6];
uint16_t handle; /**< attribute handle */
uint16_t offset; /**< attribute value offset, if no offset is needed for the command, ignore it */
uint16_t len; /**< length of attribute value */
bool need_rsp; /**< need write response */
bool is_prep; /**< is prepare write */
uint8_t *value; /**< the actual attribute value */
} tls_ble_se_write_msg_t;
typedef struct
{
uint16_t conn_id;
uint32_t trans_id;
uint8_t remote_bda[6];
uint8_t exec_write;
} tls_ble_se_exec_write_msg_t;
typedef struct
{
uint16_t conn_id;
uint8_t status; /**< operation status */
} tls_ble_se_confirm_msg_t;
typedef struct
{
uint8_t status; /* operation status */
uint16_t conn_id;
uint16_t trans_id;
} tls_ble_se_response_msg_t;
typedef struct
{
uint16_t conn_id;
bool congested; /**< congestion indicator */
} tls_ble_se_congest_msg_t;
typedef struct
{
uint16_t conn_id;
uint16_t mtu;
} tls_ble_se_mtu_msg_t;
/** Union of data associated with HD callback */
typedef union
{
tls_ble_cl_register_msg_t cli_register; /**< WM_BLE_CL_REGISTER_EVT */
tls_ble_cl_read_msg_t cli_read; /**< WM_BLE_CL_READ_EVT */
tls_ble_cl_write_msg_t cli_write; /**< WM_BLE_CL_WRITE_EVT */
tls_ble_cl_exec_cmpl_msg_t cli_exec_cmpl; /**< WM_BLE_CL_EXEC_CMPL_EVT */
tls_ble_cl_search_cmpl_msg_t cli_search_cmpl; /**< WM_BLE_CL_SEARCH_CMPL_EVT */
tls_ble_cl_search_res_msg_t cli_search_res; /**< WM_BLE_CL_SEARCH_RES_EVT */
tls_ble_cl_notify_msg_t cli_notif; /**< WM_BLE_CL_NOTIF_EVT */
tls_ble_cl_open_msg_t cli_open; /**< WM_BLE_CL_OPEN_EVT */
tls_ble_cl_close_msg_t cli_close; /**< WM_BLE_CL_CLOSE_EVT */
tls_ble_cl_listen_msg_t cli_listen; /**< WM_BLE_CL_LISTEN_EVT */
tls_ble_cl_cfg_mtu_msg_t cli_cfg_mtu; /**< WM_BLE_CL_CFG_MTU_EVT */
tls_ble_cl_congest_msg_t cli_congest; /**< WM_BLE_CL_CONGEST_EVT */
tls_ble_cl_gatt_db_msg_t cli_db; /* WM_BLE_CL_REPORT_DB_EVT*/
tls_ble_cl_reg_notify_msg_t cli_reg_notify;
tls_ble_se_register_msg_t ser_register; /**< WM_BLE_SE_REGISTER_EVT */
tls_ble_se_connect_msg_t ser_connect; /**< WM_BLE_SE_OPEN_EVT */
tls_ble_se_disconnect_msg_t ser_disconnect; /**< WM_BLE_SE_CLOSE_EVT */
tls_ble_se_create_msg_t ser_create; /**< WM_BLE_SE_CREATE_EVT */
tls_ble_se_add_incl_srvc_msg_t ser_add_incl_srvc;
tls_ble_se_add_char_msg_t ser_add_char; /**< WM_BLE_SE_ADDCHAR_EVT */
tls_ble_se_add_char_descr_msg_t ser_add_char_descr;
tls_ble_se_start_msg_t ser_start_srvc; /**< WM_BLE_SE_START_EVT */
tls_ble_se_stop_msg_t ser_stop_srvc; /**< WM_BLE_SE_STOP_EVT */
tls_ble_se_delete_msg_t ser_delete_srvc;
tls_ble_se_read_msg_t ser_read; /**< WM_BLE_SE_READ_EVT */
tls_ble_se_write_msg_t ser_write; /**< WM_BLE_SE_WRITE_EVT */
tls_ble_se_exec_write_msg_t ser_exec_write; /**< WM_BLE_SE_EXEC_WRITE_EVT */
tls_ble_se_confirm_msg_t ser_confirm; /**< WM_BLE_SE_CONFIRM_EVT */
tls_ble_se_congest_msg_t ser_congest; /**< WM_BLE_CL_CONGEST_EVT */
tls_ble_se_mtu_msg_t ser_mtu;
tls_ble_se_response_msg_t ser_resp;
} tls_ble_msg_t;
/** WM BLE Client callback function */
typedef void (*tls_ble_callback_t)(tls_ble_evt_t event, tls_ble_msg_t *p_data);
typedef void (*tls_ble_output_func_ptr)(uint8_t *p_data, uint32_t length);
/** BLE dm events */
typedef enum
{
WM_BLE_DM_SET_ADV_DATA_CMPL_EVT = (0x01<<0), /**< BLE DM set advertisement data completed*/
WM_BLE_DM_TIMER_EXPIRED_EVT = (0x01<<1), /**< BLE DM timer expired event. */
WM_BLE_DM_TRIGER_EVT = (0x01<<2), /**< BLE DM event trigered event, async processing*/
WM_BLE_DM_SCAN_RES_EVT = (0x01<<3), /**< BLE DM scan result evt*/
WM_BLE_DM_SET_SCAN_PARAM_CMPL_EVT=(0x01<<4),
WM_BLE_DM_REPORT_RSSI_EVT = (0x01<<5),
WM_BLE_DM_SCAN_RES_CMPL_EVT = (0x01<<6),
WM_BLE_DM_SEC_EVT = (0x01<<7),
WM_BLE_DM_ADV_STARTED_EVT = (0x01<<8),
WM_BLE_DM_ADV_STOPPED_EVT = (0x01<<9),
WM_BLE_DM_HOST_SHUTDOWN_EVT = (0x01<<31),
} tls_ble_dm_evt_t;
/** callback event data for WM_BLE_DM_SET_ADV_DATA */
typedef struct
{
uint8_t status; /**< operation status */
} tls_ble_dm_set_adv_data_cmpl_msg_t;
typedef struct
{
uint8_t status;
uint8_t dm_id; //dummy value; who care this value;
} tls_ble_dm_set_scan_param_cmpl_msg_t;
typedef struct
{
uint32_t id;
int32_t func_ptr;
} tls_ble_dm_timer_expired_msg_t;
typedef tls_ble_dm_timer_expired_msg_t tls_ble_dm_evt_triger_msg_t;
typedef struct
{
uint8_t address[6]; /**< device address */
int8_t rssi; /**< signal strength */
uint8_t *value; /**< adv /scan resp value */
} tls_ble_dm_scan_res_msg_t;
typedef struct
{
uint8_t address[6];
int8_t rssi;
uint8_t status;
} tls_ble_report_rssi_msg_t;
typedef struct
{
uint8_t address[6];
int8_t transport;
uint8_t status;
} tls_ble_sec_msg_t;
typedef struct
{
uint16_t num_responses;
} tls_ble_dm_scan_res_cmpl_msg_t;
typedef tls_ble_dm_set_adv_data_cmpl_msg_t tls_ble_dm_adv_cmpl_msg_t;
typedef union
{
tls_ble_dm_set_adv_data_cmpl_msg_t dm_set_adv_data_cmpl;
tls_ble_dm_timer_expired_msg_t dm_timer_expired;
tls_ble_dm_evt_triger_msg_t dm_evt_trigered;
tls_ble_dm_scan_res_msg_t dm_scan_result;
tls_ble_dm_set_scan_param_cmpl_msg_t dm_set_scan_param_cmpl;
tls_ble_dm_scan_res_cmpl_msg_t dm_scan_result_cmpl;
tls_ble_report_rssi_msg_t dm_report_rssi;
tls_ble_sec_msg_t dm_sec_result;
tls_ble_dm_adv_cmpl_msg_t dm_adv_cmpl;
} tls_ble_dm_msg_t;
typedef struct
{
bool set_scan_rsp;
bool include_name;
bool include_txpower;
bool pure_data;
int min_interval;
int max_interval;
int appearance;
uint16_t manufacturer_len;
uint8_t manufacturer_data[31];
uint16_t service_data_len;
uint8_t service_data[31];
uint16_t service_uuid_len;
uint8_t service_uuid[31];
} __attribute__((packed)) tls_ble_dm_adv_data_t;
typedef struct
{
uint16_t adv_int_min; /* minimum adv interval */
uint16_t adv_int_max; /* maximum adv interval */
tls_bt_addr_t *dir_addr;
} __attribute__((packed)) tls_ble_dm_adv_param_t;
typedef struct
{
uint16_t adv_int_min; /* minimum adv interval */
uint16_t adv_int_max; /* maximum adv interval */
uint8_t adv_type;
uint8_t own_addr_type;
uint8_t chnl_map;
uint8_t afp;
uint8_t peer_addr_type;
tls_bt_addr_t *dir_addr;
} __attribute__((packed)) tls_ble_dm_adv_ext_param_t;
/** WM BLE device manager callback function */
typedef void (*tls_ble_dm_callback_t)(tls_ble_dm_evt_t event, tls_ble_dm_msg_t *p_data);
/** WM BLE dm timer callback function */
typedef void (*tls_ble_dm_timer_callback_t)(uint8_t timer_id);
/** WM BLE device evt triger callback function */
typedef void (*tls_ble_dm_triger_callback_t)(uint32_t evt_id);
typedef void (*tls_ble_scan_res_notify_t)(tls_ble_dm_scan_res_msg_t *msg);
/*********************************************************************************************************/
/* Bluetooth AV connection states */
typedef enum
{
WM_BTAV_CONNECTION_STATE_DISCONNECTED = 0,
WM_BTAV_CONNECTION_STATE_CONNECTING,
WM_BTAV_CONNECTION_STATE_CONNECTED,
WM_BTAV_CONNECTION_STATE_DISCONNECTING
} tls_btav_connection_state_t;
/* Bluetooth AV datapath states */
typedef enum
{
WM_BTAV_AUDIO_STATE_REMOTE_SUSPEND = 0,
WM_BTAV_AUDIO_STATE_STOPPED,
WM_BTAV_AUDIO_STATE_STARTED,
} tls_btav_audio_state_t;
/** BR-EDR A2DP sink events */
typedef enum
{
WMBT_A2DP_CONNECTION_STATE_EVT,
WMBT_A2DP_AUDIO_STATE_EVT,
WMBT_A2DP_AUDIO_CONFIG_EVT,
WMBT_A2DP_AUDIO_PAYLOAD_EVT,
} tls_bt_av_evt_t;
typedef struct
{
tls_btav_connection_state_t stat;
tls_bt_addr_t *bd_addr;
} tls_bt_av_connection_state_t;
typedef struct
{
tls_btav_audio_state_t stat;
tls_bt_addr_t *bd_addr;
} tls_bt_av_audio_state_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
uint32_t sample_rate;
uint8_t channel_count;
} tls_bt_av_audio_config_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
uint8_t audio_format;
uint8_t *payload;
uint16_t payload_length;
} tls_bt_av_audio_payload_t;
typedef union
{
tls_bt_av_connection_state_t av_connection_state;
tls_bt_av_audio_state_t av_audio_state;
tls_bt_av_audio_config_t av_audio_config;
tls_bt_av_audio_payload_t av_audio_payload;
} tls_bt_av_msg_t;
/** WM BT A2DP SINK callback function */
typedef void (*tls_bt_a2dp_sink_callback_t)(tls_bt_av_evt_t event, tls_bt_av_msg_t *p_data);
/**WM BT A2DP SRC callback function */
///////////////TODO////////////////
typedef void (*tls_bt_a2dp_src_callback_t)(tls_bt_av_evt_t event, tls_bt_av_msg_t *p_data);
/** BR-EDR WMBT-RC Controller callback events */
#define WM_BTRC_MAX_ATTR_STR_LEN 255
#define WM_BTRC_UID_SIZE 8
#define WM_BTRC_MAX_APP_SETTINGS 8
#define WM_BTRC_MAX_FOLDER_DEPTH 4
#define WM_BTRC_MAX_APP_ATTR_SIZE 16
#define WM_BTRC_MAX_ELEM_ATTR_SIZE 7
typedef uint8_t tls_btrc_uid_t[WM_BTRC_UID_SIZE];
typedef enum
{
WM_BTRC_PLAYSTATE_STOPPED = 0x00, /* Stopped */
WM_BTRC_PLAYSTATE_PLAYING = 0x01, /* Playing */
WM_BTRC_PLAYSTATE_PAUSED = 0x02, /* Paused */
WM_BTRC_PLAYSTATE_FWD_SEEK = 0x03, /* Fwd Seek*/
WM_BTRC_PLAYSTATE_REV_SEEK = 0x04, /* Rev Seek*/
WM_BTRC_PLAYSTATE_ERROR = 0xFF, /* Error */
} tls_btrc_play_status_t;
typedef enum
{
WM_BTRC_FEAT_NONE = 0x00, /* AVRCP 1.0 */
WM_BTRC_FEAT_METADATA = 0x01, /* AVRCP 1.3 */
WM_BTRC_FEAT_ABSOLUTE_VOLUME = 0x02, /* Supports TG role and volume sync */
WM_BTRC_FEAT_BROWSE = 0x04, /* AVRCP 1.4 and up, with Browsing support */
} tls_btrc_remote_features_t;
typedef enum
{
WM_BTRC_NOTIFICATION_TYPE_INTERIM = 0,
WM_BTRC_NOTIFICATION_TYPE_CHANGED = 1,
} tls_btrc_notification_type_t;
typedef enum
{
WM_BTRC_PLAYER_ATTR_EQUALIZER = 0x01,
WM_BTRC_PLAYER_ATTR_REPEAT = 0x02,
WM_BTRC_PLAYER_ATTR_SHUFFLE = 0x03,
WM_BTRC_PLAYER_ATTR_SCAN = 0x04,
} tls_btrc_player_attr_t;
typedef enum
{
WM_BTRC_MEDIA_ATTR_TITLE = 0x01,
WM_BTRC_MEDIA_ATTR_ARTIST = 0x02,
WM_BTRC_MEDIA_ATTR_ALBUM = 0x03,
WM_BTRC_MEDIA_ATTR_TRACK_NUM = 0x04,
WM_BTRC_MEDIA_ATTR_NUM_TRACKS = 0x05,
WM_BTRC_MEDIA_ATTR_GENRE = 0x06,
WM_BTRC_MEDIA_ATTR_PLAYING_TIME = 0x07,
} tls_btrc_media_attr_t;
typedef enum
{
WM_BTRC_PLAYER_VAL_OFF_REPEAT = 0x01,
WM_BTRC_PLAYER_VAL_SINGLE_REPEAT = 0x02,
WM_BTRC_PLAYER_VAL_ALL_REPEAT = 0x03,
WM_BTRC_PLAYER_VAL_GROUP_REPEAT = 0x04
} tls_btrc_player_repeat_val_t;
typedef enum
{
WM_BTRC_EVT_PLAY_STATUS_CHANGED = 0x01,
WM_BTRC_EVT_TRACK_CHANGE = 0x02,
WM_BTRC_EVT_TRACK_REACHED_END = 0x03,
WM_BTRC_EVT_TRACK_REACHED_START = 0x04,
WM_BTRC_EVT_PLAY_POS_CHANGED = 0x05,
WM_BTRC_EVT_APP_SETTINGS_CHANGED = 0x08,
} tls_btrc_event_id_t;
typedef struct
{
uint8_t num_attr;
uint8_t attr_ids[WM_BTRC_MAX_APP_SETTINGS];
uint8_t attr_values[WM_BTRC_MAX_APP_SETTINGS];
} tls_btrc_player_settings_t;
typedef struct
{
uint32_t attr_id;
uint8_t text[WM_BTRC_MAX_ATTR_STR_LEN];
} tls_btrc_element_attr_val_t;
typedef struct
{
uint8_t attr_id;
uint8_t num_val;
uint8_t attr_val[WM_BTRC_MAX_APP_ATTR_SIZE];
} tls_btrc_player_app_attr_t;
typedef struct
{
uint8_t val;
uint16_t charset_id;
uint16_t str_len;
uint8_t *p_str;
} tls_btrc_player_app_ext_attr_val_t;
typedef struct
{
uint8_t attr_id;
uint16_t charset_id;
uint16_t str_len;
uint8_t *p_str;
uint8_t num_val;
tls_btrc_player_app_ext_attr_val_t ext_attr_val[WM_BTRC_MAX_APP_ATTR_SIZE];
} tls_btrc_player_app_ext_attr_t;
typedef union
{
tls_btrc_play_status_t play_status;
tls_btrc_uid_t track; /* queue position in NowPlaying */
uint32_t song_pos;
tls_btrc_player_settings_t player_setting;
} tls_btrc_register_notification_t;
typedef enum
{
WM_BTRC_PASSTHROUGH_RSP_EVT,
WM_BTRC_GROUPNAVIGATION_RSP_EVT,
WM_BTRC_CONNECTION_STATE_EVT,
WM_BTRC_CTRL_GETRCFEATURES_EVT,
WM_BTRC_CTRL_SETPLAYERAPPLICATIONSETTING_RSP_EVT,
WM_BTRC_CTRL_PLAYERAPPLICATIONSETTING_EVT,
WM_BTRC_CTRL_PLAYERAPPLICATIONSETTING_CHANGED_EVT,
WM_BTRC_CTRL_SETABSVOL_CMD_EVT,
WM_BTRC_CTRL_REGISTERNOTIFICATION_ABS_VOL_EVT,
WM_BTRC_CTRL_TRACK_CHANGED_EVT,
WM_BTRC_CTRL_PLAY_POSITION_CHANGED_EVT,
WM_BTRC_CTRL_PLAY_STATUS_CHANGED_EVT,
} tls_btrc_ctrl_evt_t;
typedef struct
{
int id;
int key_state;
} tls_btrc_passthrough_rsp_msg_t;
typedef struct
{
int id;
int key_state;
} tls_btrc_groupnavigation_rsp_msg_t;
typedef struct
{
uint8_t state;
tls_bt_addr_t *bd_addr;
} tls_btrc_connection_state_msg_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
int features;
} tls_btrc_ctrl_getrcfeatures_msg_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
uint8_t abs_vol;
uint8_t label;
} tls_btrc_ctrl_setabsvol_msg_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
uint8_t label;
} tls_btrc_ctrl_registernotification_abs_vol_msg_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
uint8_t accepted;
} tls_btrc_ctrl_setplayerapplicationsetting_rsp_msg_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
uint8_t num_attr;
tls_btrc_player_app_attr_t *app_attrs;
uint8_t num_ext_attr;
tls_btrc_player_app_ext_attr_t *ext_attrs;
} tls_btrc_ctrl_playerapplicationsetting_msg_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
tls_btrc_player_settings_t *p_vals;
} tls_btrc_ctrl_playerapplicationsetting_changed_msg_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
uint8_t num_attr;
tls_btrc_element_attr_val_t *p_attrs;
} tls_btrc_ctrl_track_changed_msg_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
uint32_t song_len;
uint32_t song_pos;
} tls_btrc_ctrl_play_position_changed_msg_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
tls_btrc_play_status_t play_status;
} tls_btrc_ctrl_play_status_changed_msg_t;
typedef union
{
tls_btrc_passthrough_rsp_msg_t passthrough_rsp;
tls_btrc_groupnavigation_rsp_msg_t groupnavigation_rsp;
tls_btrc_connection_state_msg_t connection_state;
tls_btrc_ctrl_getrcfeatures_msg_t getrcfeatures;
tls_btrc_ctrl_setabsvol_msg_t setabsvol;
tls_btrc_ctrl_registernotification_abs_vol_msg_t registernotification_abs_vol;
tls_btrc_ctrl_setplayerapplicationsetting_rsp_msg_t setplayerapplicationsetting_rsp;
tls_btrc_ctrl_playerapplicationsetting_msg_t playerapplicationsetting;
tls_btrc_ctrl_playerapplicationsetting_changed_msg_t playerapplicationsetting_changed;
tls_btrc_ctrl_track_changed_msg_t track_changed;
tls_btrc_ctrl_play_position_changed_msg_t play_position_changed;
tls_btrc_ctrl_play_status_changed_msg_t play_status_changed;
} tls_btrc_ctrl_msg_t;
/** WM BT RC CTRL callback function */
typedef void (*tls_btrc_ctrl_callback_t)(tls_btrc_ctrl_evt_t event, tls_btrc_ctrl_msg_t *p_data);
typedef enum
{
WM_BTRC_REMOTE_FEATURE_EVT,
WM_BTRC_GET_PLAY_STATUS_EVT,
WM_BTRC_LIST_PLAYER_APP_ATTR_EVT,
WM_BTRC_LIST_PLAYER_APP_VALUES_EVT,
WM_BTRC_GET_PLAYER_APP_VALUE_EVT,
WM_BTRC_GET_PLAYER_APP_ATTRS_TEXT_EVT,
WM_BTRC_GET_PLAYER_APP_VALUES_TEXT_EVT,
WM_BTRC_SET_PLAYER_APP_VALUE_EVT,
WM_BTRC_GET_ELEMENT_ATTR_EVT,
WM_BTRC_REGISTER_NOTIFICATION_EVT,
WM_BTRC_VOLUME_CHANGED_EVT,
WM_BTRC_PASSTHROUGH_CMD_EVT,
} tls_btrc_evt_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
tls_btrc_remote_features_t features;
} tls_btrc_remote_features_msg_t;
typedef struct
{
void *reserved;
} tls_btrc_get_play_status_msg_t;
typedef struct
{
void *reserved;
} tls_btrc_list_player_app_attr_msg_t;
typedef struct
{
tls_btrc_player_attr_t attr_id;
} tls_btrc_list_player_app_values_msg_t;
typedef struct
{
uint8_t num_attr;
tls_btrc_player_attr_t *p_attrs;
} tls_btrc_get_player_app_value_msg_t;
typedef struct
{
uint8_t attr_id;
uint8_t num_val;
uint8_t *p_vals;
} tls_btrc_get_player_app_attrs_text_msg_t;
typedef struct
{
uint8_t num_attr;
tls_btrc_player_attr_t *p_attrs;
} tls_btrc_get_player_app_values_text_msg_t;
typedef struct
{
tls_btrc_player_settings_t *p_vals;
} tls_btrc_set_player_app_value_msg_t;
typedef struct
{
uint8_t num_attr;
tls_btrc_media_attr_t *p_attrs;
} tls_btrc_get_element_attr_msg_t;
typedef struct
{
tls_btrc_event_id_t event_id;
uint32_t param;
} tls_btrc_register_notification_msg_t;
typedef struct
{
uint8_t volume;
uint8_t ctype;
} tls_btrc_volume_change_msg_t;
typedef struct
{
int id;
int key_state;
} tls_btrc_passthrough_cmd_msg_t;
typedef union
{
tls_btrc_remote_features_msg_t remote_features;
tls_btrc_get_play_status_msg_t get_play_status;
tls_btrc_list_player_app_attr_msg_t list_player_app_attr;
tls_btrc_list_player_app_values_msg_t list_player_app_values;
tls_btrc_get_player_app_value_msg_t get_player_app_value;
tls_btrc_get_player_app_attrs_text_msg_t get_player_app_attrs_text;
tls_btrc_get_player_app_values_text_msg_t get_player_app_values_text;
tls_btrc_set_player_app_value_msg_t set_player_app_value;
tls_btrc_get_element_attr_msg_t get_element_attr;
tls_btrc_register_notification_msg_t register_notification;
tls_btrc_volume_change_msg_t volume_change;
tls_btrc_passthrough_cmd_msg_t passthrough_cmd;
} tls_btrc_msg_t;
/** WM BT RC callback function */
typedef void (*tls_btrc_callback_t)(tls_btrc_evt_t event, tls_btrc_msg_t *p_data);
/*************************************************************************************************************/
typedef enum
{
WM_BTHF_CLIENT_CONNECTION_STATE_DISCONNECTED = 0,
WM_BTHF_CLIENT_CONNECTION_STATE_CONNECTING,
WM_BTHF_CLIENT_CONNECTION_STATE_CONNECTED,
WM_BTHF_CLIENT_CONNECTION_STATE_SLC_CONNECTED,
WM_BTHF_CLIENT_CONNECTION_STATE_DISCONNECTING
} tls_bthf_client_connection_state_t;
typedef enum
{
WM_BTHF_CLIENT_AUDIO_STATE_DISCONNECTED = 0,
WM_BTHF_CLIENT_AUDIO_STATE_CONNECTING,
WM_BTHF_CLIENT_AUDIO_STATE_CONNECTED,
WM_BTHF_CLIENT_AUDIO_STATE_CONNECTED_MSBC,
} tls_bthf_client_audio_state_t;
typedef enum
{
WM_BTHF_CLIENT_VR_STATE_STOPPED = 0,
WM_BTHF_CLIENT_VR_STATE_STARTED
} tls_bthf_client_vr_state_t;
typedef enum
{
WM_BTHF_CLIENT_VOLUME_TYPE_SPK = 0,
WM_BTHF_CLIENT_VOLUME_TYPE_MIC
} tls_bthf_client_volume_type_t;
typedef enum
{
WM_BTHF_CLIENT_NETWORK_STATE_NOT_AVAILABLE = 0,
WM_BTHF_CLIENT_NETWORK_STATE_AVAILABLE
} tls_bthf_client_network_state_t;
typedef enum
{
WM_BTHF_CLIENT_SERVICE_TYPE_HOME = 0,
WM_BTHF_CLIENT_SERVICE_TYPE_ROAMING
} tls_bthf_client_service_type_t;
typedef enum
{
WM_BTHF_CLIENT_CALL_STATE_ACTIVE = 0,
WM_BTHF_CLIENT_CALL_STATE_HELD,
WM_BTHF_CLIENT_CALL_STATE_DIALING,
WM_BTHF_CLIENT_CALL_STATE_ALERTING,
WM_BTHF_CLIENT_CALL_STATE_INCOMING,
WM_BTHF_CLIENT_CALL_STATE_WAITING,
WM_BTHF_CLIENT_CALL_STATE_HELD_BY_RESP_HOLD,
} tls_bthf_client_call_state_t;
typedef enum
{
WM_BTHF_CLIENT_CALL_NO_CALLS_IN_PROGRESS = 0,
WM_BTHF_CLIENT_CALL_CALLS_IN_PROGRESS
} tls_bthf_client_call_t;
typedef enum
{
WM_BTHF_CLIENT_CALLSETUP_NONE = 0,
WM_BTHF_CLIENT_CALLSETUP_INCOMING,
WM_BTHF_CLIENT_CALLSETUP_OUTGOING,
WM_BTHF_CLIENT_CALLSETUP_ALERTING
} tls_bthf_client_callsetup_t;
typedef enum
{
WM_BTHF_CLIENT_CALLHELD_NONE = 0,
WM_BTHF_CLIENT_CALLHELD_HOLD_AND_ACTIVE,
WM_BTHF_CLIENT_CALLHELD_HOLD,
} tls_bthf_client_callheld_t;
typedef enum
{
WM_BTHF_CLIENT_RESP_AND_HOLD_HELD = 0,
WM_BTRH_CLIENT_RESP_AND_HOLD_ACCEPT,
WM_BTRH_CLIENT_RESP_AND_HOLD_REJECT,
} tls_bthf_client_resp_and_hold_t;
typedef enum
{
WM_BTHF_CLIENT_CALL_DIRECTION_OUTGOING = 0,
WM_BTHF_CLIENT_CALL_DIRECTION_INCOMING
} tls_bthf_client_call_direction_t;
typedef enum
{
WM_BTHF_CLIENT_CALL_MPTY_TYPE_SINGLE = 0,
WM_BTHF_CLIENT_CALL_MPTY_TYPE_MULTI
} tls_bthf_client_call_mpty_type_t;
typedef enum
{
WM_BTHF_CLIENT_CMD_COMPLETE_OK = 0,
WM_BTHF_CLIENT_CMD_COMPLETE_ERROR,
WM_BTHF_CLIENT_CMD_COMPLETE_ERROR_NO_CARRIER,
WM_BTHF_CLIENT_CMD_COMPLETE_ERROR_BUSY,
WM_BTHF_CLIENT_CMD_COMPLETE_ERROR_NO_ANSWER,
WM_BTHF_CLIENT_CMD_COMPLETE_ERROR_DELAYED,
WM_BTHF_CLIENT_CMD_COMPLETE_ERROR_BLACKLISTED,
WM_BTHF_CLIENT_CMD_COMPLETE_ERROR_CME
} tls_bthf_client_cmd_complete_t;
typedef enum
{
WM_BTHF_CLIENT_CALL_ACTION_CHLD_0 = 0,
WM_BTHF_CLIENT_CALL_ACTION_CHLD_1,
WM_BTHF_CLIENT_CALL_ACTION_CHLD_2,
WM_BTHF_CLIENT_CALL_ACTION_CHLD_3,
WM_BTHF_CLIENT_CALL_ACTION_CHLD_4,
WM_BTHF_CLIENT_CALL_ACTION_CHLD_1x,
WM_BTHF_CLIENT_CALL_ACTION_CHLD_2x,
WM_BTHF_CLIENT_CALL_ACTION_ATA,
WM_BTHF_CLIENT_CALL_ACTION_CHUP,
WM_BTHF_CLIENT_CALL_ACTION_BTRH_0,
WM_BTHF_CLIENT_CALL_ACTION_BTRH_1,
WM_BTHF_CLIENT_CALL_ACTION_BTRH_2,
} tls_bthf_client_call_action_t;
typedef enum
{
WM_BTHF_CLIENT_SERVICE_UNKNOWN = 0,
WM_BTHF_CLIENT_SERVICE_VOICE,
WM_BTHF_CLIENT_SERVICE_FAX
} tls_bthf_client_subscriber_service_type_t;
typedef enum
{
WM_BTHF_CLIENT_IN_BAND_RINGTONE_NOT_PROVIDED = 0,
WM_BTHF_CLIENT_IN_BAND_RINGTONE_PROVIDED,
} tls_bthf_client_in_band_ring_state_t;
/* Peer features masks */
#define WM_BTHF_CLIENT_PEER_FEAT_3WAY 0x00000001 /* Three-way calling */
#define WM_BTHF_CLIENT_PEER_FEAT_ECNR 0x00000002 /* Echo cancellation and/or noise reduction */
#define WM_BTHF_CLIENT_PEER_FEAT_VREC 0x00000004 /* Voice recognition */
#define WM_BTHF_CLIENT_PEER_FEAT_INBAND 0x00000008 /* In-band ring tone */
#define WM_BTHF_CLIENT_PEER_FEAT_VTAG 0x00000010 /* Attach a phone number to a voice tag */
#define WM_BTHF_CLIENT_PEER_FEAT_REJECT 0x00000020 /* Ability to reject incoming call */
#define WM_BTHF_CLIENT_PEER_FEAT_ECS 0x00000040 /* Enhanced Call Status */
#define WM_BTHF_CLIENT_PEER_FEAT_ECC 0x00000080 /* Enhanced Call Control */
#define WM_BTHF_CLIENT_PEER_FEAT_EXTERR 0x00000100 /* Extended error codes */
#define WM_BTHF_CLIENT_PEER_FEAT_CODEC 0x00000200 /* Codec Negotiation */
/* Peer call handling features masks */
#define WM_BTHF_CLIENT_CHLD_FEAT_REL 0x00000001 /* 0 Release waiting call or held calls */
#define WM_BTHF_CLIENT_CHLD_FEAT_REL_ACC 0x00000002 /* 1 Release active calls and accept other
(waiting or held) cal */
#define WM_BTHF_CLIENT_CHLD_FEAT_REL_X 0x00000004 /* 1x Release specified active call only */
#define WM_BTHF_CLIENT_CHLD_FEAT_HOLD_ACC 0x00000008 /* 2 Active calls on hold and accept other
(waiting or held) call */
#define WM_BTHF_CLIENT_CHLD_FEAT_PRIV_X 0x00000010 /* 2x Request private mode with specified
call (put the rest on hold) */
#define WM_BTHF_CLIENT_CHLD_FEAT_MERGE 0x00000020 /* 3 Add held call to multiparty */
#define WM_BTHF_CLIENT_CHLD_FEAT_MERGE_DETACH 0x00000040 /* 4 Connect two calls and leave
(disconnect from) multiparty */
typedef enum
{
WM_BTHF_CLIENT_CONNECTION_STATE_EVT,
WM_BTHF_CLIENT_AUDIO_STATE_EVT,
WM_BTHF_CLIENT_VR_CMD_EVT,
WM_BTHF_CLIENT_NETWORK_STATE_EVT,
WM_BTHF_CLIENT_NETWORK_ROAMING_EVT,
WM_BTHF_CLIENT_NETWORK_SIGNAL_EVT,
WM_BTHF_CLIENT_BATTERY_LEVEL_EVT,
WM_BTHF_CLIENT_CURRENT_OPERATOR_EVT,
WM_BTHF_CLIENT_CALL_EVT,
WM_BTHF_CLIENT_CALLSETUP_EVT,
WM_BTHF_CLIENT_CALLHELD_EVT,
WM_BTHF_CLIENT_RESP_AND_HOLD_EVT,
WM_BTHF_CLIENT_CLIP_EVT,
WM_BTHF_CLIENT_CALL_WAITING_EVT,
WM_BTHF_CLIENT_CURRENT_CALLS_EVT,
WM_BTHF_CLIENT_VOLUME_CHANGE_EVT,
WM_BTHF_CLIENT_CMD_COMPLETE_EVT,
WM_BTHF_CLIENT_SUBSCRIBER_INFO_EVT,
WM_BTHF_CLIENT_IN_BAND_RING_TONE_EVT,
WM_BTHF_CLIENT_LAST_VOICE_TAG_NUMBER_EVT,
WM_BTHF_CLIENT_RING_INDICATION_EVT,
WM_BTHF_CLIENT_AUDIO_PAYLOAD_EVT,
} tls_bthf_client_evt_t;
typedef struct
{
tls_bthf_client_connection_state_t state;
unsigned int peer_feat;
unsigned int chld_feat;
tls_bt_addr_t *bd_addr;
} tls_bthf_client_connection_state_msg_t;
typedef struct
{
tls_bthf_client_audio_state_t state;
tls_bt_addr_t *bd_addr;
} tls_bthf_client_audio_state_msg_t;
typedef struct
{
tls_bthf_client_vr_state_t state;
} tls_bthf_client_vr_cmd_msg_t;
typedef struct
{
tls_bthf_client_network_state_t state;
} tls_bthf_client_network_state_msg_t;
typedef struct
{
tls_bthf_client_service_type_t type;
} tls_bthf_client_network_roaming_msg_t;
typedef struct
{
int signal_strength;
} tls_bthf_client_network_signal_msg_t;
typedef struct
{
int battery_level;
} tls_bthf_client_battery_level_msg_t;
typedef struct
{
char* name;
} tls_bthf_client_current_operator_msg_t;
typedef struct
{
tls_bthf_client_call_t call;
} tls_bthf_client_call_msg_t;
typedef struct
{
tls_bthf_client_callsetup_t callsetup;
} tls_bthf_client_callsetup_msg_t;
typedef struct
{
tls_bthf_client_callheld_t callheld;
} tls_bthf_client_callheld_msg_t;
typedef struct
{
tls_bthf_client_resp_and_hold_t resp_and_hold;
} tls_bthf_client_resp_and_hold_msg_t;
typedef struct
{
char *number;
} tls_bthf_client_clip_msg_t;
typedef struct
{
char *number;
} tls_bthf_client_call_waiting_msg_t;
typedef struct
{
int index;
tls_bthf_client_call_direction_t dir;
tls_bthf_client_call_state_t state;
tls_bthf_client_call_mpty_type_t mpty;
char *number;
} tls_bthf_client_current_calls_msg_t;
typedef struct
{
tls_bthf_client_volume_type_t type;
int volume;
} tls_bthf_client_volume_change_msg_t;
typedef struct
{
tls_bthf_client_cmd_complete_t type;
int cme;
} tls_bthf_client_cmd_complete_msg_t;
typedef struct
{
const char *name;
tls_bthf_client_subscriber_service_type_t type;
} tls_bthf_client_subscriber_info_msg_t;
typedef struct
{
tls_bthf_client_in_band_ring_state_t state;
} tls_bthf_client_in_band_ring_tone_msg_t;
typedef struct
{
char *number;
} tls_bthf_client_last_voice_tag_number_msg_t;
typedef struct
{
int ring;
} tls_bthf_client_ring_indication_msg_t;
typedef struct
{
tls_bt_addr_t *bd_addr;
uint8_t audio_format;
uint8_t *payload;
uint16_t payload_length;
} tls_bthf_audio_payload_msg_t;
typedef union
{
tls_bthf_client_connection_state_msg_t connection_state_msg;
tls_bthf_client_audio_state_msg_t audio_state_msg;
tls_bthf_client_vr_cmd_msg_t vr_cmd_msg;
tls_bthf_client_network_state_msg_t network_state_msg;
tls_bthf_client_network_roaming_msg_t network_roaming_msg;
tls_bthf_client_network_signal_msg_t network_signal_msg;
tls_bthf_client_battery_level_msg_t battery_level_msg;
tls_bthf_client_current_operator_msg_t current_operator_msg;
tls_bthf_client_call_msg_t call_msg;
tls_bthf_client_callsetup_msg_t callsetup_msg;
tls_bthf_client_callheld_msg_t callheld_msg;
tls_bthf_client_resp_and_hold_msg_t resp_and_hold_msg;
tls_bthf_client_clip_msg_t clip_msg;
tls_bthf_client_call_waiting_msg_t call_waiting_msg;
tls_bthf_client_current_calls_msg_t current_calls_msg;
tls_bthf_client_volume_change_msg_t volume_change_msg;
tls_bthf_client_cmd_complete_msg_t cmd_complete_msg;
tls_bthf_client_subscriber_info_msg_t subscriber_info_msg;
tls_bthf_client_in_band_ring_tone_msg_t in_band_ring_tone_msg;
tls_bthf_client_last_voice_tag_number_msg_t last_voice_tag_number_msg;
tls_bthf_client_ring_indication_msg_t ring_indication_msg;
tls_bthf_audio_payload_msg_t audio_payload_msg;
} tls_bthf_client_msg_t;
/** WM BT HFP CLIENT callback function */
typedef void (*tls_bthf_client_callback_t)(tls_bthf_client_evt_t event, tls_bthf_client_msg_t *p_data);
/******************************************************************************************/
/* Security Setting Mask */
#define WM_SPP_SEC_NONE 0x0000 /* No security*/
#define WM_SPP_SEC_AUTHORIZE 0x0001 /*Authorization required (only needed for out going connection ) */
#define WM_SPP_SEC_AUTHENTICATE 0x0012 /*Authentication required*/
#define WM_SPP_SEC_ENCRYPT 0x0024 /*Encryption required*/
#define WM_SPP_SEC_MODE4_LEVEL4 0x0040 /*Mode 4 level 4 service, i.e. incoming/outgoing MITM and P-256 encryption*/
#define WM_SPP_SEC_MITM 0x3000 /*Man-In-The_Middle protection*/
#define WM_SPP_SEC_IN_16_DIGITS 0x4000 /*Min 16 digit for pin code*/
typedef uint16_t wm_spp_sec_t;
#define WM_SPP_MAX_SCN 31
typedef enum {
WM_SPP_ROLE_CLIENT = 0,
WM_SPP_ROLE_SERVER = 1,
} tls_spp_role_t;
typedef enum {
WM_SPP_INIT_EVT = 0,
WM_SPP_DISCOVERY_COMP_EVT = 8,
WM_SPP_OPEN_EVT = 26,
WM_SPP_CLOSE_EVT = 27,
WM_SPP_START_EVT = 28,
WM_SPP_CL_INIT_EVT = 29,
WM_SPP_DATA_IND_EVT = 30,
WM_SPP_CONG_EVT = 31,
WM_SPP_WRITE_EVT = 33,
WM_SPP_SRV_OPEN_EVT = 34,
} tls_spp_event_t;
typedef struct {
uint8_t status;
} tls_spp_init_msg_t ;
typedef struct {
uint8_t status;
uint8_t scn_num;
uint8_t scn[WM_SPP_MAX_SCN];
} tls_spp_disc_comp_msg_t;
typedef struct {
uint8_t status;
uint32_t handle;
uint8_t addr[6];
} tls_spp_open_msg_t;
typedef struct {
uint8_t status;
uint32_t handle;
uint32_t new_listen_handle;
uint8_t addr[6];
} tls_spp_srv_open_msg_t;
typedef struct {
uint8_t status;
uint32_t port_status;
uint32_t handle;
bool local;
} tls_spp_close_msg_t;
typedef struct {
uint8_t status;
uint32_t handle;
uint8_t sec_id;
bool use_co_rfc;
} tls_spp_start_msg_t;
typedef struct {
uint8_t status;
uint32_t handle;
uint8_t sec_id;
bool use_co_rfc;
} tls_spp_cli_init_msg_t;
typedef struct {
uint8_t status;
uint32_t handle;
int length;
bool congest;
} tls_spp_write_msg_t;
typedef struct {
uint8_t status;
uint32_t handle;
uint16_t length;
uint8_t *data;
} tls_spp_data_ind_msg_t;
typedef struct {
uint8_t status;
uint32_t handle;
bool congest;
} tls_spp_cong_msg_t;
typedef union
{
tls_spp_init_msg_t init_msg;
tls_spp_disc_comp_msg_t disc_comp_msg;
tls_spp_open_msg_t open_msg;
tls_spp_srv_open_msg_t srv_open_msg;
tls_spp_close_msg_t close_msg;
tls_spp_start_msg_t start_msg;
tls_spp_cli_init_msg_t cli_init_msg;
tls_spp_write_msg_t write_msg;
tls_spp_data_ind_msg_t data_ind_msg;
tls_spp_cong_msg_t congest_msg;
} tls_spp_msg_t;
/** WM BT SPP callback function */
typedef void (*tls_bt_spp_callback_t)(tls_spp_event_t event, tls_spp_msg_t *p_data);
typedef enum
{
BLE_UART_SERVER_MODE,
BLE_UART_CLIENT_MODE,
BLE_UART_UNKNOWN_MODE,
} tls_ble_uart_mode_t;
typedef enum{
UART_OUTPUT_DATA=0,
UART_OUTPUT_CMD_ADVERTISING,
UART_OUTPUT_CMD_CONNECTED,
UART_OUTPUT_CMD_DISCONNECTED,
} tls_uart_msg_out_t;
/**uart output function pointer, ble server send the received data to uart */
typedef void (*tls_ble_uart_output_ptr)(tls_uart_msg_out_t type,uint8_t *payload, int length);
/**uart sent function pointer, after ble server sending the uart data, it will be called */
typedef void (*tls_ble_uart_sent_ptr)(tls_ble_uart_mode_t mode, int status);
/**WM Mesh definition*/
typedef enum{
MESH_ROLE_UNKNOWN = 0x00,
MESH_ROLE_NODE,
MESH_ROLE_PROVISIONER
} tls_bt_mesh_role_t;
#ifndef BIT
#define BIT(n) (1UL << (n))
#endif
#define BIT_MASK(n) (BIT(n) - 1)
#define TLS_BT_MESH_TRANSMIT_INT(transmit) ((((transmit) >> 3) + 1) * 10)
#define TLS_BT_MESH_TRANSMIT_COUNT(transmit) (((transmit) & (uint8_t)BIT_MASK(3)))
#define TLS_BT_MESH_TRANSMIT(count, int_ms) ((count) | (((int_ms / 10) - 1) << 3))
#define TLS_BT_MESH_PUB_TRANSMIT(count, int_ms) TLS_BT_MESH_TRANSMIT(count, \
(int_ms) / 5)
#define TLS_BT_MESH_PUB_TRANSMIT_INT(transmit) ((((transmit) >> 3) + 1) * 50)
#define TLS_BT_MESH_PUB_TRANSMIT_COUNT(transmit) TLS_BT_MESH_TRANSMIT_COUNT(transmit)
typedef struct {
uint8_t net_transmit_count; /* Network Transmit state */
uint8_t net_transmit_intvl; /* Network Transmit state */
uint8_t relay; /* Relay Mode state */
uint8_t relay_retransmit_count; /* Relay Retransmit state */
uint8_t relay_retransmit_intvl; /* Relay Retransmit state */
uint8_t beacon; /* Secure Network Beacon state */
uint8_t gatt_proxy; /* GATT Proxy state */
uint8_t frnd; /* Friend state */
uint8_t default_ttl; /* Default TTL */
} tls_mesh_primary_cfg_t;
typedef struct {
uint16_t addr;
uint16_t app_idx;
uint8_t cred_flag;
uint8_t ttl;
uint8_t period;
uint8_t transmit;
} tls_bt_mesh_cfg_mod_pub ;
typedef struct {
uint16_t dst;
uint8_t count;
uint8_t period;
uint8_t ttl;
uint16_t feat;
uint16_t net_idx;
} tls_bt_mesh_cfg_hb_pub;
typedef struct {
uint16_t src;
uint16_t dst;
uint8_t period;
uint8_t count;
uint8_t min;
uint8_t max;
} tls_bt_mesh_cfg_hb_sub;
typedef struct{
uint8_t addr[6];
uint8_t addr_type;
uint8_t uuid[16];
uint32_t oob_info;
uint32_t uri_hash;
} tls_mesh_unprov_msg_t;
typedef struct{
uint16_t net_idx;
uint16_t addr;
uint8_t num_elem;
} tls_mesh_node_added_msg_t;
typedef struct{
uint16_t net_idx;
uint16_t addr;
} tls_mesh_prov_complete_msg_t;
typedef struct{
char *str;
} tls_mesh_oob_output_str_msg_t;
typedef struct{
uint32_t number;
} tls_mesh_oob_output_number_msg_t;
typedef struct{
uint32_t act;
} tls_mesh_oob_input_msg_t;
typedef struct{
bool success;
uint16_t net_idx;
uint16_t addr;
uint8_t num_elem;
} tls_mesh_prov_end_msg_t;
typedef union
{
tls_mesh_unprov_msg_t unprov_msg;
tls_mesh_node_added_msg_t node_added_msg;
tls_mesh_oob_output_str_msg_t oob_output_string_msg;
tls_mesh_oob_output_number_msg_t oob_output_number_msg;
tls_mesh_prov_complete_msg_t prov_cmplt_msg;
tls_mesh_oob_input_msg_t oob_input_msg;
tls_mesh_prov_end_msg_t prov_end_msg;
} tls_mesh_msg_t;
typedef enum{
WM_MESH_UNPROVISION_BEACON_EVT = (0x01<<1),
WM_MESH_SECURE_BEACON_EVT = (0x01<<2),
WM_MESH_NODE_ADDED_EVT = (0x01<<3),
WM_MESH_OOB_STRING_EVT = (0x01<<4),
WM_MESH_OOB_NUMBER_EVT = (0x01<<5),
WM_MESH_PROV_CMPLT_EVT = (0x01<<6),
WM_MESH_OOB_INPUT_EVT = (0x01<<7),
WM_MESH_PROV_END_EVT = (0x01<<8),
} tls_mesh_event_t;
typedef void (*tls_bt_mesh_at_callback_t)(tls_mesh_event_t event, tls_mesh_msg_t *p_data);
typedef void (*tls_bt_controller_sleep_enter_func_ptr)(uint32_t sleep_duration_ms);
typedef void (*tls_bt_controller_sleep_exit_func_ptr)(void);
typedef void (*tls_bt_app_pending_process_func_ptr)(void);
#define TLS_HAL_AT_NOTIFY(P_CB, PARAM1, PARAM2)\
if (P_CB) { \
P_CB(PARAM1, PARAM2); \
}
#define TLS_HAL_CBACK(P_CB, P_CBACK, ...)\
if (P_CB && P_CB->P_CBACK) { \
P_CB->P_CBACK(__VA_ARGS__); \
} \
else { \
assert(0); \
}
#endif /* WM_BT_DEF_H */

Комментарий ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/openLuat-luatos-soc-air101.git
git@gitlife.ru:oschina-mirror/openLuat-luatos-soc-air101.git
oschina-mirror
openLuat-luatos-soc-air101
openLuat-luatos-soc-air101
master