Dependencies: ChaNFSSD mbed ChaNFS
USBDevice/USBMIDI/USBMIDI.h@0:02c293160df3, 2011-11-09 (annotated)
- Committer:
- okini3939
- Date:
- Wed Nov 09 17:30:56 2011 +0000
- Revision:
- 0:02c293160df3
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
okini3939 | 0:02c293160df3 | 1 | /* USB_MIDI.h */ |
okini3939 | 0:02c293160df3 | 2 | /* MIDI device example */ |
okini3939 | 0:02c293160df3 | 3 | /* Copyright (c) 2011 ARM Limited. All rights reserved. */ |
okini3939 | 0:02c293160df3 | 4 | |
okini3939 | 0:02c293160df3 | 5 | #ifndef USBMIDI_H |
okini3939 | 0:02c293160df3 | 6 | #define USBMIDI_H |
okini3939 | 0:02c293160df3 | 7 | |
okini3939 | 0:02c293160df3 | 8 | /* These headers are included for child class. */ |
okini3939 | 0:02c293160df3 | 9 | #include "USBEndpoints.h" |
okini3939 | 0:02c293160df3 | 10 | #include "USBDescriptor.h" |
okini3939 | 0:02c293160df3 | 11 | #include "USBDevice_Types.h" |
okini3939 | 0:02c293160df3 | 12 | |
okini3939 | 0:02c293160df3 | 13 | #include "USBDevice.h" |
okini3939 | 0:02c293160df3 | 14 | #include "MIDIMessage.h" |
okini3939 | 0:02c293160df3 | 15 | |
okini3939 | 0:02c293160df3 | 16 | #define DEFAULT_CONFIGURATION (1) |
okini3939 | 0:02c293160df3 | 17 | |
okini3939 | 0:02c293160df3 | 18 | /** |
okini3939 | 0:02c293160df3 | 19 | * USBMIDI example |
okini3939 | 0:02c293160df3 | 20 | * |
okini3939 | 0:02c293160df3 | 21 | * @code |
okini3939 | 0:02c293160df3 | 22 | * #include "mbed.h" |
okini3939 | 0:02c293160df3 | 23 | * #include "USBMIDI.h" |
okini3939 | 0:02c293160df3 | 24 | * |
okini3939 | 0:02c293160df3 | 25 | * USBMIDI midi; |
okini3939 | 0:02c293160df3 | 26 | * |
okini3939 | 0:02c293160df3 | 27 | * int main() { |
okini3939 | 0:02c293160df3 | 28 | * while (1) { |
okini3939 | 0:02c293160df3 | 29 | * for(int i=48; i<83; i++) { // send some messages! |
okini3939 | 0:02c293160df3 | 30 | * midi.write(MIDIMessage::NoteOn(i)); |
okini3939 | 0:02c293160df3 | 31 | * wait(0.25); |
okini3939 | 0:02c293160df3 | 32 | * midi.write(MIDIMessage::NoteOff(i)); |
okini3939 | 0:02c293160df3 | 33 | * wait(0.5); |
okini3939 | 0:02c293160df3 | 34 | * } |
okini3939 | 0:02c293160df3 | 35 | * } |
okini3939 | 0:02c293160df3 | 36 | * } |
okini3939 | 0:02c293160df3 | 37 | * @endcode |
okini3939 | 0:02c293160df3 | 38 | */ |
okini3939 | 0:02c293160df3 | 39 | class USBMIDI: public USBDevice { |
okini3939 | 0:02c293160df3 | 40 | public: |
okini3939 | 0:02c293160df3 | 41 | |
okini3939 | 0:02c293160df3 | 42 | /** |
okini3939 | 0:02c293160df3 | 43 | * Constructor |
okini3939 | 0:02c293160df3 | 44 | * |
okini3939 | 0:02c293160df3 | 45 | * @param vendor_id Your vendor_id |
okini3939 | 0:02c293160df3 | 46 | * @param product_id Your product_id |
okini3939 | 0:02c293160df3 | 47 | * @param product_release Your preoduct_release |
okini3939 | 0:02c293160df3 | 48 | */ |
okini3939 | 0:02c293160df3 | 49 | USBMIDI(uint16_t vendor_id = 0x0700, uint16_t product_id = 0x0101, uint16_t product_release = 0x0001); |
okini3939 | 0:02c293160df3 | 50 | |
okini3939 | 0:02c293160df3 | 51 | /* |
okini3939 | 0:02c293160df3 | 52 | * Get string product descriptor |
okini3939 | 0:02c293160df3 | 53 | * |
okini3939 | 0:02c293160df3 | 54 | * @returns pointer to the string product descriptor |
okini3939 | 0:02c293160df3 | 55 | */ |
okini3939 | 0:02c293160df3 | 56 | virtual uint8_t * stringIproductDesc(); |
okini3939 | 0:02c293160df3 | 57 | |
okini3939 | 0:02c293160df3 | 58 | /* |
okini3939 | 0:02c293160df3 | 59 | * Get string interface descriptor |
okini3939 | 0:02c293160df3 | 60 | * |
okini3939 | 0:02c293160df3 | 61 | * @returns pointer to the string interface descriptor |
okini3939 | 0:02c293160df3 | 62 | */ |
okini3939 | 0:02c293160df3 | 63 | virtual uint8_t * stringIinterfaceDesc(); |
okini3939 | 0:02c293160df3 | 64 | |
okini3939 | 0:02c293160df3 | 65 | /* |
okini3939 | 0:02c293160df3 | 66 | * Get configuration descriptor |
okini3939 | 0:02c293160df3 | 67 | * |
okini3939 | 0:02c293160df3 | 68 | * @returns pointer to the configuration descriptor |
okini3939 | 0:02c293160df3 | 69 | */ |
okini3939 | 0:02c293160df3 | 70 | virtual uint8_t * configurationDesc(); |
okini3939 | 0:02c293160df3 | 71 | |
okini3939 | 0:02c293160df3 | 72 | /** |
okini3939 | 0:02c293160df3 | 73 | * Send a MIDIMessage |
okini3939 | 0:02c293160df3 | 74 | * |
okini3939 | 0:02c293160df3 | 75 | * @param m The MIDIMessage to send |
okini3939 | 0:02c293160df3 | 76 | */ |
okini3939 | 0:02c293160df3 | 77 | void write(MIDIMessage m); |
okini3939 | 0:02c293160df3 | 78 | |
okini3939 | 0:02c293160df3 | 79 | /** |
okini3939 | 0:02c293160df3 | 80 | * Attach a callback for when a MIDIEvent is received |
okini3939 | 0:02c293160df3 | 81 | * |
okini3939 | 0:02c293160df3 | 82 | * @param fptr function pointer |
okini3939 | 0:02c293160df3 | 83 | */ |
okini3939 | 0:02c293160df3 | 84 | void attach(void (*fptr)(MIDIMessage)); |
okini3939 | 0:02c293160df3 | 85 | |
okini3939 | 0:02c293160df3 | 86 | virtual bool USBCallback_setConfiguration(uint8_t configuration); |
okini3939 | 0:02c293160df3 | 87 | |
okini3939 | 0:02c293160df3 | 88 | protected: |
okini3939 | 0:02c293160df3 | 89 | virtual bool EPBULK_OUT_callback(); |
okini3939 | 0:02c293160df3 | 90 | |
okini3939 | 0:02c293160df3 | 91 | private: |
okini3939 | 0:02c293160df3 | 92 | void (*midi_evt)(MIDIMessage); |
okini3939 | 0:02c293160df3 | 93 | |
okini3939 | 0:02c293160df3 | 94 | }; |
okini3939 | 0:02c293160df3 | 95 | |
okini3939 | 0:02c293160df3 | 96 | #endif |
okini3939 | 0:02c293160df3 | 97 |