Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
openthread.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2017 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
11#ifndef ZEPHYR_INCLUDE_NET_OPENTHREAD_H_
12#define ZEPHYR_INCLUDE_NET_OPENTHREAD_H_
13
21#include <kernel.h>
22
23#include <net/net_if.h>
24
25#include <openthread/instance.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
37struct pkt_list_elem {
38 struct net_pkt *pkt;
39};
40
44struct openthread_context {
46 otInstance *instance;
47
49 struct net_if *iface;
50
52 uint16_t pkt_list_in_idx;
53
55 uint16_t pkt_list_out_idx;
56
58 uint8_t pkt_list_full;
59
61 struct pkt_list_elem pkt_list[CONFIG_OPENTHREAD_PKT_LIST_SIZE];
62
64 struct k_mutex api_lock;
65
67 struct k_work_q work_q;
68
70 struct k_work api_work;
71};
82void openthread_set_state_changed_cb(otStateChangedCallback cb);
83
88
95struct openthread_context *openthread_get_default_context(void);
96
103struct otInstance *openthread_get_default_instance(void);
104
114int openthread_start(struct openthread_context *ot_context);
115
125void openthread_api_mutex_lock(struct openthread_context *ot_context);
126
138int openthread_api_mutex_try_lock(struct openthread_context *ot_context);
139
145void openthread_api_mutex_unlock(struct openthread_context *ot_context);
146
147#define OPENTHREAD_L2_CTX_TYPE struct openthread_context
148
149#ifdef __cplusplus
150}
151#endif
152
157#endif /* ZEPHYR_INCLUDE_NET_OPENTHREAD_H_ */
int openthread_api_mutex_try_lock(struct openthread_context *ot_context)
Try to lock internal mutex before accessing OT API.
void openthread_api_mutex_unlock(struct openthread_context *ot_context)
Unlock internal mutex after accessing OT API.
void openthread_api_mutex_lock(struct openthread_context *ot_context)
Lock internal mutex before accessing OT API.
int openthread_start(struct openthread_context *ot_context)
Starts the OpenThread network.
struct otInstance * openthread_get_default_instance(void)
Get pointer to default OpenThread instance.
k_tid_t openthread_thread_id_get(void)
Get OpenThread thread identification.
void openthread_set_state_changed_cb(otStateChangedCallback cb)
Sets function which will be called when certain configuration or state changes within OpenThread.
struct openthread_context * openthread_get_default_context(void)
Get pointer to default OpenThread context.
Public API for network interface.
__UINT8_TYPE__ uint8_t
Definition: stdint.h:58
__UINT16_TYPE__ uint16_t
Definition: stdint.h:59
Definition: kernel.h:2680
Definition: thread.h:201
A structure used to hold work until it can be processed.
Definition: kernel.h:3770
A structure used to submit work.
Definition: kernel.h:3623
Network Interface structure.
Definition: net_if.h:468
Network packet.
Definition: net_pkt.h:62