Exemple #1
0
unsigned char NRFLib::send_success(void) {
	unsigned char status = SPI_Read(STATUS);

	// if sending successful (TX_DS) or max retries exceeded (MAX_RT).
	if (status & TX_DS) {
		SPI_RW_Reg(WRITE_REG+STATUS, status);
		return TX_SUCCESS;
	} else if (status & MAX_RT) {
		SPI_RW_Reg(WRITE_REG+STATUS, status);
		flushTX();
		return TX_MAX_RETRIES;
	} else {
		status = SPI_Read(FIFO_STATUS);
		if (status & TX_EMPTY) {
			return TX_FIFO_EMPTY;
		} else {
			return TX_SENDING;
		}
	}

}
void nRF24L01p::init(){
	flushRX();
	flushTX();
	dynamicPayload(P0|P1);
	feature(DPL|DYN_ACK);
	writeReg(SETUP_RETR,0x2F);
	writeReg(STATUS,0x70);
	powerUp();
	if(_prim_rx && _prim_tx){
		enableRX(P1|P0);
		primPRX();
		ceHigh();
	}else if(_prim_rx && !_prim_tx){
		enableRX(P1);
		primPRX();
		ceHigh();
	}else if(!_prim_rx && _prim_tx){
		enableRX(P0);
		primPTX();
	}
	_init=true;
}