Remove unused tones and save about 6K flash space

- Comment out unused tones
- Create symbolic tone numbers rather than hardcoded
This commit is contained in:
Jean Cyr 2013-08-30 20:12:35 -04:00
parent 2b62497fb5
commit efca6f2cb1
5 changed files with 194 additions and 173 deletions

View File

@ -125,4 +125,24 @@ enum tone_pitch {
TONE_NOTE_MAX
};
enum {
TONE_STOP_TUNE = 0,
TONE_STARTUP_TUNE,
TONE_ERROR_TUNE,
TONE_NOTIFY_POSITIVE_TUNE,
TONE_NOTIFY_NEUTRAL_TUNE,
TONE_NOTIFY_NEGATIVE_TUNE,
TONE_CHARGE_TUNE,
/* Do not include these unused tunes
TONE_DIXIE_TUNE,
TONE_CUCURACHA_TUNE,
TONE_YANKEE_TUNE,
TONE_DAISY_TUNE,
TONE_WILLIAM_TELL_TUNE, */
TONE_ARMING_WARNING_TUNE,
TONE_BATTERY_WARNING_SLOW_TUNE,
TONE_BATTERY_WARNING_FAST_TUNE,
TONE_NUMBER_OF_TUNES
};
#endif /* DRV_TONE_ALARM_H_ */

View File

@ -233,8 +233,7 @@ public:
private:
static const unsigned _tune_max = 1024; // be reasonable about user tunes
static const char * const _default_tunes[];
static const unsigned _default_ntunes;
static const char * _default_tunes[TONE_NUMBER_OF_TUNES - 1];
static const uint8_t _note_tab[];
unsigned _default_tune_number; // number of currently playing default tune (0 for none)
@ -305,161 +304,7 @@ private:
};
// predefined tune array
const char * const ToneAlarm::_default_tunes[] = {
"MFT240L8 O4aO5dc O4aO5dc O4aO5dc L16dcdcdcdc", // startup tune
"MBT200a8a8a8PaaaP", // ERROR tone
"MFT200e8a8a", // NotifyPositive tone
"MFT200e8e", // NotifyNeutral tone
"MFT200e8c8e8c8e8c8", // NotifyNegative tone
"MFT90O3C16.C32C16.C32C16.C32G16.E32G16.E32G16.E32C16.C32C16.C32C16.C32G16.E32G16.E32G16.E32C4", // charge!
"MFT60O3C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16", // dixie
"MFT90O2C16C16C16F8.A8C16C16C16F8.A4P16P8", // cucuracha
"MNT150L8O2GGABGBADGGABL4GL8F+", // yankee
"MFT200O3C4.O2A4.G4.F4.D8E8F8D4F8C2.O2G4.O3C4.O2A4.F4.D8E8F8G4A8G2P8", // daisy
"T200O2B4P8B16B16B4P8B16B16B8G+8E8G+8B8G+8B8O3E8" // william tell
"O2B8G+8E8G+8B8G+8B8O3E8O2B4P8B16B16B4P8B16"
"O2B16B4P8B16B16B4P8B16B16B8B16B16B8B8B8B16"
"O2B16B8B8B8B16B16B8B8B8B16B16B8B8B2B2B8P8"
"P4P4P8O1B16B16B8B16B16B8B16B16O2E8F+8G+8"
"O1B16B16B8B16B16O2E8G+16G+16F+8D+8O1B8B16"
"O1B16B8B16B16B8B16B16O2E8F+8G+8E16G+16B4"
"O2B16A16G+16F+16E8G+8E8O3B16B16B8B16B16B8"
"O3B16B16O4E8F+8G+8O3B16B16B8B16B16O4E8G+16"
"O4G+16F+8D+8O3B8B16B16B8B16B16B8B16B16O4E8"
"O4F+8G+8E16G+16B4B16A16G+16F+16E8G+8E8O3G+16"
"O3G+16G+8G+16G+16G+8G+16G+16G+8O4C+8O3G+8"
"O4C+8O3G+8O4C+8O3G+8F+8E8D+8C+8G+16G+16G+8"
"O3G+16G+16G+8G+16G+16G+8O4C+8O3G+8O4C+8O3G+8"
"O4C+8O3B8A+8B8A+8B8G+16G+16G+8G+16G+16G+8"
"O3G+16G+16G+8O4C+8O3G+8O4C+8O3G+8O4C+8O3G+8"
"O3F+8E8D+8C+8G+16G+16G+8G+16G+16G+8G+16G+16"
"O3G+8O4C+8O3G+8O4C+8O3G+8O4C+8O3B8A+8B8O2B16"
"O2B16B8F+16F+16F+8F+16F+16F+8G+8A8F+4A8G+8"
"O2E4G+8F+8F+8F+8O3F+16F+16F+8F+16F+16F+8"
"O3G+8A8F+4A8G+8E4G+8F+8O2B16B16B8O1B16B16"
"O1B8B16B16B8B16B16O2E8F+8G+8O1B16B16B8B16"
"O1B16O2E8G+16G+16F+8D+8O1B8B16B16B8B16B16"
"O1B8B16B16O2E8F+8G+8E16G+16B4B16A16G+16F+16"
"O2E8G+8E8O3B16B16B8B16B16B8B16B16O4E8F+8"
"O4G+8O3B16B16B8B16B16O4E8G+16G+16F+8D+8O3B8"
"O3B16B16B8B16B16B8B16B16O4E8F+8G+8E16G+16"
"O4B4B16A16G+16F+16E8G+8E8O3E64F64G64A64B64"
"O4C64D64E8E16E16E8E8G+4.F+8E8D+8E8C+8O3B16"
"O4C+16O3B16O4C+16O3B16O4C+16D+16E16O3A16"
"O3B16A16B16A16B16O4C+16D+16O3G+16A16G+16"
"O3A16G+16A16B16O4C+16O3F+16G+16F+16G+16F+16"
"O3G+16F+16G+16F+16G+16F+16D+16O2B16O3B16"
"O4C+16D+16E8D+8E8C+8O3B16O4C+16O3B16O4C+16"
"O3B16O4C+16D+16E16O3A16B16A16B16A16B16O4C+16"
"O4D+16O3G+16A16G+16A16G+16A16B16O4C+16O3F+16"
"O3G+16F+16G+16F+16A16F+16E16E8P8C+4C+16O2C16"
"O3C+16O2C16O3D+16C+16O2B16A16A16G+16E16C+16"
"O2C+16C+16C+16C+16E16D+16O1C16G+16G+16G+16"
"O1G+16G+16G+16O2C+16E16G+16O3C+16C+16C+16"
"O3C+16C+16O2C16O3C+16O2C16O3D+16C+16O2B16"
"O2A16A16G+16E16C+16C+16C+16C+16C+16E16D+16"
"O1C16G+16G+16G+16G+16G+16G+16O2C+16E16G+16"
"O3C+16E16D+16C+16D+16O2C16G+16G+16G+16O3G+16"
"O3E16C+16D+16O2C16G+16G+16G+16O3G+16E16C+16"
"O3D+16O2B16G+16G+16A+16G16D+16D+16G+16G16"
"O2G+16G16G+16A16G+16F+16E16O1B16A+16B16O2E16"
"O1B16O2F+16O1B16O2G+16E16D+16E16G+16E16A16"
"O2F+16B16O3G+16F+16E16D+16F+16E16C+16O2B16"
"O3C+16O2B16O3C+16D+16E16F+16G+16O2A16B16"
"O2A16B16O3C+16D+16E16F+16O2G+16A16G+16A16"
"O2C16O3C+16D+16E16O2F+16G+16F+16G+16F+16"
"O2G+16F+16G+16F+16G+16F+16D+16O1B16C16O2C+16"
"O2D+16E16O1B16A+16B16O2E16O1B16O2F+16O1B16"
"O2G+16E16D+16E16G+16E16A16F+16B16O3G+16F+16"
"O3E16D+16F+16E16C+16O2B16O3C+16O2B16O3C+16"
"O3D+16E16F+16G+16O2A16B16A16B16O3C+16D+16"
"O3E16F+16O2G+16A16G+16A16B16O3C+16D+16E16"
"O2F+16O3C+16O2C16O3C+16D+16C+16O2A16F+16"
"O2E16O3E16F+16G+16A16B16O4C+16D+16E8E16E16"
"O4E8E8G+4.F8E8D+8E8C+8O3B16O4C+16O3B16O4C+16"
"O3B16O4C+16D+16E16O3A16B16A16B16A16B16O4C+16"
"O4D+16O3G+16A16G+16A16G+16A16B16O4C+16O3F+16"
"O3G+16F+16G+16F+16G+16F+16G+16F+16G+16F+16"
"O3D+16O2B16O3B16O4C+16D+16E8E16E16E8E8G+4."
"O4F+8E8D+8E8C+8O3B16O4C+16O3B16O4C+16O3B16"
"O4C+16D+16E16O3A16B16A16B16A16B16O4C+16D+16"
"O3G+16A16G+16A16G+16A16B16O4C+16O3F+16G+16"
"O3F+16G+16F+16A16G+16F+16E8O2B8O3E8G+16G+16"
"O3G+8G+16G+16G+8G+16G+16G+8O4C+8O3G+8O4C+8"
"O3G+8O4C+8O3G+8F+8E8D+8C+8G+16G+16G+8G+16"
"O3G+16G+8G+16G+16G+8O4C+8O3G+8O4C+8O3G+8"
"O4C+8O3B8A+8B8A+8B8G+16G+16G+8G+16G+16G+8"
"O3G+16G+16G+8O4C+8O3G+8O4C+8O3G+8O4C+8O3G+8"
"O3F+8E8D+8C+8G+16G+16G+8G+16G+16G+8G+16G+16"
"O3G+8O4C+8O3G+8O4C+8O3G+8O4C+8O3B8A+8B8A+8"
"O3B8O2F+16F+16F+8F+16F+16F+8G+8A8F+4A8G+8"
"O2E4G+8F+8B8O1B8O2F+16F+16F+8F+16F+16F+8"
"O2G+8A8F+4A8G+8E4G+8F+8B16B16B8O1B16B16B8"
"O1B16B16B8B16B16O2E8F+8G+8O1B16B16B8B16B16"
"O2E8G+16G+16F+8D+8O1B8B16B16B8B16B16B8B16"
"O1B16O2E8F+8G+8E16G+16B4B16A16G+16F+16E8"
"O1B8O2E8O3B16B16B8B16B16B8B16B16O4E8F+8G+8"
"O3B16B16B8B16B16O4E8G+16G+16F+8D+8O3B8B16"
"O3B16B8B16B16B8B16B16O4E8F+8G+8O3E16G+16"
"O3B4B16A16G+16F+16E16F+16G+16A16G+16A16B16"
"O4C+16O3B16O4C+16D+16E16D+16E16F+16G+16A16"
"O3B16O4A16O3B16O4A16O3B16O4A16O3B16O4A16"
"O3B16O4A16O3B16O4A16O3B16O4A16O3B16E16F+16"
"O3G+16A16G+16A16B16O4C+16O3B16O4C+16D+16"
"O4E16D+16E16F+16G+16A16O3B16O4A16O3B16O4A16"
"O3B16O4A16O3B16O4A16O3B16O4A16O3B16O4A16"
"O3B16O4A16O3B16P16G+16O4G+16O3G+16P16D+16"
"O4D+16O3D+16P16E16O4E16O3E16P16A16O4A16O3A16"
"P16O3G+16O4G+16O3G+16P16D+16O4D+16O3D+16"
"P16O3E16O4E16O3E16P16A16O4A16O3A16O4G16O3G16"
"O4G16O3G16O4G16O3G16O4G16O3G16O4G8E8C8E8"
"O4G+16O3G+16O4G+16O3G+16O4G+16O3G+16O4G+16"
"O3G+16O4G+8E8O3B8O4E8G+16O3G+16O4G+16O3G+16"
"O4G+16O3G+16O4G+16O3G+16O4G+8F8C+8F8A+16"
"O3A+16O4A+16O3A+16O4A+16O3A+16O4A+16O3A+16"
"O4A+8G8E8G8B8P16A+16P16A16P16G+16P16F+16"
"P16O4E16P16D+16P16C+16P16O3B16P16A+16P16"
"O3A16P16G+16P16F+16P16E16P16D+16P16F+16E16"
"O3F+16G+16A16G+16A16B16O4C+16O3B16O4C+16"
"O4D+16E16D+16E16F+16G+16A16O3B16O4A16O3B16"
"O4A16O3B16O4A16O3B16O4A16O3B16O4A16O3B16"
"O4A16O3B16O4A16O3B16E16F+16G+16A16G+16A16"
"O3B16O4C+16O3B16O4C+16D+16E16D+16E16F+16"
"O4G+16A16O3B16O4A16O3B16O4A16O3B16O4A16O3B16"
"O4A16O3B16O4A16O3B16O4A16O3B16O4A16O3B16"
"P16O3G+16O4G+16O3G+16P16D+16O4D+16O3D+16"
"P16O3E16O4E16O3E16P16A16O4A16O3A16P16G+16"
"O4G+16O3G+16P16D+16O4D+16O3D+16P16E16O4E16"
"O3E16P16A16O4A16O3A16O4G16O3G16O4G16O3G16"
"O4G16O3G16O4G16O3G16O4G8E8C8E8G+16O3G+16"
"O4G+16O3G+16O4G+16O3G+16O4G+16O3G+16O4G+8"
"O4E8O3B8O4E8G+16O3G+16O4G+16O3G+16O4G+16"
"O3G+16O4G+16O3G+16O4G+8F8C+8F8A+16O3A+16"
"O4A+16O3A+16O4A+16O3A+16O4A+16O3A+16O4A+8"
"O4G8E8G8B8P16A+16P16A16P16G+16P16F+16P16"
"O4E16P16D+16P16C+16P16O3B16P16A+16P16A16"
"P16O3G+16P16F+16P16E16P16D+16P16F16E16D+16"
"O3E16D+16E8B16B16B8B16B16B8B16B16O4E8F+8"
"O4G+8O3B16B16B8B16B16B8B16B16O4G+8A8B8P8"
"O4E8F+8G+8P8O3G+8A8B8P8P2O2B16C16O3C+16D16"
"O3D+16E16F16F+16G16G+16A16A+16B16C16O4C+16"
"O4D+16E16D+16F+16D+16E16D+16F+16D+16E16D+16"
"O4F+16D+16E16D+16F+16D+16E16D+16F+16D+16"
"O4E16D+16F+16D+16E16D+16F+16D+16E16D+16F+16"
"O4D+16E8E16O3E16O4E16O3E16O4E16O3E16O4E8"
"O3B16O2B16O3B16O2B16O3B16O2B16O3B8G+16O2G+16"
"O3G+16O2G+16O3G+16O2G+16O3G8E16O2E16O3E16"
"O2E16O3E16O2E16O3E8E16E16E8E8E8O2B16B16B8"
"O2B8B8G+16G+16G+8G+8G+8E16E16E8E8E8O1B8O2E8"
"O1B8O2G+8E8B8G+8O3E8O2B8O3E8O2B8O3G+8E8B8"
"O3G+8O4E4P8E16E16E8E8E8E8E4P8E16E4P8O2E16"
"O2E2P64",
"MNT75L1O2G", //arming warning
"MBNT100a8", //battery warning slow
"MBNT255a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8" //battery warning fast // XXX why is there a break before a repetition
};
const unsigned ToneAlarm::_default_ntunes = sizeof(_default_tunes) / sizeof(_default_tunes[0]);
const char * ToneAlarm::_default_tunes[TONE_NUMBER_OF_TUNES - 1];
// semitone offsets from C for the characters 'A'-'G'
const uint8_t ToneAlarm::_note_tab[] = {9, 11, 0, 2, 4, 5, 7};
@ -479,6 +324,162 @@ ToneAlarm::ToneAlarm() :
{
// enable debug() calls
//_debug_enabled = true;
_default_tunes[TONE_STARTUP_TUNE - 1] = "MFT240L8 O4aO5dc O4aO5dc O4aO5dc L16dcdcdcdc"; // startup tune
_default_tunes[TONE_ERROR_TUNE - 1] = "MBT200a8a8a8PaaaP"; // ERROR tone
_default_tunes[TONE_NOTIFY_POSITIVE_TUNE - 1] = "MFT200e8a8a"; // NotifyPositive tone
_default_tunes[TONE_NOTIFY_NEUTRAL_TUNE - 1] = "MFT200e8e"; // NotifyNeutral tone
_default_tunes[TONE_NOTIFY_NEGATIVE_TUNE - 1] = "MFT200e8c8e8c8e8c8"; // NotifyNegative tone
_default_tunes[TONE_CHARGE_TUNE - 1] =
"MFT90O3C16.C32C16.C32C16.C32G16.E32G16.E32G16.E32C16.C32C16.C32C16.C32G16.E32G16.E32G16.E32C4"; // charge!
#if 0 // don't include unused tunes... but keep them for nostalgic reason
_default_tunes[TONE_DIXIE_TUNE - 1] = "MFT60O3C32O2A32F16F16F32G32A32A+32O3C16C16C16O2A16"; // dixie
_default_tunes[TONE_CUCURACHA_TUNE - 1] = "MFT90O2C16C16C16F8.A8C16C16C16F8.A4P16P8"; // cucuracha
_default_tunes[TONE_YANKEE_TUNE - 1] = "MNT150L8O2GGABGBADGGABL4GL8F+"; // yankee
_default_tunes[TONE_DAISY_TUNE - 1] =
"MFT200O3C4.O2A4.G4.F4.D8E8F8D4F8C2.O2G4.O3C4.O2A4.F4.D8E8F8G4A8G2P8"; // daisy
_default_tunes[TONE_WILLIAM_TELL_TUNE - 1] =
"T200O2B4P8B16B16B4P8B16B16B8G+8E8G+8B8G+8B8O3E8" // william tell
"O2B8G+8E8G+8B8G+8B8O3E8O2B4P8B16B16B4P8B16"
"O2B16B4P8B16B16B4P8B16B16B8B16B16B8B8B8B16"
"O2B16B8B8B8B16B16B8B8B8B16B16B8B8B2B2B8P8"
"P4P4P8O1B16B16B8B16B16B8B16B16O2E8F+8G+8"
"O1B16B16B8B16B16O2E8G+16G+16F+8D+8O1B8B16"
"O1B16B8B16B16B8B16B16O2E8F+8G+8E16G+16B4"
"O2B16A16G+16F+16E8G+8E8O3B16B16B8B16B16B8"
"O3B16B16O4E8F+8G+8O3B16B16B8B16B16O4E8G+16"
"O4G+16F+8D+8O3B8B16B16B8B16B16B8B16B16O4E8"
"O4F+8G+8E16G+16B4B16A16G+16F+16E8G+8E8O3G+16"
"O3G+16G+8G+16G+16G+8G+16G+16G+8O4C+8O3G+8"
"O4C+8O3G+8O4C+8O3G+8F+8E8D+8C+8G+16G+16G+8"
"O3G+16G+16G+8G+16G+16G+8O4C+8O3G+8O4C+8O3G+8"
"O4C+8O3B8A+8B8A+8B8G+16G+16G+8G+16G+16G+8"
"O3G+16G+16G+8O4C+8O3G+8O4C+8O3G+8O4C+8O3G+8"
"O3F+8E8D+8C+8G+16G+16G+8G+16G+16G+8G+16G+16"
"O3G+8O4C+8O3G+8O4C+8O3G+8O4C+8O3B8A+8B8O2B16"
"O2B16B8F+16F+16F+8F+16F+16F+8G+8A8F+4A8G+8"
"O2E4G+8F+8F+8F+8O3F+16F+16F+8F+16F+16F+8"
"O3G+8A8F+4A8G+8E4G+8F+8O2B16B16B8O1B16B16"
"O1B8B16B16B8B16B16O2E8F+8G+8O1B16B16B8B16"
"O1B16O2E8G+16G+16F+8D+8O1B8B16B16B8B16B16"
"O1B8B16B16O2E8F+8G+8E16G+16B4B16A16G+16F+16"
"O2E8G+8E8O3B16B16B8B16B16B8B16B16O4E8F+8"
"O4G+8O3B16B16B8B16B16O4E8G+16G+16F+8D+8O3B8"
"O3B16B16B8B16B16B8B16B16O4E8F+8G+8E16G+16"
"O4B4B16A16G+16F+16E8G+8E8O3E64F64G64A64B64"
"O4C64D64E8E16E16E8E8G+4.F+8E8D+8E8C+8O3B16"
"O4C+16O3B16O4C+16O3B16O4C+16D+16E16O3A16"
"O3B16A16B16A16B16O4C+16D+16O3G+16A16G+16"
"O3A16G+16A16B16O4C+16O3F+16G+16F+16G+16F+16"
"O3G+16F+16G+16F+16G+16F+16D+16O2B16O3B16"
"O4C+16D+16E8D+8E8C+8O3B16O4C+16O3B16O4C+16"
"O3B16O4C+16D+16E16O3A16B16A16B16A16B16O4C+16"
"O4D+16O3G+16A16G+16A16G+16A16B16O4C+16O3F+16"
"O3G+16F+16G+16F+16A16F+16E16E8P8C+4C+16O2C16"
"O3C+16O2C16O3D+16C+16O2B16A16A16G+16E16C+16"
"O2C+16C+16C+16C+16E16D+16O1C16G+16G+16G+16"
"O1G+16G+16G+16O2C+16E16G+16O3C+16C+16C+16"
"O3C+16C+16O2C16O3C+16O2C16O3D+16C+16O2B16"
"O2A16A16G+16E16C+16C+16C+16C+16C+16E16D+16"
"O1C16G+16G+16G+16G+16G+16G+16O2C+16E16G+16"
"O3C+16E16D+16C+16D+16O2C16G+16G+16G+16O3G+16"
"O3E16C+16D+16O2C16G+16G+16G+16O3G+16E16C+16"
"O3D+16O2B16G+16G+16A+16G16D+16D+16G+16G16"
"O2G+16G16G+16A16G+16F+16E16O1B16A+16B16O2E16"
"O1B16O2F+16O1B16O2G+16E16D+16E16G+16E16A16"
"O2F+16B16O3G+16F+16E16D+16F+16E16C+16O2B16"
"O3C+16O2B16O3C+16D+16E16F+16G+16O2A16B16"
"O2A16B16O3C+16D+16E16F+16O2G+16A16G+16A16"
"O2C16O3C+16D+16E16O2F+16G+16F+16G+16F+16"
"O2G+16F+16G+16F+16G+16F+16D+16O1B16C16O2C+16"
"O2D+16E16O1B16A+16B16O2E16O1B16O2F+16O1B16"
"O2G+16E16D+16E16G+16E16A16F+16B16O3G+16F+16"
"O3E16D+16F+16E16C+16O2B16O3C+16O2B16O3C+16"
"O3D+16E16F+16G+16O2A16B16A16B16O3C+16D+16"
"O3E16F+16O2G+16A16G+16A16B16O3C+16D+16E16"
"O2F+16O3C+16O2C16O3C+16D+16C+16O2A16F+16"
"O2E16O3E16F+16G+16A16B16O4C+16D+16E8E16E16"
"O4E8E8G+4.F8E8D+8E8C+8O3B16O4C+16O3B16O4C+16"
"O3B16O4C+16D+16E16O3A16B16A16B16A16B16O4C+16"
"O4D+16O3G+16A16G+16A16G+16A16B16O4C+16O3F+16"
"O3G+16F+16G+16F+16G+16F+16G+16F+16G+16F+16"
"O3D+16O2B16O3B16O4C+16D+16E8E16E16E8E8G+4."
"O4F+8E8D+8E8C+8O3B16O4C+16O3B16O4C+16O3B16"
"O4C+16D+16E16O3A16B16A16B16A16B16O4C+16D+16"
"O3G+16A16G+16A16G+16A16B16O4C+16O3F+16G+16"
"O3F+16G+16F+16A16G+16F+16E8O2B8O3E8G+16G+16"
"O3G+8G+16G+16G+8G+16G+16G+8O4C+8O3G+8O4C+8"
"O3G+8O4C+8O3G+8F+8E8D+8C+8G+16G+16G+8G+16"
"O3G+16G+8G+16G+16G+8O4C+8O3G+8O4C+8O3G+8"
"O4C+8O3B8A+8B8A+8B8G+16G+16G+8G+16G+16G+8"
"O3G+16G+16G+8O4C+8O3G+8O4C+8O3G+8O4C+8O3G+8"
"O3F+8E8D+8C+8G+16G+16G+8G+16G+16G+8G+16G+16"
"O3G+8O4C+8O3G+8O4C+8O3G+8O4C+8O3B8A+8B8A+8"
"O3B8O2F+16F+16F+8F+16F+16F+8G+8A8F+4A8G+8"
"O2E4G+8F+8B8O1B8O2F+16F+16F+8F+16F+16F+8"
"O2G+8A8F+4A8G+8E4G+8F+8B16B16B8O1B16B16B8"
"O1B16B16B8B16B16O2E8F+8G+8O1B16B16B8B16B16"
"O2E8G+16G+16F+8D+8O1B8B16B16B8B16B16B8B16"
"O1B16O2E8F+8G+8E16G+16B4B16A16G+16F+16E8"
"O1B8O2E8O3B16B16B8B16B16B8B16B16O4E8F+8G+8"
"O3B16B16B8B16B16O4E8G+16G+16F+8D+8O3B8B16"
"O3B16B8B16B16B8B16B16O4E8F+8G+8O3E16G+16"
"O3B4B16A16G+16F+16E16F+16G+16A16G+16A16B16"
"O4C+16O3B16O4C+16D+16E16D+16E16F+16G+16A16"
"O3B16O4A16O3B16O4A16O3B16O4A16O3B16O4A16"
"O3B16O4A16O3B16O4A16O3B16O4A16O3B16E16F+16"
"O3G+16A16G+16A16B16O4C+16O3B16O4C+16D+16"
"O4E16D+16E16F+16G+16A16O3B16O4A16O3B16O4A16"
"O3B16O4A16O3B16O4A16O3B16O4A16O3B16O4A16"
"O3B16O4A16O3B16P16G+16O4G+16O3G+16P16D+16"
"O4D+16O3D+16P16E16O4E16O3E16P16A16O4A16O3A16"
"P16O3G+16O4G+16O3G+16P16D+16O4D+16O3D+16"
"P16O3E16O4E16O3E16P16A16O4A16O3A16O4G16O3G16"
"O4G16O3G16O4G16O3G16O4G16O3G16O4G8E8C8E8"
"O4G+16O3G+16O4G+16O3G+16O4G+16O3G+16O4G+16"
"O3G+16O4G+8E8O3B8O4E8G+16O3G+16O4G+16O3G+16"
"O4G+16O3G+16O4G+16O3G+16O4G+8F8C+8F8A+16"
"O3A+16O4A+16O3A+16O4A+16O3A+16O4A+16O3A+16"
"O4A+8G8E8G8B8P16A+16P16A16P16G+16P16F+16"
"P16O4E16P16D+16P16C+16P16O3B16P16A+16P16"
"O3A16P16G+16P16F+16P16E16P16D+16P16F+16E16"
"O3F+16G+16A16G+16A16B16O4C+16O3B16O4C+16"
"O4D+16E16D+16E16F+16G+16A16O3B16O4A16O3B16"
"O4A16O3B16O4A16O3B16O4A16O3B16O4A16O3B16"
"O4A16O3B16O4A16O3B16E16F+16G+16A16G+16A16"
"O3B16O4C+16O3B16O4C+16D+16E16D+16E16F+16"
"O4G+16A16O3B16O4A16O3B16O4A16O3B16O4A16O3B16"
"O4A16O3B16O4A16O3B16O4A16O3B16O4A16O3B16"
"P16O3G+16O4G+16O3G+16P16D+16O4D+16O3D+16"
"P16O3E16O4E16O3E16P16A16O4A16O3A16P16G+16"
"O4G+16O3G+16P16D+16O4D+16O3D+16P16E16O4E16"
"O3E16P16A16O4A16O3A16O4G16O3G16O4G16O3G16"
"O4G16O3G16O4G16O3G16O4G8E8C8E8G+16O3G+16"
"O4G+16O3G+16O4G+16O3G+16O4G+16O3G+16O4G+8"
"O4E8O3B8O4E8G+16O3G+16O4G+16O3G+16O4G+16"
"O3G+16O4G+16O3G+16O4G+8F8C+8F8A+16O3A+16"
"O4A+16O3A+16O4A+16O3A+16O4A+16O3A+16O4A+8"
"O4G8E8G8B8P16A+16P16A16P16G+16P16F+16P16"
"O4E16P16D+16P16C+16P16O3B16P16A+16P16A16"
"P16O3G+16P16F+16P16E16P16D+16P16F16E16D+16"
"O3E16D+16E8B16B16B8B16B16B8B16B16O4E8F+8"
"O4G+8O3B16B16B8B16B16B8B16B16O4G+8A8B8P8"
"O4E8F+8G+8P8O3G+8A8B8P8P2O2B16C16O3C+16D16"
"O3D+16E16F16F+16G16G+16A16A+16B16C16O4C+16"
"O4D+16E16D+16F+16D+16E16D+16F+16D+16E16D+16"
"O4F+16D+16E16D+16F+16D+16E16D+16F+16D+16"
"O4E16D+16F+16D+16E16D+16F+16D+16E16D+16F+16"
"O4D+16E8E16O3E16O4E16O3E16O4E16O3E16O4E8"
"O3B16O2B16O3B16O2B16O3B16O2B16O3B8G+16O2G+16"
"O3G+16O2G+16O3G+16O2G+16O3G8E16O2E16O3E16"
"O2E16O3E16O2E16O3E8E16E16E8E8E8O2B16B16B8"
"O2B8B8G+16G+16G+8G+8G+8E16E16E8E8E8O1B8O2E8"
"O1B8O2G+8E8B8G+8O3E8O2B8O3E8O2B8O3G+8E8B8"
"O3G+8O4E4P8E16E16E8E8E8E8E4P8E16E4P8O2E16"
"O2E2P64";
#endif
_default_tunes[TONE_ARMING_WARNING_TUNE - 1] = "MNT75L1O2G"; //arming warning
_default_tunes[TONE_BATTERY_WARNING_SLOW_TUNE - 1] = "MBNT100a8"; //battery warning slow
_default_tunes[TONE_BATTERY_WARNING_FAST_TUNE - 1] = "MBNT255a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8a8"; //battery warning fast
}
ToneAlarm::~ToneAlarm()
@ -873,7 +874,7 @@ ToneAlarm::ioctl(file *filp, int cmd, unsigned long arg)
case TONE_SET_ALARM:
debug("TONE_SET_ALARM %u", arg);
if (arg <= _default_ntunes) {
if (arg <= TONE_NUMBER_OF_TUNES) {
if (arg == 0) {
// stop the tune
_tune = nullptr;
@ -1008,10 +1009,10 @@ tone_alarm_main(int argc, char *argv[])
}
if ((argc > 1) && !strcmp(argv[1], "start"))
play_tune(1);
play_tune(TONE_STARTUP_TUNE);
if ((argc > 1) && !strcmp(argv[1], "stop"))
play_tune(0);
play_tune(TONE_STOP_TUNE);
if ((tune = strtol(argv[1], nullptr, 10)) != 0)
play_tune(tune);

View File

@ -99,44 +99,44 @@ void buzzer_deinit()
void tune_error()
{
ioctl(buzzer, TONE_SET_ALARM, 2);
ioctl(buzzer, TONE_SET_ALARM, TONE_ERROR_TUNE);
}
void tune_positive()
{
ioctl(buzzer, TONE_SET_ALARM, 3);
ioctl(buzzer, TONE_SET_ALARM, TONE_NOTIFY_POSITIVE_TUNE);
}
void tune_neutral()
{
ioctl(buzzer, TONE_SET_ALARM, 4);
ioctl(buzzer, TONE_SET_ALARM, TONE_NOTIFY_NEUTRAL_TUNE);
}
void tune_negative()
{
ioctl(buzzer, TONE_SET_ALARM, 5);
ioctl(buzzer, TONE_SET_ALARM, TONE_NOTIFY_NEGATIVE_TUNE);
}
int tune_arm()
{
return ioctl(buzzer, TONE_SET_ALARM, 12);
return ioctl(buzzer, TONE_SET_ALARM, TONE_ARMING_WARNING_TUNE);
}
int tune_low_bat()
{
return ioctl(buzzer, TONE_SET_ALARM, 13);
return ioctl(buzzer, TONE_SET_ALARM, TONE_BATTERY_WARNING_SLOW_TUNE);
}
int tune_critical_bat()
{
return ioctl(buzzer, TONE_SET_ALARM, 14);
return ioctl(buzzer, TONE_SET_ALARM, TONE_BATTERY_WARNING_FAST_TUNE);
}
void tune_stop()
{
ioctl(buzzer, TONE_SET_ALARM, 0);
ioctl(buzzer, TONE_SET_ALARM, TONE_STOP_TUNE);
}
static int leds;

View File

@ -176,15 +176,15 @@ system_eval:
led_toggle(leds, LED_AMBER);
if (i % 10 == 0) {
ioctl(buzzer, TONE_SET_ALARM, 4);
ioctl(buzzer, TONE_SET_ALARM, TONE_NOTIFY_NEUTRAL_TUNE);
} else if (i % 5 == 0) {
ioctl(buzzer, TONE_SET_ALARM, 2);
ioctl(buzzer, TONE_SET_ALARM, TONE_ERROR_TUNE);
}
usleep(100000);
}
/* stop alarm */
ioctl(buzzer, TONE_SET_ALARM, 0);
ioctl(buzzer, TONE_SET_ALARM, TONE_STOP_TUNE);
/* switch on leds */
led_on(leds, LED_BLUE);

View File

@ -137,7 +137,7 @@ int test_tone(int argc, char *argv[])
tone = atoi(argv[1]);
if (tone == 0) {
result = ioctl(fd, TONE_SET_ALARM, 0);
result = ioctl(fd, TONE_SET_ALARM, TONE_STOP_TUNE);
if (result < 0) {
printf("failed clearing alarms\n");
@ -148,7 +148,7 @@ int test_tone(int argc, char *argv[])
}
} else {
result = ioctl(fd, TONE_SET_ALARM, 0);
result = ioctl(fd, TONE_SET_ALARM, TONE_STOP_TUNE);
if (result < 0) {
printf("failed clearing alarms\n");