diff --git a/src/systemcmds/tests/test_tone.cpp b/src/systemcmds/tests/test_tone.cpp index b5605f6d02..198f546aed 100644 --- a/src/systemcmds/tests/test_tone.cpp +++ b/src/systemcmds/tests/test_tone.cpp @@ -40,63 +40,53 @@ #include #include +#include #include +#include #include "tests_main.h" - int test_tone(int argc, char *argv[]) { - int fd, result; - unsigned long tone; + int result = PX4_ERROR; + tune_control_s tune_control = {}; + tune_control.tune_id = static_cast(TuneID::NOTIFY_NEGATIVE); - fd = px4_open(TONE_ALARM0_DEVICE_PATH, O_WRONLY); + orb_advert_t tune_control_pub = orb_advertise(ORB_ID(tune_control), &tune_control); - if (fd < 0) { - printf("failed opening " TONE_ALARM0_DEVICE_PATH "\n"); - goto out; + if (argc == 1) { + PX4_INFO("Volume silenced for testing predefined tunes 0-20."); + tune_control.strength = 0; + + for (size_t i = 0; i <= 20; i++) { + tune_control.tune_id = i; + result = orb_publish(ORB_ID(tune_control), tune_control_pub, &tune_control); + + if (result != PX4_OK) { + PX4_INFO("Error publishing TuneID: %d", tune_control.tune_id); + return result; + } + } + + tune_control.tune_id = static_cast(TuneID::NOTIFY_POSITIVE); } - tone = 1; - if (argc == 2) { - tone = atoi(argv[1]); - } - - if (tone == 0) { - result = px4_ioctl(fd, TONE_SET_ALARM, TONE_STOP_TUNE); - - if (result < 0) { - printf("failed clearing alarms\n"); - goto out; - - } else { - printf("Alarm stopped.\n"); - } - - } else { - result = px4_ioctl(fd, TONE_SET_ALARM, TONE_STOP_TUNE); - - if (result < 0) { - printf("failed clearing alarms\n"); - goto out; - } - - result = px4_ioctl(fd, TONE_SET_ALARM, tone); - - if (result < 0) { - printf("failed setting alarm %lu\n", tone); - - } else { - printf("Alarm %lu (disable with: tests tone 0)\n", tone); + if (tune_control.tune_id <= 20) { + tune_control.tune_id = atoi(argv[1]); + PX4_INFO("Testing TuneID: %d", tune_control.tune_id); } } -out: - - if (fd >= 0) { - px4_close(fd); + if (argc == 3) { + Tunes tunes{}; + tunes.set_string(argv[2], 40); + PX4_INFO("Testing custom tune."); } - return 0; + tune_control.strength = 40; + result = orb_publish(ORB_ID(tune_control), tune_control_pub, &tune_control); + + orb_unadvertise(tune_control_pub); + return result; } diff --git a/src/systemcmds/tests/tests_main.h b/src/systemcmds/tests/tests_main.h index 05b68a5c48..c5d1928ed0 100644 --- a/src/systemcmds/tests/tests_main.h +++ b/src/systemcmds/tests/tests_main.h @@ -45,9 +45,9 @@ __BEGIN_DECLS extern int test_adc(int argc, char *argv[]); extern int test_autodeclination(int argc, char *argv[]); -extern int test_hysteresis(int argc, char *argv[]); extern int test_bezierQuad(int argc, char *argv[]); extern int test_bson(int argc, char *argv[]); +extern int test_controlmath(int argc, char *argv[]); extern int test_conv(int argc, char *argv[]); extern int test_dataman(int argc, char *argv[]); extern int test_file(int argc, char *argv[]); @@ -55,6 +55,7 @@ extern int test_file2(int argc, char *argv[]); extern int test_float(int argc, char *argv[]); extern int test_hott_telemetry(int argc, char *argv[]); extern int test_hrt(int argc, char *argv[]); +extern int test_hysteresis(int argc, char *argv[]); extern int test_int(int argc, char *argv[]); extern int test_jig_voltages(int argc, char *argv[]); extern int test_led(int argc, char *argv[]); @@ -67,6 +68,7 @@ extern int test_microbench_uorb(int argc, char *argv[]); extern int test_mixer(int argc, char *argv[]); extern int test_mount(int argc, char *argv[]); extern int test_param(int argc, char *argv[]); +extern int test_parameters(int argc, char *argv[]); extern int test_perf(int argc, char *argv[]); extern int test_ppm(int argc, char *argv[]); extern int test_ppm_loopback(int argc, char *argv[]); @@ -75,6 +77,7 @@ extern int test_search_min(int argc, char *argv[]); extern int test_sensors(int argc, char *argv[]); extern int test_servo(int argc, char *argv[]); extern int test_sleep(int argc, char *argv[]); +extern int test_smooth_z(int argc, char *argv[]); extern int test_time(int argc, char *argv[]); extern int test_tone(int argc, char *argv[]); extern int test_uart_baudchange(int argc, char *argv[]); @@ -82,10 +85,7 @@ extern int test_uart_break(int argc, char *argv[]); extern int test_uart_console(int argc, char *argv[]); extern int test_uart_loopback(int argc, char *argv[]); extern int test_uart_send(int argc, char *argv[]); -extern int test_parameters(int argc, char *argv[]); extern int test_versioning(int argc, char *argv[]); -extern int test_smooth_z(int argc, char *argv[]); -extern int test_controlmath(int argc, char *argv[]); /* external */ extern int commander_tests_main(int argc, char *argv[]);