MCPcopy Create free account
hub / github.com/LowPowerLab/RFM69 / setMode

Method setMode

RFM69.cpp:185–216  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

183}
184
185void 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()
219void RFM69::sleep() {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected