AO_RSSI_FROM_RADIO and AO_RADIO_FROM_RSSI.
Removes a bunch of open-coded versions of the same function.
Signed-off-by: Keith Packard <keithp@keithp.com>
uint8_t status;
};
+/* Unfortunately, we've exposed the CC1111 rssi units as the 'usual' method
+ * for reporting RSSI. So, now we use these values everywhere
+ */
+#define AO_RSSI_FROM_RADIO(radio) ((int16_t) ((int8_t) (radio) >> 1) - 74)
+#define AO_RADIO_FROM_RSSI(rssi) (((int8_t) (rssi) + 74) << 1)
+
/*
* ao_radio_recv tacks on rssi and status bytes
*/
case AO_MONITORING_ORIG:
state = recv_orig.telemetry_orig.flight_state;
- /* Typical RSSI offset for 38.4kBaud at 433 MHz is 74 */
- rssi = (int16_t) (recv_orig.rssi >> 1) - 74;
+ rssi = (int16_t) AO_RSSI_FROM_RADIO(recv_orig.rssi);
ao_xmemcpy(callsign, recv_orig.telemetry_orig.callsign, AO_MAX_CALLSIGN);
if (state > ao_flight_invalid)
state = ao_flight_invalid;
putchar ('\n');
#if HAS_RSSI
if (recv_raw.packet[ao_monitoring + 1] & PKT_APPEND_STATUS_1_CRC_OK) {
- rssi = ((int16_t) recv_raw.packet[ao_monitoring] >> 1) - 74;
+ rssi = AO_RSSI_FROM_RADIO(recv_raw.packet[ao_monitoring]);
ao_rssi_set(rssi);
}
#endif
/* Convert from 'real' rssi to cc1111-style values */
- rssi = (((int8_t) ao_radio_reg_read(CC1120_RSSI1)) + 74) * 2;
+ rssi = AO_RADIO_FROM_RSSI(ao_radio_reg_read(CC1120_RSSI1));
ao_radio_put();
printf ("CRC OK");
else
printf ("CRC BAD");
- printf (" RSSI %d", (int16_t) ((int8_t) bytes[32] >> 1) - 74);
+ printf (" RSSI %d", AO_RSSI_FROM_RADIO(bytes[32]));
for (b = 0; b < 32; b++)
printf (" %02x", bytes[b]);
printf ("\n");
continue;
if (!(ao_monitor_ring[monitor].all.status & PKT_APPEND_STATUS_1_CRC_OK))
continue;
- ao_tel_rssi = (ao_monitor_ring[monitor].all.rssi >> 1) - 74;
+ ao_tel_rssi = AO_RSSI_FROM_RADIO(ao_monitor_ring[monitor].all.rssi);
switch (ao_monitor_ring[monitor].all.telemetry.generic.type) {
case AO_TELEMETRY_SENSOR_TELEMETRUM:
case AO_TELEMETRY_SENSOR_TELEMINI: