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

Committer:
richbayliss
Date:
Tue Jul 12 14:42:12 2011 +0000
Revision:
1:ed3873f4f745
Parent:
0:8a0d4584ca86
Child:
2:0d8581013b28

        

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 1:ed3873f4f745 36 /** AndroidAccessory class, using Peter Barrett's USBHost library
richbayliss 1:ed3873f4f745 37 *
richbayliss 1:ed3873f4f745 38 * Example:
richbayliss 1:ed3873f4f745 39 * @code
richbayliss 1:ed3873f4f745 40 * class Demokit : public AndroidAccessory
richbayliss 1:ed3873f4f745 41 * {
richbayliss 1:ed3873f4f745 42 * public:
richbayliss 1:ed3873f4f745 43 * Demokit() : AndroidAccessory (3,3,
richbayliss 1:ed3873f4f745 44 * "Google, Inc.",
richbayliss 1:ed3873f4f745 45 * "DemoKit",
richbayliss 1:ed3873f4f745 46 * "DemoKit Arduino Board",
richbayliss 1:ed3873f4f745 47 * "1.0",
richbayliss 1:ed3873f4f745 48 * "http://www.android.com",
richbayliss 1:ed3873f4f745 49 * "0000000012345678") {};
richbayliss 1:ed3873f4f745 50 * virtual int callbackRead(u8 *buff, int len);
richbayliss 1:ed3873f4f745 51 * virtual void setupDevice();
richbayliss 1:ed3873f4f745 52 * virtual void resetDevice();
richbayliss 1:ed3873f4f745 53 * void switchchk();
richbayliss 1:ed3873f4f745 54 * private:
richbayliss 1:ed3873f4f745 55 *
richbayliss 1:ed3873f4f745 56 * u8 sw1b,sw2b,sw3b; //swich data
richbayliss 1:ed3873f4f745 57 * };
richbayliss 1:ed3873f4f745 58 * @endcode
richbayliss 1:ed3873f4f745 59 */
richbayliss 0:8a0d4584ca86 60 class AndroidAccessory {
richbayliss 0:8a0d4584ca86 61 public:
richbayliss 0:8a0d4584ca86 62
richbayliss 0:8a0d4584ca86 63 AndroidAccessory(int rbuffsize,int wbuffsize,
richbayliss 0:8a0d4584ca86 64 const char* manufacturer,
richbayliss 0:8a0d4584ca86 65 const char *model,
richbayliss 0:8a0d4584ca86 66 const char *description,
richbayliss 0:8a0d4584ca86 67 const char *version,
richbayliss 0:8a0d4584ca86 68 const char *uri,
richbayliss 0:8a0d4584ca86 69 const char *serial
richbayliss 0:8a0d4584ca86 70 );
richbayliss 0:8a0d4584ca86 71 virtual void init(int device, int configuration, int interfaceNumber);
richbayliss 0:8a0d4584ca86 72
richbayliss 0:8a0d4584ca86 73 virtual void resetDevice()=0;
richbayliss 0:8a0d4584ca86 74 virtual void setupDevice()=0;
richbayliss 0:8a0d4584ca86 75 virtual int callbackRead(u8 *buff, int len)=0;
richbayliss 0:8a0d4584ca86 76 int write(u8 *buff, int len);
richbayliss 0:8a0d4584ca86 77 int write() {
richbayliss 0:8a0d4584ca86 78 return write(_writebuff,_writebuffsize);
richbayliss 0:8a0d4584ca86 79 }
richbayliss 0:8a0d4584ca86 80 //int read(u8 *buff, int len);
richbayliss 0:8a0d4584ca86 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