Dependencies:   ChaNFSSD mbed ChaNFS

Committer:
okini3939
Date:
Thu Nov 10 03:20:42 2011 +0000
Revision:
1:efbcfbae4747
Parent:
0:02c293160df3

        

Who changed what in which revision?

UserRevisionLine numberNew 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