AP_Notify: support playing tunes by string on ChibiOS

This commit is contained in:
Andrew Tridgell 2018-07-19 10:38:31 +10:00
parent 4244daeb2d
commit d93964b319
2 changed files with 26 additions and 0 deletions

View File

@ -21,6 +21,7 @@
#if CONFIG_HAL_BOARD == HAL_BOARD_CHIBIOS
#include "ToneAlarm_ChibiOS.h"
#include <AP_HAL_ChibiOS/ToneAlarm.h>
#include <AP_Math/AP_Math.h>
#include "AP_Notify.h"
extern const AP_HAL::HAL& hal;
@ -102,4 +103,26 @@ void ToneAlarm_ChibiOS::update()
}
}
/*
handle a PLAY_TUNE message
*/
void ToneAlarm_ChibiOS::handle_play_tune(mavlink_message_t *msg)
{
// decode mavlink message
mavlink_play_tune_t packet;
mavlink_msg_play_tune_decode(msg, &packet);
char str[100];
strncpy(str, packet.tune, MIN(sizeof(packet.tune), sizeof(str)-1));
str[sizeof(str)-1] = 0;
uint8_t len = strlen(str);
uint8_t len2 = strnlen(packet.tune2, sizeof(packet.tune2));
len2 = MIN((sizeof(str)-1)-len, len2);
strncpy(str+len, packet.tune2, len2);
str[sizeof(str)-1] = 0;
hal.util->toneAlarm_set_tune_string(str);
}
#endif // CONFIG_HAL_BOARD == HAL_BOARD_CHIBIOS

View File

@ -28,6 +28,9 @@ public:
/// 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
bool play_tune(uint8_t tune_number);