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:
Thu Mar 14 14:20:03 2013 +0000
Revision:
9:7671b6a8c363
Parent:
8:93da8ea2708b
Child:
24:868cbfe611a7
use queue to wait end of transfer - use mailbox

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 USBENDPOINT_H
mbed_official 0:a554658735bf 18 #define USBENDPOINT_H
mbed_official 0:a554658735bf 19
mbed_official 0:a554658735bf 20 #include "FunctionPointer.h"
mbed_official 0:a554658735bf 21 #include "USBHostTypes.h"
samux 9:7671b6a8c363 22 #include "rtos.h"
mbed_official 0:a554658735bf 23
mbed_official 0:a554658735bf 24 class USBDeviceConnected;
mbed_official 0:a554658735bf 25
samux 9:7671b6a8c363 26 /**
samux 8:93da8ea2708b 27 * USBEndpoint class
samux 8:93da8ea2708b 28 */
mbed_official 0:a554658735bf 29 class USBEndpoint
mbed_official 0:a554658735bf 30 {
mbed_official 0:a554658735bf 31 public:
mbed_official 0:a554658735bf 32 /**
mbed_official 0:a554658735bf 33 * Constructor
mbed_official 0:a554658735bf 34 */
mbed_official 0:a554658735bf 35 USBEndpoint() {
mbed_official 0:a554658735bf 36 state = USB_TYPE_FREE;
mbed_official 0:a554658735bf 37 nextEp = NULL;
mbed_official 0:a554658735bf 38 };
mbed_official 0:a554658735bf 39
mbed_official 0:a554658735bf 40 /**
mbed_official 0:a554658735bf 41 * Initialize an endpoint
mbed_official 0:a554658735bf 42 *
mbed_official 0:a554658735bf 43 * @param hced hced associated to the endpoint
mbed_official 0:a554658735bf 44 * @param type endpoint type
mbed_official 0:a554658735bf 45 * @param dir endpoint direction
mbed_official 0:a554658735bf 46 * @param size endpoint size
mbed_official 0:a554658735bf 47 * @param ep_number endpoint number
mbed_official 0:a554658735bf 48 * @param td_list array of two allocated transfer descriptors
mbed_official 0:a554658735bf 49 */
mbed_official 0:a554658735bf 50 void init(HCED * hced, ENDPOINT_TYPE type, ENDPOINT_DIRECTION dir, uint32_t size, uint8_t ep_number, HCTD* td_list[2]);
mbed_official 0:a554658735bf 51
mbed_official 0:a554658735bf 52 /**
samux 8:93da8ea2708b 53 * Set next token. Warning: only useful for the control endpoint
mbed_official 0:a554658735bf 54 *
mbed_official 0:a554658735bf 55 * @param token IN, OUT or SETUP token
mbed_official 0:a554658735bf 56 */
mbed_official 0:a554658735bf 57 void setNextToken(uint32_t token);
mbed_official 0:a554658735bf 58
mbed_official 0:a554658735bf 59 /**
mbed_official 0:a554658735bf 60 * Queue an endpoint
mbed_official 0:a554658735bf 61 *
samux 8:93da8ea2708b 62 * @param endpoint endpoint which will be queued in the linked list
mbed_official 0:a554658735bf 63 */
mbed_official 0:a554658735bf 64 void queueEndpoint(USBEndpoint * endpoint);
mbed_official 0:a554658735bf 65
mbed_official 0:a554658735bf 66
mbed_official 0:a554658735bf 67 /**
mbed_official 0:a554658735bf 68 * Queue a transfer on the endpoint
mbed_official 0:a554658735bf 69 */
mbed_official 0:a554658735bf 70 void queueTransfer();
mbed_official 0:a554658735bf 71
mbed_official 0:a554658735bf 72 /**
mbed_official 0:a554658735bf 73 * Unqueue a transfer from the endpoint
mbed_official 0:a554658735bf 74 *
mbed_official 0:a554658735bf 75 * @param td hctd which will be unqueued
mbed_official 0:a554658735bf 76 */
mbed_official 0:a554658735bf 77 void unqueueTransfer(volatile HCTD * td);
mbed_official 0:a554658735bf 78
mbed_official 0:a554658735bf 79 /**
mbed_official 0:a554658735bf 80 * Attach a member function to call when a transfer is finished
mbed_official 0:a554658735bf 81 *
mbed_official 0:a554658735bf 82 * @param tptr pointer to the object to call the member function on
mbed_official 0:a554658735bf 83 * @param mptr pointer to the member function to be called
mbed_official 0:a554658735bf 84 */
mbed_official 0:a554658735bf 85 template<typename T>
mbed_official 0:a554658735bf 86 inline void attach(T* tptr, void (T::*mptr)(void)) {
mbed_official 0:a554658735bf 87 if((mptr != NULL) && (tptr != NULL)) {
mbed_official 0:a554658735bf 88 rx.attach(tptr, mptr);
mbed_official 0:a554658735bf 89 }
mbed_official 0:a554658735bf 90 }
mbed_official 0:a554658735bf 91
mbed_official 0:a554658735bf 92 /**
mbed_official 0:a554658735bf 93 * Attach a callback called when a transfer is finished
mbed_official 0:a554658735bf 94 *
mbed_official 0:a554658735bf 95 * @param fptr function pointer
mbed_official 0:a554658735bf 96 */
samux 8:93da8ea2708b 97 inline void attach(void (*fptr)(void)) {
samux 8:93da8ea2708b 98 if(fptr != NULL) {
samux 8:93da8ea2708b 99 rx.attach(fptr);
mbed_official 0:a554658735bf 100 }
mbed_official 0:a554658735bf 101 }
mbed_official 0:a554658735bf 102
mbed_official 0:a554658735bf 103 /**
mbed_official 0:a554658735bf 104 * Call the handler associted to the end of a transfer
mbed_official 0:a554658735bf 105 */
mbed_official 0:a554658735bf 106 inline void call() {
mbed_official 0:a554658735bf 107 rx.call();
mbed_official 0:a554658735bf 108 };
mbed_official 0:a554658735bf 109
mbed_official 0:a554658735bf 110
mbed_official 0:a554658735bf 111 // setters
mbed_official 0:a554658735bf 112 inline void setState(USB_TYPE st) { state = st; }
mbed_official 0:a554658735bf 113 void setState(uint8_t st);
mbed_official 0:a554658735bf 114 void setDeviceAddress(uint8_t addr);
mbed_official 0:a554658735bf 115 inline void setLengthTransferred(int len) { transferred = len; };
mbed_official 0:a554658735bf 116 void setSpeed(uint8_t speed);
mbed_official 0:a554658735bf 117 void setSize(uint32_t size);
mbed_official 0:a554658735bf 118 inline void setDir(ENDPOINT_DIRECTION d) { dir = d; }
samux 4:b320d68e98e7 119 inline void setIntfNb(uint8_t intf_nb_) { intf_nb = intf_nb_; };
mbed_official 0:a554658735bf 120
mbed_official 0:a554658735bf 121 // getters
mbed_official 0:a554658735bf 122 const char * getStateString();
mbed_official 0:a554658735bf 123 inline USB_TYPE getState() { return state; }
mbed_official 0:a554658735bf 124 inline ENDPOINT_TYPE getType() { return type; };
mbed_official 0:a554658735bf 125 inline uint8_t getDeviceAddress() { return hced->control & 0x7f; };
mbed_official 0:a554658735bf 126 inline int getLengthTransferred() { return transferred; }
mbed_official 0:a554658735bf 127 inline uint8_t * getBufStart() { return buf_start; }
mbed_official 0:a554658735bf 128 inline uint8_t getAddress(){ return address; };
mbed_official 0:a554658735bf 129 inline uint32_t getSize() { return (hced->control >> 16) & 0x3ff; };
mbed_official 0:a554658735bf 130 inline volatile HCTD * getHeadTD() { return (volatile HCTD*) ((uint32_t)hced->headTD & ~0xF); };
mbed_official 0:a554658735bf 131 inline volatile HCTD** getTDList() { return td_list; };
mbed_official 0:a554658735bf 132 inline volatile HCED * getHCED() { return hced; };
mbed_official 0:a554658735bf 133 inline ENDPOINT_DIRECTION getDir() { return dir; }
mbed_official 0:a554658735bf 134 inline volatile HCTD * getProcessedTD() { return td_current; };
mbed_official 0:a554658735bf 135 inline volatile HCTD* getNextTD() { return td_current; };
mbed_official 0:a554658735bf 136 inline bool isSetup() { return setup; }
mbed_official 0:a554658735bf 137 inline USBEndpoint * nextEndpoint() { return (USBEndpoint*)nextEp; };
samux 4:b320d68e98e7 138 inline uint8_t getIntfNb() { return intf_nb; };
mbed_official 0:a554658735bf 139
mbed_official 0:a554658735bf 140 USBDeviceConnected * dev;
samux 9:7671b6a8c363 141
samux 9:7671b6a8c363 142 Queue<uint8_t, 1> ep_queue;
mbed_official 0:a554658735bf 143
mbed_official 0:a554658735bf 144 private:
mbed_official 0:a554658735bf 145 ENDPOINT_TYPE type;
mbed_official 0:a554658735bf 146 volatile USB_TYPE state;
mbed_official 0:a554658735bf 147 ENDPOINT_DIRECTION dir;
mbed_official 0:a554658735bf 148 bool setup;
mbed_official 0:a554658735bf 149
mbed_official 0:a554658735bf 150 uint8_t address;
mbed_official 0:a554658735bf 151
mbed_official 0:a554658735bf 152 int transfer_len;
mbed_official 0:a554658735bf 153 int transferred;
mbed_official 0:a554658735bf 154 uint8_t * buf_start;
mbed_official 0:a554658735bf 155
mbed_official 0:a554658735bf 156 FunctionPointer rx;
mbed_official 0:a554658735bf 157
mbed_official 0:a554658735bf 158 USBEndpoint* nextEp;
mbed_official 0:a554658735bf 159
mbed_official 0:a554658735bf 160 // USBEndpoint descriptor
mbed_official 0:a554658735bf 161 volatile HCED * hced;
mbed_official 0:a554658735bf 162
mbed_official 0:a554658735bf 163 volatile HCTD * td_list[2];
mbed_official 0:a554658735bf 164 volatile HCTD * td_current;
mbed_official 0:a554658735bf 165 volatile HCTD * td_next;
samux 4:b320d68e98e7 166
samux 4:b320d68e98e7 167 uint8_t intf_nb;
mbed_official 0:a554658735bf 168
mbed_official 0:a554658735bf 169 };
mbed_official 0:a554658735bf 170
mbed_official 0:a554658735bf 171 #endif