Skip to content

Commit ce8b97e

Browse files
authored
Update Downlink Scaling Values (#394)
1 parent c61a1fb commit ce8b97e

5 files changed

Lines changed: 24 additions & 10 deletions

File tree

app/backplane/power_module/src/c_sensing_tenant.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,10 @@ void CSensingTenant::Notify(void* ctx) {
9696

9797
void CSensingTenant::sendDownlinkData(const NTypes::SensorData& data) {
9898
NTypes::LoRaBroadcastSensorData downlinkData{
99-
.RailBattery = {.Voltage = static_cast<int16_t>(data.RailBattery.Voltage),
99+
.RailBattery = {.Voltage = static_cast<int16_t>(CSensorDevice::ToMilliUnits(data.RailBattery.Voltage)),
100100
.Current = static_cast<int16_t>(CSensorDevice::ToMilliUnits(data.RailBattery.Current)),
101101
.Power = static_cast<int16_t>(CSensorDevice::ToMilliUnits(data.RailBattery.Power))},
102-
.Rail3v3 = {.Voltage = static_cast<int16_t>(data.Rail3v3.Voltage),
102+
.Rail3v3 = {.Voltage = static_cast<int16_t>(CSensorDevice::ToMilliUnits(data.Rail3v3.Voltage)),
103103
.Current = static_cast<int16_t>(CSensorDevice::ToMilliUnits(data.Rail3v3.Current)),
104104
.Power = static_cast<int16_t>(CSensorDevice::ToMilliUnits(data.Rail3v3.Power))}};
105105

app/backplane/sensor_module/src/c_sensing_tenant.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -145,14 +145,16 @@ void CSensingTenant::sendDownlinkData(const NTypes::SensorData& data) {
145145
NTypes::LoRaBroadcastSensorData downlinkData{
146146
.Barometer =
147147
{
148-
.Pressure = static_cast<int16_t>(data.PrimaryBarometer.Pressure),
148+
// x10: 0.1 kPa resolution, covers 0-3276 kPa (int16_t max)
149+
.Pressure = static_cast<int16_t>(data.PrimaryBarometer.Pressure * 10.0f),
149150
.Temperature = static_cast<int16_t>(data.PrimaryBarometer.Temperature),
150151
},
151152
.Acceleration =
152153
{
153-
.X = static_cast<int16_t>(CSensorDevice::ToMilliUnits(data.Acceleration.X)),
154-
.Y = static_cast<int16_t>(CSensorDevice::ToMilliUnits(data.Acceleration.Y)),
155-
.Z = static_cast<int16_t>(CSensorDevice::ToMilliUnits(data.Acceleration.Z)),
154+
// x10: 0.1 m/s² resolution, covers ±3276 m/s² (~±334g) — safe for ADXL375 200g range
155+
.X = static_cast<int16_t>(data.Acceleration.X * 10.0f),
156+
.Y = static_cast<int16_t>(data.Acceleration.Y * 10.0f),
157+
.Z = static_cast<int16_t>(data.Acceleration.Z * 10.0f),
156158
},
157159
.Gyroscope =
158160
{

app/ground/receiver_module/include/c_receiver_module.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ class CReceiverModule : public CProjectConfiguration {
6666
CUdpListenerTenant dataRequestListenerTenant{"Radio Module Data Request Listener Tenant", ipAddrStr.c_str(),
6767
radioModuleDataRequestPort, &loraBroadcastMessagePort};
6868

69-
CLoraFrameToUdpHandler loraToUdpHandler{ipAddrStr.c_str(), radioModuleSourcePort};
69+
CLoraFrameToUdpHandler loraToUdpHandler{ipAddrStr.c_str(), radioModuleSourcePort,
70+
NNetworkDefs::RADIO_MODULE_LORA_RX_STATS_PORT};
7071

7172
// Tasks
7273
CTask networkingTask{"UDP Listener Task", 15, 4096, 0};

include/f_core/radio/frame_handlers/c_lora_frame_to_udp_handler.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ class CLoraFrameToUdpHandler : public CLoraFrameHandler {
77
public:
88
/**
99
* @brief Constructor
10-
* @param ip IP address instance to bind to
10+
* @param ip IP address to bind to
1111
* @param srcPort Source port to bind to
12+
* @param statsPort Port to emit LoRa receive stats (RSSI/SNR) on; 0 disables
1213
*/
13-
explicit CLoraFrameToUdpHandler(const char* ip, uint16_t srcPort);
14+
explicit CLoraFrameToUdpHandler(const char* ip, uint16_t srcPort, uint16_t statsPort = 0);
1415

1516
/**
1617
* See parent docs
@@ -19,4 +20,5 @@ class CLoraFrameToUdpHandler : public CLoraFrameHandler {
1920

2021
private:
2122
CUdpSocket sock;
23+
uint16_t statsPort;
2224
};

lib/f_core/radio/frame_handlers/c_lora_frame_to_udp_handler.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,18 @@
22

33
#include "f_core/net/network/c_ipv4.h"
44

5-
CLoraFrameToUdpHandler::CLoraFrameToUdpHandler(const char* ip, uint16_t srcPort) : sock(CIPv4(ip), srcPort, 0) {}
5+
CLoraFrameToUdpHandler::CLoraFrameToUdpHandler(const char* ip, uint16_t srcPort, uint16_t statsPort)
6+
: sock(CIPv4(ip), srcPort, 0), statsPort(statsPort) {}
67

78
void CLoraFrameToUdpHandler::HandleFrame(const ReceivedLaunchLoraFrame& rxFrame) {
89
const LaunchLoraFrame& frame = rxFrame.Frame;
910
sock.TransmitAsynchronous(&frame.Payload, frame.Size, frame.Port);
11+
12+
if (statsPort != 0) {
13+
struct __attribute__((packed)) {
14+
int16_t ReceivedSignalStrength;
15+
int8_t SignalToNoise;
16+
} stats{rxFrame.ReceivedSignalStrength, rxFrame.SignalToNoise};
17+
sock.TransmitAsynchronous(&stats, sizeof(stats), statsPort);
18+
}
1019
}

0 commit comments

Comments
 (0)