ao_cmd_syntax_error = 2,
};
-extern __xdata uint16_t ao_cmd_lex_i;
-extern __xdata uint32_t ao_cmd_lex_u32;
-extern __xdata char ao_cmd_lex_c;
-extern __xdata enum ao_cmd_status ao_cmd_status;
+extern __pdata uint16_t ao_cmd_lex_i;
+extern __pdata uint32_t ao_cmd_lex_u32;
+extern __pdata char ao_cmd_lex_c;
+extern __pdata enum ao_cmd_status ao_cmd_status;
void
ao_cmd_lex(void);
struct ao_cmds {
void (*func)(void);
- const char *help;
+ __code char *help;
};
void
*/
/* Total bytes of available storage */
-extern __xdata uint32_t ao_storage_total;
+extern __pdata uint32_t ao_storage_total;
/* Block size - device is erased in these units. At least 256 bytes */
-extern __xdata uint32_t ao_storage_block;
+extern __pdata uint32_t ao_storage_block;
/* Byte offset of config block. Will be ao_storage_block bytes long */
-extern __xdata uint32_t ao_storage_config;
+extern __pdata uint32_t ao_storage_config;
/* Storage unit size - device reads and writes must be within blocks of this size. Usually 256 bytes. */
-extern __xdata uint16_t ao_storage_unit;
+extern __pdata uint16_t ao_storage_unit;
#define AO_STORAGE_ERASE_LOG (ao_storage_config + AO_CONFIG_MAX_SIZE)
extern __pdata uint32_t ao_log_end_pos;
extern __pdata uint32_t ao_log_start_pos;
extern __xdata uint8_t ao_log_running;
-extern __xdata enum flight_state ao_log_state;
+extern __pdata enum flight_state ao_log_state;
/* required functions from the underlying log system */
extern __pdata enum ao_flight_state ao_flight_state;
extern __pdata uint16_t ao_launch_time;
-extern __xdata uint8_t ao_flight_force_idle;
+extern __pdata uint8_t ao_flight_force_idle;
/* Flight thread */
void
extern __pdata int16_t ao_sample_accel; /* most recent accel sensor reading */
#endif
-extern __xdata int16_t ao_ground_pres; /* startup pressure */
-extern __xdata int16_t ao_ground_height; /* MSL of ao_ground_pres */
+extern __pdata int16_t ao_ground_pres; /* startup pressure */
+extern __pdata int16_t ao_ground_height; /* MSL of ao_ground_pres */
#if HAS_ACCEL
-extern __xdata int16_t ao_ground_accel; /* startup acceleration */
-extern __xdata int16_t ao_accel_2g; /* factory accel calibration */
-extern __xdata int32_t ao_accel_scale; /* sensor to m/s² conversion */
+extern __pdata int16_t ao_ground_accel; /* startup acceleration */
+extern __pdata int16_t ao_accel_2g; /* factory accel calibration */
+extern __pdata int32_t ao_accel_scale; /* sensor to m/s² conversion */
#endif
void ao_sample_init(void);
extern __pdata int16_t ao_speed; /* m/s * 16 */
extern __pdata int16_t ao_accel; /* m/s² * 16 */
extern __pdata int16_t ao_max_height; /* max of ao_height */
+extern __pdata int16_t ao_avg_height; /* running average of height */
extern __pdata int16_t ao_error_h;
extern __pdata int16_t ao_error_h_sq_avg;
};
extern __xdata struct ao_stdio ao_stdios[];
-extern __data int8_t ao_cur_stdio;
-extern __data int8_t ao_num_stdios;
+extern __pdata int8_t ao_cur_stdio;
+extern __pdata int8_t ao_num_stdios;
void
flush(void);
*/
#define AO_CONFIG_MAJOR 1
-#define AO_CONFIG_MINOR 4
+#define AO_CONFIG_MINOR 6
struct ao_config {
uint8_t major;
int16_t accel_minus_g; /* minor version 2 */
uint32_t radio_cal; /* minor version 3 */
uint32_t flight_log_max; /* minor version 4 */
+ uint8_t ignite_mode; /* minor version 5 */
+ uint8_t pad_orientation; /* minor version 6 */
+ uint32_t radio_setting; /* minor version 7 */
};
+#define AO_IGNITE_MODE_DUAL 0
+#define AO_IGNITE_MODE_APOGEE 1
+#define AO_IGNITE_MODE_MAIN 2
+
+#define AO_PAD_ORIENTATION_ANTENNA_UP 0
+#define AO_PAD_ORIENTATION_ANTENNA_DOWN 1
+
extern __xdata struct ao_config ao_config;
#define AO_CONFIG_MAX_SIZE 128