ao_config_setup();
ao_config_erase();
ao_config_write(0, &ao_config, sizeof (ao_config));
-#if HAS_FLIGHT
+#if HAS_FLIGHT && HAS_LOG
ao_log_write_erase(0);
#endif
ao_config_flush();
ao_config.pad_box = 1;
if (minor < 23)
ao_config.pad_idle = 120;
+#endif
+#if HAS_APRS
+ if (minor < 24)
+ ao_config.aprs_offset = 0;
#endif
ao_config.minor = AO_CONFIG_MINOR;
ao_config_dirty = 1;
#if FLIGHT_LOG_APPEND
printf("Flight log fixed size %d kB\n", ao_storage_log_max >> 10);
#else
- uint16_t block = (uint16_t) (ao_storage_block >> 10);
- uint16_t log_max = (uint16_t) (ao_storage_log_max >> 10);
uint32_t r;
r = ao_cmd_decimal();
if (ao_cmd_status != ao_cmd_success)
return;
- if (ao_log_present())
- printf("Storage must be empty before changing log size\n");
- else if (block > 1024 && (r & (block - 1)))
- printf("Flight log size must be multiple of %d kB\n", block);
- else if (r > log_max)
- printf("Flight log max %d kB\n", log_max);
- else {
- _ao_config_edit_start();
- ao_config.flight_log_max = r << 10;
- _ao_config_edit_finish();
+ r = r << 10;
+ if (ao_log_present()) {
+ if (r != ao_config.flight_log_max)
+ printf("Storage must be empty before changing log size\n");
+ return;
+ }
+ if (r > ao_storage_log_max) {
+ printf("Flight log max %d kB\n", ao_storage_log_max >> 10);
+ return;
}
+ _ao_config_edit_start();
+ ao_config.flight_log_max = r & ~(ao_storage_block - 1);
+ _ao_config_edit_finish();
#endif
}
#endif /* HAS_LOG */
ao_telemetry_reset_interval();
}
+static void
+ao_config_aprs_offset_show(void)
+{
+ printf ("APRS offset: %d\n", ao_config.aprs_offset);
+}
+
+static void
+ao_config_aprs_offset_set(void)
+{
+ uint16_t r = ao_cmd_decimal();
+ if (ao_cmd_status != ao_cmd_success)
+ return;
+ _ao_config_edit_start();
+ ao_config.aprs_offset = r;
+ _ao_config_edit_finish();
+ ao_telemetry_reset_interval();
+}
+
#endif /* HAS_APRS */
#if HAS_RADIO_AMP
ao_config_aprs_ssid_set, ao_config_aprs_ssid_show },
{ "C <0 compressed, 1 uncompressed>\0APRS format",
ao_config_aprs_format_set, ao_config_aprs_format_show },
+ { "O <aprs-offset>\0APRS Offset from top of minute",
+ ao_config_aprs_offset_set, ao_config_aprs_offset_show },
#endif
#if HAS_FIXED_PAD_BOX
{ "B <box>\0Set pad box (1-99)",