mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2025-01-18 12:52:44 +01:00
gnrc/gomach : Move GNRC_GOMACH_CP_DURATION_US to 'CONFIG_'
This commit is contained in:
parent
517e7ff5f7
commit
ab3e197c3f
@ -57,14 +57,14 @@ extern "C" {
|
|||||||
* @brief The default duration of GoMacH's wake-up period (WP).
|
* @brief The default duration of GoMacH's wake-up period (WP).
|
||||||
*
|
*
|
||||||
* GoMacH adopts the duty-cycle scheme that, by default, a node only wakes up
|
* GoMacH adopts the duty-cycle scheme that, by default, a node only wakes up
|
||||||
* for a short period of @ref GNRC_GOMACH_CP_DURATION_US in each cycle. In the
|
* for a short period of @ref CONFIG_GNRC_GOMACH_CP_DURATION_US in each cycle. In the
|
||||||
* rest of the cycle (except vTDMA), the node turns off the radio to conserve
|
* rest of the cycle (except vTDMA), the node turns off the radio to conserve
|
||||||
* power. @ref GNRC_GOMACH_CP_DURATION_US should be at least longer than
|
* power. @ref CONFIG_GNRC_GOMACH_CP_DURATION_US should be at least longer than
|
||||||
* @ref GNRC_GOMACH_MAX_PREAM_INTERVAL_US, thus to guarantee that the receiver
|
* @ref GNRC_GOMACH_MAX_PREAM_INTERVAL_US, thus to guarantee that the receiver
|
||||||
* will not miss the preamble packet.
|
* will not miss the preamble packet.
|
||||||
*/
|
*/
|
||||||
#ifndef GNRC_GOMACH_CP_DURATION_US
|
#ifndef CONFIG_GNRC_GOMACH_CP_DURATION_US
|
||||||
#define GNRC_GOMACH_CP_DURATION_US (10U * US_PER_MS)
|
#define CONFIG_GNRC_GOMACH_CP_DURATION_US (10U * US_PER_MS)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -83,8 +83,9 @@ extern "C" {
|
|||||||
* beginning of a cycle.
|
* beginning of a cycle.
|
||||||
*
|
*
|
||||||
* @note GoMacH's superframe duration @ref GNRC_GOMACH_SUPERFRAME_DURATION_US
|
* @note GoMacH's superframe duration @ref GNRC_GOMACH_SUPERFRAME_DURATION_US
|
||||||
* should not be shorter than 10 times of @ref GNRC_GOMACH_CP_DURATION_US and
|
* should not be shorter than 10 times of
|
||||||
* not shorter than the RTT tickle interval.
|
* @ref CONFIG_GNRC_GOMACH_CP_DURATION_US and not shorter than the RTT tickle
|
||||||
|
* interval.
|
||||||
*/
|
*/
|
||||||
#ifndef GNRC_GOMACH_SUPERFRAME_DURATION_US
|
#ifndef GNRC_GOMACH_SUPERFRAME_DURATION_US
|
||||||
#define GNRC_GOMACH_SUPERFRAME_DURATION_US (300LU * US_PER_MS)
|
#define GNRC_GOMACH_SUPERFRAME_DURATION_US (300LU * US_PER_MS)
|
||||||
@ -94,12 +95,12 @@ extern "C" {
|
|||||||
#error "RTT_FREQUENCY undefined."
|
#error "RTT_FREQUENCY undefined."
|
||||||
#else
|
#else
|
||||||
#if ((GNRC_GOMACH_SUPERFRAME_DURATION_US < ((1000LU *US_PER_MS) / RTT_FREQUENCY)) || \
|
#if ((GNRC_GOMACH_SUPERFRAME_DURATION_US < ((1000LU *US_PER_MS) / RTT_FREQUENCY)) || \
|
||||||
(GNRC_GOMACH_SUPERFRAME_DURATION_US < (10 *GNRC_GOMACH_CP_DURATION_US)))
|
(GNRC_GOMACH_SUPERFRAME_DURATION_US < (10 * CONFIG_GNRC_GOMACH_CP_DURATION_US)))
|
||||||
#undef GNRC_GOMACH_SUPERFRAME_DURATION_US
|
#undef GNRC_GOMACH_SUPERFRAME_DURATION_US
|
||||||
#if (((1000LU *US_PER_MS) / RTT_FREQUENCY) > (10 * GNRC_GOMACH_CP_DURATION_US))
|
#if (((1000LU *US_PER_MS) / RTT_FREQUENCY) > (10 * CONFIG_GNRC_GOMACH_CP_DURATION_US))
|
||||||
#define GNRC_GOMACH_SUPERFRAME_DURATION_US ((1000LU * US_PER_MS) / RTT_FREQUENCY)
|
#define GNRC_GOMACH_SUPERFRAME_DURATION_US ((1000LU * US_PER_MS) / RTT_FREQUENCY)
|
||||||
#else
|
#else
|
||||||
#define GNRC_GOMACH_SUPERFRAME_DURATION_US (10 * GNRC_GOMACH_CP_DURATION_US)
|
#define GNRC_GOMACH_SUPERFRAME_DURATION_US (10 * CONFIG_GNRC_GOMACH_CP_DURATION_US)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
@ -109,9 +110,10 @@ extern "C" {
|
|||||||
* wake-up period (WP).
|
* wake-up period (WP).
|
||||||
*
|
*
|
||||||
* Currently, GoMacH's WP is actually composed of
|
* Currently, GoMacH's WP is actually composed of
|
||||||
* @ref GNRC_GOMACH_CP_DURATION_US and (+) @ref GNRC_GOMACH_CP_RANDOM_END_US.
|
* @ref CONFIG_GNRC_GOMACH_CP_DURATION_US and (+)
|
||||||
* We currently introduced this random period to avoid beacon collision among
|
* @ref GNRC_GOMACH_CP_RANDOM_END_US. We currently introduced this random
|
||||||
* neighbor nodes. This macro may be removed in the future.
|
* period to avoid beacon collision amongneighbor nodes. This macro may be
|
||||||
|
* removed in the future.
|
||||||
*/
|
*/
|
||||||
#ifndef GNRC_GOMACH_CP_RANDOM_END_US
|
#ifndef GNRC_GOMACH_CP_RANDOM_END_US
|
||||||
#define GNRC_GOMACH_CP_RANDOM_END_US (1U * US_PER_MS)
|
#define GNRC_GOMACH_CP_RANDOM_END_US (1U * US_PER_MS)
|
||||||
@ -129,7 +131,7 @@ extern "C" {
|
|||||||
* reaches this @ref GNRC_GOMACH_CP_DURATION_MAX_US duration.
|
* reaches this @ref GNRC_GOMACH_CP_DURATION_MAX_US duration.
|
||||||
*/
|
*/
|
||||||
#ifndef GNRC_GOMACH_CP_DURATION_MAX_US
|
#ifndef GNRC_GOMACH_CP_DURATION_MAX_US
|
||||||
#define GNRC_GOMACH_CP_DURATION_MAX_US (5LU * GNRC_GOMACH_CP_DURATION_US)
|
#define GNRC_GOMACH_CP_DURATION_MAX_US (5LU * CONFIG_GNRC_GOMACH_CP_DURATION_US)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -472,18 +472,18 @@ static void gomach_t2k_init(gnrc_netif_t *netif)
|
|||||||
* Firstly, put the calculated phase ahead, check whether the neighbor's phase has gone ahead
|
* Firstly, put the calculated phase ahead, check whether the neighbor's phase has gone ahead
|
||||||
* of the recorded one */
|
* of the recorded one */
|
||||||
if (netif->mac.tx.no_ack_counter == (GNRC_GOMACH_REPHASELOCK_THRESHOLD - 2)) {
|
if (netif->mac.tx.no_ack_counter == (GNRC_GOMACH_REPHASELOCK_THRESHOLD - 2)) {
|
||||||
if ((uint32_t)wait_phase_duration < GNRC_GOMACH_CP_DURATION_US) {
|
if ((uint32_t)wait_phase_duration < CONFIG_GNRC_GOMACH_CP_DURATION_US) {
|
||||||
wait_phase_duration = (wait_phase_duration + GNRC_GOMACH_SUPERFRAME_DURATION_US) -
|
wait_phase_duration = (wait_phase_duration + GNRC_GOMACH_SUPERFRAME_DURATION_US) -
|
||||||
GNRC_GOMACH_CP_DURATION_US;
|
CONFIG_GNRC_GOMACH_CP_DURATION_US;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
wait_phase_duration = wait_phase_duration - GNRC_GOMACH_CP_DURATION_US;
|
wait_phase_duration = wait_phase_duration - CONFIG_GNRC_GOMACH_CP_DURATION_US;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* If this is the last t2k trial, the phase-lock auto-adjust scheme delays the estimated phase
|
/* If this is the last t2k trial, the phase-lock auto-adjust scheme delays the estimated phase
|
||||||
* a little bit, to see if the real phase is behind the original calculated one. */
|
* a little bit, to see if the real phase is behind the original calculated one. */
|
||||||
if (netif->mac.tx.no_ack_counter == (GNRC_GOMACH_REPHASELOCK_THRESHOLD - 1)) {
|
if (netif->mac.tx.no_ack_counter == (GNRC_GOMACH_REPHASELOCK_THRESHOLD - 1)) {
|
||||||
wait_phase_duration = wait_phase_duration + GNRC_GOMACH_CP_DURATION_US;
|
wait_phase_duration = wait_phase_duration + CONFIG_GNRC_GOMACH_CP_DURATION_US;
|
||||||
if ((uint32_t)wait_phase_duration > GNRC_GOMACH_SUPERFRAME_DURATION_US) {
|
if ((uint32_t)wait_phase_duration > GNRC_GOMACH_SUPERFRAME_DURATION_US) {
|
||||||
wait_phase_duration = wait_phase_duration - GNRC_GOMACH_SUPERFRAME_DURATION_US;
|
wait_phase_duration = wait_phase_duration - GNRC_GOMACH_SUPERFRAME_DURATION_US;
|
||||||
}
|
}
|
||||||
@ -573,16 +573,13 @@ static void _cp_tx_success(gnrc_netif_t *netif)
|
|||||||
* phase upon success. Here the new phase will be put ahead to the
|
* phase upon success. Here the new phase will be put ahead to the
|
||||||
* original phase. */
|
* original phase. */
|
||||||
if (netif->mac.tx.no_ack_counter == (GNRC_GOMACH_REPHASELOCK_THRESHOLD - 2)) {
|
if (netif->mac.tx.no_ack_counter == (GNRC_GOMACH_REPHASELOCK_THRESHOLD - 2)) {
|
||||||
if (netif->mac.tx.current_neighbor->cp_phase >=
|
if (netif->mac.tx.current_neighbor->cp_phase >= CONFIG_GNRC_GOMACH_CP_DURATION_US) {
|
||||||
GNRC_GOMACH_CP_DURATION_US) {
|
netif->mac.tx.current_neighbor->cp_phase -= CONFIG_GNRC_GOMACH_CP_DURATION_US;
|
||||||
netif->mac.tx.current_neighbor->cp_phase -=
|
|
||||||
GNRC_GOMACH_CP_DURATION_US;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
netif->mac.tx.current_neighbor->cp_phase +=
|
netif->mac.tx.current_neighbor->cp_phase +=
|
||||||
GNRC_GOMACH_SUPERFRAME_DURATION_US;
|
GNRC_GOMACH_SUPERFRAME_DURATION_US;
|
||||||
netif->mac.tx.current_neighbor->cp_phase -=
|
netif->mac.tx.current_neighbor->cp_phase -= CONFIG_GNRC_GOMACH_CP_DURATION_US;
|
||||||
GNRC_GOMACH_CP_DURATION_US;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Here is the phase-lock auto-adjust scheme. Use the new adjusted
|
/* Here is the phase-lock auto-adjust scheme. Use the new adjusted
|
||||||
@ -590,7 +587,7 @@ static void _cp_tx_success(gnrc_netif_t *netif)
|
|||||||
* phase. */
|
* phase. */
|
||||||
if (netif->mac.tx.no_ack_counter == (GNRC_GOMACH_REPHASELOCK_THRESHOLD - 1)) {
|
if (netif->mac.tx.no_ack_counter == (GNRC_GOMACH_REPHASELOCK_THRESHOLD - 1)) {
|
||||||
netif->mac.tx.current_neighbor->cp_phase +=
|
netif->mac.tx.current_neighbor->cp_phase +=
|
||||||
(GNRC_GOMACH_CP_DURATION_US + 20 * US_PER_MS);
|
(CONFIG_GNRC_GOMACH_CP_DURATION_US + 20 * US_PER_MS);
|
||||||
|
|
||||||
if (netif->mac.tx.current_neighbor->cp_phase >=
|
if (netif->mac.tx.current_neighbor->cp_phase >=
|
||||||
GNRC_GOMACH_SUPERFRAME_DURATION_US) {
|
GNRC_GOMACH_SUPERFRAME_DURATION_US) {
|
||||||
@ -1486,10 +1483,9 @@ static void gomach_listen_init(gnrc_netif_t *netif)
|
|||||||
|
|
||||||
/* Set listen period timeout. */
|
/* Set listen period timeout. */
|
||||||
uint32_t listen_period = random_uint32_range(0, GNRC_GOMACH_CP_RANDOM_END_US) +
|
uint32_t listen_period = random_uint32_range(0, GNRC_GOMACH_CP_RANDOM_END_US) +
|
||||||
GNRC_GOMACH_CP_DURATION_US;
|
CONFIG_GNRC_GOMACH_CP_DURATION_US;
|
||||||
gnrc_gomach_set_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_END, listen_period);
|
gnrc_gomach_set_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_END, listen_period);
|
||||||
gnrc_gomach_set_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_MAX, GNRC_GOMACH_CP_DURATION_MAX_US);
|
gnrc_gomach_set_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_MAX, GNRC_GOMACH_CP_DURATION_MAX_US);
|
||||||
|
|
||||||
gnrc_netif_set_rx_started(netif, false);
|
gnrc_netif_set_rx_started(netif, false);
|
||||||
gnrc_gomach_set_pkt_received(netif, false);
|
gnrc_gomach_set_pkt_received(netif, false);
|
||||||
netif->mac.prot.gomach.cp_extend_count = 0;
|
netif->mac.prot.gomach.cp_extend_count = 0;
|
||||||
@ -1523,14 +1519,16 @@ static void _cp_listen_get_pkt(gnrc_netif_t *netif)
|
|||||||
gnrc_gomach_set_got_preamble(netif, false);
|
gnrc_gomach_set_got_preamble(netif, false);
|
||||||
gnrc_gomach_set_cp_end(netif, false);
|
gnrc_gomach_set_cp_end(netif, false);
|
||||||
gnrc_gomach_clear_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_END);
|
gnrc_gomach_clear_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_END);
|
||||||
gnrc_gomach_set_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_END, GNRC_GOMACH_CP_DURATION_US);
|
gnrc_gomach_set_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_END,
|
||||||
|
CONFIG_GNRC_GOMACH_CP_DURATION_US);
|
||||||
}
|
}
|
||||||
else if ((!gnrc_gomach_get_unintd_preamble(netif)) &&
|
else if ((!gnrc_gomach_get_unintd_preamble(netif)) &&
|
||||||
(!gnrc_gomach_get_quit_cycle(netif))) {
|
(!gnrc_gomach_get_quit_cycle(netif))) {
|
||||||
gnrc_gomach_set_got_preamble(netif, false);
|
gnrc_gomach_set_got_preamble(netif, false);
|
||||||
gnrc_gomach_set_cp_end(netif, false);
|
gnrc_gomach_set_cp_end(netif, false);
|
||||||
gnrc_gomach_clear_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_END);
|
gnrc_gomach_clear_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_END);
|
||||||
gnrc_gomach_set_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_END, GNRC_GOMACH_CP_DURATION_US);
|
gnrc_gomach_set_timeout(netif, GNRC_GOMACH_TIMEOUT_CP_END,
|
||||||
|
CONFIG_GNRC_GOMACH_CP_DURATION_US);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user