23 #define ISF_SPI_LOCK_DEFAULT (0)
47 MUTEX_ATTR_STRUCT mutexattr;
63 if (MQX_OK == _mutatr_init(&mutexattr)) {
64 _mutatr_set_sched_protocol(&mutexattr, MUTEX_PRIO_INHERIT);
70 if(MQX_OK != _mutex_init(apBusHandle->
pLock, &mutexattr)){
75 if(MQX_OK != _mutex_init(apBusHandle->
pRdLock, &mutexattr)){
85 apBusHandle->
pHandle = pBusHandle;
98 if((NULL == apBusHandle) || (NULL == apBusConfig)){
112 *pBusConfig = *apBusConfig;
126 if(NULL == apBusHandle){
141 if((NULL == apBusHandle) || (NULL == apBusConfig)){
158 if(NULL == apBusHandle){
175 if(NULL == apBusHandle){
191 if(NULL == apBusHandle){
213 if( NULL == apBusHandle){
239 if((NULL == apBusHandle) || (NULL == apEndpointHandle) || (NULL == apDevice)){
253 *apEndpointHandle = pEndpoint;
269 if(NULL == apEndpoint){
272 _lwmem_free(apEndpoint);
289 if((NULL == pEndpoint) || (NULL == pWriteBuffer) || (NULL == pEndpoint->pSlaveInfo)){
292 if(buffsize < nByteWrite){
300 ret = bus_lock(pEndpoint->pBusHandle, pBusHandle->busConfig.timeout,
SPI_LOCK_COMMON);
305 if(
ISF_SUCCESS != pEndpoint->pSlaveInfo->writepreProcess(&slaveCmd, offset, nByteWrite, pWriteBuffer)){
310 ret =
spi_master_transfer_async(pBusHandle->spiHandle.instance, NULL, slaveCmd.pWriteBuffer, slaveCmd.pReadBuffer, slaveCmd.size);
313 ret =
spi_master_transfer(pBusHandle->spiHandle.instance, NULL, slaveCmd.pWriteBuffer, slaveCmd.pReadBuffer, slaveCmd.size, pBusHandle->busConfig.timeout);
316 pEndpoint->pSlaveInfo->writepostProcess(&slaveCmd);
336 if((NULL == pEndpoint) || (NULL == pReadBuffer) || (NULL == pEndpoint->pSlaveInfo)){
339 if(buffsize < nByteRead){
346 ret = bus_lock(pEndpoint->pBusHandle, pBusHandle->busConfig.timeout,
SPI_LOCK_READ);
351 if(
ISF_SUCCESS != pEndpoint->pSlaveInfo->readpreProcess(&slaveCmd, offset, nByteRead)){
357 ret =
spi_master_transfer_async(pBusHandle->spiHandle.instance, NULL, slaveCmd.pWriteBuffer, slaveCmd.pReadBuffer, slaveCmd.size);
360 ret =
spi_master_transfer(pBusHandle->spiHandle.instance, NULL, slaveCmd.pWriteBuffer, slaveCmd.pReadBuffer, slaveCmd.size, pBusHandle->busConfig.timeout);
362 pEndpoint->pSlaveInfo->readpostProcess(&slaveCmd, pReadBuffer);
383 pnLock = &apBusHandle->
nRdLock;
385 pLock = apBusHandle->
pLock;
386 pnLock = &apBusHandle->
nLock;
395 if(MQX_OK != _mutex_lock ((MUTEX_STRUCT*)pLock)){
417 pnLock = &apBusHandle->
nRdLock;
419 pLock = apBusHandle->
pLock;
420 pnLock = &apBusHandle->
nLock;
431 _mutex_unlock((MUTEX_STRUCT*)pLock);
ISF board support header files.
unsigned char uint8
This defines uint8 as unsigned char.
spi_master_busConfig_t gSys_SpiMasterBusConfig[]
spi_master_busHandle_t spi_master_busHandle[]
isf_status_t spi_master_adapter_init(comm_Id_t aBusId, busHandle_t *apBusHandle)
This function initializes a spi bus.
isf_status_t spi_master_adapter_read(void *apEndpointHandle, int32 offset, void *pReadBuffer, uint32 buffsize, uint32 nByteRead, spi_master_readFlags_t aFlags)
This function reads from a spi device.
uint32 comm_Id_t
This type is for a numeric channel identifier- index into an array of channels in the system...
isf_spi_master_adapter.h defines the API definitions and types for the spi master protocol adapter...
fsl_spi_master_driver.h defines structures and types for the spi master driver.
isf_status_t spi_master_adapter_release_endpoint(spi_master_Endpoint_t *apEndpoint)
This function closes a particular endpoint.
This structure defines the slave specific spi information.
isf_status_t spi_master_adapter_configure(busHandle_t *apBusHandle, spi_master_busConfig_t *apBusConfig)
This function reconfigures an already initialized bus.
unsigned long uint32
This defines uint32 as unsigned long.
isf_status_t spi_master_adapter_get_config(busHandle_t *apBusHandle, void *apBusConfig)
This function returns the current bus configuration.
spi_master_slaveInfo_t * pSlaveInfo
isf_status_t spi_master_adapter_start(busHandle_t *apBusHandle)
This function starts a bus.
isf_status_t spi_master_adapter_release_lock(busHandle_t *apBusHandle)
This function releases exclusive bus access.
void spi_hal_enable(uint32 instance)
comm_State_t spi_master_adapter_get_state(busHandle_t *apBusHandle)
This function returns the current bus state.
This structure defines a device endpoint encapsulation for spi handler.
void spi_master_init(uint32_t instance)
Initialize a SPI instance for master mode operation.
comm_Flags_t spi_master_readFlags_t
#define ISF_SPI_LOCK_DEFAULT
isf_protocol_adapter.h defines the general interface definition for the protocol adapter.
spi_status_t spi_master_transfer_async(uint32_t instance, const spi_user_config_t *device, const uint8_t *sendBuffer, uint8_t *receiveBuffer, uint16_t transferByteCount)
Perform an non-blocking SPI master mode transfer.
MUTEX_STRUCT spi_master_lock[]
The isf_util.h file contains the utility method declarations and macros.
comm_Flags_t spi_master_writeFlags_t
MUTEX_STRUCT spi_master_rdlock[]
This structure is a declaration of a BusHandle type.
spi_status_t spi_master_transfer(uint32_t instance, const spi_user_config_t *device, const uint8_t *sendBuffer, uint8_t *receiveBuffer, uint16_t transferByteCount, uint32_t timeout)
Perform a blocking SPI master mode transfer.
isf_status_t spi_master_adapter_get_endpoint(busHandle_t *apBusHandle, void *apDevice, void **apEndpointHandle)
This function creates a endpoint for a device at a specified bus address.
This structure defines the spi slave command format.
uint32 isf_duration_t
ISF time duration in microseconds.
long int32
This defines int32 as long.
void spi_master_configure_bus(uint32_t instance, const spi_user_config_t *device)
Configure the SPI port to access a device on the bus.
Main ISF header file. Contains code common to all ISF components.
isf_status_t spi_master_adapter_stop(busHandle_t *apBusHandle)
This function stops the given spi bus.
spi_master_busConfig_t busConfig
int32 isf_status_t
ISF return status type.
enum comm_State_vals comm_State_t
This enum holds an enumerated value describing the state of a channel.
isf_status_t spi_master_adapter_acquire_lock(busHandle_t *apBusHandle, isf_duration_t aTimeout)
This function locks the bus for exclusive access.
void spi_hal_disable(uint32 instance)
This structure defines the data bus handle.
isf_devmsg.h defines the API definitions and types for the Intelligent Sensing (ISF) Device Messaging...
isf_status_t spi_master_adapter_write(void *apEndpointHandle, int32 offset, void *pWriteBuffer, uint32 buffsize, uint32 nByteWrite, spi_master_writeFlags_t aFlags)
This function writes to a spi device.