rdz_ttgo_sonde/RX_FSK/src/DecoderBase.cpp

52 wiersze
1.5 KiB
C++

#include "DecoderBase.h"
#include "SX1278FSK.h"
#include "Sonde.h"
#define DECODERBASE_DEBUG 0
#if DECODERBASE_DEBUG
#define DBG(x) x
#else
#define DBG(x)
#endif
int DecoderBase::setup(decoderSetupCfg &setupcfg, uint16_t agcbw, uint16_t rxbw) {
if(sx1278.setFSK()!=0) {
DBG(Serial.println("Setting FSK mode FAILED"));
return 1;
}
if(sx1278.setBitrate(setupcfg.bitrate)!=0) {
DBG(Serial.println("Setting bitrate FAILED"));
return 1;
}
#if DECODERBASE_DEBUG
float br = sx1278.getBitrate();
Serial.print("Exact bitrate is ");
Serial.println(br);
#endif
if(sx1278.setAFCBandwidth(agcbw)!=0) {
DBG(Serial.printf("Setting AFC bandwidth %d Hz FAILED", agcbw));
return 1;
}
if(sx1278.setRxBandwidth(rxbw)!=0) {
DBG(Serial.printf("Setting RX bandwidth to %d Hz FAILED", rxbw));
return 1;
}
if(sx1278.setRxConf(setupcfg.rx_cfg)!=0) {
DBG(Serial.println("Setting RX Config FAILED"));
return 1;
}
if(sx1278.setSyncConf(setupcfg.sync_cfg, setupcfg.sync_len, setupcfg.sync_data)!=0) {
DBG(Serial.println("Setting SYNC Config FAILED"));
return 1;
}
if(sx1278.setPreambleDetect(setupcfg.preamble_cfg)!=0) {
DBG(Serial.println("Setting PreambleDetect FAILED"));
return 1;
}
return 0;
}