mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-10-09 11:16:39 +00:00
The speaker's I2S channel was only disabled when idle, which leaves MCLK running. Its fractional divider (160 MHz / 39 1/16 = 4.096 MHz) makes a comb of lines every 256 kHz: one at 869.632 MHz, in the EU narrow mesh channel, lifted the LoRa noise floor from ~-102 to ~-85 dBm, and others land near GPS L1 and BeiDou B1. The channel is now deleted and its pins held low after each sound, and made again for the next one. Measured: noise floor -102 dBm, outdoor first fix 87 s (was 620 s and more). Also: TCXO at 3.0 V (the L2's part, as Meshtastic has it); GLONASS enabled on the L76K after each power-up; begin() on a running receiver no longer resets it (a reset threw away the acquisition in progress). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
49 lines
1.6 KiB
C++
49 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#define RADIOLIB_STATIC_ONLY 1
|
|
#include <RadioLib.h>
|
|
#include <helpers/radiolib/RadioLibWrappers.h>
|
|
#include <helpers/radiolib/CustomSX1262Wrapper.h>
|
|
#include "WioTrackerL2Board.h"
|
|
#include <helpers/AutoDiscoverRTCClock.h>
|
|
#include <helpers/SensorManager.h>
|
|
#include <helpers/sensors/EnvironmentSensorManager.h>
|
|
#include <helpers/sensors/MicroNMEALocationProvider.h>
|
|
#ifdef DISPLAY_CLASS
|
|
#include "WioTrackerL2Display.h"
|
|
#include <helpers/ui/MomentaryButton.h>
|
|
#endif
|
|
|
|
// The L76K's power and reset lines are on the IO expander, out of the NMEA
|
|
// provider's reach: begin() / stop() / reset() drive them here, so GPS off
|
|
// (Settings, duty cycling) really powers the receiver down. begin() on a
|
|
// running receiver does nothing: a reset there (the app setting "gps" again)
|
|
// threw away the acquisition in progress.
|
|
class L2GpsProvider : public MicroNMEALocationProvider {
|
|
bool _uart_off = false;
|
|
bool _started = false; // begin() ran (the boot one does the reset)
|
|
bool _cfg_pending = false; // constellations to set once the module talks
|
|
uint32_t _cfg_rx = 0;
|
|
public:
|
|
using MicroNMEALocationProvider::MicroNMEALocationProvider;
|
|
void begin() override;
|
|
void stop() override;
|
|
void reset() override;
|
|
bool isEnabled() override;
|
|
void loop() override;
|
|
};
|
|
|
|
extern WioTrackerL2Board board;
|
|
extern WRAPPER_CLASS radio_driver;
|
|
extern AutoDiscoverRTCClock rtc_clock;
|
|
extern EnvironmentSensorManager sensors;
|
|
extern L2GpsProvider gps;
|
|
|
|
#ifdef DISPLAY_CLASS
|
|
extern DISPLAY_CLASS display;
|
|
extern MomentaryButton user_btn;
|
|
#endif
|
|
|
|
bool radio_init();
|
|
mesh::LocalIdentity radio_new_identity();
|