21 #include "USBDescriptor.h" 22 #include "USBDevice.h" 23 #include "ByteBuffer.h" 25 #include "EventFlags.h" 26 #include "EventQueue.h" 30 #define MAX_PACKET_SIZE_INT (64) 31 #define MAX_PACKET_SIZE_BULK (64) 32 #define MAX_PACKET_SIZE_EP0 (64) 33 #define DEFAULT_CONFIGURATION (1) 35 #define PACKET_TYPE_PROMISCUOUS (1<<0) 36 #define PACKET_TYPE_ALL_MULTICAST (1<<1) 37 #define PACKET_TYPE_DIRECTED (1<<2) 38 #define PACKET_TYPE_BROADCAST (1<<3) 39 #define PACKET_TYPE_MULTICAST (1<<4) 63 USBCDC_ECM(
bool connect_blocking =
true, uint16_t vendor_id = 0x0700, uint16_t product_id = 0x0101, uint16_t product_release = 0x0001);
81 USBCDC_ECM(
USBPhy *phy, uint16_t vendor_id, uint16_t product_id, uint16_t product_release);
112 bool send(uint8_t *buffer, uint32_t size);
121 void receive_nb(uint8_t *buffer, uint32_t size, uint32_t *actual);
177 virtual void callback_set_configuration(uint8_t configuration);
190 virtual void callback_set_interface(uint16_t interface, uint8_t alternate);
197 virtual const uint8_t *device_desc();
204 virtual const uint8_t *string_iproduct_desc();
211 virtual const uint8_t *string_iconfiguration_desc();
218 virtual const uint8_t *string_iserial_desc();
225 virtual const uint8_t *configuration_desc(uint8_t index);
243 uint8_t device_descriptor[18];
251 uint8_t _config_descriptor[80];
252 uint8_t _string_imac_addr[26];
254 uint8_t _bulk_buf[MAX_PACKET_SIZE_BULK];
255 uint16_t _packet_filter;
267 void _int_callback();
268 void _bulk_in_callback();
269 void _bulk_out_callback();
270 bool _notify_network_connection(uint8_t value);
271 bool _notify_connection_speed_change(uint32_t up, uint32_t down);
272 bool _write_bulk(uint8_t *buffer, uint32_t size);
273 void _notify_connect();
void wait_ready()
Block until this device is configured.
The Thread class allow defining, creating, and controlling thread functions in the system...
virtual ~USBCDC_ECM()
Destroy this object.
The EventFlags class is used to control event flags or wait for event flags other threads control...
uint16_t read_packet_filter()
Return ethernet packet filter bitmap.
void attach_rx(mbed::Callback< void()> cb)
Attach a callback for when an ethernet packet is received.
void receive_nb(uint8_t *buffer, uint32_t size, uint32_t *actual)
Read from the receive buffer.
virtual void callback_state_change(DeviceState new_state)
Called when USB changes state.
bool ready()
Check if this class is ready.
void attach_filter(mbed::Callback< void()> cb)
Attach a callback for when a request to configure device ethernet packet filter is received...
Abstract interface to physical USB hardware.
virtual void callback_reset()
Called by USBDevice layer on bus reset.
The Mutex class is used to synchronize the execution of threads.
USBCDC_ECM(bool connect_blocking=true, uint16_t vendor_id=0x0700, uint16_t product_id=0x0101, uint16_t product_release=0x0001)
Basic constructor.
virtual void callback_request_xfer_done(const setup_packet_t *setup, bool aborted)
Called by USBDevice on data stage completion.
Callback class based on template specialization.
bool send(uint8_t *buffer, uint32_t size)
Send a buffer.
virtual void callback_request(const setup_packet_t *setup)
Called by USBDevice on Endpoint0 request.