//***************************************************************************** // //! SpiReadDataCont //! //! @param None //! //! @return None //! //! @brief This function processes received SPI Header and in accordance with //! it - continues reading the packet // //***************************************************************************** long SpiReadDataCont(void) { long data_to_recv; unsigned char *evnt_buff, type; //determine what type of packet we have evnt_buff = sSpiInformation.pRxPacket; data_to_recv = 0; STREAM_TO_UINT8((char *)(evnt_buff + SPI_HEADER_SIZE), HCI_PACKET_TYPE_OFFSET, type); switch(type) { case HCI_TYPE_DATA: { // We need to read the rest of data.. STREAM_TO_UINT16((char *)(evnt_buff + SPI_HEADER_SIZE), HCI_DATA_LENGTH_OFFSET, data_to_recv); if (!((HEADERS_SIZE_EVNT + data_to_recv) & 1)) { data_to_recv++; } if (data_to_recv) { SpiReadDataSynchronous(evnt_buff + 10, data_to_recv); } break; } case HCI_TYPE_EVNT: { // Calculate the rest length of the data STREAM_TO_UINT8((char *)(evnt_buff + SPI_HEADER_SIZE), HCI_EVENT_LENGTH_OFFSET, data_to_recv); data_to_recv -= 1; // Add padding byte if needed if ((HEADERS_SIZE_EVNT + data_to_recv) & 1) { data_to_recv++; } if (data_to_recv) { SpiReadDataSynchronous(evnt_buff + 10, data_to_recv); } sSpiInformation.ulSpiState = eSPI_STATE_READ_EOT; break; } } return (0); }
void SpiReadPacket(void) { int length; /* read SPI header */ SpiReadDataSynchronous(sSpiInformation.pRxPacket, SPI_HEADER_SIZE); /* parse data length */ STREAM_TO_UINT8(sSpiInformation.pRxPacket, SPI_HEADER_SIZE-1, length); /* read the remainder of the packet */ SpiReadDataSynchronous(sSpiInformation.pRxPacket + SPI_HEADER_SIZE, length); sSpiInformation.ulSpiState = eSPI_STATE_READ_EOT; }
//***************************************************************************** // //! SpiReadHeader //! //! \param buffer //! //! \return none //! //! \brief This function enter point for read flow: first we read minimal 5 //! SPI header bytes and 5 Event Data bytes // //***************************************************************************** void SpiReadHeader(void) { SpiReadDataSynchronous(sSpiInformation.pRxPacket, 10); }
void SpiReadHeader(void) { DEBUGPRINT_F("\tCC3000: SpiReadHeader\n\r"); SpiReadDataSynchronous(sSpiInformation.pRxPacket, HEADERS_SIZE_EVNT); }
void SpiReadHeader(void) { //DEBUGPRINT_F("\tCC3000: SpiReadHeader\n\r"); SpiReadDataSynchronous(sSpiInformation.pRxPacket, 10); }