Fix code, now that we have sspSendReceive
This commit is contained in:
parent
1c2846734c
commit
fc7b630902
|
@ -32,5 +32,5 @@ $(LIBFILE): $(OBJS)
|
||||||
clean:
|
clean:
|
||||||
rm -f $(OBJS) $(LIBFILE)
|
rm -f $(OBJS) $(LIBFILE)
|
||||||
|
|
||||||
nrf24l01p.o: nrf24l01p.h
|
nrf24l01p.o: nrf24l01p.c nrf24l01p.h
|
||||||
|
|
||||||
|
|
|
@ -7,69 +7,58 @@
|
||||||
#define MAC_BEACON "BEACO"
|
#define MAC_BEACON "BEACO"
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
/* Transmit a byte via SPI (Platform dependent) */
|
/* Transmit a byte via SPI */
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
void xmit_spi(uint8_t dat) {
|
inline void xmit_spi(uint8_t dat) {
|
||||||
sspSend(0, (uint8_t*) &dat, 1);
|
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_LOW() gpioSetValue(RB_SPI_NRF_CS, 0)
|
||||||
#define CS_HIGH() gpioSetValue(RB_SPI_NRF_CS, 1)
|
#define CS_HIGH() gpioSetValue(RB_SPI_NRF_CS, 1)
|
||||||
#define CE_LOW() gpioSetValue(RB_NRF_CE, 0)
|
#define CE_LOW() gpioSetValue(RB_NRF_CE, 0)
|
||||||
#define CE_HIGH() gpioSetValue(RB_NRF_CE, 1)
|
#define CE_HIGH() gpioSetValue(RB_NRF_CE, 1)
|
||||||
|
|
||||||
void nrf_cmd(uint8_t cmd){
|
void nrf_cmd(uint8_t cmd){
|
||||||
|
CS_LOW();
|
||||||
xmit_spi(cmd);
|
xmit_spi(cmd);
|
||||||
|
CS_HIGH();
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t nrf_cmd_status(uint8_t cmd){
|
uint8_t nrf_cmd_status(uint8_t cmd){
|
||||||
|
CS_LOW();
|
||||||
sspSendReceive(0, &cmd, 1);
|
sspSendReceive(0, &cmd, 1);
|
||||||
return cmd;
|
return cmd;
|
||||||
|
CS_HIGH();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void nrf_cmd_rw_long(uint8_t* data, int len){
|
||||||
|
CS_LOW();
|
||||||
|
sspSendReceive(0,data,len);
|
||||||
|
CS_HIGH();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
void nrf_write_reg(const uint8_t reg, const uint8_t val){
|
void nrf_write_reg(const uint8_t reg, const uint8_t val){
|
||||||
|
CS_LOW();
|
||||||
xmit_spi(C_W_REGISTER | reg);
|
xmit_spi(C_W_REGISTER | reg);
|
||||||
xmit_spi(val);
|
xmit_spi(val);
|
||||||
|
CS_HIGH();
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
void nrf_read_long(const uint8_t reg, int len, uint8_t* data){
|
||||||
uint8_t nrf_read_reg(const uint8_t reg, uint8_t val){
|
CS_LOW();
|
||||||
xmit_spi(C_R_REGISTER | reg);
|
xmit_spi(reg);
|
||||||
// do i need to read the status byte here?
|
for(int i=0;i<len;i++)
|
||||||
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;i<len;i++){
|
|
||||||
xmit_spi(data[i]);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
//XXX: Why is len a pointer?
|
|
||||||
void nrf_cmd_read_long(const uint8_t cmd, int *len, char* data){
|
|
||||||
data[0] = 0xFF;
|
|
||||||
for(int i=1;i<*len;i++)
|
|
||||||
data[i] = 0x00;
|
data[i] = 0x00;
|
||||||
sspSendReceive(0,data,*len);
|
sspSendReceive(0,data,len);
|
||||||
|
CS_HIGH();
|
||||||
|
};
|
||||||
|
|
||||||
|
void nrf_write_reg_long(const uint8_t reg, int len, uint8_t* data){
|
||||||
|
CS_LOW();
|
||||||
|
xmit_spi(C_W_REGISTER | reg);
|
||||||
|
sspSend(0,data,len);
|
||||||
|
CS_HIGH();
|
||||||
};
|
};
|
||||||
|
|
||||||
void nrf_init() {
|
void nrf_init() {
|
||||||
|
@ -101,26 +90,24 @@ void nrf_init() {
|
||||||
);
|
);
|
||||||
|
|
||||||
nrf_write_reg(R_RX_PW_P0,16);
|
nrf_write_reg(R_RX_PW_P0,16);
|
||||||
nrf_write_reg_long(R_RX_ADDR_P0,5,"\x1\x2\x3\x2\1");
|
nrf_write_reg_long(R_RX_ADDR_P0,5,(uint8_t*)"\x1\x2\x3\x2\1");
|
||||||
|
|
||||||
// nrf_write_reg(R_RX_PW_P1,16);
|
// nrf_write_reg(R_RX_PW_P1,16);
|
||||||
// nrf_write_reg_long(R_RX_ADDR_P1,5,"R0KET");
|
// nrf_write_reg_long(R_RX_ADDR_P1,5,"R0KET");
|
||||||
|
|
||||||
// OpenBeacon transmit address
|
// OpenBeacon transmit address
|
||||||
nrf_write_reg_long(R_TX_ADDR,5,MAC_BEACON);
|
nrf_write_reg_long(R_TX_ADDR,5,(uint8_t*)MAC_BEACON);
|
||||||
|
|
||||||
// Set speed / strength
|
// Set speed / strength
|
||||||
nrf_write_reg(R_RF_SETUP,DEFAULT_SPEED|R_RF_SETUP_RF_PWR_3);
|
nrf_write_reg(R_RF_SETUP,DEFAULT_SPEED|R_RF_SETUP_RF_PWR_3);
|
||||||
|
|
||||||
// XXX: or write R_CONFIG last?
|
// XXX: or write R_CONFIG last?
|
||||||
CS_HIGH();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int nrf_rcv_pkt_time(int maxtime, int maxsize, char * pkt){
|
int nrf_rcv_pkt_time(int maxtime, int maxsize, uint8_t * pkt){
|
||||||
char buf;
|
char buf;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
CS_LOW();
|
|
||||||
nrf_write_reg(R_CONFIG,
|
nrf_write_reg(R_CONFIG,
|
||||||
R_CONFIG_PRIM_RX| // Receive mode
|
R_CONFIG_PRIM_RX| // Receive mode
|
||||||
R_CONFIG_PWR_UP| // Power on
|
R_CONFIG_PWR_UP| // Power on
|
||||||
|
@ -130,7 +117,7 @@ int nrf_rcv_pkt_time(int maxtime, int maxsize, char * pkt){
|
||||||
delayms(maxtime); // XXX: check interrupt?
|
delayms(maxtime); // XXX: check interrupt?
|
||||||
CE_LOW();
|
CE_LOW();
|
||||||
len=1;
|
len=1;
|
||||||
nrf_cmd_read_long(C_R_RX_PL_WID,&len,&buf);
|
nrf_read_long(C_R_RX_PL_WID,len,&buf);
|
||||||
len=buf;
|
len=buf;
|
||||||
if(len>32 || len==0){
|
if(len>32 || len==0){
|
||||||
return 0; // no packet
|
return 0; // no packet
|
||||||
|
@ -138,7 +125,7 @@ int nrf_rcv_pkt_time(int maxtime, int maxsize, char * pkt){
|
||||||
if(len>maxsize){
|
if(len>maxsize){
|
||||||
return -1; // packet too large
|
return -1; // packet too large
|
||||||
};
|
};
|
||||||
nrf_cmd_read_long(C_R_RX_PAYLOAD,&len,pkt);
|
nrf_read_long(C_R_RX_PAYLOAD,len,pkt);
|
||||||
CS_HIGH();
|
CS_HIGH();
|
||||||
return len;
|
return len;
|
||||||
};
|
};
|
||||||
|
|
|
@ -93,13 +93,15 @@
|
||||||
#define R_RF_SETUP_DR_250K 0x20
|
#define R_RF_SETUP_DR_250K 0x20
|
||||||
|
|
||||||
/* exported functions */
|
/* exported functions */
|
||||||
int nrf_rcv_pkt_time(int maxtime, int maxsize, char * pkt);
|
int nrf_rcv_pkt_time(int maxtime, int maxsize, uint8_t * pkt);
|
||||||
void nrf_init() ;
|
void nrf_init() ;
|
||||||
void nrf_cmd_read_long(const uint8_t cmd, int *len, char* data);
|
|
||||||
void nrf_write_reg_long(const uint8_t reg, int len, char* data);
|
|
||||||
void nrf_write_reg(const uint8_t reg, const uint8_t val);
|
|
||||||
uint8_t nrf_cmd_status(uint8_t cmd);
|
|
||||||
void nrf_cmd(uint8_t cmd);
|
void nrf_cmd(uint8_t cmd);
|
||||||
|
uint8_t nrf_cmd_status(uint8_t cmd);
|
||||||
|
void nrf_cmd_rw_long(uint8_t* data, int len);
|
||||||
|
void nrf_read_long(const uint8_t reg, int len, uint8_t* data);
|
||||||
|
void nrf_write_reg(const uint8_t reg, const uint8_t val);
|
||||||
|
void nrf_write_reg_long(const uint8_t reg, int len, uint8_t* data);
|
||||||
|
|
||||||
/* END */
|
/* END */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue