Library to allow your mbed device to communicate with the Android ADK.

Committer:
richbayliss
Date:
Tue Jul 12 17:36:58 2011 +0000
Revision:
3:ca0516beb781
Parent:
2:0d8581013b28

        

Who changed what in which revision?

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