Skip to content
Snippets Groups Projects
Commit c978c51d authored by Joakim Nohlgård's avatar Joakim Nohlgård
Browse files

drivers/ng_at86rf2xx: Refactor set_freq implementation for 212B

Uses BPSK-40 for all frequencies.
parent 95a9bd90
No related branches found
No related tags found
No related merge requests found
...@@ -138,38 +138,38 @@ ng_at86rf2xx_freq_t ng_at86rf2xx_get_freq(ng_at86rf2xx_t *dev) ...@@ -138,38 +138,38 @@ ng_at86rf2xx_freq_t ng_at86rf2xx_get_freq(ng_at86rf2xx_t *dev)
void ng_at86rf2xx_set_freq(ng_at86rf2xx_t *dev, ng_at86rf2xx_freq_t freq) void ng_at86rf2xx_set_freq(ng_at86rf2xx_t *dev, ng_at86rf2xx_freq_t freq)
{ {
uint8_t tmp1 = 0, tmp2 = 0; uint8_t trx_ctrl2 = 0, rf_ctrl0 = 0;
tmp1 = ng_at86rf2xx_reg_read(dev, NG_AT86RF2XX_REG__TRX_CTRL_2); trx_ctrl2 = ng_at86rf2xx_reg_read(dev, NG_AT86RF2XX_REG__TRX_CTRL_2);
tmp1 &= ~(NG_AT86RF2XX_TRX_CTRL_2_MASK__FREQ_MODE); trx_ctrl2 &= ~(NG_AT86RF2XX_TRX_CTRL_2_MASK__FREQ_MODE);
tmp2 = ng_at86rf2xx_reg_read(dev, NG_AT86RF2XX_REG__RF_CTRL_0); rf_ctrl0 = ng_at86rf2xx_reg_read(dev, NG_AT86RF2XX_REG__RF_CTRL_0);
/* Erase previous conf for GC_TX_OFFS */ /* Erase previous conf for GC_TX_OFFS */
tmp2 &= ~NG_AT86RF2XX_RF_CTRL_0_MASK__GC_TX_OFFS; rf_ctrl0 &= ~NG_AT86RF2XX_RF_CTRL_0_MASK__GC_TX_OFFS;
if (freq == NG_AT86RF2XX_FREQ_915MHZ) { trx_ctrl2 |= NG_AT86RF2XX_TRX_CTRL_2_MASK__SUB_MODE;
dev->freq = NG_AT86RF2XX_FREQ_915MHZ; rf_ctrl0 |= NG_AT86RF2XX_RF_CTRL_0_GC_TX_OFFS__2DB;
/* settings used by Linux 4.0rc at86rf212b driver - BPSK-40*/
tmp1 |= NG_AT86RF2XX_TRX_CTRL_2_MASK__SUB_MODE switch(freq) {
| NG_AT86RF2XX_TRX_CTRL_2_MASK__OQPSK_SCRAM_EN; case NG_AT86RF2XX_FREQ_915MHZ:
tmp2 |= NG_AT86RF2XX_RF_CTRL_0_GC_TX_OFFS__2DB; if (dev->chan == 0) {
ng_at86rf2xx_set_chan(dev,NG_AT86RF2XX_DEFAULT_CHANNEL);
if (dev->chan == 0) { } else {
ng_at86rf2xx_set_chan(dev,NG_AT86RF2XX_DEFAULT_CHANNEL); ng_at86rf2xx_set_chan(dev,dev->chan);
} else { }
ng_at86rf2xx_set_chan(dev,dev->chan); break;
}
} else if (freq == NG_AT86RF2XX_FREQ_868MHZ) { case NG_AT86RF2XX_FREQ_868MHZ:
dev->freq = NG_AT86RF2XX_FREQ_868MHZ; /* Channel = 0 for 868MHz means 868.3MHz, only one available */
/* OQPSK-SIN-RC-100 IEEE802.15.4 for 868,3MHz */ ng_at86rf2xx_set_chan(dev,0x00);
tmp1 |= NG_AT86RF2XX_TRX_CTRL_2_MASK__BPSK_OQPSK; break;
tmp2 |= NG_AT86RF2XX_RF_CTRL_0_GC_TX_OFFS__1DB;
default:
/* Channel = 0 for 868MHz means 868.3MHz, only one available */ DEBUG("ng_at86rf2xx: Trying to set unknown frequency 0x%lx\n",
ng_at86rf2xx_set_chan(dev,0x00); (unsigned long) freq);
} else { return;
return;
} }
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__TRX_CTRL_2, tmp1); dev->freq = freq;
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__RF_CTRL_0, tmp2); ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__TRX_CTRL_2, trx_ctrl2);
ng_at86rf2xx_reg_write(dev, NG_AT86RF2XX_REG__RF_CTRL_0, rf_ctrl0);
} }
#endif #endif
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment