add more comments

This commit is contained in:
LowPowerLab 2015-05-19 15:08:41 -04:00
parent 8873034e9c
commit 4b82e285b0
1 changed files with 17 additions and 5 deletions

View File

@ -168,16 +168,19 @@ void RFM69::setMode(uint8_t newMode)
_mode = newMode; _mode = newMode;
} }
//put transceiver in sleep mode to save battery - to wake or resume receiving just call receiveDone()
void RFM69::sleep() { void RFM69::sleep() {
setMode(RF69_MODE_SLEEP); setMode(RF69_MODE_SLEEP);
} }
//set this node's address
void RFM69::setAddress(uint8_t addr) void RFM69::setAddress(uint8_t addr)
{ {
_address = addr; _address = addr;
writeReg(REG_NODEADRS, _address); writeReg(REG_NODEADRS, _address);
} }
//set this node's network id
void RFM69::setNetwork(uint8_t networkID) void RFM69::setNetwork(uint8_t networkID)
{ {
writeReg(REG_SYNCVALUE2, networkID); writeReg(REG_SYNCVALUE2, networkID);
@ -263,6 +266,7 @@ void RFM69::sendACK(const void* buffer, uint8_t bufferSize) {
RSSI = _RSSI; // restore payload RSSI RSSI = _RSSI; // restore payload RSSI
} }
// internal function
void RFM69::sendFrame(uint8_t toAddress, const void* buffer, uint8_t bufferSize, bool requestACK, bool sendACK) void RFM69::sendFrame(uint8_t toAddress, const void* buffer, uint8_t bufferSize, bool requestACK, bool sendACK)
{ {
setMode(RF69_MODE_STANDBY); // turn off receiver to prevent reception while filling fifo setMode(RF69_MODE_STANDBY); // turn off receiver to prevent reception while filling fifo
@ -297,6 +301,7 @@ void RFM69::sendFrame(uint8_t toAddress, const void* buffer, uint8_t bufferSize,
setMode(RF69_MODE_STANDBY); setMode(RF69_MODE_STANDBY);
} }
// internal function - interrupt gets called when a packet is received
void RFM69::interruptHandler() { void RFM69::interruptHandler() {
//pinMode(4, OUTPUT); //pinMode(4, OUTPUT);
//digitalWrite(4, 1); //digitalWrite(4, 1);
@ -338,8 +343,10 @@ void RFM69::interruptHandler() {
//digitalWrite(4, 0); //digitalWrite(4, 0);
} }
// internal function
void RFM69::isr0() { selfPointer->interruptHandler(); } void RFM69::isr0() { selfPointer->interruptHandler(); }
// internal function
void RFM69::receiveBegin() { void RFM69::receiveBegin() {
DATALEN = 0; DATALEN = 0;
SENDERID = 0; SENDERID = 0;
@ -354,6 +361,7 @@ void RFM69::receiveBegin() {
setMode(RF69_MODE_RX); setMode(RF69_MODE_RX);
} }
// checks if a packet was received and/or puts transceiver in receive (ie RX or listen) mode
bool RFM69::receiveDone() { bool RFM69::receiveDone() {
//ATOMIC_BLOCK(ATOMIC_FORCEON) //ATOMIC_BLOCK(ATOMIC_FORCEON)
//{ //{
@ -389,6 +397,7 @@ void RFM69::encrypt(const char* key) {
writeReg(REG_PACKETCONFIG2, (readReg(REG_PACKETCONFIG2) & 0xFE) | (key ? 1 : 0)); writeReg(REG_PACKETCONFIG2, (readReg(REG_PACKETCONFIG2) & 0xFE) | (key ? 1 : 0));
} }
// get the received signal strength indicator (RSSI)
int16_t RFM69::readRSSI(bool forceTrigger) { int16_t RFM69::readRSSI(bool forceTrigger) {
int16_t rssi = 0; int16_t rssi = 0;
if (forceTrigger) if (forceTrigger)
@ -419,7 +428,7 @@ void RFM69::writeReg(uint8_t addr, uint8_t value)
unselect(); unselect();
} }
// select the transceiver // select the RFM69 transceiver (save SPI settings, set CS low)
void RFM69::select() { void RFM69::select() {
noInterrupts(); noInterrupts();
// save current SPI settings // save current SPI settings
@ -432,7 +441,7 @@ void RFM69::select() {
digitalWrite(_slaveSelectPin, LOW); digitalWrite(_slaveSelectPin, LOW);
} }
// UNselect the transceiver chip // unselect the RFM69 transceiver (set CS high, restore SPI settings)
void RFM69::unselect() { void RFM69::unselect() {
digitalWrite(_slaveSelectPin, HIGH); digitalWrite(_slaveSelectPin, HIGH);
// restore SPI settings to what they were before talking to RFM69 // restore SPI settings to what they were before talking to RFM69
@ -441,13 +450,14 @@ void RFM69::unselect() {
interrupts(); interrupts();
} }
// ON = disable filtering to capture all frames on network // true = disable filtering to capture all frames on network
// OFF = enable node/broadcast filtering to capture only frames sent to this/broadcast address // false = enable node/broadcast filtering to capture only frames sent to this/broadcast address
void RFM69::promiscuous(bool onOff) { void RFM69::promiscuous(bool onOff) {
_promiscuousMode = onOff; _promiscuousMode = onOff;
//writeReg(REG_PACKETCONFIG1, (readReg(REG_PACKETCONFIG1) & 0xF9) | (onOff ? RF_PACKET1_ADRSFILTERING_OFF : RF_PACKET1_ADRSFILTERING_NODEBROADCAST)); //writeReg(REG_PACKETCONFIG1, (readReg(REG_PACKETCONFIG1) & 0xF9) | (onOff ? RF_PACKET1_ADRSFILTERING_OFF : RF_PACKET1_ADRSFILTERING_NODEBROADCAST));
} }
// for RFM69HW only: you must call setHighPower(true) after initialize() or else transmission won't work
void RFM69::setHighPower(bool onOff) { void RFM69::setHighPower(bool onOff) {
_isRFM69HW = onOff; _isRFM69HW = onOff;
writeReg(REG_OCP, _isRFM69HW ? RF_OCP_OFF : RF_OCP_ON); writeReg(REG_OCP, _isRFM69HW ? RF_OCP_OFF : RF_OCP_ON);
@ -457,18 +467,20 @@ void RFM69::setHighPower(bool onOff) {
writeReg(REG_PALEVEL, RF_PALEVEL_PA0_ON | RF_PALEVEL_PA1_OFF | RF_PALEVEL_PA2_OFF | _powerLevel); // enable P0 only writeReg(REG_PALEVEL, RF_PALEVEL_PA0_ON | RF_PALEVEL_PA1_OFF | RF_PALEVEL_PA2_OFF | _powerLevel); // enable P0 only
} }
// internal function
void RFM69::setHighPowerRegs(bool onOff) { void RFM69::setHighPowerRegs(bool onOff) {
writeReg(REG_TESTPA1, onOff ? 0x5D : 0x55); writeReg(REG_TESTPA1, onOff ? 0x5D : 0x55);
writeReg(REG_TESTPA2, onOff ? 0x7C : 0x70); writeReg(REG_TESTPA2, onOff ? 0x7C : 0x70);
} }
// set the slave select (CS) pin
void RFM69::setCS(uint8_t newSPISlaveSelect) { void RFM69::setCS(uint8_t newSPISlaveSelect) {
_slaveSelectPin = newSPISlaveSelect; _slaveSelectPin = newSPISlaveSelect;
digitalWrite(_slaveSelectPin, HIGH); digitalWrite(_slaveSelectPin, HIGH);
pinMode(_slaveSelectPin, OUTPUT); pinMode(_slaveSelectPin, OUTPUT);
} }
// for debugging // Serial.print all the RFM69 register values
void RFM69::readAllRegs() void RFM69::readAllRegs()
{ {
uint8_t regVal; uint8_t regVal;