diff options
| author | Keith Packard <keithp@keithp.com> | 2014-05-02 12:26:07 -0700 | 
|---|---|---|
| committer | Keith Packard <keithp@keithp.com> | 2014-05-02 13:52:45 -0700 | 
| commit | 027b1470c7a2d007eaab5c8d49f772b0c7559b80 (patch) | |
| tree | 07f9711d5625a603b82aad080fc0283a7e4ffad0 | |
| parent | 8e3842660274ac4bcd7b5a78f5db215222b1c4de (diff) | |
altos: Add configurable beep tone
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>
| -rw-r--r-- | src/cc1111/ao_pins.h | 5 | ||||
| -rw-r--r-- | src/kernel/ao.h | 5 | ||||
| -rw-r--r-- | src/kernel/ao_beep.h | 19 | ||||
| -rw-r--r-- | src/kernel/ao_config.c | 35 | ||||
| -rw-r--r-- | src/kernel/ao_telemetry.h | 6 | ||||
| -rw-r--r-- | src/telemini-v2.0/ao_pins.h | 1 | 
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 | 
