27#if (HAL_USE_MAC == TRUE) || defined(__DOXYGEN__)
37#define MAC_FLAGS_TX (1U << 0)
38#define MAC_FLAGS_RX (1U << 1)
52#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
53#define MAC_USE_ZERO_COPY FALSE
59#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
60#define MAC_USE_EVENTS TRUE
117#if defined(MAC_CONFIG_EXT_FIELDS)
118 MAC_CONFIG_EXT_FIELDS
144#if MAC_USE_EVENTS || defined(__DOXYGEN__)
166#if defined(MAC_DRIVER_EXT_FIELS)
218#define __mac_callback(macp) do { \
219 if ((macp)->cb != NULL) { \
231#if (MAC_USE_EVENTS == TRUE) || defined(__DOXYGEN__)
232#define __mac_tx_wakeup(macp) do { \
233 osalSysLockFromISR(); \
234 osalThreadDequeueAllI(&(macp)->tdqueue, MSG_OK); \
235 (macp)->flags |= MAC_FLAGS_TX; \
236 osalEventBroadcastFlagsI(&(macp)->es, MAC_FLAGS_TX); \
237 osalSysUnlockFromISR(); \
240#define __mac_tx_event(macp) do { \
241 osalSysLockFromISR(); \
242 osalThreadDequeueAllI(&(macp)->tdqueue, MSG_OK); \
243 (macp)->flags |= MAC_FLAGS_TX; \
244 osalSysUnlockFromISR(); \
255#if (MAC_USE_EVENTS == TRUE) || defined(__DOXYGEN__)
256#define __mac_rx_wakeup(macp) do { \
257 osalSysLockFromISR(); \
258 osalThreadDequeueAllI(&(macp)->rdqueue, MSG_OK); \
259 (macp)->flags |= MAC_FLAGS_RX; \
260 osalEventBroadcastFlagsI(&(macp)->es, MAC_FLAGS_RX); \
261 osalSysUnlockFromISR(); \
264#define __mac_rx_event(macp) do { \
265 osalSysLockFromISR(); \
266 osalThreadDequeueAllI(&(macp)->rdqueue, MSG_OK); \
267 (macp)->flags |= MAC_FLAGS_RX; \
268 osalSysUnlockFromISR(); \
283#define macSetCallbackX(macp, f) (siop)->cb = (f)
293#if (MAC_USE_EVENTS == TRUE) || defined(__DOXYGEN__)
294#define macGetEventSource(macp) (&(macp)->es)
310#define macGetTransmitDescriptorX(macp, tdp) \
311 mac_lld_get_transmit_descriptor(macp, tdp)
321#define macReleaseTransmitDescriptorX(tdp) \
322 mac_lld_release_transmit_descriptor(tdp)
335#define macGetReceiveDescriptorX(macp, rdp) \
336 mac_lld_get_receive_descriptor(macp, rdp)
347#define macReleaseReceiveDescriptorX(rdp) \
348 mac_lld_release_receive_descriptor(rdp)
363#define macWriteTransmitDescriptor(tdp, buf, size) \
364 mac_lld_write_transmit_descriptor(tdp, buf, size)
378#define macReadReceiveDescriptor(rdp, buf, size) \
379 mac_lld_read_receive_descriptor(rdp, buf, size)
381#if (MAC_USE_ZERO_COPY == TRUE) || defined(__DOXYGEN__)
401#define macGetNextTransmitBuffer(tdp, size, sizep) \
402 mac_lld_get_next_transmit_buffer(tdp, size, sizep)
418#define macGetNextReceiveBuffer(rdp, sizep) \
419 mac_lld_get_next_receive_buffer(rdp, sizep)
#define mac_lld_transmit_descriptor_fields
Low level fields of the MAC transmit descriptor structure.
void macReleaseTransmitDescriptor(MACTransmitDescriptor *tdp)
void macStop(MACDriver *macp)
Deactivates the MAC peripheral.
macstate_t
Driver state machine possible states.
void macInit(void)
MAC Driver initialization.
struct hal_mac_driver MACDriver
Type of a structure representing a MAC driver.
void macObjectInit(MACDriver *macp)
Initialize the standard part of a MACDriver structure.
struct hal_mac_receive_descriptor MACReceiveDescriptor
Type of structure representing a MAC receive descriptor.
struct hal_mac_transmit_descriptor MACTransmitDescriptor
Type of structure representing a MAC transmit descriptor.
#define mac_lld_receive_descriptor_fields
Low level fields of the MAC receive descriptor structure.
void macReleaseReceiveDescriptor(MACReceiveDescriptor *rdp)
#define mac_lld_driver_fields
Low level fields of the MAC driver structure.
msg_t macWaitTransmitDescriptor(MACDriver *macp, MACTransmitDescriptor *tdp, sysinterval_t timeout)
Allocates a transmission descriptor.
msg_t macStart(MACDriver *macp, const MACConfig *config)
Configures and activates the MAC peripheral.
#define mac_lld_config_fields
Low level fields of the MAC configuration structure.
eventflags_t macGetAndClearEventsI(MACDriver *macp)
Get and clears MAC event flags.
void(* maccb_t)(MACDriver *macp)
Generic ETH notification callback type.
msg_t macWaitReceiveDescriptor(MACDriver *macp, MACReceiveDescriptor *rdp, sysinterval_t timeout)
Waits for a received frame.
bool macPollLinkStatus(MACDriver *macp)
Updates and returns the link status.
struct hal_mac_config MACConfig
Type of structure representing a MAC configuration.
uint32_t eventflags_t
Type of an event flags mask.
struct event_source event_source_t
Type of an event flags object.
int32_t msg_t
Type of a message.
uint32_t sysinterval_t
Type of system time interval.
PLATFORM MAC subsystem low level driver header.
Driver configuration structure.
Structure representing a MAC driver.
const MACConfig * config
Current configuration data.
macstate_t state
Driver state.
threads_queue_t rdqueue
Receive threads queue.
event_source_t es
MAC events source.
eventflags_t flags
Locally held event flags for callback use.
maccb_t cb
Events callback.
threads_queue_t tdqueue
Transmit threads queue.
Structure representing a MAC receive descriptor.
size_t offset
Current read offset.
size_t size
Available data size.
Structure representing a MAC transmit descriptor.
size_t offset
Current write offset.
size_t size
Available space size.