mirror of
https://github.com/Genaker/LoraSA.git
synced 2026-08-07 09:22:46 +02:00
Initial support for additional Radio Module SX1262
This commit is contained in:
@@ -141,10 +141,13 @@ void sendBTData(float heading, float rssi)
|
||||
|
||||
#include <bus.h>
|
||||
#include <heading.h>
|
||||
#include <radio.h>
|
||||
|
||||
DroneHeading droneHeading;
|
||||
Compass *compass = NULL;
|
||||
|
||||
RadioModule *radio2;
|
||||
|
||||
#define BT_SCAN_DELAY 60 * 1 * 1000
|
||||
#define WF_SCAN_DELAY 60 * 2 * 1000
|
||||
long noDevicesMillis = 0, cycleCnt = 0;
|
||||
@@ -942,6 +945,25 @@ void init_radio()
|
||||
setFrequency(CONF_FREQ_BEGIN);
|
||||
|
||||
delay(100);
|
||||
|
||||
if (config.radio2.enabled && config.radio2.module.equalsIgnoreCase("SX1262"))
|
||||
{
|
||||
radio2 = new SX1262Module(config.radio2);
|
||||
state = radio2->beginScan(CONF_FREQ_BEGIN, BANDWIDTH, RADIOLIB_SHAPING_NONE);
|
||||
if (state == RADIOLIB_ERR_NONE)
|
||||
{
|
||||
both.println("Initialized additional module OK");
|
||||
radio2->setRxBandwidth(BANDWIDTH);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.printf("Error initializing additional module: %d\n", state);
|
||||
if (state == RADIOLIB_ERR_CHIP_NOT_FOUND)
|
||||
{
|
||||
Serial.println("Radio2: CHIP NOT FOUND");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct frequency_scan_result
|
||||
@@ -973,12 +995,19 @@ void eventListenerForReport(void *arg, Event &e)
|
||||
frequency_scan_result.readings_sz = frequency_scan_result.dump.sz + 1;
|
||||
uint32_t *f = new uint32_t[frequency_scan_result.readings_sz];
|
||||
int16_t *r = new int16_t[frequency_scan_result.readings_sz];
|
||||
int16_t *r2 = radio2 ? new int16_t[frequency_scan_result.readings_sz] : NULL;
|
||||
|
||||
if (old_sz > 0)
|
||||
{
|
||||
memcpy(f, frequency_scan_result.dump.freqs_khz,
|
||||
old_sz * sizeof(uint32_t));
|
||||
memcpy(r, frequency_scan_result.dump.rssis, old_sz * sizeof(int16_t));
|
||||
if (radio2)
|
||||
{
|
||||
memcpy(r2, frequency_scan_result.dump.rssis2,
|
||||
old_sz * sizeof(int16_t));
|
||||
delete[] frequency_scan_result.dump.rssis2;
|
||||
}
|
||||
|
||||
delete[] frequency_scan_result.dump.freqs_khz;
|
||||
delete[] frequency_scan_result.dump.rssis;
|
||||
@@ -986,12 +1015,16 @@ void eventListenerForReport(void *arg, Event &e)
|
||||
|
||||
frequency_scan_result.dump.freqs_khz = f;
|
||||
frequency_scan_result.dump.rssis = r;
|
||||
frequency_scan_result.dump.rssis2 = r2;
|
||||
}
|
||||
|
||||
frequency_scan_result.dump.freqs_khz[frequency_scan_result.dump.sz] =
|
||||
e.detected.freq * 1000; // convert to kHz
|
||||
frequency_scan_result.dump.rssis[frequency_scan_result.dump.sz] =
|
||||
max(e.detected.rssi, -999.0f);
|
||||
if (radio2)
|
||||
frequency_scan_result.dump.rssis2[frequency_scan_result.dump.sz] =
|
||||
max(e.detected.rssi2, -999.0f);
|
||||
frequency_scan_result.dump.sz++;
|
||||
|
||||
if (e.epoch != frequency_scan_result.last_epoch ||
|
||||
@@ -2705,6 +2738,14 @@ void doScan()
|
||||
int display_x = x / SCAN_RBW_FACTOR;
|
||||
freqX[(int)r.current_frequency] = display_x;
|
||||
setFrequency(curr_freq / 1000.0);
|
||||
if (radio2 != NULL)
|
||||
{
|
||||
state = radio2->setFrequency(curr_freq / 1000.0);
|
||||
if (state != RADIOLIB_ERR_NONE)
|
||||
{
|
||||
Serial.printf("Radio2: Failed to set freq: %d\n", state);
|
||||
}
|
||||
}
|
||||
|
||||
LOG("Step:%d Freq: %f\n", x, r.current_frequency);
|
||||
// SpectralScan Method
|
||||
@@ -2736,6 +2777,8 @@ void doScan()
|
||||
#endif
|
||||
#ifdef METHOD_RSSI
|
||||
// Spectrum analyzer using getRSSI
|
||||
float rssi2 = -999;
|
||||
|
||||
{
|
||||
LOG("METHOD RSSI");
|
||||
|
||||
@@ -2755,6 +2798,7 @@ void doScan()
|
||||
else
|
||||
g = &getRSSI;
|
||||
uint16_t max_rssi = 120;
|
||||
|
||||
// Scan if not in the ignore list
|
||||
if (ignoredFreq.find((int)r.current_frequency) == ignoredFreq.end())
|
||||
{
|
||||
@@ -2766,6 +2810,11 @@ void doScan()
|
||||
{
|
||||
xRSSI[display_x] = (int)max_rssi;
|
||||
}
|
||||
|
||||
for (int i = 0; radio2 != NULL && i < samples; i++)
|
||||
{
|
||||
rssi2 = max(rssi2, radio2->getRSSI());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2801,6 +2850,7 @@ void doScan()
|
||||
Event event = r.detect(result, filtered_result,
|
||||
RADIOLIB_SX126X_SPECTRAL_SCAN_RES_SIZE, samples);
|
||||
event.time_ms = millis();
|
||||
event.detected.rssi2 = rssi2;
|
||||
|
||||
size_t detected_at = event.detected.detected_at;
|
||||
if (max_rssi_x > detected_at)
|
||||
|
||||
Reference in New Issue
Block a user