| /* | 
 |  * Copyright (c) 2016 Intel Corporation. | 
 |  * | 
 |  * SPDX-License-Identifier: Apache-2.0 | 
 |  */ | 
 |  | 
 | /** | 
 |  * @file | 
 |  * @brief IEEE 802.15.4 L2 stack public header | 
 |  */ | 
 |  | 
 | #ifndef ZEPHYR_INCLUDE_NET_IEEE802154_H_ | 
 | #define ZEPHYR_INCLUDE_NET_IEEE802154_H_ | 
 |  | 
 | #include <limits.h> | 
 | #include <net/net_mgmt.h> | 
 | #include <crypto/cipher_structs.h> | 
 |  | 
 | #ifdef __cplusplus | 
 | extern "C" { | 
 | #endif | 
 |  | 
 | /** | 
 |  * @brief IEEE 802.15.4 library | 
 |  * @defgroup ieee802154 IEEE 802.15.4 Library | 
 |  * @ingroup networking | 
 |  * @{ | 
 |  */ | 
 |  | 
 | #define IEEE802154_MAX_ADDR_LENGTH	8 | 
 | #define IEEE802154_NO_CHANNEL		USHRT_MAX | 
 |  | 
 | struct ieee802154_security_ctx { | 
 | 	u32_t frame_counter; | 
 | 	struct cipher_ctx enc; | 
 | 	struct cipher_ctx dec; | 
 | 	u8_t key[16]; | 
 | 	u8_t key_len; | 
 | 	u8_t level	: 3; | 
 | 	u8_t key_mode	: 2; | 
 | 	u8_t _unused	: 3; | 
 | }; | 
 |  | 
 | /* This not meant to be used by any code but 802.15.4 L2 stack */ | 
 | struct ieee802154_context { | 
 | 	enum net_l2_flags flags; | 
 | 	u16_t pan_id; | 
 | 	u16_t channel; | 
 | 	struct k_sem ack_lock; | 
 | 	u16_t short_addr; | 
 | 	u8_t ext_addr[IEEE802154_MAX_ADDR_LENGTH]; | 
 | #ifdef CONFIG_NET_L2_IEEE802154_MGMT | 
 | 	struct ieee802154_req_params *scan_ctx; | 
 | 	union { | 
 | 		struct k_sem res_lock; | 
 | 		struct k_sem req_lock; | 
 | 	}; | 
 | 	union { | 
 | 		u8_t ext_addr[IEEE802154_MAX_ADDR_LENGTH]; | 
 | 		u16_t short_addr; | 
 | 	} coord; | 
 | 	u8_t coord_addr_len; | 
 | #endif | 
 | #ifdef CONFIG_NET_L2_IEEE802154_SECURITY | 
 | 	struct ieee802154_security_ctx sec_ctx; | 
 | #endif | 
 | 	s16_t tx_power; | 
 | 	u8_t sequence; | 
 | 	u8_t ack_seq; | 
 | 	u8_t ack_received	: 1; | 
 | 	u8_t ack_requested	: 1; | 
 | 	u8_t associated		: 1; | 
 | 	u8_t _unused		: 5; | 
 | }; | 
 |  | 
 | #define IEEE802154_L2_CTX_TYPE	struct ieee802154_context | 
 |  | 
 | #ifdef __cplusplus | 
 | } | 
 | #endif | 
 |  | 
 | /** | 
 |  * @} | 
 |  */ | 
 |  | 
 | #endif /* ZEPHYR_INCLUDE_NET_IEEE802154_H_ */ |