uint8_t* nrf24_register::read_payload(uint8_t num_bytes, uint8_t *data, uint8_t *status){ uint8_t command = 0x61; SPI_nrf.write_pin(_CSN, 0); *status = spi_shift(command); for(uint8_t j=0;j<num_bytes;j++){ data[j] = spi_shift(0); } SPI_nrf.write_pin(_CSN, 1); return data; }
void nrf24_register::write_payload(uint8_t *data_write, uint8_t num_bytes, uint8_t *status){ uint8_t command = 0xA0; SPI_nrf.write_pin(_CSN, 0); *status = spi_shift(command); for(uint8_t j=0;j<num_bytes;j++){ spi_shift(*data_write++); } SPI_nrf.write_pin(_CSN, 1); }
uint8_t* nrf24_register::read_rw_address(uint8_t address, uint8_t* rw_address, uint8_t *status){ address &= 0x1F; SPI_nrf.write_pin(_CSN, 0); *status = spi_shift(address); for(uint8_t i = 0; i<5; i++){ *rw_address = spi_shift(0x00); rw_address++; } rw_address -= 5; SPI_nrf.write_pin(_CSN, 1); return rw_address; }
void nrf24_register::write_register(uint8_t address, uint8_t data, uint8_t *status){ address &= 0x1F; address += 0x20; SPI_nrf.write_pin(_CSN, 0); *status = spi_shift(address); SPI_nrf.spi_shift(data); SPI_nrf.write_pin(_CSN, 1); }
void nrf24_register::write_buffer(uint8_t address, uint8_t *buffer, uint8_t num_bytes, uint8_t *status){ uint8_t i = 0; address &= 0x1F; address += 0x20; SPI_nrf.write_pin(_CSN, 0); *status = spi_shift(address); for(i = 0; i<num_bytes; i++){ SPI_nrf.spi_shift(buffer[i]); } SPI_nrf.write_pin(_CSN, 1); }
void nrf24_register::set_rw_address(uint8_t address, uint8_t *data, uint8_t num_bytes, uint8_t *status){ address &= 0x1F; address += 0x20; SPI_nrf.write_pin(_CSN, 0); *status = spi_shift(address); for(uint8_t i = 0; i<num_bytes; i++){ SPI_nrf.spi_shift(*data); data++; } SPI_nrf.write_pin(_CSN, 1); }
uint8_t spi_transfer(uint8_t data) { return spi_shift(data); }