mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-27 10:17:45 +08:00
libtunes: allow custom tune (id 0) to be used to stop playback.
Override flag must still be set to true!
This commit is contained in:
committed by
Beat Küng
parent
2cf93df918
commit
34836a2b21
@@ -94,6 +94,7 @@ int Tunes::set_control(const tune_control_s &tune_control)
|
|||||||
switch (tune_control.tune_id) {
|
switch (tune_control.tune_id) {
|
||||||
case static_cast<int>(TuneID::CUSTOM):
|
case static_cast<int>(TuneID::CUSTOM):
|
||||||
if (_tune == nullptr || tune_control.tune_override) {
|
if (_tune == nullptr || tune_control.tune_override) {
|
||||||
|
_tune = nullptr; // remove tune in case of override
|
||||||
_frequency = (unsigned)tune_control.frequency;
|
_frequency = (unsigned)tune_control.frequency;
|
||||||
_duration = (unsigned)tune_control.duration;
|
_duration = (unsigned)tune_control.duration;
|
||||||
_silence = (unsigned)tune_control.silence;
|
_silence = (unsigned)tune_control.silence;
|
||||||
|
|||||||
@@ -71,6 +71,8 @@ usage()
|
|||||||
"\t-d <duration>\t\tDuration of the tone in us\n"
|
"\t-d <duration>\t\tDuration of the tone in us\n"
|
||||||
"\t-s <strength>\t\tStrength of the tone between 0-100\n"
|
"\t-s <strength>\t\tStrength of the tone between 0-100\n"
|
||||||
"\t-m <melody>\t\tMelody in a string form ex: \"MFT200e8a8a\"\n"
|
"\t-m <melody>\t\tMelody in a string form ex: \"MFT200e8a8a\"\n"
|
||||||
|
"\n"
|
||||||
|
"tune_control stop \t\t Stops playback, useful for repeated tunes\n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,7 +187,7 @@ tune_control_main(int argc, char *argv[])
|
|||||||
usleep(duration + silence);
|
usleep(duration + silence);
|
||||||
exit_counter++;
|
exit_counter++;
|
||||||
|
|
||||||
// exit if the loop is doing more thatn 50 iteration
|
// exit if the loop is doing too many iterations
|
||||||
if (exit_counter > MAX_NOTE_ITERATION) {
|
if (exit_counter > MAX_NOTE_ITERATION) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -193,7 +195,7 @@ tune_control_main(int argc, char *argv[])
|
|||||||
|
|
||||||
PX4_INFO("Playback finished.");
|
PX4_INFO("Playback finished.");
|
||||||
|
|
||||||
} else {
|
} else { // tune id instead of string has been provided
|
||||||
if (tune_control.tune_id == 0) {
|
if (tune_control.tune_id == 0) {
|
||||||
tune_control.tune_id = 1;
|
tune_control.tune_id = 1;
|
||||||
}
|
}
|
||||||
@@ -210,13 +212,22 @@ tune_control_main(int argc, char *argv[])
|
|||||||
usleep(500000);
|
usleep(500000);
|
||||||
exit_counter++;
|
exit_counter++;
|
||||||
|
|
||||||
// exit if the loop is doing more thatn 50 iteration
|
// exit if the loop is doing too many iterations
|
||||||
if (exit_counter > MAX_NOTE_ITERATION) {
|
if (exit_counter > MAX_NOTE_ITERATION) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else if (!strcmp(argv[myoptind], "stop")) {
|
||||||
|
PX4_INFO("Stopping playback...");
|
||||||
|
tune_control.tune_id = 0;
|
||||||
|
tune_control.frequency = 0;
|
||||||
|
tune_control.duration = 0;
|
||||||
|
tune_control.silence = 0;
|
||||||
|
tune_control.tune_override = true;
|
||||||
|
publish_tune_control(tune_control);
|
||||||
|
|
||||||
|
} else {
|
||||||
usage();
|
usage();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user