mirror of https://github.com/ARMmbed/mbed-os.git
translate hci types
parent
ccddf32f85
commit
f13e966dc0
|
@ -17,17 +17,61 @@
|
|||
#include "mbed.h"
|
||||
#include "fake_lhci_drv.h"
|
||||
#include "chci_tr.h"
|
||||
#include "chci_api.h"
|
||||
#include "hci_defs.h"
|
||||
#include "wsf_assert.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
uint16_t FakeChciTrRead(uint8_t prot, uint8_t type, uint16_t len, uint8_t *pData) {
|
||||
chciTrRecv(prot, type, pData);
|
||||
uint16_t FakeChciTrRead(uint8_t prot, uint8_t hci_type, uint16_t len, uint8_t *pData)
|
||||
{
|
||||
uint8_t controller_type;
|
||||
switch (hci_type) {
|
||||
case HCI_CMD_TYPE:
|
||||
controller_type = CHCI_TR_TYPE_CMD;
|
||||
break;
|
||||
case HCI_ACL_TYPE:
|
||||
controller_type = CHCI_TR_TYPE_DATA;
|
||||
break;
|
||||
case HCI_ISO_TYPE:
|
||||
controller_type = CHCI_TR_TYPE_ISO;
|
||||
break;
|
||||
default:
|
||||
/* should never happen */
|
||||
WSF_ASSERT(false);
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
||||
chciTrRecv(prot, controller_type, pData);
|
||||
return len;
|
||||
}
|
||||
|
||||
uint16_t FakeChciTrWrite(uint8_t prot, uint8_t controller_type, uint16_t len, uint8_t *pData)
|
||||
{
|
||||
uint8_t hci_type;
|
||||
switch (controller_type) {
|
||||
case CHCI_TR_TYPE_EVT:
|
||||
hci_type = HCI_EVT_TYPE;
|
||||
break;
|
||||
case CHCI_TR_TYPE_DATA:
|
||||
hci_type = HCI_ACL_TYPE;
|
||||
break;
|
||||
case CHCI_TR_TYPE_ISO:
|
||||
hci_type = HCI_ISO_TYPE;
|
||||
break;
|
||||
default:
|
||||
/* should never happen */
|
||||
WSF_ASSERT(false);
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return controllerToHostWrite(prot, hci_type, len, pData);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
@ -22,26 +22,37 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
/**
|
||||
* Send bytes from host to controller.
|
||||
* Provide this callback in your HCI driver.
|
||||
*
|
||||
* @param prot Protocol, must be CHCI_TR_PROT_BLE.
|
||||
* @param type HCI_ACL_TYPE or HCI_CMD_TYPE.
|
||||
* @param prot Must be CHCI_TR_PROT_BLE.
|
||||
* @param hci_type HCI type, HCI_ACL_TYPE or HCI_CMD_TYPE.
|
||||
* @param len Buffer length.
|
||||
* @param pData Data to be sent.
|
||||
* @return Number of bytes processed.
|
||||
*/
|
||||
uint16_t FakeChciTrRead(uint8_t prot, uint8_t type, uint16_t len, uint8_t *pData);
|
||||
uint16_t controllerToHostWrite(uint8_t prot, uint8_t hci_type, uint16_t len, uint8_t *pData);
|
||||
|
||||
/**
|
||||
* Send bytes from host to controller.
|
||||
*
|
||||
* @param prot Protocol, must be CHCI_TR_PROT_BLE.
|
||||
* @param type HCI type, HCI_ACL_TYPE or HCI_CMD_TYPE.
|
||||
* @param len Buffer length.
|
||||
* @param pData Data to be sent.
|
||||
* @return Number of bytes processed.
|
||||
*/
|
||||
uint16_t FakeChciTrRead(uint8_t prot, uint8_t hci_type, uint16_t len, uint8_t *pData);
|
||||
|
||||
/**
|
||||
* Send bytes from controller to host.
|
||||
*
|
||||
* @param prot Protocol, must be CHCI_TR_PROT_BLE.
|
||||
* @param type HCI_ACL_TYPE or HCI_EVT_TYPE.
|
||||
* @param type Controller type, CHCI_TR_TYPE_DATA or CHCI_TR_TYPE_EVT.
|
||||
* @param len Buffer length.
|
||||
* @param pData Data to be sent.
|
||||
* @return Number of bytes processed.
|
||||
*/
|
||||
uint16_t FakeChciTrWrite(uint8_t prot, uint8_t type, uint16_t len, uint8_t *pData);
|
||||
uint16_t FakeChciTrWrite(uint8_t prot, uint8_t controller_type, uint16_t len, uint8_t *pData);
|
||||
|
||||
#ifdef __cplusplus
|
||||
};
|
||||
|
|
|
@ -44,9 +44,9 @@ void NRFCordioHCITransportDriver::terminate()
|
|||
|
||||
}
|
||||
|
||||
uint16_t NRFCordioHCITransportDriver::write(uint8_t type, uint16_t len, uint8_t *pData)
|
||||
uint16_t NRFCordioHCITransportDriver::write(uint8_t hci_type, uint16_t len, uint8_t *pData)
|
||||
{
|
||||
return FakeChciTrRead(CHCI_TR_PROT_BLE, type, len, pData);
|
||||
return FakeChciTrRead(CHCI_TR_PROT_BLE, hci_type, len, pData);
|
||||
}
|
||||
|
||||
extern "C" void chciDrvInit(void)
|
||||
|
@ -55,27 +55,11 @@ extern "C" void chciDrvInit(void)
|
|||
}
|
||||
|
||||
// Callback from Cordio stack
|
||||
extern "C" uint16_t FakeChciTrWrite(uint8_t prot, uint8_t type, uint16_t len, uint8_t *pData)
|
||||
extern "C" uint16_t controllerToHostWrite(uint8_t prot, uint8_t hci_type, uint16_t len, uint8_t *pData)
|
||||
{
|
||||
uint8_t ctype;
|
||||
switch (type) {
|
||||
case CHCI_TR_TYPE_EVT:
|
||||
ctype = HCI_EVT_TYPE;
|
||||
break;
|
||||
case CHCI_TR_TYPE_DATA:
|
||||
ctype = HCI_ACL_TYPE;
|
||||
break;
|
||||
case CHCI_TR_TYPE_ISO:
|
||||
ctype = HCI_ISO_TYPE;
|
||||
break;
|
||||
default:
|
||||
/* should never happen */
|
||||
WSF_ASSERT(false);
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
WSF_ASSERT(prot == CHCI_TR_PROT_BLE);
|
||||
|
||||
CordioHCITransportDriver::on_data_received(&ctype, 1);
|
||||
CordioHCITransportDriver::on_data_received(&hci_type, 1);
|
||||
CordioHCITransportDriver::on_data_received(pData, len);
|
||||
|
||||
return len;
|
||||
|
|
Loading…
Reference in New Issue