summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cc1111/ao_pins.h5
-rw-r--r--src/kernel/ao.h5
-rw-r--r--src/kernel/ao_beep.h19
-rw-r--r--src/kernel/ao_config.c35
-rw-r--r--src/kernel/ao_telemetry.h6
-rw-r--r--src/telemini-v2.0/ao_pins.h1
6 files changed, 62 insertions, 9 deletions
diff --git a/src/cc1111/ao_pins.h b/src/cc1111/ao_pins.h
index 5b1586e0..91bf81d2 100644
--- a/src/cc1111/ao_pins.h
+++ b/src/cc1111/ao_pins.h
@@ -24,6 +24,7 @@
#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
@@ -58,6 +59,7 @@
#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
@@ -95,6 +97,7 @@
#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
@@ -212,6 +215,7 @@
#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
@@ -333,6 +337,7 @@
#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
diff --git a/src/kernel/ao.h b/src/kernel/ao.h
index 29ad2603..9169bd84 100644
--- a/src/kernel/ao.h
+++ b/src/kernel/ao.h
@@ -750,7 +750,7 @@ extern __xdata uint8_t ao_force_freq;
#endif
#define AO_CONFIG_MAJOR 1
-#define AO_CONFIG_MINOR 15
+#define AO_CONFIG_MINOR 16
#define AO_AES_LEN 16
@@ -789,6 +789,9 @@ struct ao_config {
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
diff --git a/src/kernel/ao_beep.h b/src/kernel/ao_beep.h
index 55f61171..9d6ecf27 100644
--- a/src/kernel/ao_beep.h
+++ b/src/kernel/ao_beep.h
@@ -18,6 +18,12 @@
#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
*/
@@ -28,9 +34,16 @@
* 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 */
diff --git a/src/kernel/ao_config.c b/src/kernel/ao_config.c
index 4482f673..411399d7 100644
--- a/src/kernel/ao_config.c
+++ b/src/kernel/ao_config.c
@@ -22,6 +22,9 @@
#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;
@@ -171,6 +174,10 @@ _ao_config_get(void)
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;
}
@@ -357,7 +364,7 @@ ao_config_accel_calibrate_set(void) __reentrant
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;
@@ -555,7 +562,7 @@ ao_config_radio_enable_set(void) __reentrant
_ao_config_edit_finish();
}
#endif /* HAS_RADIO */
-
+
#if HAS_AES
__xdata uint8_t ao_config_aes_seq = 1;
@@ -650,6 +657,26 @@ ao_config_radio_power_set(void)
#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;
@@ -720,6 +747,10 @@ __code struct ao_config_var ao_config_vars[] = {
{ "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 },
#if HAS_EEPROM
diff --git a/src/kernel/ao_telemetry.h b/src/kernel/ao_telemetry.h
index 237a35ab..fe07c2af 100644
--- a/src/kernel/ao_telemetry.h
+++ b/src/kernel/ao_telemetry.h
@@ -154,7 +154,7 @@ struct ao_telemetry_companion {
uint16_t companion_data[AO_COMPANION_MAX_CHANNELS]; /* 8 */
/* 32 */
};
-
+
#define AO_TELEMETRY_MEGA_SENSOR 0x08
struct ao_telemetry_mega_sensor {
@@ -181,7 +181,7 @@ struct ao_telemetry_mega_sensor {
int16_t mag_z; /* 30 */
/* 32 */
};
-
+
#define AO_TELEMETRY_MEGA_DATA 0x09
struct ao_telemetry_mega_data {
@@ -231,7 +231,7 @@ struct ao_telemetry_metrum_sensor {
uint8_t pad[6]; /* 26 */
/* 32 */
};
-
+
#define AO_TELEMETRY_METRUM_DATA 0x0B
struct ao_telemetry_metrum_data {
diff --git a/src/telemini-v2.0/ao_pins.h b/src/telemini-v2.0/ao_pins.h
index dc18aff7..1b4f602f 100644
--- a/src/telemini-v2.0/ao_pins.h
+++ b/src/telemini-v2.0/ao_pins.h
@@ -24,6 +24,7 @@
#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