diff --git a/boards/atl/mantis-edu/src/CMakeLists.txt b/boards/atl/mantis-edu/src/CMakeLists.txt index c7522a98b1..398389f97d 100644 --- a/boards/atl/mantis-edu/src/CMakeLists.txt +++ b/boards/atl/mantis-edu/src/CMakeLists.txt @@ -39,7 +39,7 @@ add_library(drivers_board spi.cpp timer_config.cpp usb.c - pwr.c + pwr.cpp ) add_dependencies(drivers_board arch_board_hw_info) diff --git a/boards/atl/mantis-edu/src/pwr.c b/boards/atl/mantis-edu/src/pwr.cpp similarity index 90% rename from boards/atl/mantis-edu/src/pwr.c rename to boards/atl/mantis-edu/src/pwr.cpp index 2db785891f..36e1792f92 100644 --- a/boards/atl/mantis-edu/src/pwr.c +++ b/boards/atl/mantis-edu/src/pwr.cpp @@ -53,6 +53,7 @@ #include #include +#include #include #include @@ -116,13 +117,26 @@ int board_power_off(int status) static int board_button_irq(int irq, FAR void *context, FAR void *args) { + uORB::Publication tune_control_pub{ORB_ID(tune_control)}; + if (board_pwr_button_down()) { led_on(BOARD_LED_RED); clock_gettime(CLOCK_REALTIME, &time_down); power_state_notification(PWR_BUTTON_DOWN); + tune_control_s tune_control{}; + tune_control.volume = tune_control_s::VOLUME_LEVEL_DEFAULT - 20; + tune_control.tune_id = tune_control_s::TUNE_ID_POWER_OFF; + tune_control.timestamp = hrt_absolute_time(); + tune_control_pub.publish(tune_control); + } else { + tune_control_s tune_control{}; + tune_control.tune_override = true; + tune_control.timestamp = hrt_absolute_time(); + tune_control_pub.publish(tune_control); + power_state_notification(PWR_BUTTON_UP); led_off(BOARD_LED_RED);