Skip to content
Snippets Groups Projects
Commit 34836a2b authored by Alessandro Simovic's avatar Alessandro Simovic Committed by Beat Küng
Browse files

libtunes: allow custom tune (id 0) to be used to stop playback.

Override flag must still be set to true!
parent 2cf93df9
No related branches found
No related tags found
No related merge requests found
......@@ -94,6 +94,7 @@ int Tunes::set_control(const tune_control_s &tune_control)
switch (tune_control.tune_id) {
case static_cast<int>(TuneID::CUSTOM):
if (_tune == nullptr || tune_control.tune_override) {
_tune = nullptr; // remove tune in case of override
_frequency = (unsigned)tune_control.frequency;
_duration = (unsigned)tune_control.duration;
_silence = (unsigned)tune_control.silence;
......
......@@ -71,6 +71,8 @@ usage()
"\t-d <duration>\t\tDuration of the tone in us\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"
"\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);
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) {
break;
}
......@@ -193,7 +195,7 @@ tune_control_main(int argc, char *argv[])
PX4_INFO("Playback finished.");
} else {
} else { // tune id instead of string has been provided
if (tune_control.tune_id == 0) {
tune_control.tune_id = 1;
}
......@@ -210,13 +212,22 @@ tune_control_main(int argc, char *argv[])
usleep(500000);
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) {
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();
return 1;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment