Add configuration support
[fw/altos] / ao.h
diff --git a/ao.h b/ao.h
index 6b861de14e5128d79117fc9ee81cfd6bdc7661ac..13497095c450aff3f45e78777ab441c46628efe3 100644 (file)
--- a/ao.h
+++ b/ao.h
@@ -29,7 +29,7 @@
 /* Stack runs from above the allocated __data space to 0xfe, which avoids
  * writing to 0xff as that triggers the stack overflow indicator
  */
-#define AO_STACK_START 0x7e
+#define AO_STACK_START 0x80
 #define AO_STACK_END   0xfe
 #define AO_STACK_SIZE  (AO_STACK_END - AO_STACK_START + 1)
 
@@ -314,6 +314,9 @@ ao_cmd_white(void);
 void
 ao_cmd_hex(void);
 
+void
+ao_cmd_decimal(void);
+
 struct ao_cmds {
        uint8_t         cmd;
        void            (*func)(void);
@@ -593,10 +596,10 @@ int16_t
 ao_pres_to_altitude(int16_t pres) __reentrant;
 
 int16_t
-ao_temp_to_dC(int16_t temp) __reentrant;
+ao_altitude_to_pres(int16_t alt) __reentrant;
 
 int16_t
-ao_accel_to_cm_per_s2(int16_t accel) __reentrant;
+ao_temp_to_dC(int16_t temp) __reentrant;
 
 /*
  * ao_dbg.c
@@ -698,17 +701,41 @@ ao_gps_print(__xdata struct ao_gps_data *gps_data);
 void
 ao_gps_init(void);
 
+/*
+ * ao_gps_report.c
+ */
+
+void
+ao_gps_report(void);
+
+void
+ao_gps_report_init(void);
+
 /*
  * ao_telemetry.c
  */
 
+#define AO_MAX_CALLSIGN                8
+
 struct ao_telemetry {
        uint8_t                 addr;
        uint8_t                 flight_state;
        struct ao_adc           adc;
        struct ao_gps_data      gps;
+       char                    callsign[AO_MAX_CALLSIGN];
 };
 
+/* Set delay between telemetry reports (0 to disable) */
+
+#define AO_TELEMETRY_INTERVAL_FLIGHT   AO_MS_TO_TICKS(50)
+#define AO_TELEMETRY_INTERVAL_RECOVER  AO_MS_TO_TICKS(1000)
+
+void
+ao_telemetry_set_interval(uint16_t interval);
+
+void
+ao_rdf_set(uint8_t rdf);
+
 void
 ao_telemetry_init(void);
 
@@ -721,7 +748,7 @@ ao_radio_send(__xdata struct ao_telemetry *telemetry) __reentrant;
 
 struct ao_radio_recv {
        struct ao_telemetry     telemetry;
-       uint8_t                 rssi;
+       int8_t                  rssi;
        uint8_t                 status;
 };
 
@@ -781,5 +808,28 @@ ao_igniter_status(enum ao_igniter igniter);
 void
 ao_igniter_init(void);
 
-#endif /* _AO_H_ */
+/*
+ * ao_config.c
+ */
 
+#define AO_CONFIG_MAJOR        1
+#define AO_CONFIG_MINOR        0
+
+struct ao_config {
+       uint8_t         major;
+       uint8_t         minor;
+       uint16_t        main_deploy;
+       int16_t         accel_zero_g;
+       uint8_t         radio_channel;
+       char            callsign[AO_MAX_CALLSIGN + 1];
+};
+
+extern __xdata struct ao_config ao_config;
+
+void
+ao_config_get(void);
+
+void
+ao_config_init(void);
+
+#endif /* _AO_H_ */