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:
samux
Date:
Wed Mar 13 15:43:54 2013 +0000
Revision:
6:1571e517a91b
Parent:
4:b320d68e98e7
Child:
8:93da8ea2708b
remove useless mutex calls

Who changed what in which revision?

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