OpenWSN Firmware
|
Manages the IEEE802.15.4e schedule. More...
Data Structures | |
struct | scheduleEntry_t |
struct | debugScheduleEntry_t |
struct | slotinfo_element_t |
struct | schedule_vars_t |
Macros | |
#define | SUPERFRAME_LENGTH 11 |
The length of the superframe, in slots. More... | |
#define | NUMADVSLOTS 1 |
#define | NUMSHAREDTXRX 5 |
#define | NUMSERIALRX 3 |
#define | MAXACTIVESLOTS (NUMADVSLOTS+NUMSHAREDTXRX+NUMSERIALRX) |
Maximum number of active slots in a superframe. More... | |
#define | MINBE 2 |
Minimum backoff exponent. More... | |
#define | MAXBE 4 |
Maximum backoff exponent. More... | |
#define | SCHEDULE_MINIMAL_6TISCH_ACTIVE_CELLS 5 |
#define | SCHEDULE_MINIMAL_6TISCH_EB_CELLS 1 |
#define | SCHEDULE_MINIMAL_6TISCH_SLOTFRAME_SIZE 101 |
#define | SCHEDULE_MINIMAL_6TISCH_DEFAULT_SLOTFRAME_HANDLE 1 |
#define | SCHEDULE_MINIMAL_6TISCH_DEFAULT_SLOTFRAME_NUMBER 1 |
Typedefs | |
typedef uint8_t | channelOffset_t |
typedef uint16_t | slotOffset_t |
typedef uint16_t | frameLength_t |
Enumerations | |
enum | cellType_t { CELLTYPE_OFF = 0, CELLTYPE_ADV = 1, CELLTYPE_TX = 2, CELLTYPE_RX = 3, CELLTYPE_TXRX = 4, CELLTYPE_SERIALRX = 5, CELLTYPE_MORESERIALRX = 6 } |
Functions | |
void | schedule_init (void) |
Initialize this module. More... | |
bool | debugPrint_schedule (void) |
Trigger this module to print status information, over serial. More... | |
bool | debugPrint_backoff (void) |
Trigger this module to print status information, over serial. More... | |
void | schedule_setFrameLength (frameLength_t newFrameLength) |
Set frame length. More... | |
owerror_t | schedule_addActiveSlot (slotOffset_t slotOffset, cellType_t type, bool shared, uint8_t channelOffset, open_addr_t *neighbor) |
Add a new active slot into the schedule. More... | |
void | schedule_getSlotInfo (slotOffset_t slotOffset, open_addr_t *neighbor, slotinfo_element_t *info) |
Get the information of a specific slot. More... | |
owerror_t | schedule_removeActiveSlot (slotOffset_t slotOffset, open_addr_t *neighbor) |
Remove an active slot from the schedule. More... | |
bool | schedule_isSlotOffsetAvailable (uint16_t slotOffset) |
void | schedule_syncSlotOffset (slotOffset_t targetSlotOffset) |
void | schedule_advanceSlot (void) |
advance to next active slot More... | |
slotOffset_t | schedule_getNextActiveSlotOffset (void) |
return slotOffset of next active slot More... | |
frameLength_t | schedule_getFrameLength (void) |
Get the frame length. More... | |
cellType_t | schedule_getType (void) |
Get the type of the current schedule entry. More... | |
void | schedule_getNeighbor (open_addr_t *addrToWrite) |
Get the neighbor associated wit the current schedule entry. More... | |
channelOffset_t | schedule_getChannelOffset (void) |
Get the channel offset of the current schedule entry. More... | |
bool | schedule_getOkToSend (void) |
Check whether I can send on this slot. More... | |
void | schedule_resetBackoff (void) |
Reset the backoff and backoffExponent. More... | |
void | schedule_indicateRx (asn_t *asnTimestamp) |
Indicate the reception of a packet. More... | |
void | schedule_indicateTx (asn_t *asnTimestamp, bool succesfullTx) |
Indicate the transmission of a packet. More... | |
Manages the IEEE802.15.4e schedule.
#define MAXACTIVESLOTS (NUMADVSLOTS+NUMSHAREDTXRX+NUMSERIALRX) |
Maximum number of active slots in a superframe.
Note that this is merely used to allocate RAM memory for the schedule. The schedule is represented, in RAM, by a table. There is one row per active slot in that table; a slot is "active" when it is not of type CELLTYPE_OFF.
Set this number to the exact number of active slots you are planning on having in your schedule, so not to waste RAM.
#define MAXBE 4 |
Maximum backoff exponent.
See MINBE for an explanation of backoff.
#define MINBE 2 |
Minimum backoff exponent.
Backoff is used only in slots that are marked as shared in the schedule. When not shared, the mote assumes that schedule is collision-free, and therefore does not use any backoff mechanism when a transmission fails.
#define NUMADVSLOTS 1 |
#define NUMSERIALRX 3 |
#define NUMSHAREDTXRX 5 |
#define SCHEDULE_MINIMAL_6TISCH_ACTIVE_CELLS 5 |
#define SCHEDULE_MINIMAL_6TISCH_DEFAULT_SLOTFRAME_HANDLE 1 |
#define SCHEDULE_MINIMAL_6TISCH_DEFAULT_SLOTFRAME_NUMBER 1 |
#define SCHEDULE_MINIMAL_6TISCH_EB_CELLS 1 |
#define SCHEDULE_MINIMAL_6TISCH_SLOTFRAME_SIZE 101 |
#define SUPERFRAME_LENGTH 11 |
The length of the superframe, in slots.
The superframe repears over time and can be arbitrarly long.
typedef uint8_t channelOffset_t |
typedef uint16_t frameLength_t |
typedef uint16_t slotOffset_t |
enum cellType_t |
bool debugPrint_backoff | ( | void | ) |
Trigger this module to print status information, over serial.
debugPrint_* functions are used by the openserial module to continuously print status information about several modules in the OpenWSN stack.
bool debugPrint_schedule | ( | void | ) |
Trigger this module to print status information, over serial.
debugPrint_* functions are used by the openserial module to continuously print status information about several modules in the OpenWSN stack.
owerror_t schedule_addActiveSlot | ( | slotOffset_t | slotOffset, |
cellType_t | type, | ||
bool | shared, | ||
channelOffset_t | channelOffset, | ||
open_addr_t * | neighbor | ||
) |
Add a new active slot into the schedule.
slotOffset | The slotoffset of the new slot |
type | The type of the cell |
shared | Whether this cell is shared (TRUE) or not (FALSE). |
channelOffset | The channelOffset of the new slot |
neighbor | The neighbor associated with this cell (all 0's if none) |
void schedule_advanceSlot | ( | void | ) |
advance to next active slot
channelOffset_t schedule_getChannelOffset | ( | void | ) |
Get the channel offset of the current schedule entry.
frameLength_t schedule_getFrameLength | ( | void | ) |
Get the frame length.
void schedule_getNeighbor | ( | open_addr_t * | addrToWrite | ) |
Get the neighbor associated wit the current schedule entry.
slotOffset_t schedule_getNextActiveSlotOffset | ( | void | ) |
return slotOffset of next active slot
bool schedule_getOkToSend | ( | void | ) |
Check whether I can send on this slot.
This function is called at the beginning of every TX slot. If the slot is not a shared slot, it always return TRUE. If the slot is a shared slot, it decrements the backoff counter and returns TRUE only if it hits 0.
Note that the backoff counter is global, not per slot.
void schedule_getSlotInfo | ( | slotOffset_t | slotOffset, |
open_addr_t * | neighbor, | ||
slotinfo_element_t * | info | ||
) |
Get the information of a specific slot.
slotOffset | |
neighbor | |
info |
cellType_t schedule_getType | ( | void | ) |
Get the type of the current schedule entry.
void schedule_indicateRx | ( | asn_t * | asnTimestamp | ) |
Indicate the reception of a packet.
void schedule_indicateTx | ( | asn_t * | asnTimestamp, |
bool | succesfullTx | ||
) |
Indicate the transmission of a packet.
void schedule_init | ( | void | ) |
Initialize this module.
bool schedule_isSlotOffsetAvailable | ( | uint16_t | slotOffset | ) |
owerror_t schedule_removeActiveSlot | ( | slotOffset_t | slotOffset, |
open_addr_t * | neighbor | ||
) |
Remove an active slot from the schedule.
slotOffset | The slotoffset of the slot to remove. |
neighbor | The neighbor associated with this cell (all 0's if none) |
void schedule_resetBackoff | ( | void | ) |
Reset the backoff and backoffExponent.
void schedule_setFrameLength | ( | frameLength_t | newFrameLength | ) |
Set frame length.
newFrameLength | The new frame length. |
void schedule_syncSlotOffset | ( | slotOffset_t | targetSlotOffset | ) |