SDG+USBHost(Mouse) Sample

Dependencies:   Sound_Generator USBHost_custom

Fork of SDG_Mouse_Sample by GR-PEACH_producer_meeting

Information

Japanese version is available in lower part of this page.
このページの後半に日本語版が用意されています.

What is this?

This program is a demonstration that sounds the sound by mouse operation by using USBHost(Mouse) and Sound Generator.

Settings

Close JP3 of GR-PEACH.
/media/uploads/RyoheiHagimoto/sdg-mouse.jpg

Operation

operationeffect
Right clickSounds
Left clickReset to base tone (C)
Moves the mouse to the rightLower the sound
Moves the mouse to the leftHigher the sound
Center cursorAdjust the sensitivity.
Reset the reference value in the click.

Others

The default setting of serial communication (baud rate etc.) in mbed is shown the following link.
Please refer to the link and change the settings of your PC terminal software.
The default value of baud rate in mbed is 9600, and this application uses baud rate 9600.
https://developer.mbed.org/teams/Renesas/wiki/GR-PEACH-Getting-Started#install-the-usb-serial-communication


概要

このプログラムは、USBHost(Mouse) + Sound Generatorで、マウス操作による擬似笛デモです。

設定

GR-PEACHのJP3をショートする必要があります。
/media/uploads/RyoheiHagimoto/sdg-mouse.jpg

操作方法

操作内容
右クリック音出力開始
左クリック基準音(ド)にリセット
マウス右移動高音になります
マウス左移動低音になります
センターカーソル音高低の変化量調整(クリックで基準値にリセット)

Others

mbedのシリアル通信(ボーレート等)のデフォルト設定は以下のリンクに示しています。
リンクを参考に、お使いのPCターミナルソフトの設定を変更して下さい。
mbedでのボーレートのデフォルト値は9600で、このサンプルではボーレート9600を使います。
https://developer.mbed.org/teams/Renesas/wiki/GR-PEACH-Getting-Started#install-the-usb-serial-communication

Committer:
mbed_official
Date:
Wed Oct 09 13:15:21 2013 +0100
Revision:
16:ab8c9118524e
Parent:
15:6da3f071ee35
Child:
23:759ec18ee1a7
Synchronized with git revision 330e59fb850b83aefe641d40f9cf02873ab00d08

Who changed what in which revision?

UserRevisionLine numberNew contents of line
samux 8:93da8ea2708b 1 /* mbed USBHost Library
samux 8:93da8ea2708b 2 * Copyright (c) 2006-2013 ARM Limited
samux 8:93da8ea2708b 3 *
samux 8:93da8ea2708b 4 * Licensed under the Apache License, Version 2.0 (the "License");
samux 8:93da8ea2708b 5 * you may not use this file except in compliance with the License.
samux 8:93da8ea2708b 6 * You may obtain a copy of the License at
samux 8:93da8ea2708b 7 *
samux 8:93da8ea2708b 8 * http://www.apache.org/licenses/LICENSE-2.0
samux 8:93da8ea2708b 9 *
samux 8:93da8ea2708b 10 * Unless required by applicable law or agreed to in writing, software
samux 8:93da8ea2708b 11 * distributed under the License is distributed on an "AS IS" BASIS,
samux 8:93da8ea2708b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
samux 8:93da8ea2708b 13 * See the License for the specific language governing permissions and
samux 8:93da8ea2708b 14 * limitations under the License.
samux 8:93da8ea2708b 15 */
mbed_official 0:a554658735bf 16
mbed_official 0:a554658735bf 17 #ifndef USBHOST_H
mbed_official 0:a554658735bf 18 #define USBHOST_H
mbed_official 0:a554658735bf 19
mbed_official 0:a554658735bf 20 #include "USBHALHost.h"
mbed_official 0:a554658735bf 21 #include "USBDeviceConnected.h"
mbed_official 0:a554658735bf 22 #include "IUSBEnumerator.h"
mbed_official 0:a554658735bf 23 #include "USBHostConf.h"
mbed_official 0:a554658735bf 24 #include "rtos.h"
mbed_official 0:a554658735bf 25 #include "dbg.h"
mbed_official 0:a554658735bf 26 #include "USBHostHub.h"
mbed_official 0:a554658735bf 27
samux 8:93da8ea2708b 28 /**
samux 8:93da8ea2708b 29 * USBHost class
samux 8:93da8ea2708b 30 * This class is a singleton. All drivers have a reference on the static USBHost instance
samux 8:93da8ea2708b 31 */
mbed_official 0:a554658735bf 32 class USBHost : public USBHALHost {
mbed_official 0:a554658735bf 33 public:
mbed_official 0:a554658735bf 34 /**
mbed_official 0:a554658735bf 35 * Static method to create or retrieve the single USBHost instance
mbed_official 0:a554658735bf 36 */
mbed_official 0:a554658735bf 37 static USBHost * getHostInst();
mbed_official 0:a554658735bf 38
mbed_official 0:a554658735bf 39 /**
mbed_official 0:a554658735bf 40 * Control read: setup stage, data stage and status stage
mbed_official 0:a554658735bf 41 *
mbed_official 0:a554658735bf 42 * @param dev the control read will be done for this device
mbed_official 0:a554658735bf 43 * @param requestType request type
mbed_official 0:a554658735bf 44 * @param request request
mbed_official 0:a554658735bf 45 * @param value value
mbed_official 0:a554658735bf 46 * @param index index
mbed_official 0:a554658735bf 47 * @param buf pointer on a buffer where will be store the data received
mbed_official 0:a554658735bf 48 * @param len length of the transfer
mbed_official 0:a554658735bf 49 *
mbed_official 0:a554658735bf 50 * @returns status of the control read
mbed_official 0:a554658735bf 51 */
mbed_official 0:a554658735bf 52 USB_TYPE controlRead(USBDeviceConnected * dev, uint8_t requestType, uint8_t request, uint32_t value, uint32_t index, uint8_t * buf, uint32_t len);
mbed_official 0:a554658735bf 53
mbed_official 0:a554658735bf 54 /**
mbed_official 0:a554658735bf 55 * Control write: setup stage, data stage and status stage
mbed_official 0:a554658735bf 56 *
mbed_official 0:a554658735bf 57 * @param dev the control write will be done for this device
mbed_official 0:a554658735bf 58 * @param requestType request type
mbed_official 0:a554658735bf 59 * @param request request
mbed_official 0:a554658735bf 60 * @param value value
mbed_official 0:a554658735bf 61 * @param index index
mbed_official 0:a554658735bf 62 * @param buf pointer on a buffer which will be written
mbed_official 0:a554658735bf 63 * @param len length of the transfer
mbed_official 0:a554658735bf 64 *
mbed_official 0:a554658735bf 65 * @returns status of the control write
mbed_official 0:a554658735bf 66 */
mbed_official 0:a554658735bf 67 USB_TYPE controlWrite(USBDeviceConnected * dev, uint8_t requestType, uint8_t request, uint32_t value, uint32_t index, uint8_t * buf, uint32_t len);
mbed_official 0:a554658735bf 68
mbed_official 0:a554658735bf 69 /**
mbed_official 0:a554658735bf 70 * Bulk read
mbed_official 0:a554658735bf 71 *
mbed_official 0:a554658735bf 72 * @param dev the bulk transfer will be done for this device
mbed_official 0:a554658735bf 73 * @param ep USBEndpoint which will be used to read a packet
mbed_official 0:a554658735bf 74 * @param buf pointer on a buffer where will be store the data received
mbed_official 0:a554658735bf 75 * @param len length of the transfer
mbed_official 0:a554658735bf 76 * @param blocking if true, the read is blocking (wait for completion)
mbed_official 0:a554658735bf 77 *
mbed_official 0:a554658735bf 78 * @returns status of the bulk read
mbed_official 0:a554658735bf 79 */
mbed_official 0:a554658735bf 80 USB_TYPE bulkRead(USBDeviceConnected * dev, USBEndpoint * ep, uint8_t * buf, uint32_t len, bool blocking = true);
mbed_official 0:a554658735bf 81
mbed_official 0:a554658735bf 82 /**
mbed_official 0:a554658735bf 83 * Bulk write
mbed_official 0:a554658735bf 84 *
mbed_official 0:a554658735bf 85 * @param dev the bulk transfer will be done for this device
mbed_official 0:a554658735bf 86 * @param ep USBEndpoint which will be used to write a packet
mbed_official 0:a554658735bf 87 * @param buf pointer on a buffer which will be written
mbed_official 0:a554658735bf 88 * @param len length of the transfer
mbed_official 0:a554658735bf 89 * @param blocking if true, the write is blocking (wait for completion)
mbed_official 0:a554658735bf 90 *
mbed_official 0:a554658735bf 91 * @returns status of the bulk write
mbed_official 0:a554658735bf 92 */
mbed_official 0:a554658735bf 93 USB_TYPE bulkWrite(USBDeviceConnected * dev, USBEndpoint * ep, uint8_t * buf, uint32_t len, bool blocking = true);
mbed_official 0:a554658735bf 94
mbed_official 0:a554658735bf 95 /**
mbed_official 0:a554658735bf 96 * Interrupt read
mbed_official 0:a554658735bf 97 *
mbed_official 0:a554658735bf 98 * @param dev the bulk transfer will be done for this device
mbed_official 0:a554658735bf 99 * @param ep USBEndpoint which will be used to write a packet
mbed_official 0:a554658735bf 100 * @param buf pointer on a buffer which will be written
mbed_official 0:a554658735bf 101 * @param len length of the transfer
mbed_official 0:a554658735bf 102 * @param blocking if true, the read is blocking (wait for completion)
mbed_official 0:a554658735bf 103 *
mbed_official 0:a554658735bf 104 * @returns status of the interrupt read
mbed_official 0:a554658735bf 105 */
mbed_official 0:a554658735bf 106 USB_TYPE interruptRead(USBDeviceConnected * dev, USBEndpoint * ep, uint8_t * buf, uint32_t len, bool blocking = true);
mbed_official 0:a554658735bf 107
mbed_official 0:a554658735bf 108 /**
mbed_official 0:a554658735bf 109 * Interrupt write
mbed_official 0:a554658735bf 110 *
mbed_official 0:a554658735bf 111 * @param dev the bulk transfer will be done for this device
mbed_official 0:a554658735bf 112 * @param ep USBEndpoint which will be used to write a packet
mbed_official 0:a554658735bf 113 * @param buf pointer on a buffer which will be written
mbed_official 0:a554658735bf 114 * @param len length of the transfer
mbed_official 0:a554658735bf 115 * @param blocking if true, the write is blocking (wait for completion)
mbed_official 0:a554658735bf 116 *
mbed_official 0:a554658735bf 117 * @returns status of the interrupt write
mbed_official 0:a554658735bf 118 */
mbed_official 0:a554658735bf 119 USB_TYPE interruptWrite(USBDeviceConnected * dev, USBEndpoint * ep, uint8_t * buf, uint32_t len, bool blocking = true);
mbed_official 0:a554658735bf 120
mbed_official 0:a554658735bf 121 /**
mbed_official 0:a554658735bf 122 * Enumerate a device.
mbed_official 0:a554658735bf 123 *
mbed_official 0:a554658735bf 124 * @param dev device which will be enumerated
mbed_official 0:a554658735bf 125 *
mbed_official 0:a554658735bf 126 * @returns status of the enumeration
mbed_official 0:a554658735bf 127 */
mbed_official 0:a554658735bf 128 USB_TYPE enumerate(USBDeviceConnected * dev, IUSBEnumerator* pEnumerator);
mbed_official 0:a554658735bf 129
mbed_official 0:a554658735bf 130 /**
samux 8:93da8ea2708b 131 * reset a specific device
samux 8:93da8ea2708b 132 *
samux 8:93da8ea2708b 133 * @param dev device which will be resetted
samux 8:93da8ea2708b 134 */
samux 8:93da8ea2708b 135 USB_TYPE resetDevice(USBDeviceConnected * dev);
samux 9:7671b6a8c363 136
samux 8:93da8ea2708b 137 /**
mbed_official 0:a554658735bf 138 * Get a device
mbed_official 0:a554658735bf 139 *
mbed_official 0:a554658735bf 140 * @param index index of the device which will be returned
mbed_official 0:a554658735bf 141 *
mbed_official 0:a554658735bf 142 * @returns pointer on the "index" device
mbed_official 0:a554658735bf 143 */
mbed_official 0:a554658735bf 144 USBDeviceConnected * getDevice(uint8_t index);
mbed_official 0:a554658735bf 145
mbed_official 0:a554658735bf 146 /*
mbed_official 0:a554658735bf 147 * If there is a HID device connected, the host stores the length of the report descriptor.
mbed_official 0:a554658735bf 148 * This avoid to the driver to re-ask the configuration descriptor to request the report descriptor
mbed_official 0:a554658735bf 149 *
mbed_official 0:a554658735bf 150 * @returns length of the report descriptor
mbed_official 0:a554658735bf 151 */
mbed_official 0:a554658735bf 152 inline uint16_t getLengthReportDescr() {
mbed_official 0:a554658735bf 153 return lenReportDescr;
mbed_official 0:a554658735bf 154 };
mbed_official 0:a554658735bf 155
mbed_official 0:a554658735bf 156 /**
mbed_official 0:a554658735bf 157 * register a driver into the host associated with a callback function called when the device is disconnected
mbed_official 0:a554658735bf 158 *
mbed_official 0:a554658735bf 159 * @param dev device
samux 4:b320d68e98e7 160 * @param intf interface number
mbed_official 0:a554658735bf 161 * @param tptr pointer to the object to call the member function on
mbed_official 0:a554658735bf 162 * @param mptr pointer to the member function to be called
mbed_official 0:a554658735bf 163 */
mbed_official 0:a554658735bf 164 template<typename T>
mbed_official 0:a554658735bf 165 inline void registerDriver(USBDeviceConnected * dev, uint8_t intf, T* tptr, void (T::*mptr)(void)) {
mbed_official 0:a554658735bf 166 int index = findDevice(dev);
mbed_official 0:a554658735bf 167 if ((index != -1) && (mptr != NULL) && (tptr != NULL)) {
samux 4:b320d68e98e7 168 USB_DBG("register driver for dev: %p on intf: %d", dev, intf);
samux 4:b320d68e98e7 169 deviceAttachedDriver[index][intf] = true;
mbed_official 0:a554658735bf 170 dev->onDisconnect(intf, tptr, mptr);
mbed_official 0:a554658735bf 171 }
mbed_official 0:a554658735bf 172 }
mbed_official 0:a554658735bf 173
mbed_official 0:a554658735bf 174 /**
mbed_official 0:a554658735bf 175 * register a driver into the host associated with a callback function called when the device is disconnected
mbed_official 0:a554658735bf 176 *
mbed_official 0:a554658735bf 177 * @param dev device
samux 4:b320d68e98e7 178 * @param intf interface number
mbed_official 0:a554658735bf 179 * @param fn callback called when the specified device has been disconnected
mbed_official 0:a554658735bf 180 */
mbed_official 0:a554658735bf 181 inline void registerDriver(USBDeviceConnected * dev, uint8_t intf, void (*fn)(void)) {
mbed_official 0:a554658735bf 182 int index = findDevice(dev);
mbed_official 0:a554658735bf 183 if ((index != -1) && (fn != NULL)) {
samux 4:b320d68e98e7 184 USB_DBG("register driver for dev: %p on intf: %d", dev, intf);
samux 4:b320d68e98e7 185 deviceAttachedDriver[index][intf] = true;
mbed_official 0:a554658735bf 186 dev->onDisconnect(intf, fn);
mbed_official 0:a554658735bf 187 }
mbed_official 0:a554658735bf 188 }
mbed_official 0:a554658735bf 189
samux 8:93da8ea2708b 190 friend class USBHostHub;
samux 8:93da8ea2708b 191
samux 8:93da8ea2708b 192 protected:
samux 8:93da8ea2708b 193
samux 8:93da8ea2708b 194 /**
samux 8:93da8ea2708b 195 * Virtual method called when a transfer has been completed
samux 8:93da8ea2708b 196 *
samux 8:93da8ea2708b 197 * @param addr list of the TDs which have been completed
samux 8:93da8ea2708b 198 */
samux 8:93da8ea2708b 199 virtual void transferCompleted(volatile uint32_t addr);
samux 9:7671b6a8c363 200
mbed_official 0:a554658735bf 201 /**
mbed_official 0:a554658735bf 202 * Virtual method called when a device has been connected
mbed_official 0:a554658735bf 203 *
mbed_official 0:a554658735bf 204 * @param hub hub number of the device
mbed_official 0:a554658735bf 205 * @param port port number of the device
mbed_official 0:a554658735bf 206 * @param lowSpeed 1 if low speed, 0 otherwise
mbed_official 0:a554658735bf 207 * @param hub_parent reference on the parent hub
mbed_official 0:a554658735bf 208 */
mbed_official 0:a554658735bf 209 virtual void deviceConnected(int hub, int port, bool lowSpeed, USBHostHub * hub_parent = NULL);
mbed_official 0:a554658735bf 210
mbed_official 0:a554658735bf 211 /**
mbed_official 0:a554658735bf 212 * Virtuel method called when a device has been disconnected
mbed_official 0:a554658735bf 213 *
mbed_official 0:a554658735bf 214 * @param hub hub number of the device
mbed_official 0:a554658735bf 215 * @param port port number of the device
mbed_official 0:a554658735bf 216 * @param addr list of the TDs which have been completed to dequeue freed TDs
mbed_official 0:a554658735bf 217 */
mbed_official 0:a554658735bf 218 virtual void deviceDisconnected(int hub, int port, USBHostHub * hub_parent, volatile uint32_t addr);
mbed_official 0:a554658735bf 219
mbed_official 0:a554658735bf 220
mbed_official 0:a554658735bf 221 private:
mbed_official 0:a554658735bf 222 // singleton class -> constructor is private
mbed_official 0:a554658735bf 223 USBHost();
mbed_official 0:a554658735bf 224 static USBHost * instHost;
mbed_official 0:a554658735bf 225 uint16_t lenReportDescr;
mbed_official 0:a554658735bf 226
mbed_official 0:a554658735bf 227 // endpoints
mbed_official 0:a554658735bf 228 void unqueueEndpoint(USBEndpoint * ep) ;
mbed_official 0:a554658735bf 229 USBEndpoint endpoints[MAX_ENDPOINT];
mbed_official 0:a554658735bf 230 USBEndpoint* volatile control;
mbed_official 0:a554658735bf 231
mbed_official 0:a554658735bf 232 USBEndpoint* volatile headControlEndpoint;
mbed_official 0:a554658735bf 233 USBEndpoint* volatile headBulkEndpoint;
mbed_official 0:a554658735bf 234 USBEndpoint* volatile headInterruptEndpoint;
mbed_official 0:a554658735bf 235
mbed_official 0:a554658735bf 236 USBEndpoint* volatile tailControlEndpoint;
mbed_official 0:a554658735bf 237 USBEndpoint* volatile tailBulkEndpoint;
mbed_official 0:a554658735bf 238 USBEndpoint* volatile tailInterruptEndpoint;
mbed_official 0:a554658735bf 239
mbed_official 0:a554658735bf 240 bool controlEndpointAllocated;
mbed_official 0:a554658735bf 241
mbed_official 0:a554658735bf 242 // devices connected
mbed_official 0:a554658735bf 243 USBDeviceConnected devices[MAX_DEVICE_CONNECTED];
samux 6:1571e517a91b 244 bool deviceInUse[MAX_DEVICE_CONNECTED];
samux 6:1571e517a91b 245 bool deviceAttachedDriver[MAX_DEVICE_CONNECTED][MAX_INTF];
samux 6:1571e517a91b 246 bool deviceReset[MAX_DEVICE_CONNECTED];
samux 6:1571e517a91b 247 bool deviceInited[MAX_DEVICE_CONNECTED];
mbed_official 0:a554658735bf 248
mbed_official 0:a554658735bf 249 #if MAX_HUB_NB
mbed_official 0:a554658735bf 250 USBHostHub hubs[MAX_HUB_NB];
mbed_official 0:a554658735bf 251 bool hub_in_use[MAX_HUB_NB];
mbed_official 0:a554658735bf 252 #endif
mbed_official 0:a554658735bf 253
mbed_official 0:a554658735bf 254 // to store a setup packet
mbed_official 0:a554658735bf 255 uint8_t setupPacket[8];
mbed_official 0:a554658735bf 256
mbed_official 0:a554658735bf 257 typedef struct {
mbed_official 0:a554658735bf 258 uint8_t event_id;
mbed_official 0:a554658735bf 259 void * td_addr;
mbed_official 0:a554658735bf 260 uint8_t hub;
mbed_official 0:a554658735bf 261 uint8_t port;
mbed_official 0:a554658735bf 262 uint8_t lowSpeed;
mbed_official 0:a554658735bf 263 uint8_t td_state;
mbed_official 0:a554658735bf 264 void * hub_parent;
mbed_official 0:a554658735bf 265 } message_t;
mbed_official 0:a554658735bf 266
mbed_official 0:a554658735bf 267 Thread usbThread;
mbed_official 0:a554658735bf 268 void usb_process();
mbed_official 0:a554658735bf 269 static void usb_process_static(void const * arg);
samux 9:7671b6a8c363 270 Mail<message_t, 10> mail_usb_event;
mbed_official 0:a554658735bf 271 Mutex usb_mutex;
samux 9:7671b6a8c363 272 Mutex td_mutex;
mbed_official 0:a554658735bf 273
mbed_official 0:a554658735bf 274 // buffer for conf descriptor
mbed_official 16:ab8c9118524e 275 uint8_t data[415];
mbed_official 0:a554658735bf 276
mbed_official 0:a554658735bf 277 /**
mbed_official 0:a554658735bf 278 * Add a transfer on the TD linked list associated to an ED
mbed_official 0:a554658735bf 279 *
mbed_official 0:a554658735bf 280 * @param ed the transfer is associated to this ed
mbed_official 0:a554658735bf 281 * @param buf pointer on a buffer where will be read/write data to send or receive
mbed_official 0:a554658735bf 282 * @param len transfer length
mbed_official 0:a554658735bf 283 *
mbed_official 0:a554658735bf 284 * @return status of the transfer
mbed_official 0:a554658735bf 285 */
mbed_official 0:a554658735bf 286 USB_TYPE addTransfer(USBEndpoint * ed, uint8_t * buf, uint32_t len) ;
mbed_official 0:a554658735bf 287
mbed_official 0:a554658735bf 288 /**
mbed_official 0:a554658735bf 289 * Link the USBEndpoint to the linked list and attach an USBEndpoint this USBEndpoint to a device
mbed_official 0:a554658735bf 290 *
mbed_official 0:a554658735bf 291 * @param dev pointer on a USBDeviceConnected object
mbed_official 0:a554658735bf 292 * @param ep pointer on the USBEndpoint which will be added
mbed_official 0:a554658735bf 293 *
mbed_official 0:a554658735bf 294 * return true if successful
mbed_official 0:a554658735bf 295 */
mbed_official 0:a554658735bf 296 bool addEndpoint(USBDeviceConnected * dev, uint8_t intf_nb, USBEndpoint * ep) ;
mbed_official 0:a554658735bf 297
mbed_official 0:a554658735bf 298 /**
mbed_official 0:a554658735bf 299 * Create an USBEndpoint descriptor. Warning: the USBEndpoint is not linked.
mbed_official 0:a554658735bf 300 *
mbed_official 0:a554658735bf 301 * @param type USBEndpoint type (CONTROL_ENDPOINT, BULK_ENDPOINT, INTERRUPT_ENDPOINT)
mbed_official 0:a554658735bf 302 * @param dir USBEndpoint direction (no meaning for CONTROL_ENDPOINT)
mbed_official 0:a554658735bf 303 * @param size USBEndpoint max packet size
mbed_official 0:a554658735bf 304 * @param addr USBEndpoint address
mbed_official 0:a554658735bf 305 *
mbed_official 0:a554658735bf 306 * @returns pointer on the USBEndpoint created
mbed_official 0:a554658735bf 307 */
mbed_official 0:a554658735bf 308 USBEndpoint * newEndpoint(ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir, uint32_t size, uint8_t addr) ;
mbed_official 0:a554658735bf 309
mbed_official 0:a554658735bf 310 /**
mbed_official 0:a554658735bf 311 * Request the device descriptor
mbed_official 0:a554658735bf 312 *
mbed_official 0:a554658735bf 313 * @param dev request the device descriptor on this device
mbed_official 0:a554658735bf 314 * @param buf buffer to store the device descriptor
mbed_official 0:a554658735bf 315 * @param max_len_buf maximum size of buf
mbed_official 0:a554658735bf 316 * @param len_dev_descr pointer to store the length of the packet transferred
mbed_official 0:a554658735bf 317 */
mbed_official 0:a554658735bf 318 USB_TYPE getDeviceDescriptor(USBDeviceConnected * dev, uint8_t * buf, uint16_t max_len_buf, uint16_t * len_dev_descr = NULL);
mbed_official 0:a554658735bf 319
mbed_official 0:a554658735bf 320 /**
mbed_official 0:a554658735bf 321 * Request the configuration descriptor
mbed_official 0:a554658735bf 322 *
mbed_official 0:a554658735bf 323 * @param dev request the configuration descriptor on this device
mbed_official 0:a554658735bf 324 * @param buf buffer to store the configuration descriptor
mbed_official 0:a554658735bf 325 * @param max_len_buf maximum size of buf
mbed_official 0:a554658735bf 326 * @param len_conf_descr pointer to store the length of the packet transferred
mbed_official 0:a554658735bf 327 */
mbed_official 0:a554658735bf 328 USB_TYPE getConfigurationDescriptor(USBDeviceConnected * dev, uint8_t * buf, uint16_t max_len_buf, uint16_t * len_conf_descr = NULL);
mbed_official 0:a554658735bf 329
mbed_official 0:a554658735bf 330 /**
mbed_official 0:a554658735bf 331 * Set the address of a specific device
mbed_official 0:a554658735bf 332 *
mbed_official 0:a554658735bf 333 * @param dev device to set the address
mbed_official 0:a554658735bf 334 * @param address address
mbed_official 0:a554658735bf 335 */
mbed_official 0:a554658735bf 336 USB_TYPE setAddress(USBDeviceConnected * dev, uint8_t address);
mbed_official 0:a554658735bf 337
mbed_official 0:a554658735bf 338 /**
mbed_official 0:a554658735bf 339 * Set the configuration of a device
mbed_official 0:a554658735bf 340 *
mbed_official 0:a554658735bf 341 * @param dev device on which the specified configuration will be activated
mbed_official 0:a554658735bf 342 * @param conf configuration number to activate (usually 1)
mbed_official 0:a554658735bf 343 */
mbed_official 0:a554658735bf 344 USB_TYPE setConfiguration(USBDeviceConnected * dev, uint8_t conf);
mbed_official 0:a554658735bf 345
samux 8:93da8ea2708b 346 /**
samux 8:93da8ea2708b 347 * Free a specific device
samux 8:93da8ea2708b 348 *
samux 8:93da8ea2708b 349 * @param dev device to be freed
samux 8:93da8ea2708b 350 */
samux 8:93da8ea2708b 351 void freeDevice(USBDeviceConnected * dev);
samux 9:7671b6a8c363 352
mbed_official 0:a554658735bf 353 USB_TYPE controlTransfer( USBDeviceConnected * dev,
mbed_official 0:a554658735bf 354 uint8_t requestType,
mbed_official 0:a554658735bf 355 uint8_t request,
mbed_official 0:a554658735bf 356 uint32_t value,
mbed_official 0:a554658735bf 357 uint32_t index,
mbed_official 0:a554658735bf 358 uint8_t * buf,
mbed_official 0:a554658735bf 359 uint32_t len,
mbed_official 0:a554658735bf 360 bool write);
mbed_official 0:a554658735bf 361
mbed_official 0:a554658735bf 362 USB_TYPE generalTransfer( USBDeviceConnected * dev,
mbed_official 0:a554658735bf 363 USBEndpoint * ep,
mbed_official 0:a554658735bf 364 uint8_t * buf,
mbed_official 0:a554658735bf 365 uint32_t len,
mbed_official 0:a554658735bf 366 bool blocking,
mbed_official 0:a554658735bf 367 ENDPOINT_TYPE type,
mbed_official 0:a554658735bf 368 bool write) ;
mbed_official 0:a554658735bf 369
mbed_official 0:a554658735bf 370 void fillControlBuf(uint8_t requestType, uint8_t request, uint16_t value, uint16_t index, int len) ;
mbed_official 0:a554658735bf 371 void parseConfDescr(USBDeviceConnected * dev, uint8_t * conf_descr, uint32_t len, IUSBEnumerator* pEnumerator) ;
mbed_official 0:a554658735bf 372 int findDevice(USBDeviceConnected * dev) ;
mbed_official 0:a554658735bf 373 int findDevice(uint8_t hub, uint8_t port, USBHostHub * hub_parent = NULL) ;
samux 4:b320d68e98e7 374 uint8_t numberDriverAttached(USBDeviceConnected * dev);
mbed_official 0:a554658735bf 375
mbed_official 0:a554658735bf 376 /////////////////////////
mbed_official 0:a554658735bf 377 /// FOR DEBUG
mbed_official 0:a554658735bf 378 /////////////////////////
mbed_official 0:a554658735bf 379 void printList(ENDPOINT_TYPE type);
mbed_official 0:a554658735bf 380
mbed_official 0:a554658735bf 381 };
mbed_official 0:a554658735bf 382
mbed_official 0:a554658735bf 383 #endif