/** \brief Read one byte from a sensor register * * Read one byte from a sensor register * * \param[in] reg * Register address * \param[in] *pVal * Pointer to variable to put read out value */ void accReadReg(uint8 reg, uint8 *pVal) { CS = CS_ENABLED; WAIT_1_3US(2); spiWriteByte(reg); spiReadByte(pVal, 0xFF); CS = CS_DISABLED; }
u8 rfIsRXFIFOEmpty( void ) { u8 ucStatus; RF_CS_LOW; spiWriteByte( &pygmyRFSPI, RF_REG_FIFOSTATUS ); ucStatus = spiReadByte( &pygmyRFSPI ) & BIT0; RF_CS_HIGH; return( ucStatus ); //return( spiGetChar( &pygmyRFSPI, RF_REG_FIFOSTATUS ) & BIT0 ); }
u8 rfGetRXPayloadLen( void ) { u8 ucByte; RF_CS_LOW; spiWriteByte( &pygmyRFSPI, RF_RX_LEN ); ucByte = spiReadByte( &pygmyRFSPI ); RF_CS_HIGH; return( ucByte ); //return( spiGetChar( &pygmyRFSPI, RF_RX_LEN ) ); }
u8 rfGetStatus( void ) { u8 ucStatus; RF_CS_LOW; //pygmyRFSPI.PortCS->BRR = pygmyRFSPI.PinCS; ucStatus = spiReadByte( &pygmyRFSPI ); //pygmyRFSPI.PortCS->BSRR = pygmyRFSPI.PinCS; RF_CS_HIGH; return( ucStatus ); }
//-------------------------------------------------------------------------------------------- //-----------------------------------------RF Receive----------------------------------------- void rfRX( void ) { u8 i, ucLen, ucStatus, ucPipe, *ucBuffer, ucPayload[ 32 ]; PYGMY_WATCHDOG_REFRESH; ucBuffer = ucPayload; ucStatus = rfGetStatus(); ucPipe = ( ucStatus & 0x0E ) >> 1; #ifdef __PYGMY_DEBUG_SOCKETS print( COM3, "\rRX IRQ" ); #endif // __PYGMY_DEBUG_SOCKETS if( ucStatus & BIT6 ){ // Payload Received #ifdef __PYGMY_DEBUG_SOCKETS print( COM3, "\rReceived Payload" ); #endif // __PYGMY_DEBUG_SOCKETS if( ucPipe == 7 ){ #ifdef __PYGMY_DEBUG_SOCKETS print( COM3, "\rPipe Error" ); #endif // __PYGMY_DEBUG_SOCKETS return; } // if ucLen = rfGetRXPayloadLen( ); // Payloads are a maximum of 32 bytes #ifdef __PYGMY_DEBUG_SOCKETS print( COM3, "\r%d Bytes Received\r", ucLen ); #endif // __PYGMY_DEBUG_SOCKETS // Now load payload into buffer RF_CS_LOW; spiWriteByte( &pygmyRFSPI, RF_RX_PAYLOAD ); for( i = 0; i < ucLen; i++ ){ ucBuffer[ i ] = spiReadByte( &pygmyRFSPI ); //delay( 1 ); #ifdef __PYGMY_DEBUG_SOCKETS print( COM3, " %X", ucBuffer[ i ] ); //print( COM3, "\rSending Payload" ); #endif // __PYGMY_DEBUG_SOCKETS } // if RF_CS_HIGH; //spiGetBuffer( &pygmyRFSPI, RF_RX_PAYLOAD, ucBuffer, ucLen ); #ifdef __PYGMY_DEBUG_SOCKETS print( COM3, "\rPassing to Handler" ); #endif // __PYGMY_DEBUG_SOCKETS #ifdef __PYGMYSOCKETS socketHandler( ucBuffer );//&pygmyPacket ); #endif rfClearStatus(); } //if if( ucStatus & BIT5 ){ rfSetRX(); } // if }
u8 rfGetSignalQuality( void ) { u8 ucSignalQuality; //spiPutChar( &pygmyRFSPI, RF_READ|RF_REG_OBSERVETX, //RF_CS_LOW; pygmyRFSPI.PortCS->BRR = pygmyRFSPI.PinCS; spiWriteByte( &pygmyRFSPI, RF_READ|RF_REG_OBSERVETX ); ucSignalQuality = 15 - ( RF_REG_OBSERVETX_ARCCNT & spiReadByte( &pygmyRFSPI ) ); pygmyRFSPI.PortCS->BSRR = pygmyRFSPI.PinCS; //RF_CS_HIGH; rfClearStatus(); return( ucSignalQuality ); }