mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-03 14:38:30 -04:00
545e417348
Evaluated solo specific tones file vs standard px4 tones files. The only thing the Solo had that standard ArduPilot does not have is the GPS unplugged tone and the power off tone. * Some tones have a different tune, which is fine. We want the Solo to sound like ArduPilot if it is running ArduPilot. * GPS unplugged tone abandoned. Determined to be unnecessary. * Power off tone merged into standard px4 tones file. Smart battery signalling a power off will make use of this tone. Has application for any smart battery equipped vehicle, not just Solo. * Removed all references and dependencies to `ToneAlarm_PX4_Solo.cpp` and `ToneAlarm_PX4_Solo.h` * Deleted `ToneAlarm_PX4_Solo.cpp` and `ToneAlarm_PX4_Solo.h` since they're no longer needed.
77 lines
2.7 KiB
C++
77 lines
2.7 KiB
C++
/*
|
|
ToneAlarm PX4 driver
|
|
*/
|
|
/*
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#pragma once
|
|
|
|
#include "NotifyDevice.h"
|
|
|
|
// wait 2 seconds before assuming a tone is done and continuing the continuous tone
|
|
#define AP_NOTIFY_PX4_MAX_TONE_LENGTH_MS 2000
|
|
|
|
class ToneAlarm_PX4: public NotifyDevice
|
|
{
|
|
public:
|
|
/// init - initialised the tone alarm
|
|
bool init(void);
|
|
|
|
/// update - updates led according to timed_updated. Should be called at 50Hz
|
|
void update();
|
|
|
|
// handle a PLAY_TUNE message
|
|
void handle_play_tune(mavlink_message_t *msg);
|
|
|
|
private:
|
|
/// play_tune - play one of the pre-defined tunes
|
|
void play_tone(const uint8_t tone_index);
|
|
|
|
// play_string - play tone specified by the provided string of notes
|
|
void play_string(const char *str);
|
|
|
|
// stop_cont_tone - stop playing the currently playing continuous tone
|
|
void stop_cont_tone();
|
|
|
|
// check_cont_tone - check if we should begin playing a continuous tone
|
|
void check_cont_tone();
|
|
|
|
int _tonealarm_fd; // file descriptor for the tone alarm
|
|
|
|
/// tonealarm_type - bitmask of states we track
|
|
struct tonealarm_type {
|
|
uint16_t armed : 1; // 0 = disarmed, 1 = armed
|
|
uint16_t failsafe_battery : 1; // 1 if battery failsafe
|
|
uint16_t parachute_release : 1; // 1 if parachute is being released
|
|
uint16_t pre_arm_check : 1; // 0 = failing checks, 1 = passed
|
|
uint16_t failsafe_radio : 1; // 1 if radio failsafe
|
|
uint16_t vehicle_lost : 1; // 1 if lost copter tone requested
|
|
uint16_t compass_cal_running : 1; // 1 if compass calibration is running
|
|
uint16_t waiting_for_throw : 1; // 1 if waiting for copter throw launch
|
|
uint16_t leak_detected : 1; // 1 if leak detected
|
|
uint16_t powering_off : 1; // 1 if smart battery is powering off
|
|
} flags;
|
|
|
|
int8_t _cont_tone_playing;
|
|
int8_t _tone_playing;
|
|
uint32_t _tone_beginning_ms;
|
|
|
|
struct Tone {
|
|
const char *str;
|
|
const uint8_t continuous : 1;
|
|
};
|
|
|
|
const static Tone _tones[];
|
|
};
|