aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/platforms/AT91SAM7/mac_lld.h
diff options
context:
space:
mode:
Diffstat (limited to 'os/hal/platforms/AT91SAM7/mac_lld.h')
-rw-r--r--os/hal/platforms/AT91SAM7/mac_lld.h80
1 files changed, 64 insertions, 16 deletions
diff --git a/os/hal/platforms/AT91SAM7/mac_lld.h b/os/hal/platforms/AT91SAM7/mac_lld.h
index 9f30e0426..97a8ba2ae 100644
--- a/os/hal/platforms/AT91SAM7/mac_lld.h
+++ b/os/hal/platforms/AT91SAM7/mac_lld.h
@@ -128,38 +128,85 @@ typedef struct {
} EMACDescriptor;
/**
- * @brief Structure representing a MAC driver.
+ * @brief Driver configuration structure.
*/
typedef struct {
- Semaphore tdsem; /**< Transmit semaphore. */
- Semaphore rdsem; /**< Receive semaphore. */
-#if CH_USE_EVENTS
- EventSource rdevent; /**< Receive event source. */
+ /**
+ * @brief MAC address.
+ */
+ uint8_t *mac_address;
+ /* End of the mandatory fields.*/
+} MACConfig;
+
+/**
+ * @brief Structure representing a MAC driver.
+ */
+struct MACDriver {
+ /**
+ * @brief Driver state.
+ */
+ macstate_t state;
+ /**
+ * @brief Current configuration data.
+ */
+ const MACConfig *config;
+ /**
+ * @brief Transmit semaphore.
+ */
+ Semaphore tdsem;
+ /**
+ * @brief Receive semaphore.
+ */
+ Semaphore rdsem;
+#if MAC_USE_EVENTS || defined(__DOXYGEN__)
+ /**
+ * @brief Receive event.
+ */
+ EventSource rdevent;
#endif
/* End of the mandatory fields.*/
-} MACDriver;
+ /**
+ * @brief Link status flag.
+ */
+ bool_t link_up;
+};
/**
* @brief Structure representing a transmit descriptor.
*/
typedef struct {
- size_t offset; /**< Current write offset. */
- size_t size; /**< Available space size. */
+ /**
+ * @brief Current write offset.
+ */
+ size_t offset;
+ /**
+ * @brief Available space size.
+ */
+ size_t size;
/* End of the mandatory fields.*/
- EMACDescriptor *physdesc; /**< Pointer to the physical
- descriptor. */
+ /**
+ * @brief Pointer to the physical descriptor.
+ */
+ EMACDescriptor *physdesc;
} MACTransmitDescriptor;
/**
* @brief Structure representing a receive descriptor.
*/
typedef struct {
- size_t offset; /**< Current read offset. */
- size_t size; /**< Available data size. */
+ /**
+ * @brief Current read offset.
+ */
+ size_t offset;
+ /**
+ * @brief Available data size.
+ */
+ size_t size;
/* End of the mandatory fields.*/
- EMACDescriptor *physdesc; /**< Pointer to the first
- descriptor of the buffers
- chain. */
+ /**
+ * @brief Pointer to the first descriptor of the buffers chain.
+ */
+ EMACDescriptor *physdesc;
} MACReceiveDescriptor;
/*===========================================================================*/
@@ -178,7 +225,8 @@ extern MACDriver ETH1;
extern "C" {
#endif
void mac_lld_init(void);
- void mac_lld_set_address(MACDriver *macp, const uint8_t *p);
+ void mac_lld_start(MACDriver *macp);
+ void mac_lld_stop(MACDriver *macp);
msg_t max_lld_get_transmit_descriptor(MACDriver *macp,
MACTransmitDescriptor *tdp);
size_t mac_lld_write_transmit_descriptor(MACTransmitDescriptor *tdp,