#define AO_SEND_MEGA 1
#endif
-#if defined (TELEMETRUM_V_2_0) || defined (TELEMETRUM_V_3_0)
+#if defined (TELEMETRUM_V_2_0) || defined (TELEMETRUM_V_3_0) || defined (TELEMETRUM_V_4_0)
#define AO_SEND_METRUM 1
#endif
} else {
delta = second - ao_gps_data.second;
}
- ao_aprs_time = ao_gps_tick + AO_SEC_TO_TICKS(delta);
+ if (delta < (interval >> 1))
+ delta += interval;
+
+ ao_aprs_time = ao_gps_utc_tick + AO_SEC_TO_TICKS(delta);
} else {
ao_aprs_time += AO_SEC_TO_TICKS(ao_config.aprs_interval);
}
interval = min_interval[ao_config.radio_rate];
#endif
ao_telemetry_interval = interval;
+ if (interval) {
#if AO_SEND_MEGA
- if (interval > 1)
- ao_telemetry_mega_data_max = 1;
- else
- ao_telemetry_mega_data_max = 2;
- if (ao_telemetry_mega_data_max > cur)
- cur++;
- ao_telemetry_mega_data_cur = cur;
+ if (interval > 1)
+ ao_telemetry_mega_data_max = 1;
+ else
+ ao_telemetry_mega_data_max = 2;
+ if (ao_telemetry_mega_data_max > cur)
+ cur++;
+ ao_telemetry_mega_data_cur = cur;
#endif
#if AO_SEND_METRUM
- ao_telemetry_metrum_data_max = (int16_t) (AO_SEC_TO_TICKS(1) / interval);
- if (ao_telemetry_metrum_data_max > cur)
- cur++;
- ao_telemetry_metrum_data_cur = cur;
+ ao_telemetry_metrum_data_max = (int16_t) (AO_SEC_TO_TICKS(1) / interval);
+ if (ao_telemetry_metrum_data_max > cur)
+ cur++;
+ ao_telemetry_metrum_data_cur = cur;
#endif
#if HAS_COMPANION
- if (!ao_companion_setup.update_period)
- ao_companion_setup.update_period = AO_SEC_TO_TICKS(1);
- ao_telemetry_companion_max = (int16_t) (ao_companion_setup.update_period / interval);
- if (ao_telemetry_companion_max > cur)
- cur++;
- ao_telemetry_companion_cur = cur;
+ if (!ao_companion_setup.update_period)
+ ao_companion_setup.update_period = AO_SEC_TO_TICKS(1);
+ ao_telemetry_companion_max = (int16_t) (ao_companion_setup.update_period / interval);
+ if (ao_telemetry_companion_max > cur)
+ cur++;
+ ao_telemetry_companion_cur = cur;
#endif
#if HAS_GPS
- ao_telemetry_gps_max = (int16_t) (AO_SEC_TO_TICKS(1) / interval);
- if (ao_telemetry_gps_max > cur)
- cur++;
- ao_telemetry_loc_cur = cur;
- if (ao_telemetry_gps_max > cur)
- cur++;
- ao_telemetry_sat_cur = cur;
-#endif
-
- ao_telemetry_config_max = (int16_t) (AO_SEC_TO_TICKS(5) / interval);
- if (ao_telemetry_config_max > cur)
- cur++;
- ao_telemetry_config_cur = cur;
+ ao_telemetry_gps_max = (int16_t) (AO_SEC_TO_TICKS(1) / interval);
+ if (ao_telemetry_gps_max > cur)
+ cur++;
+ ao_telemetry_loc_cur = cur;
+ if (ao_telemetry_gps_max > cur)
+ cur++;
+ ao_telemetry_sat_cur = cur;
+#endif
+
+ ao_telemetry_config_max = (int16_t) (AO_SEC_TO_TICKS(5) / interval);
+ if (ao_telemetry_config_max > cur)
+ cur++;
+ ao_telemetry_config_cur = cur;
+ }
#ifndef SIMPLIFY
ao_telemetry_time =