BLE Dongle Command Format

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

 Does anyone know the details of the format of the following commands use in BLE Dongle

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

0400         

CyBleEvtGetDeviceIdRsp         

0401         

CyBleEvtGetSupportedToolVersionRsp         

0402         

CyBleEvtGetFirmwareVersionRsp         

0403         

CyBleEvtGetBleStackVersionRsp         

0404         

CyBleEvtMiscNotification         

0405         

CyBleEvtGetSupportedGapRolesRsp         

0406         

CyBleEvtGetCurrentGapRoleRsp         

0407         

CyBleEvtGetSupportedGattRolesRsp         

0408         

CyBleEvtGetCurrentGattRoleRsp         

0409         

CyBleEvtGetRssiRsp         

040A         

CyBleEvtGetDeviceDescriptionRsp         

040B         

CyBleEvtGetHardwareVersionRsp         

047E         

CyBleEvtCmdStatus         

047F         

CyBleEvtCmdComplete         

  

0500         

CyBleEvtCbfcConnectionIndication         

0501         

CyBleEvtCbfcConnectionConfirmation         

0502         

CyBleEvtCbfcDisconnectIndication         

0503         

CyBleEvtCbfcDisconnectConfirmation         

0504         

CyBleEvtCbfcDataReceivedNotification         

0505         

CyBleEvtCbfcRxCreditIndication         

0506         

CyBleEvtCbfcTxCreditIndication         

  

0600         

CyBleEvtDiscoverAllPrimaryServicesResultProgress         

0601         

CyBleEvtDiscoverPrimaryServicesByUUIDResultProgress         

0602         

CyBleEvtFindIncludedServicesResultProgress         

0603         

CyBleEvtDiscoverAllCharacteristicsResultProgress         

0604         

CyBleEvtDiscoverCharacteristicsByUUIDResultProgress         

0605         

CyBleEvtDiscoverAllCharacteristicDescriptorsResultProgress         

0606         

CyBleEvtReadCharacteristicValueRsp         

0607         

CyBleEvtReadUsingCharacteristicUUIDRsp         

0608         

CyBleEvtReadLongCharacteristicValueRsp         

0609         

CyBleEvtReadMultipleCharacteristicsValueRsp         

060A         

CyBleEvtReadCharacteristicDescriptorRsp         

060B         

CyBleEvtReadLongCharacteristicDescriptorRsp         

060C         

CyBleEvtCharacteristicValueNotification         

060D         

CyBleEvtCharacteristicValueIndication         

060E         

CyBleEvtGattErrorNotification         

060F         

CyBleEvtExchangeGattMtuSizeRsp         

0610         

CyBleEvtGattStopNotification         

0680         

CyBleEvtGetDeviceIoCapabilitiesRsp         

0681         

CyBleEvtGetLocalBDAddrRsp         

0682         

CyBleEvtGetPeerBDAddrRsp         

0683         

CyBleEvtGetPeerDeviceHandleRsp         

0684         

CyBleEvtUpdateConnectionParametersRsp         

0685         

CyBleEvtGetConnectionParametersRsp         

0686         

CyBleEvtGetScanParametersRsp         

0687         

CyBleEvtGetLocalDeviceSecurityRsp         

0688         

CyBleEvtGetPeerDeviceSecurityRsp         

0689         

CyBleEvtGetWhiteListRsp         

0690         

CyBleEvtConnectionTerminatedNotification         

068A         

CyBleEvtScanProgressResult         

068B         

CyBleEvtGenerateBdAddrRsp         

068C         

CyBleEvtGenerateKeysRsp         

068D         

CyBleEvtPasskeyEntryRequest         

068E         

CyBleEvtPasskeyDisplayRequest         

068F         

CyBleEvtEstablishConnectionRsp         

0690         

CyBleEvtConnectionTerminatedNotification         

0691         

CyBleEvtScanStoppedNotification         

0692         

CyBleEvtPairingRequestReceivedNotificaion         

0693         

CyBleEvtAuthenticationErrorNotificaion         

0694         

CyBleEvtConnectionCancelledNotification         

0695         

CyBleEvtGetBondedDevicesListRsp         

06FF         

CyBleEvtInternalScanStopInProgressNotification         

  

FC00         

CyBleCmdGetDeviceId         

FC01         

CyBleCmdGetSupportedToolVersion         

FC02         

CyBleCmdGetFirmwareVersion         

FC03         

CyBleCmdGetSupportedGapRoles         

FC04         

CyBleCmdGetCurrentGapRole         

FC05         

CyBleCmdGetSupportedGattRoles         

FC06         

CyBleCmdGetCurrentGattRole         

FC07         

CyBleCmdInitBleStack         

FC08         

CyBleCmdHostDisconnectNotification         

FC09         

CyBleCmdHostTimedoutNotification         

FC0A         

CyBleCmdGetDeviceDescription         

FC0B         

CyBleCmdGetHardwareVersion         

FC0C         

CyBleCmdGetBleStackVersion         

FC0D         

CyBleCmdGetRssi         

FC0E         

CyBleCmdResetBleStack         

  

FD00         

CyBleCmdRegisterPsm         

FD01         

CyBleCmdUnregisterPsm         

FD02         

CyBleCmdCbfcEstablishConnection         

FD03         

CyBleCmdCbfcSendConnectionResponse         

FD04         

CyBleCmdCbfcSendFlowControlCredit         

FD05         

CyBleCmdCbfcSendData         

FD06         

CyBleCmdCbfcSendDisconnect         

  

FE00         

CyBleCmdDiscoverAllPrimaryServices         

FE01         

CyBleCmdDiscoverPrimaryServicesByUUID         

FE02         

CyBleCmdFindIncludedServices         

FE03         

CyBleCmdDiscoverAllCharacteristics         

FE04         

CyBleCmdDiscoverCharacteristicsByUUID         

FE05         

CyBleCmdDiscoverAllCharacteristicDescriptors         

FE06         

CyBleCmdReadCharacteristicValue         

FE07         

CyBleCmdReadUsingCharacteristicUUID         

FE08         

CyBleCmdReadLongCharacteristicValue         

FE09         

CyBleCmdReadMultipleCharacteristicValues         

FE0A         

CyBleCmdWriteCharacteristicValueWithoutResponse         

FE0B         

CyBleCmdWriteCharacteristicValue         

FE0C         

CyBleCmdWriteLongCharacteristicValue         

FE0D         

CyBleCmdReliableCharacteristicValueWrites         

FE0E         

CyBleCmdReadCharacteristicDescriptor         

FE0F         

CyBleCmdReadLongCharacteristicDescriptor         

FE10         

CyBleCmdWriteCharacteristicDescriptor         

FE11         

CyBleCmdWriteLongCharacteristicDescriptor         

FE12         

CyBleCmdExchangeGattMtuSize         

FE13         

CyBleCmdGattStop         

  

FE80         

CyBleCmdSetDeviceIoCapabilities         

FE81         

CyBleCmdGetDeviceIoCapabilities         

FE82         

CyBleCmdGetLocalBDAddr         

FE83         

CyBleCmdSetLocalBDAddr         

FE84         

CyBleCmdGetPeerBDAddr         

FE85         

CyBleCmdGetPeerDeviceHandle         

FE86         

CyBleCmdGenerateBdAddr         

FE87         

CyBleCmdSetOOBData         

FE88         

CyBleCmdGetConnectionParameters         

FE89         

CyBleCmdSetConnectionParameters         

FE8A         

CyBleCmdGetScanParameters         

FE8B         

CyBleCmdSetScanParameters         

FE8C         

CyBleCmdGetLocalDeviceSecurity         

FE8D         

CyBleCmdSetLocalDeviceSecurity         

FE8E         

CyBleCmdGetPeerDeviceSecurity         

FE8F         

CyBleCmdGetWhiteList         

FE90         

CyBleCmdAddDeviceToWhiteList         

FE91         

CyBleCmdRemoveDeviceFromWhiteList         

FE92         

CyBleCmdClearWhiteList         

FE93         

CyBleCmdStartScan         

FE94         

CyBleCmdStopScan         

FE95         

CyBleCmdGenerateKeys         

FE96         

CyBleCmdSetAuthenticationKeys         

FE97         

CyBleCmdEstablishConnection         

FE98         

CyBleCmdTerminateConnection         

FE99         

CyBleCmdInitiatePairingRequest         

FE9A         

CyBleCmdTerminatePairingRequest         

FE9B         

CyBleCmdPairingPasskeyResponse         

FE9C         

CyBleCmdUpdateConnectionParameters         

FE9D         

CyBleCmdCancelConnection         

FE9E         

CyBleCmdGetBondedDevicesList         

0 Likes
3 Replies
Bob_Marlowe
Level 10
Level 10
First like given 50 questions asked 10 questions asked

Since these numbers are not Cypress specific it would be best to dig through www.bluetooth.org/en-us/specification/assigned-numbers.

   

 

   

Bob

0 Likes
Anonymous
Not applicable

I don't think these are SIG assigned UUIDs. These should be Cypress implementation specific command/packet identifiers to communicate between the dongle and the CySmart tool.

   

I don't see details of these commands or packet format in any document, going through the code we can quickly figure out some of the basic operations.

   

For example, the packet format used for CySmart to dongle communication is (see CySmt_protocol.h file in Dongle firmware that is part of the kit installer):

   

typedef struct _Command_Format

   

{

   

    /*command opcode as per protocol*/

   

    uint16 opcode;

   

    /*Total length of payload*/

   

    uint16 paramlen;

   

    /*Payload pointer to buffer*/

   

    uint8 *parameters;

   

}Command_Format; 

   

The opcode is split into two parts, the command ID and the command group. The list of commands supported per layer is present in generalMap, gapMap, gattMap etc. structures. 

   

For every command, there are three types of responses.:

   

1. As soon as the command is received, a command status is sent back to the CySmart tool (probably for book keeping) - See CySmt_SendCommandStatus routine that is called from CySmt_ProcessCommands routine. The command status can either be hardcoded ALL_OK value (for simple read operation) or return state of the BLE stack API (for stack related commands)

   

2. The response that is received from the peer device (Read Characteristic Value for example) is sent as an Event (See CyS_SendEvent routine in CySmt_Protocol.c file)

   

3. Irrespective of #1 or #2 above, a command complete (see CySmt_SendCommandComplete routine in CySmt_Protocol.c file) is sent back to indicate that the interface is free to accept new commands.

   

and so on..

Anonymous
Not applicable

I would agree with @kris.p's opinion that the numbers are specific to the Cypress dongle.

0 Likes