Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

56 lines
1.4 KiB

/*
* Copyright (c) 2024 A Labs GmbH
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_DRIVERS_IEEE802154_IEEE802154_ESP32_H_
#define ZEPHYR_DRIVERS_IEEE802154_IEEE802154_ESP32_H_
#include <esp_ieee802154_types.h>
#include <zephyr/net/ieee802154_radio.h>
struct ieee802154_esp32_data {
/* Pointer to the network interface. */
struct net_if *iface;
/* 802.15.4 HW address. */
uint8_t mac[8];
/* CCA complete semaphore. Unlocked when CCA is complete. */
struct k_sem cca_wait;
/* CCA result. Holds information whether channel is free or not. */
bool channel_free;
bool is_started;
/* TX synchronization semaphore. Unlocked when frame has been
* sent or send procedure failed.
*/
struct k_sem tx_wait;
/* TX buffer. First byte is PHR (length), remaining bytes are
* MPDU data.
*/
uint8_t tx_psdu[1 + IEEE802154_MAX_PHY_PACKET_SIZE];
/*
* ACK frame (stored until esp_ieee802154_receive_handle_done is called)
* First byte is frame length (PHR), followed by payload (PSDU)
*/
const uint8_t *ack_frame;
/* A buffer for the received ACK frame. psdu pointer be NULL if no
* ACK was requested/received.
*/
esp_ieee802154_frame_info_t *ack_frame_info;
/* Callback handler of the currently ongoing energy scan.
* It shall be NULL if energy scan is not in progress.
*/
energy_scan_done_cb_t energy_scan_done;
};
#endif /* ZEPHYR_DRIVERS_IEEE802154_IEEE802154_ESP32_H_ */