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:
Tue Jun 03 11:30:38 2014 +0100
Revision:
24:868cbfe611a7
Parent:
23:759ec18ee1a7
Synchronized with git revision bcacbb9fbf3432829227430830cca4315b57c1b9

Full URL: https://github.com/mbedmicro/mbed/commit/bcacbb9fbf3432829227430830cca4315b57c1b9/

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 24:868cbfe611a7 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 24:868cbfe611a7 189
mbed_official 23:759ec18ee1a7 190 /**
mbed_official 23:759ec18ee1a7 191 * Instantiate to protect USB thread from accessing shared objects (USBConnectedDevices and Interfaces)
mbed_official 23:759ec18ee1a7 192 */
mbed_official 23:759ec18ee1a7 193 class Lock
mbed_official 23:759ec18ee1a7 194 {
mbed_official 23:759ec18ee1a7 195 public:
mbed_official 24:868cbfe611a7 196 Lock(USBHost* pHost);
mbed_official 24:868cbfe611a7 197 ~Lock();
mbed_official 23:759ec18ee1a7 198 private:
mbed_official 23:759ec18ee1a7 199 USBHost* m_pHost;
mbed_official 23:759ec18ee1a7 200 };
mbed_official 24:868cbfe611a7 201
samux 8:93da8ea2708b 202 friend class USBHostHub;
samux 8:93da8ea2708b 203
samux 8:93da8ea2708b 204 protected:
samux 8:93da8ea2708b 205
samux 8:93da8ea2708b 206 /**
samux 8:93da8ea2708b 207 * Virtual method called when a transfer has been completed
samux 8:93da8ea2708b 208 *
samux 8:93da8ea2708b 209 * @param addr list of the TDs which have been completed
samux 8:93da8ea2708b 210 */
samux 8:93da8ea2708b 211 virtual void transferCompleted(volatile uint32_t addr);
samux 9:7671b6a8c363 212
mbed_official 0:a554658735bf 213 /**
mbed_official 0:a554658735bf 214 * Virtual method called when a device has been connected
mbed_official 0:a554658735bf 215 *
mbed_official 0:a554658735bf 216 * @param hub hub number of the device
mbed_official 0:a554658735bf 217 * @param port port number of the device
mbed_official 0:a554658735bf 218 * @param lowSpeed 1 if low speed, 0 otherwise
mbed_official 0:a554658735bf 219 * @param hub_parent reference on the parent hub
mbed_official 0:a554658735bf 220 */
mbed_official 0:a554658735bf 221 virtual void deviceConnected(int hub, int port, bool lowSpeed, USBHostHub * hub_parent = NULL);
mbed_official 0:a554658735bf 222
mbed_official 0:a554658735bf 223 /**
mbed_official 0:a554658735bf 224 * Virtuel method called when a device has been disconnected
mbed_official 0:a554658735bf 225 *
mbed_official 0:a554658735bf 226 * @param hub hub number of the device
mbed_official 0:a554658735bf 227 * @param port port number of the device
mbed_official 0:a554658735bf 228 * @param addr list of the TDs which have been completed to dequeue freed TDs
mbed_official 0:a554658735bf 229 */
mbed_official 0:a554658735bf 230 virtual void deviceDisconnected(int hub, int port, USBHostHub * hub_parent, volatile uint32_t addr);
mbed_official 0:a554658735bf 231
mbed_official 0:a554658735bf 232
mbed_official 0:a554658735bf 233 private:
mbed_official 0:a554658735bf 234 // singleton class -> constructor is private
mbed_official 0:a554658735bf 235 USBHost();
mbed_official 0:a554658735bf 236 static USBHost * instHost;
mbed_official 0:a554658735bf 237 uint16_t lenReportDescr;
mbed_official 0:a554658735bf 238
mbed_official 0:a554658735bf 239 // endpoints
mbed_official 0:a554658735bf 240 void unqueueEndpoint(USBEndpoint * ep) ;
mbed_official 0:a554658735bf 241 USBEndpoint endpoints[MAX_ENDPOINT];
mbed_official 0:a554658735bf 242 USBEndpoint* volatile control;
mbed_official 0:a554658735bf 243
mbed_official 0:a554658735bf 244 USBEndpoint* volatile headControlEndpoint;
mbed_official 0:a554658735bf 245 USBEndpoint* volatile headBulkEndpoint;
mbed_official 0:a554658735bf 246 USBEndpoint* volatile headInterruptEndpoint;
mbed_official 0:a554658735bf 247
mbed_official 0:a554658735bf 248 USBEndpoint* volatile tailControlEndpoint;
mbed_official 0:a554658735bf 249 USBEndpoint* volatile tailBulkEndpoint;
mbed_official 0:a554658735bf 250 USBEndpoint* volatile tailInterruptEndpoint;
mbed_official 0:a554658735bf 251
mbed_official 0:a554658735bf 252 bool controlEndpointAllocated;
mbed_official 0:a554658735bf 253
mbed_official 0:a554658735bf 254 // devices connected
mbed_official 0:a554658735bf 255 USBDeviceConnected devices[MAX_DEVICE_CONNECTED];
samux 6:1571e517a91b 256 bool deviceInUse[MAX_DEVICE_CONNECTED];
samux 6:1571e517a91b 257 bool deviceAttachedDriver[MAX_DEVICE_CONNECTED][MAX_INTF];
samux 6:1571e517a91b 258 bool deviceReset[MAX_DEVICE_CONNECTED];
samux 6:1571e517a91b 259 bool deviceInited[MAX_DEVICE_CONNECTED];
mbed_official 24:868cbfe611a7 260
mbed_official 0:a554658735bf 261 #if MAX_HUB_NB
mbed_official 0:a554658735bf 262 USBHostHub hubs[MAX_HUB_NB];
mbed_official 0:a554658735bf 263 bool hub_in_use[MAX_HUB_NB];
mbed_official 0:a554658735bf 264 #endif
mbed_official 0:a554658735bf 265
mbed_official 0:a554658735bf 266 // to store a setup packet
mbed_official 0:a554658735bf 267 uint8_t setupPacket[8];
mbed_official 24:868cbfe611a7 268
mbed_official 0:a554658735bf 269 typedef struct {
mbed_official 0:a554658735bf 270 uint8_t event_id;
mbed_official 0:a554658735bf 271 void * td_addr;
mbed_official 0:a554658735bf 272 uint8_t hub;
mbed_official 0:a554658735bf 273 uint8_t port;
mbed_official 0:a554658735bf 274 uint8_t lowSpeed;
mbed_official 0:a554658735bf 275 uint8_t td_state;
mbed_official 0:a554658735bf 276 void * hub_parent;
mbed_official 0:a554658735bf 277 } message_t;
mbed_official 24:868cbfe611a7 278
mbed_official 0:a554658735bf 279 Thread usbThread;
mbed_official 0:a554658735bf 280 void usb_process();
mbed_official 0:a554658735bf 281 static void usb_process_static(void const * arg);
samux 9:7671b6a8c363 282 Mail<message_t, 10> mail_usb_event;
mbed_official 0:a554658735bf 283 Mutex usb_mutex;
samux 9:7671b6a8c363 284 Mutex td_mutex;
mbed_official 24:868cbfe611a7 285
mbed_official 0:a554658735bf 286 // buffer for conf descriptor
mbed_official 16:ab8c9118524e 287 uint8_t data[415];
mbed_official 24:868cbfe611a7 288
mbed_official 0:a554658735bf 289 /**
mbed_official 0:a554658735bf 290 * Add a transfer on the TD linked list associated to an ED
mbed_official 0:a554658735bf 291 *
mbed_official 0:a554658735bf 292 * @param ed the transfer is associated to this ed
mbed_official 0:a554658735bf 293 * @param buf pointer on a buffer where will be read/write data to send or receive
mbed_official 0:a554658735bf 294 * @param len transfer length
mbed_official 0:a554658735bf 295 *
mbed_official 0:a554658735bf 296 * @return status of the transfer
mbed_official 0:a554658735bf 297 */
mbed_official 0:a554658735bf 298 USB_TYPE addTransfer(USBEndpoint * ed, uint8_t * buf, uint32_t len) ;
mbed_official 24:868cbfe611a7 299
mbed_official 0:a554658735bf 300 /**
mbed_official 0:a554658735bf 301 * Link the USBEndpoint to the linked list and attach an USBEndpoint this USBEndpoint to a device
mbed_official 0:a554658735bf 302 *
mbed_official 0:a554658735bf 303 * @param dev pointer on a USBDeviceConnected object
mbed_official 0:a554658735bf 304 * @param ep pointer on the USBEndpoint which will be added
mbed_official 0:a554658735bf 305 *
mbed_official 0:a554658735bf 306 * return true if successful
mbed_official 0:a554658735bf 307 */
mbed_official 0:a554658735bf 308 bool addEndpoint(USBDeviceConnected * dev, uint8_t intf_nb, USBEndpoint * ep) ;
mbed_official 0:a554658735bf 309
mbed_official 0:a554658735bf 310 /**
mbed_official 0:a554658735bf 311 * Create an USBEndpoint descriptor. Warning: the USBEndpoint is not linked.
mbed_official 0:a554658735bf 312 *
mbed_official 0:a554658735bf 313 * @param type USBEndpoint type (CONTROL_ENDPOINT, BULK_ENDPOINT, INTERRUPT_ENDPOINT)
mbed_official 0:a554658735bf 314 * @param dir USBEndpoint direction (no meaning for CONTROL_ENDPOINT)
mbed_official 0:a554658735bf 315 * @param size USBEndpoint max packet size
mbed_official 0:a554658735bf 316 * @param addr USBEndpoint address
mbed_official 0:a554658735bf 317 *
mbed_official 0:a554658735bf 318 * @returns pointer on the USBEndpoint created
mbed_official 0:a554658735bf 319 */
mbed_official 0:a554658735bf 320 USBEndpoint * newEndpoint(ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir, uint32_t size, uint8_t addr) ;
mbed_official 24:868cbfe611a7 321
mbed_official 0:a554658735bf 322 /**
mbed_official 0:a554658735bf 323 * Request the device descriptor
mbed_official 0:a554658735bf 324 *
mbed_official 0:a554658735bf 325 * @param dev request the device descriptor on this device
mbed_official 0:a554658735bf 326 * @param buf buffer to store the device descriptor
mbed_official 0:a554658735bf 327 * @param max_len_buf maximum size of buf
mbed_official 0:a554658735bf 328 * @param len_dev_descr pointer to store the length of the packet transferred
mbed_official 0:a554658735bf 329 */
mbed_official 0:a554658735bf 330 USB_TYPE getDeviceDescriptor(USBDeviceConnected * dev, uint8_t * buf, uint16_t max_len_buf, uint16_t * len_dev_descr = NULL);
mbed_official 0:a554658735bf 331
mbed_official 0:a554658735bf 332 /**
mbed_official 0:a554658735bf 333 * Request the configuration descriptor
mbed_official 0:a554658735bf 334 *
mbed_official 0:a554658735bf 335 * @param dev request the configuration descriptor on this device
mbed_official 0:a554658735bf 336 * @param buf buffer to store the configuration descriptor
mbed_official 0:a554658735bf 337 * @param max_len_buf maximum size of buf
mbed_official 0:a554658735bf 338 * @param len_conf_descr pointer to store the length of the packet transferred
mbed_official 0:a554658735bf 339 */
mbed_official 0:a554658735bf 340 USB_TYPE getConfigurationDescriptor(USBDeviceConnected * dev, uint8_t * buf, uint16_t max_len_buf, uint16_t * len_conf_descr = NULL);
mbed_official 24:868cbfe611a7 341
mbed_official 0:a554658735bf 342 /**
mbed_official 0:a554658735bf 343 * Set the address of a specific device
mbed_official 0:a554658735bf 344 *
mbed_official 0:a554658735bf 345 * @param dev device to set the address
mbed_official 0:a554658735bf 346 * @param address address
mbed_official 0:a554658735bf 347 */
mbed_official 0:a554658735bf 348 USB_TYPE setAddress(USBDeviceConnected * dev, uint8_t address);
mbed_official 0:a554658735bf 349
mbed_official 0:a554658735bf 350 /**
mbed_official 0:a554658735bf 351 * Set the configuration of a device
mbed_official 0:a554658735bf 352 *
mbed_official 0:a554658735bf 353 * @param dev device on which the specified configuration will be activated
mbed_official 0:a554658735bf 354 * @param conf configuration number to activate (usually 1)
mbed_official 0:a554658735bf 355 */
mbed_official 0:a554658735bf 356 USB_TYPE setConfiguration(USBDeviceConnected * dev, uint8_t conf);
mbed_official 24:868cbfe611a7 357
samux 8:93da8ea2708b 358 /**
samux 8:93da8ea2708b 359 * Free a specific device
samux 8:93da8ea2708b 360 *
samux 8:93da8ea2708b 361 * @param dev device to be freed
samux 8:93da8ea2708b 362 */
samux 8:93da8ea2708b 363 void freeDevice(USBDeviceConnected * dev);
samux 9:7671b6a8c363 364
mbed_official 0:a554658735bf 365 USB_TYPE controlTransfer( USBDeviceConnected * dev,
mbed_official 0:a554658735bf 366 uint8_t requestType,
mbed_official 0:a554658735bf 367 uint8_t request,
mbed_official 0:a554658735bf 368 uint32_t value,
mbed_official 0:a554658735bf 369 uint32_t index,
mbed_official 0:a554658735bf 370 uint8_t * buf,
mbed_official 0:a554658735bf 371 uint32_t len,
mbed_official 0:a554658735bf 372 bool write);
mbed_official 0:a554658735bf 373
mbed_official 0:a554658735bf 374 USB_TYPE generalTransfer( USBDeviceConnected * dev,
mbed_official 0:a554658735bf 375 USBEndpoint * ep,
mbed_official 0:a554658735bf 376 uint8_t * buf,
mbed_official 0:a554658735bf 377 uint32_t len,
mbed_official 0:a554658735bf 378 bool blocking,
mbed_official 0:a554658735bf 379 ENDPOINT_TYPE type,
mbed_official 0:a554658735bf 380 bool write) ;
mbed_official 24:868cbfe611a7 381
mbed_official 0:a554658735bf 382 void fillControlBuf(uint8_t requestType, uint8_t request, uint16_t value, uint16_t index, int len) ;
mbed_official 0:a554658735bf 383 void parseConfDescr(USBDeviceConnected * dev, uint8_t * conf_descr, uint32_t len, IUSBEnumerator* pEnumerator) ;
mbed_official 0:a554658735bf 384 int findDevice(USBDeviceConnected * dev) ;
mbed_official 0:a554658735bf 385 int findDevice(uint8_t hub, uint8_t port, USBHostHub * hub_parent = NULL) ;
samux 4:b320d68e98e7 386 uint8_t numberDriverAttached(USBDeviceConnected * dev);
mbed_official 0:a554658735bf 387
mbed_official 0:a554658735bf 388 /////////////////////////
mbed_official 0:a554658735bf 389 /// FOR DEBUG
mbed_official 0:a554658735bf 390 /////////////////////////
mbed_official 0:a554658735bf 391 void printList(ENDPOINT_TYPE type);
mbed_official 0:a554658735bf 392
mbed_official 0:a554658735bf 393 };
mbed_official 0:a554658735bf 394
mbed_official 0:a554658735bf 395 #endif