Contiki-NG
Toggle main menu visibility
Loading...
Searching...
No Matches
usb-msc-bulk.h
1
#ifndef USB_MSC_BULK_H_SHSP6ONHDJ__
2
#define USB_MSC_BULK_H_SHSP6ONHDJ__
3
4
#include <usb.h>
5
#include <stdint.h>
6
#include <msc/msc-defs.h>
7
8
#define USB_MSC_BUFFERS 16
9
10
11
struct
usb_msc_bulk_cbw
12
{
13
uint32_t dCBWSignature;
14
uint32_t dCBWTag;
15
uint32_t dCBWDataTransferLength;
16
uint8_t bmCBWFlags;
17
uint8_t bCBWLUN;
18
uint8_t bCBWCBLength;
19
uint8_t CBWCB[16];
20
} BYTE_ALIGNED;
21
22
struct
usb_msc_bulk_csw
23
{
24
uint32_t dCSWSignature;
25
uint32_t dCSWTag;
26
uint32_t dCSWDataResidue;
27
uint8_t bCSWStatus;
28
} BYTE_ALIGNED;
29
30
struct
usb_msc_command_state
31
{
32
const
uint8_t *command;
33
unsigned
int
command_length;
34
unsigned
int
status;
35
/* Number of data bytes received or sent */
36
unsigned
int
cmd_data_transfered;
37
/* Number of data bytes submitted for transmition or reception */
38
unsigned
int
cmd_data_submitted;
39
/* Set by command handler or callback */
40
void (*data_cb)(
struct
usb_msc_command_state *state);
/* May be NULL */
41
};
42
43
void
44
usb_msc_bulk_setup();
45
46
typedef
enum
{
47
USB_MSC_HANDLER_OK = 0,
48
USB_MSC_HANDLER_DELAYED,
49
USB_MSC_HANDLER_FAILED
50
} usb_msc_handler_status;
51
52
usb_msc_handler_status
53
usb_msc_handle_command(
struct
usb_msc_command_state *state);
54
55
void
56
usb_msc_command_handler_init();
57
58
/* Call data_cb when this data has been sent or received */
59
#define USB_MSC_DATA_DO_CALLBACK 0x20
60
61
/* Actually send the data, not just buffer it */
62
#define USB_MSC_DATA_SEND 0x40
63
64
/* Actually receive the data, not just queue buffers for it */
65
#define USB_MSC_DATA_RECEIVE 0x40
66
67
/* The command don't want to send or receive anymore data */
68
#define USB_MSC_DATA_LAST 0x80
69
70
/* Submit a buffer with data to send to the host. Use a callback to be
71
notified when data has been sent. Data is not copied so it must
72
remain constant while sending. */
73
void
74
usb_msc_send_data(
const
uint8_t *data,
unsigned
int
len,
unsigned
int
flags
);
75
76
/* Same as usb_msc_send_data but allows one to set additional flags
77
in USBBuffer */
78
void
79
usb_msc_send_data_buf_flags(
const
uint8_t *data,
unsigned
int
len,
80
unsigned
int
flags
, uint16_t buf_flags);
81
82
#define USB_MSC_SEND_ABORT() \
83
usb_msc_send_data_buf_flags(NULL, 0, USB_MSC_DATA_LAST, 0)
84
85
/* Submit a buffer for receiving data from the host. Use a callback to
86
be notified when data has arrived. */
87
void
88
usb_msc_receive_data(uint8_t *data,
unsigned
int
len,
unsigned
int
flags
);
89
90
/* Same as usb_msc_receive_data but allows one to set additional flags
91
in USBBuffer */
92
void
93
usb_msc_receive_data_buf_flags(uint8_t *data,
unsigned
int
len,
94
unsigned
int
flags
, uint16_t buf_flags);
95
#define USB_MSC_RECEIVE_ABORT() \
96
usb_msc_receive_data_buf_flags(NULL, 0, USB_MSC_DATA_LAST, 0)
97
98
#define USB_MSC_DONE() \
99
usb_msc_send_data_buf_flags(NULL, 0, USB_MSC_DATA_LAST, 0)
100
101
102
103
#endif
/* USB_MSC_BULK_H_SHSP6ONHDJ__ */
flags
static volatile at86rf215_flags_t flags
The radio driver uses the following flags to keep track of the current state of the radio and IRQ eve...
Definition
at86rf215.c:144
arch
cpu
arm
common
usb
msc
usb-msc-bulk.h
Generated on
for Contiki-NG by
1.17.0