void nrf_config_set (nrfconfig config) { int i; nrf_write_reg (R_SETUP_AW, R_SETUP_AW_5); nrf_write_reg (R_RF_CH, config->channel); for (i = 0; i < config->nrmacs; i++) { nrf_write_reg (R_RX_PW_P0 + i, config->maclen[i]); if (i == 0) { nrf_write_reg_long (R_RX_ADDR_P0, 5, config->mac0); } else if (i == 1) { nrf_write_reg_long (R_RX_ADDR_P1, 5, config->mac1); } else if (i > 1) { nrf_write_reg_long (R_RX_ADDR_P0 + i, 1, config->mac2345 + i - 2); }; }; nrf_write_reg_long (R_TX_ADDR, 5, config->txmac); nrf_write_reg (R_EN_RXADDR, (1 << config->nrmacs) - 1); }
void nrf_set_tx_mac(int maclen, const uint8_t * mac){ #ifdef SAFE assert(maclen>=1 || maclen<=5); assert(mac!=NULL); #endif nrf_write_reg_long(R_TX_ADDR,maclen,mac); };
void nrf_set_rx_mac(int pipe, int rxlen, int maclen, const uint8_t * mac){ #ifdef SAFE assert(maclen>=1 || maclen<=5); assert(rxlen>=1 || rxlen<=32); assert(pipe>=0 || pipe<=5); assert(mac!=NULL); if(pipe>1) assert(maclen==1); #endif nrf_write_reg(R_RX_PW_P0+pipe,rxlen); nrf_write_reg_long(R_RX_ADDR_P0+pipe,maclen,mac); nrf_write_reg(R_EN_RXADDR, nrf_read_reg(R_EN_RXADDR) | (1<<pipe) ); };
void nrf_set_tx_mac(int maclen, const uint8_t * mac) { nrf_write_reg_long(R_TX_ADDR,maclen,mac); };
void nrf_set_rx_mac(int pipe, int rxlen, int maclen, const uint8_t * mac) { nrf_write_reg(R_RX_PW_P0+pipe,rxlen); nrf_write_reg_long(R_RX_ADDR_P0+pipe,maclen,mac); };