Library to allow your mbed device to communicate with the Android ADK.
AndroidAccessory.h@3:ca0516beb781, 2011-07-12 (annotated)
- Committer:
- richbayliss
- Date:
- Tue Jul 12 17:36:58 2011 +0000
- Revision:
- 3:ca0516beb781
- Parent:
- 2:0d8581013b28
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
richbayliss | 0:8a0d4584ca86 | 1 | #ifndef ADK_H_INCLUDED |
richbayliss | 0:8a0d4584ca86 | 2 | #define ADK_H_INCLUDED |
richbayliss | 0:8a0d4584ca86 | 3 | |
richbayliss | 0:8a0d4584ca86 | 4 | #include "mbed.h" |
richbayliss | 0:8a0d4584ca86 | 5 | #include "USBHost.h" |
richbayliss | 0:8a0d4584ca86 | 6 | |
richbayliss | 0:8a0d4584ca86 | 7 | |
richbayliss | 0:8a0d4584ca86 | 8 | #define ADKLOG 1 |
richbayliss | 0:8a0d4584ca86 | 9 | #if ADKLOG |
richbayliss | 0:8a0d4584ca86 | 10 | #define LOG(...) printf(__VA_ARGS__) |
richbayliss | 0:8a0d4584ca86 | 11 | #define Log(...) printf(__VA_ARGS__) |
richbayliss | 0:8a0d4584ca86 | 12 | #define log(...) printf(__VA_ARGS__) |
richbayliss | 0:8a0d4584ca86 | 13 | |
richbayliss | 0:8a0d4584ca86 | 14 | #else |
richbayliss | 0:8a0d4584ca86 | 15 | #define LOG(...) do {} while(0) |
richbayliss | 0:8a0d4584ca86 | 16 | #define Log(...) do {} while(0) |
richbayliss | 0:8a0d4584ca86 | 17 | #define log(...) do {} while(0) |
richbayliss | 0:8a0d4584ca86 | 18 | |
richbayliss | 0:8a0d4584ca86 | 19 | #endif |
richbayliss | 0:8a0d4584ca86 | 20 | |
richbayliss | 0:8a0d4584ca86 | 21 | #define ACCESSORY_STRING_MANUFACTURER 0 |
richbayliss | 0:8a0d4584ca86 | 22 | #define ACCESSORY_STRING_MODEL 1 |
richbayliss | 0:8a0d4584ca86 | 23 | #define ACCESSORY_STRING_DESCRIPTION 2 |
richbayliss | 0:8a0d4584ca86 | 24 | #define ACCESSORY_STRING_VERSION 3 |
richbayliss | 0:8a0d4584ca86 | 25 | #define ACCESSORY_STRING_URI 4 |
richbayliss | 0:8a0d4584ca86 | 26 | #define ACCESSORY_STRING_SERIAL 5 |
richbayliss | 0:8a0d4584ca86 | 27 | |
richbayliss | 0:8a0d4584ca86 | 28 | #define ACCESSORY_GET_PROTOCOL 51 |
richbayliss | 0:8a0d4584ca86 | 29 | #define ACCESSORY_SEND_STRING 52 |
richbayliss | 0:8a0d4584ca86 | 30 | #define ACCESSORY_START 53 |
richbayliss | 0:8a0d4584ca86 | 31 | |
richbayliss | 0:8a0d4584ca86 | 32 | |
richbayliss | 0:8a0d4584ca86 | 33 | bool switchDevice(int device); |
richbayliss | 0:8a0d4584ca86 | 34 | |
richbayliss | 2:0d8581013b28 | 35 | /** Library to allow your mbed device to communicate with the Android ADK. |
richbayliss | 2:0d8581013b28 | 36 | * |
richbayliss | 2:0d8581013b28 | 37 | * Information about the ADK here: http://accessories.android.com/ |
richbayliss | 2:0d8581013b28 | 38 | * |
richbayliss | 2:0d8581013b28 | 39 | * Example: |
richbayliss | 2:0d8581013b28 | 40 | * @code |
richbayliss | 3:ca0516beb781 | 41 | * class DemoKit : public AndroidAccessory |
richbayliss | 2:0d8581013b28 | 42 | * { |
richbayliss | 2:0d8581013b28 | 43 | * public: |
richbayliss | 3:ca0516beb781 | 44 | * DemoKit() : AndroidAccessory ( 3, |
richbayliss | 2:0d8581013b28 | 45 | * 3, |
richbayliss | 2:0d8581013b28 | 46 | * "Google, Inc.", |
richbayliss | 2:0d8581013b28 | 47 | * "DemoKit", |
richbayliss | 2:0d8581013b28 | 48 | * "DemoKit Arduino Board", |
richbayliss | 2:0d8581013b28 | 49 | * "1.0", |
richbayliss | 2:0d8581013b28 | 50 | * "http://www.android.com", |
richbayliss | 2:0d8581013b28 | 51 | * "0000000012345678") {}; |
richbayliss | 3:ca0516beb781 | 52 | * virtual int callbackRead(u8 *buff, int len); |
richbayliss | 3:ca0516beb781 | 53 | * virtual void setupDevice(); |
richbayliss | 3:ca0516beb781 | 54 | * virtual void resetDevice(); |
richbayliss | 3:ca0516beb781 | 55 | * } |
richbayliss | 2:0d8581013b28 | 56 | * @endcode |
richbayliss | 2:0d8581013b28 | 57 | */ |
richbayliss | 0:8a0d4584ca86 | 58 | class AndroidAccessory { |
richbayliss | 0:8a0d4584ca86 | 59 | public: |
richbayliss | 0:8a0d4584ca86 | 60 | |
richbayliss | 0:8a0d4584ca86 | 61 | AndroidAccessory(int rbuffsize,int wbuffsize, |
richbayliss | 0:8a0d4584ca86 | 62 | const char* manufacturer, |
richbayliss | 0:8a0d4584ca86 | 63 | const char *model, |
richbayliss | 0:8a0d4584ca86 | 64 | const char *description, |
richbayliss | 0:8a0d4584ca86 | 65 | const char *version, |
richbayliss | 0:8a0d4584ca86 | 66 | const char *uri, |
richbayliss | 0:8a0d4584ca86 | 67 | const char *serial |
richbayliss | 0:8a0d4584ca86 | 68 | ); |
richbayliss | 0:8a0d4584ca86 | 69 | virtual void init(int device, int configuration, int interfaceNumber); |
richbayliss | 0:8a0d4584ca86 | 70 | |
richbayliss | 0:8a0d4584ca86 | 71 | virtual void resetDevice()=0; |
richbayliss | 0:8a0d4584ca86 | 72 | virtual void setupDevice()=0; |
richbayliss | 0:8a0d4584ca86 | 73 | virtual int callbackRead(u8 *buff, int len)=0; |
richbayliss | 0:8a0d4584ca86 | 74 | int write(u8 *buff, int len); |
richbayliss | 0:8a0d4584ca86 | 75 | int write() { |
richbayliss | 0:8a0d4584ca86 | 76 | return write(_writebuff,_writebuffsize); |
richbayliss | 0:8a0d4584ca86 | 77 | } |
richbayliss | 3:ca0516beb781 | 78 | |
richbayliss | 3:ca0516beb781 | 79 | void Sleep() { |
richbayliss | 3:ca0516beb781 | 80 | USBLoop(); |
richbayliss | 3:ca0516beb781 | 81 | } |
richbayliss | 0:8a0d4584ca86 | 82 | |
richbayliss | 0:8a0d4584ca86 | 83 | void adkEnd() { |
richbayliss | 0:8a0d4584ca86 | 84 | // _initok=false; |
richbayliss | 0:8a0d4584ca86 | 85 | resetDevice(); |
richbayliss | 0:8a0d4584ca86 | 86 | }; //if connection close |
richbayliss | 0:8a0d4584ca86 | 87 | bool switchDevice(int device); |
richbayliss | 0:8a0d4584ca86 | 88 | |
richbayliss | 0:8a0d4584ca86 | 89 | //buffer |
richbayliss | 0:8a0d4584ca86 | 90 | u8* _readbuff; |
richbayliss | 0:8a0d4584ca86 | 91 | int _readbuffsize; |
richbayliss | 0:8a0d4584ca86 | 92 | u8* _writebuff; |
richbayliss | 0:8a0d4584ca86 | 93 | int _writebuffsize; |
richbayliss | 0:8a0d4584ca86 | 94 | u8* _strbuff;//255bytes; |
richbayliss | 0:8a0d4584ca86 | 95 | |
richbayliss | 0:8a0d4584ca86 | 96 | private: |
richbayliss | 0:8a0d4584ca86 | 97 | |
richbayliss | 0:8a0d4584ca86 | 98 | void sendString(int device, int index, const char *str); |
richbayliss | 0:8a0d4584ca86 | 99 | int getProtocol(int device); |
richbayliss | 0:8a0d4584ca86 | 100 | |
richbayliss | 0:8a0d4584ca86 | 101 | const char *manufacturer; |
richbayliss | 0:8a0d4584ca86 | 102 | const char *model; |
richbayliss | 0:8a0d4584ca86 | 103 | const char *description; |
richbayliss | 0:8a0d4584ca86 | 104 | const char *version; |
richbayliss | 0:8a0d4584ca86 | 105 | const char *uri; |
richbayliss | 0:8a0d4584ca86 | 106 | const char *serial; |
richbayliss | 0:8a0d4584ca86 | 107 | |
richbayliss | 0:8a0d4584ca86 | 108 | //endpoints |
richbayliss | 0:8a0d4584ca86 | 109 | int input_ep; |
richbayliss | 0:8a0d4584ca86 | 110 | int output_ep; |
richbayliss | 0:8a0d4584ca86 | 111 | |
richbayliss | 0:8a0d4584ca86 | 112 | int _device; |
richbayliss | 0:8a0d4584ca86 | 113 | int _configuration; |
richbayliss | 0:8a0d4584ca86 | 114 | int _interfaceNumber; |
richbayliss | 0:8a0d4584ca86 | 115 | |
richbayliss | 0:8a0d4584ca86 | 116 | //bool _initok; |
richbayliss | 0:8a0d4584ca86 | 117 | |
richbayliss | 0:8a0d4584ca86 | 118 | }; |
richbayliss | 0:8a0d4584ca86 | 119 | |
richbayliss | 0:8a0d4584ca86 | 120 | extern AndroidAccessory* _adk; |
richbayliss | 0:8a0d4584ca86 | 121 | |
richbayliss | 0:8a0d4584ca86 | 122 | |
richbayliss | 0:8a0d4584ca86 | 123 | #endif |