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

Committer:
richbayliss
Date:
Tue Jul 12 16:11:13 2011 +0000
Revision:
2:0d8581013b28
Parent:
1:ed3873f4f745
Child:
3:ca0516beb781

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
richbayliss 0:8a0d4584ca86 1
richbayliss 0:8a0d4584ca86 2 #ifndef ADK_H_INCLUDED
richbayliss 0:8a0d4584ca86 3 #define ADK_H_INCLUDED
richbayliss 0:8a0d4584ca86 4
richbayliss 0:8a0d4584ca86 5 #include "mbed.h"
richbayliss 0:8a0d4584ca86 6 #include "USBHost.h"
richbayliss 0:8a0d4584ca86 7
richbayliss 0:8a0d4584ca86 8
richbayliss 0:8a0d4584ca86 9 #define ADKLOG 1
richbayliss 0:8a0d4584ca86 10 #if ADKLOG
richbayliss 0:8a0d4584ca86 11 #define LOG(...) printf(__VA_ARGS__)
richbayliss 0:8a0d4584ca86 12 #define Log(...) printf(__VA_ARGS__)
richbayliss 0:8a0d4584ca86 13 #define log(...) printf(__VA_ARGS__)
richbayliss 0:8a0d4584ca86 14
richbayliss 0:8a0d4584ca86 15 #else
richbayliss 0:8a0d4584ca86 16 #define LOG(...) do {} while(0)
richbayliss 0:8a0d4584ca86 17 #define Log(...) do {} while(0)
richbayliss 0:8a0d4584ca86 18 #define log(...) do {} while(0)
richbayliss 0:8a0d4584ca86 19
richbayliss 0:8a0d4584ca86 20 #endif
richbayliss 0:8a0d4584ca86 21
richbayliss 0:8a0d4584ca86 22 #define ACCESSORY_STRING_MANUFACTURER 0
richbayliss 0:8a0d4584ca86 23 #define ACCESSORY_STRING_MODEL 1
richbayliss 0:8a0d4584ca86 24 #define ACCESSORY_STRING_DESCRIPTION 2
richbayliss 0:8a0d4584ca86 25 #define ACCESSORY_STRING_VERSION 3
richbayliss 0:8a0d4584ca86 26 #define ACCESSORY_STRING_URI 4
richbayliss 0:8a0d4584ca86 27 #define ACCESSORY_STRING_SERIAL 5
richbayliss 0:8a0d4584ca86 28
richbayliss 0:8a0d4584ca86 29 #define ACCESSORY_GET_PROTOCOL 51
richbayliss 0:8a0d4584ca86 30 #define ACCESSORY_SEND_STRING 52
richbayliss 0:8a0d4584ca86 31 #define ACCESSORY_START 53
richbayliss 0:8a0d4584ca86 32
richbayliss 0:8a0d4584ca86 33
richbayliss 0:8a0d4584ca86 34 bool switchDevice(int device);
richbayliss 0:8a0d4584ca86 35
richbayliss 2:0d8581013b28 36 /** Library to allow your mbed device to communicate with the Android ADK.
richbayliss 2:0d8581013b28 37 *
richbayliss 2:0d8581013b28 38 * Information about the ADK here: http://accessories.android.com/
richbayliss 2:0d8581013b28 39 *
richbayliss 2:0d8581013b28 40 * Example:
richbayliss 2:0d8581013b28 41 * @code
richbayliss 2:0d8581013b28 42 * class Demokit : public AndroidAccessory
richbayliss 2:0d8581013b28 43 * {
richbayliss 2:0d8581013b28 44 * public:
richbayliss 2:0d8581013b28 45 * Demokit() : AndroidAccessory ( 3,
richbayliss 2:0d8581013b28 46 * 3,
richbayliss 2:0d8581013b28 47 * "Google, Inc.",
richbayliss 2:0d8581013b28 48 * "DemoKit",
richbayliss 2:0d8581013b28 49 * "DemoKit Arduino Board",
richbayliss 2:0d8581013b28 50 * "1.0",
richbayliss 2:0d8581013b28 51 * "http://www.android.com",
richbayliss 2:0d8581013b28 52 * "0000000012345678") {};
richbayliss 2:0d8581013b28 53 * virtual int callbackRead(u8 *buff, int len);
richbayliss 2:0d8581013b28 54 * virtual void setupDevice();
richbayliss 2:0d8581013b28 55 * virtual void resetDevice();
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 0:8a0d4584ca86 78 //int read(u8 *buff, int len);
richbayliss 0:8a0d4584ca86 79
richbayliss 0:8a0d4584ca86 80
richbayliss 0:8a0d4584ca86 81 void adkEnd() {
richbayliss 0:8a0d4584ca86 82 // _initok=false;
richbayliss 0:8a0d4584ca86 83 resetDevice();
richbayliss 0:8a0d4584ca86 84 }; //if connection close
richbayliss 0:8a0d4584ca86 85 bool switchDevice(int device);
richbayliss 0:8a0d4584ca86 86
richbayliss 0:8a0d4584ca86 87 //buffer
richbayliss 0:8a0d4584ca86 88 u8* _readbuff;
richbayliss 0:8a0d4584ca86 89 int _readbuffsize;
richbayliss 0:8a0d4584ca86 90 u8* _writebuff;
richbayliss 0:8a0d4584ca86 91 int _writebuffsize;
richbayliss 0:8a0d4584ca86 92 u8* _strbuff;//255bytes;
richbayliss 0:8a0d4584ca86 93
richbayliss 0:8a0d4584ca86 94 private:
richbayliss 0:8a0d4584ca86 95
richbayliss 0:8a0d4584ca86 96 void sendString(int device, int index, const char *str);
richbayliss 0:8a0d4584ca86 97 int getProtocol(int device);
richbayliss 0:8a0d4584ca86 98
richbayliss 0:8a0d4584ca86 99 const char *manufacturer;
richbayliss 0:8a0d4584ca86 100 const char *model;
richbayliss 0:8a0d4584ca86 101 const char *description;
richbayliss 0:8a0d4584ca86 102 const char *version;
richbayliss 0:8a0d4584ca86 103 const char *uri;
richbayliss 0:8a0d4584ca86 104 const char *serial;
richbayliss 0:8a0d4584ca86 105
richbayliss 0:8a0d4584ca86 106 //endpoints
richbayliss 0:8a0d4584ca86 107 int input_ep;
richbayliss 0:8a0d4584ca86 108 int output_ep;
richbayliss 0:8a0d4584ca86 109
richbayliss 0:8a0d4584ca86 110 int _device;
richbayliss 0:8a0d4584ca86 111 int _configuration;
richbayliss 0:8a0d4584ca86 112 int _interfaceNumber;
richbayliss 0:8a0d4584ca86 113
richbayliss 0:8a0d4584ca86 114 //bool _initok;
richbayliss 0:8a0d4584ca86 115
richbayliss 0:8a0d4584ca86 116 };
richbayliss 0:8a0d4584ca86 117
richbayliss 0:8a0d4584ca86 118 extern AndroidAccessory* _adk;
richbayliss 0:8a0d4584ca86 119
richbayliss 0:8a0d4584ca86 120
richbayliss 0:8a0d4584ca86 121 #endif