#define HAS_FLIGHT 1
#define HAS_USB 1
#define HAS_BEEP 1
+ #define HAS_BEEP_CONFIG 0
#define HAS_GPS 1
#define HAS_SERIAL_1 1
#define HAS_ADC 1
#define HAS_FLIGHT 1
#define HAS_USB 1
#define HAS_BEEP 1
+ #define HAS_BEEP_CONFIG 0
#define HAS_BATTERY_REPORT 1
#define HAS_GPS 1
#define HAS_SERIAL_1 1
#define HAS_FLIGHT 1
#define HAS_USB 1
#define HAS_BEEP 1
+ #define HAS_BEEP_CONFIG 0
#define HAS_BATTERY_REPORT 1
#define HAS_GPS 1
#define HAS_SERIAL_1 1
#define HAS_FLIGHT 1
#define HAS_USB 1
#define HAS_BEEP 1
+ #define HAS_BEEP_CONFIG 0
#define HAS_GPS 1
#define HAS_SERIAL_1 1
#define HAS_ADC 1
#define HAS_FLIGHT 0
#define HAS_USB 1
#define HAS_BEEP 1
+ #define HAS_BEEP_CONFIG 0
#define HAS_SERIAL_1 1
#define HAS_SERIAL_1_ALT_1 1
#define HAS_SERIAL_1_ALT_2 0
#endif
#define AO_CONFIG_MAJOR 1
-#define AO_CONFIG_MINOR 15
+#define AO_CONFIG_MINOR 16
#define AO_AES_LEN 16
int16_t accel_zero_across; /* minor version 15 */
int16_t accel_zero_through; /* minor version 15 */
#endif
+#if HAS_BEEP
+ uint8_t mid_beep; /* minor version 16 */
+#endif
};
#define AO_IGNITE_MODE_DUAL 0
#ifndef _AO_BEEP_H_
#define _AO_BEEP_H_
+#ifndef HAS_BEEP_CONFIG
+#if defined(USE_EEPROM_CONFIG) && USE_EEPROM_CONFIG || HAS_EEPROM
+#define HAS_BEEP_CONFIG 1
+#endif
+#endif
+
/*
* ao_beep.c
*/
* frequency = 1/2 (24e6/32) / beep
*/
-#define AO_BEEP_LOW 150 /* 2500Hz */
-#define AO_BEEP_MID 94 /* 3989Hz */
-#define AO_BEEP_HIGH 75 /* 5000Hz */
+#define AO_BEEP_MID_DEFAULT 94 /* 3989Hz */
+
+#if HAS_BEEP_CONFIG
+#define AO_BEEP_MID ao_config.mid_beep
+#else
+#define AO_BEEP_MID AO_BEEP_MID_DEFAULT
+#endif
+#define AO_BEEP_LOW AO_BEEP_MID * 150 / 94 /* 2500Hz */
+#define AO_BEEP_HIGH AO_BEEP_MID * 75 / 94 /* 5000Hz */
+
#define AO_BEEP_OFF 0 /* off */
#define AO_BEEP_g 240 /* 1562.5Hz */
#include <ao_sample.h>
#include <ao_data.h>
#endif
+#if HAS_BEEP
+#include <ao_beep.h>
+#endif
__xdata struct ao_config ao_config;
__pdata uint8_t ao_config_loaded;
ao_config.accel_plus_g = 0;
ao_config.accel_minus_g = 0;
}
+#endif
+#if HAS_BEEP_CONFIG
+ if (minor < 16)
+ ao_config.mid_beep = AO_BEEP_MID_DEFAULT;
#endif
ao_config.minor = AO_CONFIG_MINOR;
ao_config_dirty = 1;
int16_t accel_across_up = 0, accel_across_down = 0;
int16_t accel_through_up = 0, accel_through_down = 0;
#endif
-
+
ao_cmd_decimal();
if (ao_cmd_status != ao_cmd_success)
return;
_ao_config_edit_finish();
}
#endif /* HAS_RADIO */
-
+
#if HAS_AES
__xdata uint8_t ao_config_aes_seq = 1;
#endif
+#if HAS_BEEP_CONFIG
+void
+ao_config_beep_show(void)
+{
+ printf ("Beeper setting: %d\n", ao_config.mid_beep);
+}
+
+void
+ao_config_beep_set(void)
+{
+ ao_cmd_decimal();
+ if (ao_cmd_status != ao_cmd_success)
+ return;
+ _ao_config_edit_start();
+ ao_config.mid_beep = ao_cmd_lex_i;
+ _ao_config_edit_finish();
+}
+#endif
+
+
struct ao_config_var {
__code char *str;
void (*set)(void) __reentrant;
#if HAS_APRS
{ "A <secs>\0APRS packet interval (0 disable)",
ao_config_aprs_set, ao_config_aprs_show },
+#endif
+#if HAS_BEEP_CONFIG
+ { "b <val>\0Configure beeper tone (freq = 1/2 (24e6/32) / beep",
+ ao_config_beep_set, ao_config_beep_show },
#endif
{ "s\0Show",
ao_config_show, 0 },
uint16_t companion_data[AO_COMPANION_MAX_CHANNELS]; /* 8 */
/* 32 */
};
-
+
#define AO_TELEMETRY_MEGA_SENSOR 0x08
struct ao_telemetry_mega_sensor {
int16_t mag_z; /* 30 */
/* 32 */
};
-
+
#define AO_TELEMETRY_MEGA_DATA 0x09
struct ao_telemetry_mega_data {
uint8_t pad[6]; /* 26 */
/* 32 */
};
-
+
#define AO_TELEMETRY_METRUM_DATA 0x0B
struct ao_telemetry_metrum_data {
#define HAS_USB 1
#define USB_FORCE_FLIGHT_IDLE 1
#define HAS_BEEP 1
+#define HAS_BEEP_CONFIG 0
#define HAS_BATTERY_REPORT 1
#define HAS_GPS 0
#define HAS_SERIAL_1 0