This lets you directly set the mid-range beep tone; the high and low
tones remain set off of that in the same ratio as before.
Note that none of the cc1111 products get this feature as they don't
have enough flash space anymore...
Signed-off-by: Keith Packard <keithp@keithp.com>
#define HAS_FLIGHT 1
#define HAS_USB 1
#define HAS_BEEP 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_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_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_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_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_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_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_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_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
#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
#endif
#define AO_CONFIG_MAJOR 1
-#define AO_CONFIG_MINOR 15
+#define AO_CONFIG_MINOR 16
int16_t accel_zero_across; /* minor version 15 */
int16_t accel_zero_through; /* minor version 15 */
#endif
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
};
#define AO_IGNITE_MODE_DUAL 0
#ifndef _AO_BEEP_H_
#define _AO_BEEP_H_
#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
+
* frequency = 1/2 (24e6/32) / beep
*/
* 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 */
#define AO_BEEP_OFF 0 /* off */
#define AO_BEEP_g 240 /* 1562.5Hz */
#include <ao_sample.h>
#include <ao_data.h>
#endif
#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;
__xdata struct ao_config ao_config;
__pdata uint8_t ao_config_loaded;
ao_config.accel_plus_g = 0;
ao_config.accel_minus_g = 0;
}
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;
#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
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_cmd_decimal();
if (ao_cmd_status != ao_cmd_success)
return;
_ao_config_edit_finish();
}
#endif /* HAS_RADIO */
_ao_config_edit_finish();
}
#endif /* HAS_RADIO */
#if HAS_AES
__xdata uint8_t ao_config_aes_seq = 1;
#if HAS_AES
__xdata uint8_t ao_config_aes_seq = 1;
+#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;
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 },
#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 },
#endif
{ "s\0Show",
ao_config_show, 0 },
uint16_t companion_data[AO_COMPANION_MAX_CHANNELS]; /* 8 */
/* 32 */
};
uint16_t companion_data[AO_COMPANION_MAX_CHANNELS]; /* 8 */
/* 32 */
};
#define AO_TELEMETRY_MEGA_SENSOR 0x08
struct ao_telemetry_mega_sensor {
#define AO_TELEMETRY_MEGA_SENSOR 0x08
struct ao_telemetry_mega_sensor {
int16_t mag_z; /* 30 */
/* 32 */
};
int16_t mag_z; /* 30 */
/* 32 */
};
#define AO_TELEMETRY_MEGA_DATA 0x09
struct ao_telemetry_mega_data {
#define AO_TELEMETRY_MEGA_DATA 0x09
struct ao_telemetry_mega_data {
uint8_t pad[6]; /* 26 */
/* 32 */
};
uint8_t pad[6]; /* 26 */
/* 32 */
};
#define AO_TELEMETRY_METRUM_DATA 0x0B
struct ao_telemetry_metrum_data {
#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_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
#define HAS_BATTERY_REPORT 1
#define HAS_GPS 0
#define HAS_SERIAL_1 0