annotate packages/io/usb/slave/current/doc/usbs-start-rx.html @ 208:e0c0827131d1 ecos

Merge from eCos master repository on 2002-05-20-20:11:54-BST
author jlarmour
date Mon, 20 May 2002 22:19:26 +0000
parents 022f1e506033
children 74dbf4c3f2e1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 184
diff changeset
1 <!-- Copyright (C) 2002 Red Hat, Inc. -->
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
2 <!-- This material may be distributed only subject to the terms -->
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
3 <!-- and conditions set forth in the Open Publication License, v1.0 -->
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
4 <!-- or later (the latest version is presently available at -->
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
5 <!-- http://www.opencontent.org/openpub/). -->
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
6 <!-- Distribution of substantively modified versions of this -->
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
7 <!-- document is prohibited without the explicit permission of the -->
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
8 <!-- copyright holder. -->
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
9 <!-- Distribution of the work or derivative of the work in any -->
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
10 <!-- standard (paper) book form is prohibited unless prior -->
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
11 <!-- permission is obtained from the copyright holder. -->
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
12 <HTML
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
13 ><HEAD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
14 ><TITLE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
15 >Receiving Data from the Host</TITLE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
16 ><meta name="MSSmartTagsPreventParsing" content="TRUE">
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
17 <META
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
18 NAME="GENERATOR"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
19 CONTENT="Modular DocBook HTML Stylesheet Version 1.64
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
20 "><LINK
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
21 REL="HOME"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
22 TITLE="eCos USB Slave Support"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
23 HREF="io-usb-slave.html"><LINK
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
24 REL="PREVIOUS"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
25 TITLE="Devtab Entries"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
26 HREF="usbs-devtab.html"><LINK
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
27 REL="NEXT"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
28 TITLE="Sending Data to the Host"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
29 HREF="usbs-start-tx.html"></HEAD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
30 ><BODY
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
31 CLASS="REFENTRY"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
32 BGCOLOR="#FFFFFF"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
33 TEXT="#000000"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
34 LINK="#0000FF"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
35 VLINK="#840084"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
36 ALINK="#0000FF"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
37 ><DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
38 CLASS="NAVHEADER"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
39 ><TABLE
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
40 WIDTH="100%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
41 BORDER="0"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
42 CELLPADDING="0"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
43 CELLSPACING="0"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
44 ><TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
45 ><TH
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
46 COLSPAN="3"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
47 ALIGN="center"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
48 >eCos USB Slave Support</TH
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
49 ></TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
50 ><TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
51 ><TD
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
52 WIDTH="10%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
53 ALIGN="left"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
54 VALIGN="bottom"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
55 ><A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
56 HREF="usbs-devtab.html"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
57 >Prev</A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
58 ></TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
59 ><TD
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
60 WIDTH="80%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
61 ALIGN="center"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
62 VALIGN="bottom"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
63 ></TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
64 ><TD
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
65 WIDTH="10%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
66 ALIGN="right"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
67 VALIGN="bottom"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
68 ><A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
69 HREF="usbs-start-tx.html"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
70 >Next</A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
71 ></TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
72 ></TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
73 ></TABLE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
74 ><HR
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
75 ALIGN="LEFT"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
76 WIDTH="100%"></DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
77 ><H1
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
78 ><A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
79 NAME="USBS-START-RX"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
80 >Receiving Data from the Host</A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
81 ></H1
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
82 ><DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
83 CLASS="REFNAMEDIV"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
84 ><A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
85 NAME="AEN277"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
86 ></A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
87 ><H2
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
88 >Name</H2
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
89 ><TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
90 CLASS="FUNCTION"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
91 >usbs_start_rx_buffer</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
92 >&nbsp;--&nbsp;Receiving Data from the Host</DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
93 ><DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
94 CLASS="REFSYNOPSISDIV"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
95 ><A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
96 NAME="AEN281"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
97 ></A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
98 ><H2
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
99 >Synopsis</H2
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
100 ><DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
101 CLASS="FUNCSYNOPSIS"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
102 ><A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
103 NAME="AEN282"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
104 ></A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
105 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
106 ></P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
107 ><TABLE
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
108 BORDER="0"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
109 BGCOLOR="#E0E0E0"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
110 WIDTH="100%"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
111 ><TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
112 ><TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
113 ><PRE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
114 CLASS="FUNCSYNOPSISINFO"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
115 >#include &lt;cyg/io/usb/usbs.h&gt;</PRE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
116 ></TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
117 ></TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
118 ></TABLE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
119 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
120 ><CODE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
121 ><CODE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
122 CLASS="FUNCDEF"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
123 >void usbs_start_rx_buffer</CODE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
124 >(usbs_rx_endpoint* ep, unsigned char* buffer, int length, void (*)(void*,int) complete_fn, void * complete_data);</CODE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
125 ></P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
126 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
127 ><CODE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
128 ><CODE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
129 CLASS="FUNCDEF"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
130 >void usbs_start_rx</CODE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
131 >(usbs_rx_endpoint* ep);</CODE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
132 ></P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
133 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
134 ></P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
135 ></DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
136 ></DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
137 ><DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
138 CLASS="REFSECT1"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
139 ><A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
140 NAME="AEN302"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
141 ></A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
142 ><H2
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
143 ><TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
144 CLASS="FUNCTION"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
145 >Description</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
146 ></H2
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
147 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
148 ><TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
149 CLASS="FUNCTION"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
150 >usbs_start_rx_buffer</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
151 > is a USB-specific function
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
152 to accept a transfer from host to peripheral. It can be used for bulk,
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
153 interrupt or isochronous transfers, but not for control messages.
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
154 Instead those involve manipulating the <A
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
155 HREF="usbs-control.html"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
156 ><SPAN
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
157 CLASS="STRUCTNAME"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
158 >usbs_control_endpoint</SPAN
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
159 ></A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
160 >
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
161 data structure directly. The function takes five arguments:</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
162 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
163 ></P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
164 ><OL
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
165 TYPE="1"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
166 ><LI
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
167 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
168 >The first argument identifies the specific endpoint that should be
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
169 used. Different USB devices will support different sets of endpoints
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
170 and the device driver will provide appropriate data structures. The
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
171 device driver's documentation should be consulted for details of which
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
172 endpoints are available.</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
173 ></LI
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
174 ><LI
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
175 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
176 >The <TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
177 CLASS="PARAMETER"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
178 ><I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
179 >buffer</I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
180 ></TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
181 > and <TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
182 CLASS="PARAMETER"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
183 ><I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
184 >length</I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
185 ></TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
186 >
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
187 arguments control the actual transfer. USB device drivers are not
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
188 expected to perform any buffering or to support partial transfers, so
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
189 the length specified should correspond to the maximum transfer that is
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
190 currently possible and the buffer should be at least this large. For
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
191 isochronous transfers the USB specification imposes an upper bound of
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
192 1023 bytes, and a smaller limit may be set in the <A
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
193 HREF="usbs-enum.html#AEN142"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
194 >enumeration data</A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
195 >. Interrupt
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
196 transfers are similarly straightforward with an upper bound of 64
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
197 bytes, or less as per the enumeration data. Bulk transfers are more
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
198 complicated because they can involve multiple 64-byte packets plus a
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
199 terminating packet of less than 64 bytes, so there is no predefined
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
200 limit on the transfer size. Instead it is left to higher-level
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
201 protocols to specify an appropriate upper bound.</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
202 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
203 >One technique that may work for bulk transfers is to exploit the fact
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
204 that such transfers happen in 64-byte packets: it may be possible to
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
205 receive an initial 64 bytes, corresponding to the first packet in the
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
206 transfer; these 64 bytes can then be examined to determine the total
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
207 transfer size, and the remaining data can be transferred in another
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
208 receive operation. This technique is not guaranteed to work with all
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
209 USB hardware. Also, if the delay between accepting the first packet and
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
210 the remainder of the transfer is excessive then this could cause
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
211 timeout problems for the host-side software. For these reasons this
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
212 technique should be avoided.</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
213 ></LI
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
214 ><LI
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
215 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
216 ><TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
217 CLASS="FUNCTION"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
218 >usbs_start_rx_buffer</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
219 > is non-blocking. It merely
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
220 starts the receive operation, and does not wait for completion. At
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
221 some later point the USB device driver will invoke the completion
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
222 function parameter with two arguments: the completion data defined by
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
223 the last parameter and a result field. A result &gt;=
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
224 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
225 CLASS="LITERAL"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
226 >0</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
227 > indicates a successful transfer of that many
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
228 bytes, which may be less than the upper bound imposed by the
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
229 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
230 CLASS="PARAMETER"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
231 ><I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
232 >length</I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
233 ></TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
234 > argument. A result &lt;
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
235 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
236 CLASS="LITERAL"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
237 >0</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
238 > indicates an error. The most likely errors are
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
239 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
240 CLASS="LITERAL"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
241 >-EPIPE</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
242 > to indicate that the connection between the
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
243 host and the target has been broken, and <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
244 CLASS="LITERAL"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
245 >-EAGAIN</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
246 >
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
247 for when the endpoint has been <A
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
248 HREF="usbs-halt.html"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
249 >halted</A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
250 >. Specific USB device drivers may
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
251 specify additional error conditions.</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
252 ></LI
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
253 ></OL
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
254 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
255 >The normal sequence of events is that the USB device driver will
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
256 update the appropriate hardware registers. At some point after that
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
257 the host will attempt to send data by transmitting an OUT token
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
258 followed by a data packet, and since a receive operation is now in
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
259 progress the data will be accepted and ACK'd. If there were no receive
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
260 operation then the peripheral would instead generate a NAK. The USB
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
261 hardware will generate an interrupt once the whole packet has been
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
262 received, and the USB device driver will service this interrupt and
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
263 arrange for a DSR to be called. Isochronous and interrupt transfers
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
264 involve just a single packet. However, bulk transfers may involve
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
265 multiple packets so the device driver has to check whether the packet
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
266 was a full 64 bytes or whether it was a terminating packet of less
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
267 than this. When the device driver DSR detects a complete transfer it
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
268 will inform higher-level code by invoking the supplied completion
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
269 function.</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
270 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
271 >This means that the completion function will normally be invoked by a
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
272 DSR and not in thread context - although some USB device drivers may
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
273 have a different implementation. Therefore the completion function is
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
274 restricted in what it can do. In particular it must not make any
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
275 calls that will or may block such as locking a mutex or allocating
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
276 memory. The kernel documentation should be consulted for more details
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
277 of DSR's and interrupt handling generally.</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
278 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
279 >It is possible that the completion function will be invoked before
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
280 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
281 CLASS="FUNCTION"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
282 >usbs_start_rx_buffer</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
283 > returns. Such an event would
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
284 be unusual because the transfer cannot happen until the next time the
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
285 host tries to send data to this peripheral, but it may happen if for
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
286 example another interrupt happens and a higher priority thread is
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
287 scheduled to run. Also, if the endpoint is currently halted then the
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
288 completion function will be invoked immediately with
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
289 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
290 CLASS="LITERAL"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
291 >-EAGAIN</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
292 >: typically this will happen in the current
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
293 thread rather than in a separate DSR. The completion function is
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
294 allowed to start another transfer immediately by calling
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
295 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
296 CLASS="FUNCTION"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
297 >usbs_start_rx_buffer</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
298 > again.</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
299 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
300 >USB device drivers are not expected to perform any locking. It is the
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
301 responsibility of higher-level code to ensure that there is only one
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
302 receive operation for a given endpoint in progress at any one time. If
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
303 there are concurrent calls to
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
304 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
305 CLASS="FUNCTION"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
306 >usbs_start_rx_buffer</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
307 > then the resulting behaviour
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
308 is undefined. For typical USB applications this does not present any
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
309 problems, because only one piece of code will access a given endpoint
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
310 at any particular time.</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
311 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
312 >The following code fragment illustrates a very simple use of
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
313 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
314 CLASS="FUNCTION"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
315 >usbs_start_rx_buffer</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
316 > to implement a blocking
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
317 receive, using a semaphore to synchronise between the foreground
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
318 thread and the DSR. For a simple example like this no completion data
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
319 is needed.</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
320 ><TABLE
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
321 BORDER="0"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
322 BGCOLOR="#E0E0E0"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
323 WIDTH="100%"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
324 ><TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
325 ><TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
326 ><PRE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
327 CLASS="PROGRAMLISTING"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
328 >static int error_code = 0;
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
329 static cyg_sem_t completion_wait;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
330
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
331 static void
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
332 completion_fn(void* data, int result)
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
333 {
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
334 error_code = result;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
335 cyg_semaphore_post(&amp;completion_wait);
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
336 }
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
337
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
338 int
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
339 blocking_receive(usbs_rx_endpoint* ep, unsigned char* buf, int len)
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
340 {
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
341 error_code = 0;
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
342 usbs_start_rx_buffer(ep, buf, len, &amp;completion_fn, NULL);
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
343 cyg_semaphore_wait(&amp;completion_wait);
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
344 return error_code;
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
345 }</PRE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
346 ></TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
347 ></TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
348 ></TABLE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
349 ><P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
350 >There is also a utility function <TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
351 CLASS="FUNCTION"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
352 >usbs_start_rx</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
353 >. This
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
354 can be used by code that wants to manipulate <A
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
355 HREF="usbs-data.html"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
356 >data endpoints</A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
357 > directly, specifically the
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
358 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
359 CLASS="STRUCTFIELD"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
360 ><I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
361 >complete_fn</I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
362 ></TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
363 >,
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
364 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
365 CLASS="STRUCTFIELD"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
366 ><I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
367 >complete_data</I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
368 ></TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
369 >,
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
370 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
371 CLASS="STRUCTFIELD"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
372 ><I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
373 >buffer</I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
374 ></TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
375 > and
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
376 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
377 CLASS="STRUCTFIELD"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
378 ><I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
379 >buffer_size</I
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
380 ></TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
381 > fields.
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
382 <TT
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
383 CLASS="FUNCTION"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
384 >usbs_start_tx</TT
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
385 > just invokes a function
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
386 supplied by the device driver.</P
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
387 ></DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
388 ><DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
389 CLASS="NAVFOOTER"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
390 ><HR
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
391 ALIGN="LEFT"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
392 WIDTH="100%"><TABLE
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
393 WIDTH="100%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
394 BORDER="0"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
395 CELLPADDING="0"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
396 CELLSPACING="0"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
397 ><TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
398 ><TD
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
399 WIDTH="33%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
400 ALIGN="left"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
401 VALIGN="top"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
402 ><A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
403 HREF="usbs-devtab.html"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
404 >Prev</A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
405 ></TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
406 ><TD
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
407 WIDTH="34%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
408 ALIGN="center"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
409 VALIGN="top"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
410 ><A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
411 HREF="io-usb-slave.html"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
412 >Home</A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
413 ></TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
414 ><TD
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
415 WIDTH="33%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
416 ALIGN="right"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
417 VALIGN="top"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
418 ><A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
419 HREF="usbs-start-tx.html"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
420 >Next</A
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
421 ></TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
422 ></TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
423 ><TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
424 ><TD
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
425 WIDTH="33%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
426 ALIGN="left"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
427 VALIGN="top"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
428 >Devtab Entries</TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
429 ><TD
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
430 WIDTH="34%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
431 ALIGN="center"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
432 VALIGN="top"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
433 >&nbsp;</TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
434 ><TD
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
435 WIDTH="33%"
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents:
diff changeset
436 ALIGN="right"
184
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
437 VALIGN="top"
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
438 >Sending Data to the Host</TD
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
439 ></TR
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
440 ></TABLE
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
441 ></DIV
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
442 ></BODY
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
443 ></HTML
022f1e506033 Merge from eCos master repository on 2001-10-02-17:59:22-BST
jlarmour
parents: 151
diff changeset
444 >