timeout.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Daniel Krebs
3  * 2017 INRIA
4  *
5  * This file is subject to the terms and conditions of the GNU Lesser
6  * General Public License v2.1. See the file LICENSE in the top level
7  * directory for more details.
8  */
9 
10 #pragma once
11 
23 #include <assert.h>
24 #include <stdint.h>
25 #include <stdbool.h>
26 
27 #include "evtimer_msg.h"
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
36 #define GNRC_MAC_EVENT_TIMEOUT_TYPE (0x4400)
37 
45 typedef enum {
48 
52 typedef struct {
56 
60 typedef struct {
65  uint8_t timeout_num;
67 
77  gnrc_mac_timeout_event_t timeouts[],
78  uint8_t num);
79 
89  uint32_t offset, kernel_pid_t pid);
90 
100 
108 
118 static inline bool gnrc_mac_timeout_is_running(gnrc_mac_timeout_t *mac_timeout,
120 {
121  assert(mac_timeout);
122  return (gnrc_mac_find_timeout(mac_timeout, type) >= 0);
123 }
124 
135 
142 
143 #ifdef __cplusplus
144 }
145 #endif
146 
POSIX.1-2008 compliant version of the assert macro.
#define assert(cond)
abort the program if assertion is false
Definition: assert.h:135
IPC-based evtimer definitions.
int16_t kernel_pid_t
Unique process identifier.
Definition: sched.h:138
gnrc_mac_timeout_type_t
Definitions of GNRC_MAC timeout types.
Definition: timeout.h:45
@ GNRC_MAC_TIMEOUT_DISABLED
Timeout is disabled, not in used.
Definition: timeout.h:46
void gnrc_mac_clear_timeout(gnrc_mac_timeout_t *mac_timeout, gnrc_mac_timeout_type_t type)
Clear a MAC timeout of type.
void gnrc_mac_init_timeouts(gnrc_mac_timeout_t *mac_timeout, gnrc_mac_timeout_event_t timeouts[], uint8_t num)
Initialize the MAC timeout module of gnrc_mac before using, it also sets the timeout callback functio...
static bool gnrc_mac_timeout_is_running(gnrc_mac_timeout_t *mac_timeout, gnrc_mac_timeout_type_t type)
Check whether a MAC timeout of type is running or not.
Definition: timeout.h:118
bool gnrc_mac_timeout_is_expired(gnrc_mac_timeout_t *mac_timeout, gnrc_mac_timeout_type_t type)
Check whether a MAC timeout of type has expired or not.
void gnrc_mac_set_timeout(gnrc_mac_timeout_t *mac_timeout, gnrc_mac_timeout_type_t type, uint32_t offset, kernel_pid_t pid)
Set a MAC timeout of type.
int gnrc_mac_find_timeout(gnrc_mac_timeout_t *mac_timeout, gnrc_mac_timeout_type_t type)
Find a MAC timeout of type.
void gnrc_mac_reset_timeouts(gnrc_mac_timeout_t *mac_timeout)
Reset all the MAC timeouts.
IPC-message event.
Definition: evtimer_msg.h:40
Event timer.
Definition: evtimer.h:68
Structure of the GNRC_MAC timeout event.
Definition: timeout.h:52
evtimer_msg_event_t msg_event
The timeout message event.
Definition: timeout.h:53
gnrc_mac_timeout_type_t type
GNRC_MAC timeout type.
Definition: timeout.h:54
Structure holding the GNRC_MAC timeouts.
Definition: timeout.h:60
gnrc_mac_timeout_event_t * timeouts
The gnrc_mac timeout unites.
Definition: timeout.h:63
uint8_t timeout_num
Timeout number.
Definition: timeout.h:65
evtimer_t evtimer
evtimer entity which stores the timeout list.
Definition: timeout.h:61