Loading...
Searching...
No Matches

An open source implementation of Thread stack. More...

Detailed Description

An open source implementation of Thread stack.

See also
https://github.com/openthread/openthread

Thread is a mesh oriented network stack running for IEEE802.15.4 networks.

The RIOT port allows to directly call OpenThread API functions using Event Queue. For example:

#include "ot.h"
#include "openthread/thread.h"
static void _panid_handler(event_t *event);
static event_t event_panid = {
.handler = _panid_handler
};
static void _panid_handler(event_t *event)
{
(void) event;
uint16_t panid = otLinkGetPanId(openthread_get_instance());
do_something_with_panid(panid);
}
int main(void)
{
event_post(openthread_get_evq(), &event_panid);
return 0;
}
otInstance * openthread_get_instance(void)
Get pointer to the OpenThread instance.
event_queue_t * openthread_get_evq(void)
Get OpenThread event queue.
void event_post(event_queue_t *queue, event_t *event)
Queue an event.
event structure
Definition event.h:148
event_handler_t handler
pointer to event handler function
Definition event.h:150
See also
https://openthread.io/releases/thread-reference-20180619

Files

file  ot.h
 

Data Structures

struct  serial_msg_t
 Struct containing a serial message. More...
 

Functions

void recv_pkt (otInstance *aInstance, netdev_t *dev)
 Gets packet from driver and tells OpenThread about the reception.
 
void send_pkt (otInstance *aInstance, netdev_t *dev, netdev_event_t event)
 Inform OpenThread when tx is finished.
 
event_queue_topenthread_get_evq (void)
 Get OpenThread event queue.
 
otInstance * openthread_get_instance (void)
 Get pointer to the OpenThread instance.
 
void openthread_bootstrap (void)
 Bootstrap OpenThread.
 
void openthread_radio_init (netdev_t *dev, uint8_t *tb, uint8_t *rb)
 Init OpenThread radio.
 
int openthread_netdev_init (char *stack, int stacksize, char priority, const char *name, netdev_t *netdev)
 Starts OpenThread thread.
 
void ot_random_init (void)
 Init OpenThread random.
 

Openthread constants

#define OPENTHREAD_NUMBER_OF_SERIAL_BUFFER   (1U)
 number of serial reception buffer
 
#define OPENTHREAD_SIZEOF_LENGTH_AND_FREEBUFF   (4U)
 sizeof in bytes the two first members of she serial structure
 
#define OPENTHREAD_SERIAL_BUFFER_SIZE   OPENTHREAD_SIZEOF_LENGTH_AND_FREEBUFF + 100
 sizeof the serial buffer
 
#define OPENTHREAD_SERIAL_BUFFER__PAYLOAD_SIZE   OPENTHREAD_SERIAL_BUFFER_SIZE - OPENTHREAD_SIZEOF_LENGTH_AND_FREEBUFF
 sizeof the spinel payload data
 
#define OPENTHREAD_ERROR_NO_EMPTY_SERIAL_BUFFER   -1
 error when no more buffer available
 
#define OPENTHREAD_SERIAL_BUFFER_STATUS_FREE   (0x0001)
 serial buffer ready to use
 
#define OPENTHREAD_SERIAL_BUFFER_STATUS_READY_TO_PROCESS   (0x0002)
 serial buffer ready for processing
 
#define OPENTHREAD_SERIAL_BUFFER_STATUS_FULL   (0x0004)
 serial buffer payload full
 
#define IEEE802154_MAX_LENGTH   (127U)
 Max length for IEEE802154 frame.
 
#define OPENTHREAD_NETDEV_BUFLEN   (IEEE802154_MAX_LENGTH)
 Max length for a netdev buffer

 

Macro Definition Documentation

◆ IEEE802154_MAX_LENGTH

#define IEEE802154_MAX_LENGTH   (127U)

Max length for IEEE802154 frame.

Definition at line 89 of file ot.h.

◆ OPENTHREAD_ERROR_NO_EMPTY_SERIAL_BUFFER

#define OPENTHREAD_ERROR_NO_EMPTY_SERIAL_BUFFER   -1

error when no more buffer available

Definition at line 81 of file ot.h.

◆ OPENTHREAD_NETDEV_BUFLEN

#define OPENTHREAD_NETDEV_BUFLEN   (IEEE802154_MAX_LENGTH)

Max length for a netdev buffer

Definition at line 91 of file ot.h.

◆ OPENTHREAD_NUMBER_OF_SERIAL_BUFFER

#define OPENTHREAD_NUMBER_OF_SERIAL_BUFFER   (1U)

number of serial reception buffer

Definition at line 73 of file ot.h.

◆ OPENTHREAD_SERIAL_BUFFER__PAYLOAD_SIZE

#define OPENTHREAD_SERIAL_BUFFER__PAYLOAD_SIZE   OPENTHREAD_SERIAL_BUFFER_SIZE - OPENTHREAD_SIZEOF_LENGTH_AND_FREEBUFF

sizeof the spinel payload data

Definition at line 79 of file ot.h.

◆ OPENTHREAD_SERIAL_BUFFER_SIZE

#define OPENTHREAD_SERIAL_BUFFER_SIZE   OPENTHREAD_SIZEOF_LENGTH_AND_FREEBUFF + 100

sizeof the serial buffer

Definition at line 77 of file ot.h.

◆ OPENTHREAD_SERIAL_BUFFER_STATUS_FREE

#define OPENTHREAD_SERIAL_BUFFER_STATUS_FREE   (0x0001)

serial buffer ready to use

Definition at line 83 of file ot.h.

◆ OPENTHREAD_SERIAL_BUFFER_STATUS_FULL

#define OPENTHREAD_SERIAL_BUFFER_STATUS_FULL   (0x0004)

serial buffer payload full

Definition at line 87 of file ot.h.

◆ OPENTHREAD_SERIAL_BUFFER_STATUS_READY_TO_PROCESS

#define OPENTHREAD_SERIAL_BUFFER_STATUS_READY_TO_PROCESS   (0x0002)

serial buffer ready for processing

Definition at line 85 of file ot.h.

◆ OPENTHREAD_SIZEOF_LENGTH_AND_FREEBUFF

#define OPENTHREAD_SIZEOF_LENGTH_AND_FREEBUFF   (4U)

sizeof in bytes the two first members of she serial structure

Definition at line 75 of file ot.h.

Function Documentation

◆ openthread_get_evq()

event_queue_t * openthread_get_evq ( void  )

Get OpenThread event queue.

Returns
pointer to the event queue

◆ openthread_get_instance()

otInstance * openthread_get_instance ( void  )

Get pointer to the OpenThread instance.

Returns
pointer to the OpenThread instance

◆ openthread_netdev_init()

int openthread_netdev_init ( char *  stack,
int  stacksize,
char  priority,
const char *  name,
netdev_t netdev 
)

Starts OpenThread thread.

Parameters
[in]stackpointer to the stack designed for OpenThread
[in]stacksizesize of the stack
[in]prioritypriority of the OpenThread stack
[in]namename of the OpenThread stack
[in]netdevpointer to the netdev interface
Returns
PID of OpenThread thread
-EINVAL if there was an error creating the thread

◆ openthread_radio_init()

void openthread_radio_init ( netdev_t dev,
uint8_t *  tb,
uint8_t *  rb 
)

Init OpenThread radio.

Parameters
[in]devpointer to a netdev interface
[in]tbpointer to the TX buffer designed for OpenThread
[in]rbpointer to the RX buffer designed for Open_Thread

◆ recv_pkt()

void recv_pkt ( otInstance *  aInstance,
netdev_t dev 
)

Gets packet from driver and tells OpenThread about the reception.

Parameters
[in]aInstancepointer to an OpenThread instance
[in]devpointer to a netdev instance

◆ send_pkt()

void send_pkt ( otInstance *  aInstance,
netdev_t dev,
netdev_event_t  event 
)

Inform OpenThread when tx is finished.

Parameters
[in]aInstancepointer to an OpenThread instance
[in]devpointer to a netdev interface
[in]eventjust occurred netdev event