CDC/ECM driver for mbed, based on USBDevice by mbed-official. Uses PicoTCP to access Ethernet USB device. License: GPLv2
Fork of USB_Ethernet by
include/pico_device.h@2:540f6e142d59, 2013-08-03 (annotated)
- Committer:
- daniele
- Date:
- Sat Aug 03 13:16:14 2013 +0000
- Revision:
- 2:540f6e142d59
Moved to single package
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
daniele | 2:540f6e142d59 | 1 | /********************************************************************* |
daniele | 2:540f6e142d59 | 2 | PicoTCP. Copyright (c) 2012 TASS Belgium NV. Some rights reserved. |
daniele | 2:540f6e142d59 | 3 | See LICENSE and COPYING for usage. |
daniele | 2:540f6e142d59 | 4 | |
daniele | 2:540f6e142d59 | 5 | *********************************************************************/ |
daniele | 2:540f6e142d59 | 6 | #ifndef _INCLUDE_PICO_DEVICE |
daniele | 2:540f6e142d59 | 7 | #define _INCLUDE_PICO_DEVICE |
daniele | 2:540f6e142d59 | 8 | #include "pico_queue.h" |
daniele | 2:540f6e142d59 | 9 | #include "pico_frame.h" |
daniele | 2:540f6e142d59 | 10 | #include "pico_addressing.h" |
daniele | 2:540f6e142d59 | 11 | #include "pico_tree.h" |
daniele | 2:540f6e142d59 | 12 | #define MAX_DEVICE_NAME 16 |
daniele | 2:540f6e142d59 | 13 | |
daniele | 2:540f6e142d59 | 14 | |
daniele | 2:540f6e142d59 | 15 | struct pico_ethdev { |
daniele | 2:540f6e142d59 | 16 | struct pico_eth mac; |
daniele | 2:540f6e142d59 | 17 | }; |
daniele | 2:540f6e142d59 | 18 | |
daniele | 2:540f6e142d59 | 19 | struct pico_device { |
daniele | 2:540f6e142d59 | 20 | char name[MAX_DEVICE_NAME]; |
daniele | 2:540f6e142d59 | 21 | uint32_t hash; |
daniele | 2:540f6e142d59 | 22 | uint32_t overhead; |
daniele | 2:540f6e142d59 | 23 | struct pico_ethdev *eth; /* Null if non-ethernet */ |
daniele | 2:540f6e142d59 | 24 | struct pico_queue *q_in; |
daniele | 2:540f6e142d59 | 25 | struct pico_queue *q_out; |
daniele | 2:540f6e142d59 | 26 | int (*send)(struct pico_device *self, void *buf, int len); /* Send function. Return 0 if busy */ |
daniele | 2:540f6e142d59 | 27 | int (*poll)(struct pico_device *self, int loop_score); |
daniele | 2:540f6e142d59 | 28 | void(*destroy)(struct pico_device *self); |
daniele | 2:540f6e142d59 | 29 | int (*dsr)(struct pico_device *self, int loop_score); |
daniele | 2:540f6e142d59 | 30 | int __serving_interrupt; |
daniele | 2:540f6e142d59 | 31 | }; |
daniele | 2:540f6e142d59 | 32 | |
daniele | 2:540f6e142d59 | 33 | int pico_device_init(struct pico_device *dev, char *name, uint8_t *mac); |
daniele | 2:540f6e142d59 | 34 | void pico_device_destroy(struct pico_device *dev); |
daniele | 2:540f6e142d59 | 35 | int pico_devices_loop(int loop_score, int direction); |
daniele | 2:540f6e142d59 | 36 | struct pico_device* pico_get_device(char* name); |
daniele | 2:540f6e142d59 | 37 | int pico_device_broadcast(struct pico_frame * f); |
daniele | 2:540f6e142d59 | 38 | |
daniele | 2:540f6e142d59 | 39 | #endif |