2 Replies Latest reply on Dec 2, 2014 3:14 PM by kris.p

    BLE Dongle Command Format

    woody.wu

       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         

       

        • 1. Re: BLE Dongle Command Format
          user_1377889

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

             

           

             

          Bob

          • 2. Re: BLE Dongle Command Format
            kris.p

            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..