BlueTooth前期开发随手笔记(三)

WICED HCI控制协议命令

WICED包头格式

/* Packets exchanged over the UART between MCU and hci_control application contain 5 byte header
* -------------------------------------------------------------------------------------------------------
* |  Packet Type      | Command Code          |    Group Code       |        Packet Length              |
* -------------------------------------------------------------------------------------------------------
* |HCI_WICED_PKT(0x19)|HCI_CONTROL_COMMAND_...|HCI_CONTROL_GROUP_...|length(low byte)| length(high byte)|
* -------------------------------------------------------------------------------------------------------

分组码

/*
 * Group codes
 */
#define HCI_CONTROL_GROUP_DEVICE                              0x00
#define HCI_CONTROL_GROUP_LE                                  0x01
#define HCI_CONTROL_GROUP_GATT                                0x02
#define HCI_CONTROL_GROUP_HF                                  0x03
#define HCI_CONTROL_GROUP_SPP                                 0x04
#define HCI_CONTROL_GROUP_AUDIO                               0x05
#define HCI_CONTROL_GROUP_HIDD                                0x06
#define HCI_CONTROL_GROUP_AVRC                                0x07
#define HCI_CONTROL_GROUP_TEST                                0x08
#define HCI_CONTROL_GROUP_AIO                                 0x09
#define HCI_CONTROL_GROUP_TIME                                0x0a
#define HCI_CONTROL_GROUP_ANCS                                0x0b
#define HCI_CONTROL_GROUP_ALERT                               0x0c
#define HCI_CONTROL_GROUP_LN                                  0x0d
#define HCI_CONTROL_GROUP_IAP2                                0x0e
#define HCI_CONTROL_GROUP_AG                                  0x0f
#define HCI_CONTROL_GROUP_MISC                                0xFF

#define HCI_CONTROL_GROUP(x) ((((x) >> 8)) & 0xff)

HCI_CONTROL_GROUP_DEVICE

#define HCI_CONTROL_COMMAND_RESET                           ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x01 )    /* Restart controller */
#define HCI_CONTROL_COMMAND_TRACE_ENABLE                    ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x02 )    /* Enable or disable WICED traces */
#define HCI_CONTROL_COMMAND_SET_LOCAL_BDA                   ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x03 )    /* Set local device addrsss */
#define HCI_CONTROL_COMMAND_SET_BAUD_RATE                   ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x04 )    /* Change UART baud rate */
#define HCI_CONTROL_COMMAND_PUSH_NVRAM_DATA                 ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x05 )    /* Download previously saved NVRAM chunk */
#define HCI_CONTROL_COMMAND_DELETE_NVRAM_DATA               ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x06 )    /* Delete NVRAM chunk currently stored in RAM */
#define HCI_CONTROL_COMMAND_INQUIRY                         ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x07 )    /* Start/stop inquiry */
#define HCI_CONTROL_COMMAND_SET_VISIBILITY                  ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x08 )    /* Set BR/EDR connectability and discoverability of the device */
#define HCI_CONTROL_COMMAND_USER_CONFIRMATION               ( ( HCI_CONTROL_GROUP_DEVICE << 8 ) | 0x09 )    /* User Confirmation during pairing, TRUE/FALSE passed as parameter */

  • Trace Enable

在这里插入图片描述

HCI_CONTROL_GROUP_LE

#define HCI_CONTROL_LE_COMMAND_SCAN                         ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x01 )    /* start scan */
#define HCI_CONTROL_LE_COMMAND_ADVERTISE                    ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x02 )    /* start advertisements */
#define HCI_CONTROL_LE_COMMAND_CONNECT                      ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x03 )    /* connect to peer */
#define HCI_CONTROL_LE_COMMAND_CANCEL_CONNECT               ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x04 )    /* cancel connect */
#define HCI_CONTROL_LE_COMMAND_DISCONNECT                   ( ( HCI_CONTROL_GROUP_LE << 8 ) | 0x05 )    /* disconnect */

HCI_CONTROL_GROUP_GATT

#define HCI_CONTROL_GATT_COMMAND_DISCOVER_SERVICES          ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x01 )    /* discover services */
#define HCI_CONTROL_GATT_COMMAND_DISCOVER_CHARACTERISTICS   ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x02 )    /* discover characteristics */
#define HCI_CONTROL_GATT_COMMAND_DISCOVER_DESCRIPTORS       ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x03 )    /* discover descriptors */
#define HCI_CONTROL_GATT_COMMAND_READ_REQUEST               ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x04 )    /* send read request */
#define HCI_CONTROL_GATT_COMMAND_READ_RESPONSE              ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x05 )    /* send read response */
#define HCI_CONTROL_GATT_COMMAND_WRITE_COMMAND              ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x06 )    /* send write command */
#define HCI_CONTROL_GATT_COMMAND_WRITE_REQUEST              ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x07 )    /* send write request */
#define HCI_CONTROL_GATT_COMMAND_WRITE_RESPONSE             ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x08 )    /* send write response */
#define HCI_CONTROL_GATT_COMMAND_NOTIFY                     ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x09 )    /* send notification */
#define HCI_CONTROL_GATT_COMMAND_INDICATE                   ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0a )    /* send indication */
#define HCI_CONTROL_GATT_COMMAND_INDICATE_CONFIRM           ( ( HCI_CONTROL_GROUP_GATT << 8 ) | 0x0b )    /* send indication confirmation */

HCI_CONTROL_GROUP_HF

/* 
 * Handsfree Commands  
 * Define commands sent to the HFP profile
 */
#define HCI_CONTROL_HF_COMMAND_CONNECT                      ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x01 )    /* establish connection to HF Audio Gateway */
#define HCI_CONTROL_HF_COMMAND_DISCONNECT                   ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x02 )    /* release HF connection */
#define HCI_CONTROL_HF_COMMAND_OPEN_AUDIO                   ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x03 )    /* create audio connection on existing service level connection */
#define HCI_CONTROL_HF_COMMAND_CLOSE_AUDIO                  ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x04 )    /* disconnect audio */
/* 
 * Sub commands to send various AT Commands
 */
#define HCI_CONTROL_HF_AT_COMMAND_BASE                      ( ( HCI_CONTROL_GROUP_HF << 8 ) | 0x20 )    /* send AT command and supporting data */
#define HCI_CONTROL_HF_AT_COMMAND_SPK                       0x00    /* Update speaker volume */
#define HCI_CONTROL_HF_AT_COMMAND_MIC                       0x01    /* Update microphone volume */
#define HCI_CONTROL_HF_AT_COMMAND_A                         0x02    /* Answer incoming call */
#define HCI_CONTROL_HF_AT_COMMAND_BINP                      0x03    /* Retrieve number from voice tag */
#define HCI_CONTROL_HF_AT_COMMAND_BVRA                      0x04    /* Enable/Disable voice recognition */
#define HCI_CONTROL_HF_AT_COMMAND_BLDN                      0x05    /* Last Number redial */
#define HCI_CONTROL_HF_AT_COMMAND_CHLD                      0x06    /* Call hold command */
#define HCI_CONTROL_HF_AT_COMMAND_CHUP                      0x07    /* Call hang up command */
#define HCI_CONTROL_HF_AT_COMMAND_CIND                      0x08    /* Read Indicator Status */
#define HCI_CONTROL_HF_AT_COMMAND_CNUM                      0x09    /* Retrieve Subscriber number */
#define HCI_CONTROL_HF_AT_COMMAND_D                         0x0A    /* Place a call using a number or memory dial */
#define HCI_CONTROL_HF_AT_COMMAND_NREC                      0x0B    /* Disable Noise reduction and echo canceling in AG */
#define HCI_CONTROL_HF_AT_COMMAND_VTS                       0x0C    /* Transmit DTMF tone */
#define HCI_CONTROL_HF_AT_COMMAND_BTRH                      0x0D    /* CCAP incoming call hold */
#define HCI_CONTROL_HF_AT_COMMAND_COPS                      0x0E    /* Query operator selection */
#define HCI_CONTROL_HF_AT_COMMAND_CMEE                      0x0F    /* Enable/disable extended AG result codes */
#define HCI_CONTROL_HF_AT_COMMAND_CLCC                      0x10    /* Query list of current calls in AG */
#define HCI_CONTROL_HF_AT_COMMAND_BIA                       0x11    /* Activate/Deactivate indicators */
#define HCI_CONTROL_HF_AT_COMMAND_BIEV                      0x12    /* Send HF indicator value to peer */
#define HCI_CONTROL_HF_AT_COMMAND_UNAT                      0x13    /* Transmit AT command not in the spec  */
#define HCI_CONTROL_HF_AT_COMMAND_MAX                       0x13    /* For command validation */

HCI_CONTROL_GROUP_SPP

/*
 * Serial Port Profile Commands
 * Define commands sent to the SPP profile
 */
#define HCI_CONTROL_SPP_COMMAND_CONNECT                     ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x01 )    /* establish connection to SPP server */
#define HCI_CONTROL_SPP_COMMAND_DISCONNECT                  ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x02 )    /* release SPP connection */
#define HCI_CONTROL_SPP_COMMAND_DATA                        ( ( HCI_CONTROL_GROUP_SPP << 8 ) | 0x03 )    /* send data */

HCI_CONTROL_GROUP_AUDIO

/*
* Audio Profile Commands
* Define commands sent to the Audio profile
*/
#define HCI_CONTROL_AUDIO_COMMAND_CONNECT                   ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x01 )    /* Audio connect to sink */
#define HCI_CONTROL_AUDIO_COMMAND_DISCONNECT                ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x02 )    /* Audio disconnect  */
#define HCI_CONTROL_AUDIO_START                             ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x03 )    /* start audio with speciifc sample rate/mode */
#define HCI_CONTROL_AUDIO_STOP                              ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x04 )    /* stop audio */
#define HCI_CONTROL_AUDIO_PACKET_COUNT                      ( ( HCI_CONTROL_GROUP_AUDIO << 8 ) | 0x05 )    /* debug packet counter sent from host */

HCI_CONTROL_GROUP_HIDD

HCI_CONTROL_GROUP_AVRC

/*
* AVRC Controller Profile Commands
* Define commands sent to the AVRC profile
*/
#define HCI_CONTROL_AVRC_COMMAND_INITIATE_CONNECTION        ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x01 )    /* Initiate a connection to the peer. */
#define HCI_CONTROL_AVRC_COMMAND_DISCONNECT                 ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x02 )    /* Disconnect a connection to the peer. */
#define HCI_CONTROL_AVRC_COMMAND_PLAY                       ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x03 )    /* Passthrough Play Command */
#define HCI_CONTROL_AVRC_COMMAND_PAUSE                      ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x04 )    /* Passthrough Pause Command */
#define HCI_CONTROL_AVRC_COMMAND_FASTFWD                    ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x05 )    /* Passthrough FFWD Command */
#define HCI_CONTROL_AVRC_COMMAND_REWIND                     ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x06 )    /* Passthrough Rewind Command */
#define HCI_CONTROL_AVRC_COMMAND_NEXT_TRACK                 ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x07 )    /* Passthrough Next Command */
#define HCI_CONTROL_AVRC_COMMAND_PREV_TRACK                 ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x08 )    /* Passthrough Prev Command */
#define HCI_CONTROL_AVRC_COMMAND_TRACK_INFO                 ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x09 )    /* Get Track Metadata */
#define HCI_CONTROL_AVRC_COMMAND_EQ_ENABLE                  ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x0A )    /* Enable Equalizer */
#define HCI_CONTROL_AVRC_COMMAND_REPEAT_MODE                ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x0B )    /* Set Repeat Mode */
#define HCI_CONTROL_AVRC_COMMAND_SHUFFLE_MODE               ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x0C )    /* Set Shuffle Mode */
#define HCI_CONTROL_AVRC_COMMAND_SCAN_ENABLE                ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x0D )    /* Enable Scan */

#define HCI_CONTROL_AVRC_COMMAND_VOLUME_LEVEL               ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x96 )    /* Register for notifications (PTS) */
#define HCI_CONTROL_AVRC_COMMAND_VOLUME_UP                  ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x97 )    /* Register for notifications (PTS) */
#define HCI_CONTROL_AVRC_COMMAND_VOLUME_DOWN                ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x98 )    /* Register for notifications (PTS) */
#define HCI_CONTROL_AVRC_COMMAND_REGISTER_NOTIFICATION      ( ( HCI_CONTROL_GROUP_AVRC << 8 ) | 0x99 )    /* Register for notifications (PTS) */

HCI_CONTROL_GROUP_TEST

/*
* Test Commands
*/
#define HCI_CONTROL_TEST_COMMAND_LE_RECEIVER                ( ( HCI_CONTROL_GROUP_TEST << 8 ) | 0x01 )     /* Start LE Receiver Test */
#define HCI_CONTROL_TEST_COMMAND_LE_TRASMITTER              ( ( HCI_CONTROL_GROUP_TEST << 8 ) | 0x02 )     /* Start LE Tramsmitter Test */
#define HCI_CONTROL_TEST_COMMAND_LE_TEST_END                ( ( HCI_CONTROL_GROUP_TEST << 8 ) | 0x03 )     /* End LE Test */
#define HCI_CONTROL_TEST_COMMAND_CONTINUOUS_TRANSMIT        ( ( HCI_CONTROL_GROUP_TEST << 8 ) | 0x04 )     /* Start Continuous Transmit */
#define HCI_CONTROL_TEST_COMMAND_RECEIVE_ONLY               ( ( HCI_CONTROL_GROUP_TEST << 8 ) | 0x05 )     /* Start Receiver Test */
#define HCI_CONTROL_TEST_COMMAND_DISABLE_POWER_CONTROL      ( ( HCI_CONTROL_GROUP_TEST << 8 ) | 0x06 )     /* Turn off power control for the Link */
#define HCI_CONTROL_TEST_COMMAND_SET_TX_POWER               ( ( HCI_CONTROL_GROUP_TEST << 8 ) | 0x07 )     /* Set Tx power for the Link */
#define HCI_CONTROL_TEST_COMMAND_INCR_DECR_PEER_POWER       ( ( HCI_CONTROL_GROUP_TEST << 8 ) | 0x08 )     /* Request peer to incr/decr power for the Link */

HCI_CONTROL_GROUP_AIO

/*
* Automation IO Commands
*/
#define HCI_CONTROL_AIO_COMMAND_DIGITAL_IN                  ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x01 )      /* Digital input */
#define HCI_CONTROL_AIO_COMMAND_ANALOG_IN                   ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x02 )      /* Analog input */
#define HCI_CONTROL_AIO_COMMAND_CONNECT                     ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x03 )      /* Connect to server */
#define HCI_CONTROL_AIO_COMMAND_READ                        ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x04 )      /* Read value */
#define HCI_CONTROL_AIO_COMMAND_WRITE                       ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x05 )      /* Write value */
#define HCI_CONTROL_AIO_COMMAND_WRITE_NO_RSP                ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x06 )      /* Write with no response */
#define HCI_CONTROL_AIO_COMMAND_SET_CLIENT_CONFIG           ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x07 )      /* Set client configuration */
#define HCI_CONTROL_AIO_COMMAND_SET_VALUE_TRIGGER           ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x08 )      /* Set value trigger */
#define HCI_CONTROL_AIO_COMMAND_SET_TIME_TRIGGER            ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x09 )      /* Set time trigger */
#define HCI_CONTROL_AIO_COMMAND_SET_USER_DESCRIPTION        ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x0a )      /* Set user description */
#define HCI_CONTROL_AIO_COMMAND_DISCONNECT                  ( ( HCI_CONTROL_GROUP_AIO << 8 ) | 0x0b )      /* Disconnect from server */

HCI_CONTROL_GROUP_ANCS

/*
 * Define ANCS commands
 */
#define HCI_CONTROL_ANCS_COMMAND_ACTION                     ( ( HCI_CONTROL_GROUP_ANCS << 8 ) | 0x01 )      /* ANCS notification */

HCI_CONTROL_GROUP_ALERT

/*
 * Define events from the FindMe application
 */
#define HCI_CONTROL_ALERT_EVENT_NOTIFICATION                ( ( HCI_CONTROL_GROUP_ALERT << 8 ) | 0x01 )     /* Alert Level Notification */
``
`
### HCI_CONTROL_GROUP_LN

```c
/*
 * Location and Navigation events
 */
#define HCI_CONTROL_LN_EVENT_GET_LOCATION_SPEED             ( ( HCI_CONTROL_GROUP_LN << 8 ) | 0x01 )    /* Get location and speed data */
#define HCI_CONTROL_LN_EVENT_LN_CONTROL                     ( ( HCI_CONTROL_GROUP_LN << 8 ) | 0x02 )    /* LN control point request from client */
#define HCI_CONTROL_LN_EVENT_GET_NAVIGATION                 ( ( HCI_CONTROL_GROUP_LN << 8 ) | 0x03 )    /* Get navigation data */

HCI_CONTROL_GROUP_IAP2

/*
 * Define events from the IAP2 implementation
 */
#define HCI_CONTROL_IAP2_EVENT_CONNECTED                    ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x01 )    /* IAP2 connection opened */
#define HCI_CONTROL_IAP2_EVENT_SERVICE_NOT_FOUND            ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x02 )    /* SDP record with IAP2 service not found */
#define HCI_CONTROL_IAP2_EVENT_CONNECTION_FAILED            ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x03 )    /* Connection attempt failed  */
#define HCI_CONTROL_IAP2_EVENT_DISCONNECTED                 ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x04 )    /* IAP2 connection closed */
#define HCI_CONTROL_IAP2_EVENT_TX_COMPLETE                  ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x05 )    /* Data packet has been queued for transmission */
#define HCI_CONTROL_IAP2_EVENT_RX_DATA                      ( ( HCI_CONTROL_GROUP_IAP2 << 8 ) | 0x06 )    /* Data packet has been queued for transmission */

HCI_CONTROL_GROUP_AG

/*
 * Handsfree AG Commands
 * Define commands sent to the HF-AG profile
 */
#define HCI_CONTROL_AG_COMMAND_CONNECT                      ( ( HCI_CONTROL_GROUP_AG << 8 ) | 0x01 )    /* establish connection to HF Device */
#define HCI_CONTROL_AG_COMMAND_DISCONNECT                   ( ( HCI_CONTROL_GROUP_AG << 8 ) | 0x02 )    /* release HF connection */
#define HCI_CONTROL_AG_COMMAND_OPEN_AUDIO                   ( ( HCI_CONTROL_GROUP_AG << 8 ) | 0x03 )    /* create audio connection on existing service level connection */
#define HCI_CONTROL_AG_COMMAND_CLOSE_AUDIO                  ( ( HCI_CONTROL_GROUP_AG << 8 ) | 0x04 )    /* disconnect audio */

HCI_CONTROL_GROUP_MISC

/*
 * Miscellaneous commands
 */
#define HCI_CONTROL_MISC_COMMAND_PING                       ( ( HCI_CONTROL_GROUP_MISC << 8 ) | 0x01 )    /* Ping controller */

在这里迷茫了,分不清出分组的功能,和这些分组之间的关系,以及当前自己要开发的蓝牙系统中应该使用那些,那些又用不到

转到下一篇,看下别人的介绍,蓝牙的GATT协议

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值