[RF69] Synced parameters of all FSK modules

pull/163/head
jgromes 2020-07-06 11:13:24 +02:00
rodzic 58db5d1661
commit 59434cb025
3 zmienionych plików z 35 dodań i 8 usunięć

Wyświetl plik

@ -58,7 +58,8 @@ void setup() {
// frequency deviation: 60.0 kHz
// Rx bandwidth: 250.0 kHz
// output power: 17 dBm
state = radio2.begin(868.0, 300.0, 60.0, 250.0, 17);
// preamble length: 32 bits
state = radio2.begin(868.0, 300.0, 60.0, 250.0, 17, 32);
if (state == ERR_NONE) {
Serial.println(F("success!"));
} else {

Wyświetl plik

@ -5,7 +5,7 @@ RF69::RF69(Module* module) : PhysicalLayer(RF69_FREQUENCY_STEP_SIZE, RF69_MAX_PA
_mod = module;
}
int16_t RF69::begin(float freq, float br, float freqDev, float rxBw, int8_t power) {
int16_t RF69::begin(float freq, float br, float freqDev, float rxBw, int8_t power, uint8_t preambleLen) {
// set module properties
_mod->init(RADIOLIB_USE_SPI);
Module::pinMode(_mod->getIrq(), INPUT);
@ -71,21 +71,25 @@ int16_t RF69::begin(float freq, float br, float freqDev, float rxBw, int8_t powe
state = setOutputPower(power);
RADIOLIB_ASSERT(state);
// configure default preamble length
state = setPreambleLength(preambleLen);
RADIOLIB_ASSERT(state);
// set default packet length mode
state = variablePacketLengthMode();
RADIOLIB_ASSERT(state);
// default sync word values 0x2D01 is the same as the default in LowPowerLab RFM69 library
uint8_t syncWord[] = {0x2D, 0x01};
// set default sync word
uint8_t syncWord[] = {0x12, 0xAD};
state = setSyncWord(syncWord, sizeof(syncWord));
RADIOLIB_ASSERT(state);
// set default data shaping
state = setDataShaping(0);
state = setDataShaping(RADIOLIB_SHAPING_NONE);
RADIOLIB_ASSERT(state);
// set default encoding
state = setEncoding(0);
state = setEncoding(RADIOLIB_ENCODING_NRZ);
RADIOLIB_ASSERT(state);
// set CRC on by default
@ -580,6 +584,17 @@ int16_t RF69::setSyncWord(uint8_t* syncWord, size_t len, uint8_t maxErrBits) {
return(ERR_NONE);
}
int16_t RF69::setPreambleLength(uint8_t preambleLen) {
// RF69 configures preamble length in bytes
if(preambleLen % 8 != 0) {
return(ERR_INVALID_PREAMBLE_LENGTH);
}
uint8_t preLenBytes = preambleLen / 8;
_mod->SPIwriteRegister(RF69_REG_PREAMBLE_MSB, 0x00);
return(_mod->SPIsetRegValue(RF69_REG_PREAMBLE_LSB, preLenBytes));
}
int16_t RF69::setNodeAddress(uint8_t nodeAddr) {
// enable address filtering (node only)
int16_t state = _mod->SPIsetRegValue(RF69_REG_PACKET_CONFIG_1, RF69_ADDRESS_FILTERING_NODE, 2, 1);

Wyświetl plik

@ -457,11 +457,13 @@ class RF69: public PhysicalLayer {
\param rxBw Receiver bandwidth in kHz. Defaults to 125.0 kHz.
\param power Output power in dBm. Defaults to 13 dBm.
\param power Output power in dBm. Defaults to 10 dBm.
\param preambleLen Preamble Length in bits. Defaults to 16 bits.
\returns \ref status_codes
*/
int16_t begin(float freq = 434.0, float br = 48.0, float freqDev = 50.0, float rxBw = 125.0, int8_t power = 13);
int16_t begin(float freq = 434.0, float br = 48.0, float freqDev = 50.0, float rxBw = 125.0, int8_t power = 10, uint8_t preambleLen = 16);
/*!
\brief Reset method. Will reset the chip to the default state using RST pin.
@ -670,6 +672,15 @@ class RF69: public PhysicalLayer {
*/
int16_t setSyncWord(uint8_t* syncWord, size_t len, uint8_t maxErrBits = 0);
/*!
\brief Sets preamble length.
\param preambleLen Preamble length to be set (in bits), allowed values: 16, 24, 32, 48, 64, 96, 128 and 192.
\returns \ref status_codes
*/
int16_t setPreambleLength(uint8_t preambleLen);
/*!
\brief Sets node address. Calling this method will also enable address filtering for node address only.