diff --git a/sys/include/net/gnrc/mac/types.h b/sys/include/net/gnrc/mac/types.h index ed70a6170650846d18d5bc7cda9ee560a4f9774f..c69b301436cadff480f6825262e26ebfe55137e9 100644 --- a/sys/include/net/gnrc/mac/types.h +++ b/sys/include/net/gnrc/mac/types.h @@ -40,6 +40,13 @@ extern "C" { #endif +/** + * @brief MAC message type for getting radio's duty-cycle. + */ +#ifndef GNRC_MAC_TYPE_GET_DUTYCYCLE +#define GNRC_MAC_TYPE_GET_DUTYCYCLE (0x4401) +#endif + /** * @brief definition for device transmission feedback types */ diff --git a/sys/net/gnrc/link_layer/gomach/gomach.c b/sys/net/gnrc/link_layer/gomach/gomach.c index e1ecf5b1ddb9b2e02432fceae33b98ce6a56af70..a3b6384b1fd25851a2995c9a6da15571e9ef0b75 100644 --- a/sys/net/gnrc/link_layer/gomach/gomach.c +++ b/sys/net/gnrc/link_layer/gomach/gomach.c @@ -949,15 +949,6 @@ static void gomach_t2k_end(gnrc_netif_t *netif) netif->mac.rx.listen_state = GNRC_GOMACH_LISTEN_SLEEP; gnrc_gomach_set_enter_new_cycle(netif, false); gnrc_gomach_set_update(netif, true); - -#if (GNRC_GOMACH_ENABLE_DUTYCYLE_RECORD == 1) - /* Output duty-cycle ratio */ - uint64_t duty; - duty = xtimer_now_usec64(); - duty = (netif->mac.prot.gomach.awake_duration_sum_ticks) * 100 / - (duty - netif->mac.prot.gomach.system_start_time_ticks); - printf("[GoMacH]: achieved radio duty-cycle: %lu %% \n", (uint32_t)duty); -#endif } static void gomach_t2k_update(gnrc_netif_t *netif) @@ -1406,15 +1397,6 @@ static void gomach_t2u_end(gnrc_netif_t *netif) netif->mac.rx.listen_state = GNRC_GOMACH_LISTEN_SLEEP; gnrc_gomach_set_enter_new_cycle(netif, false); gnrc_gomach_set_update(netif, true); - -#if (GNRC_GOMACH_ENABLE_DUTYCYLE_RECORD == 1) - /* Output duty-cycle ratio */ - uint64_t duty; - duty = xtimer_now_usec64(); - duty = (netif->mac.prot.gomach.awake_duration_sum_ticks) * 100 / - (duty - netif->mac.prot.gomach.system_start_time_ticks); - printf("[GoMacH]: achieved radio duty-cycle: %lu %% \n", (uint32_t)duty); -#endif } static void gomach_t2u_update(gnrc_netif_t *netif) @@ -2004,6 +1986,17 @@ static void _gomach_msg_handler(gnrc_netif_t *netif, msg_t *msg) gnrc_gomach_set_update(netif, true); break; } +#if (GNRC_MAC_ENABLE_DUTYCYCLE_RECORD == 1) + case GNRC_MAC_TYPE_GET_DUTYCYCLE: { + /* Output GoMacH's current radio duty-cycle. */ + uint64_t duty; + duty = xtimer_now_usec64(); + duty = (netif->mac.prot.gomach.awake_duration_sum_ticks) * 100 / + (duty - netif->mac.prot.gomach.system_start_time_ticks); + printf("[GoMacH]: achieved radio duty-cycle: %lu %% \n", (uint32_t)duty); + break; + } +#endif default: { DEBUG("[GoMacH]: Unknown command %" PRIu16 "\n", msg->type); break;