| 183 | } |
| 184 | |
| 185 | void RFM69::setMode(uint8_t newMode) { |
| 186 | if (newMode == _mode) |
| 187 | return; |
| 188 | |
| 189 | switch (newMode) { |
| 190 | case RF69_MODE_TX: |
| 191 | writeReg(REG_OPMODE, (readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_TRANSMITTER); |
| 192 | if (_isRFM69HW) setHighPowerRegs(true); |
| 193 | break; |
| 194 | case RF69_MODE_RX: |
| 195 | writeReg(REG_OPMODE, (readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_RECEIVER); |
| 196 | if (_isRFM69HW) setHighPowerRegs(false); |
| 197 | break; |
| 198 | case RF69_MODE_SYNTH: |
| 199 | writeReg(REG_OPMODE, (readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_SYNTHESIZER); |
| 200 | break; |
| 201 | case RF69_MODE_STANDBY: |
| 202 | writeReg(REG_OPMODE, (readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_STANDBY); |
| 203 | break; |
| 204 | case RF69_MODE_SLEEP: |
| 205 | writeReg(REG_OPMODE, (readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_SLEEP); |
| 206 | break; |
| 207 | default: |
| 208 | return; |
| 209 | } |
| 210 | |
| 211 | // we are using packet mode, so this check is not really needed |
| 212 | // but waiting for mode ready is necessary when going from sleep because the FIFO may not be immediately available from previous mode |
| 213 | while (_mode == RF69_MODE_SLEEP && (readReg(REG_IRQFLAGS1) & RF_IRQFLAGS1_MODEREADY) == 0x00); // wait for ModeReady |
| 214 | |
| 215 | _mode = newMode; |
| 216 | } |
| 217 | |
| 218 | // put transceiver in sleep mode to save battery - to wake or resume receiving just call receiveDone() |
| 219 | void RFM69::sleep() { |
nothing calls this directly
no outgoing calls
no test coverage detected