zephyr/drivers/ieee802154/ieee802154_nrf5.h

62 lines
1.6 KiB
C

/* ieee802154_nrf5.h - nRF5 802.15.4 driver */
/*
* Copyright (c) 2017 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_DRIVERS_IEEE802154_IEEE802154_NRF5_H_
#define ZEPHYR_DRIVERS_IEEE802154_IEEE802154_NRF5_H_
#include <linker/sections.h>
#include <atomic.h>
#define NRF5_FCS_LENGTH (2)
#define NRF5_PSDU_LENGTH (125)
#define NRF5_PHR_LENGTH (1)
struct nrf5_802154_data {
/* Pointer to the network interface. */
struct net_if *iface;
/* Pointer to a received frame. */
u8_t *rx_psdu;
/* TX buffer. First byte is PHR (length), remaining bytes are
* MPDU data.
*/
u8_t tx_psdu[NRF5_PHR_LENGTH + NRF5_PSDU_LENGTH];
/* 802.15.4 HW address. */
u8_t mac[8];
/* RX thread stack. */
K_THREAD_STACK_MEMBER(rx_stack, CONFIG_IEEE802154_NRF5_RX_STACK_SIZE);
/* RX thread control block */
struct k_thread rx_thread;
/* CCA complete sempahore. Unlocked when CCA is complete. */
struct k_sem cca_wait;
/* RX synchronization semaphore. Unlocked when frame has been
* received.
*/
struct k_sem rx_wait;
/* TX synchronization semaphore. Unlocked when frame has been
* sent or CCA failed.
*/
struct k_sem tx_wait;
/* TX result. Set to 1 on success, 0 otherwise. */
bool tx_success;
/* CCA channel energy. Unit as per 802.15.4-2006 specification. */
s8_t channel_ed;
/* TX power, in dBm, to be used when sending a frame. */
s8_t txpower;
/* 802.15.4 channel to be used when sending a frame. */
u8_t channel;
/* Last received frame LQI value. */
u8_t lqi;
/* Last received frame RSSI value. */
s8_t rssi;
};
#endif /* ZEPHYR_DRIVERS_IEEE802154_IEEE802154_NRF5_H_ */