#include #include #include "core/ssp/ssp.h" #define CHANNEL_BEACON 81 #define DEFAULT_SPEED R_RF_SETUP_DR_2M #define MAC_BEACON "BEACO" /*-----------------------------------------------------------------------*/ /* Transmit a byte via SPI (Platform dependent) */ /*-----------------------------------------------------------------------*/ void xmit_spi(uint8_t dat) { sspSend(0, (uint8_t*) &dat, 1); } /*-----------------------------------------------------------------------*/ /* Receive a byte from MMC via SPI (Platform dependent) */ /*-----------------------------------------------------------------------*/ uint8_t rcvr_spi (void) { uint8_t data = 0; sspReceive(0, &data, 1); return data; } #define rcvr_spi_m(dst) \ do { \ sspReceive(0, (uint8_t*)(dst), 1); \ } while(0) #define CS_LOW() gpioSetValue(RB_SPI_NRF_CS, 0) #define CS_HIGH() gpioSetValue(RB_SPI_NRF_CS, 1) #define CE_LOW() gpioSetValue(RB_NRF_CE, 0) #define CE_HIGH() gpioSetValue(RB_NRF_CE, 1) void nrf_cmd(uint8_t cmd){ xmit_spi(cmd); }; uint8_t nrf_cmd_status(uint8_t cmd){ sspSendReceive(0, &cmd, 1); return cmd; }; void nrf_write_reg(const uint8_t reg, const uint8_t val){ xmit_spi(C_W_REGISTER | reg); xmit_spi(val); }; /* uint8_t nrf_read_reg(const uint8_t reg, uint8_t val){ xmit_spi(C_R_REGISTER | reg); // do i need to read the status byte here? xmit_spi(val); return rcvr_spi(); }; */ void nrf_write_reg_long(const uint8_t reg, int len, char* data){ xmit_spi(C_W_REGISTER | reg); for(int i=0;i32 || len==0){ return 0; // no packet }; if(len>maxsize){ return -1; // packet too large }; nrf_cmd_read_long(C_R_RX_PAYLOAD,&len,pkt); CS_HIGH(); return len; };