This program is for an autonomous robot for the competition at the Hochschule Luzern. http://cruisingcrepe.wordpress.com/ We are one of the 32 teams. http://cruisingcrepe.wordpress.com/ The postition control is based on this Documentation: Control of Wheeled Mobile Robots: An Experimental Overview from Alessandro De Luca, Giuseppe Oriolo, Marilena Vendittelli. For more information see here: http://www.dis.uniroma1.it/~labrob/pub/papers/Ramsete01.pdf

Dependencies:   mbed

Fork of autonomous Robot Android by Christian Burri

Committer:
chrigelburri
Date:
Sun Apr 07 08:31:51 2013 +0000
Revision:
12:235e318a414f
Parent:
Android/AndroidAccessory/AndroidAccessory.h@6:48eeb41188dd
Kommentare nochmals verbessert android fehlt noch

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chrigelburri 6:48eeb41188dd 1 /* mbed AndroidAccessory Library
chrigelburri 6:48eeb41188dd 2 * Created by p07gbar from work by Makoto Abe
chrigelburri 6:48eeb41188dd 3 *
chrigelburri 6:48eeb41188dd 4 */
chrigelburri 6:48eeb41188dd 5 #ifndef ADK_H_INCLUDED
chrigelburri 6:48eeb41188dd 6 #define ADK_H_INCLUDED
chrigelburri 6:48eeb41188dd 7
chrigelburri 6:48eeb41188dd 8 #include "mbed.h"
chrigelburri 6:48eeb41188dd 9 #include "USBHost.h"
chrigelburri 6:48eeb41188dd 10
chrigelburri 6:48eeb41188dd 11
chrigelburri 6:48eeb41188dd 12 //#define ADKLOG 1
chrigelburri 6:48eeb41188dd 13 #if ADKLOG
chrigelburri 6:48eeb41188dd 14 #define LOG(...) printf(__VA_ARGS__)
chrigelburri 6:48eeb41188dd 15 #define Log(...) printf(__VA_ARGS__)
chrigelburri 6:48eeb41188dd 16 #define log(...) printf(__VA_ARGS__)
chrigelburri 6:48eeb41188dd 17
chrigelburri 6:48eeb41188dd 18 #else
chrigelburri 6:48eeb41188dd 19 #define LOG(...) do {} while(0)
chrigelburri 6:48eeb41188dd 20 #define Log(...) do {} while(0)
chrigelburri 6:48eeb41188dd 21 #define log(...) do {} while(0)
chrigelburri 6:48eeb41188dd 22
chrigelburri 6:48eeb41188dd 23 #endif
chrigelburri 6:48eeb41188dd 24
chrigelburri 6:48eeb41188dd 25 #define ACCESSORY_STRING_MANUFACTURER 0
chrigelburri 6:48eeb41188dd 26 #define ACCESSORY_STRING_MODEL 1
chrigelburri 6:48eeb41188dd 27 #define ACCESSORY_STRING_DESCRIPTION 2
chrigelburri 6:48eeb41188dd 28 #define ACCESSORY_STRING_VERSION 3
chrigelburri 6:48eeb41188dd 29 #define ACCESSORY_STRING_URI 4
chrigelburri 6:48eeb41188dd 30 #define ACCESSORY_STRING_SERIAL 5
chrigelburri 6:48eeb41188dd 31
chrigelburri 6:48eeb41188dd 32 #define ACCESSORY_GET_PROTOCOL 51
chrigelburri 6:48eeb41188dd 33 #define ACCESSORY_SEND_STRING 52
chrigelburri 6:48eeb41188dd 34 #define ACCESSORY_START 53
chrigelburri 6:48eeb41188dd 35
chrigelburri 6:48eeb41188dd 36
chrigelburri 6:48eeb41188dd 37
chrigelburri 6:48eeb41188dd 38 /** An AndroidAccessory control class
chrigelburri 6:48eeb41188dd 39 *
chrigelburri 6:48eeb41188dd 40 * It allows easy creation of a mbed android ADK accessory, with minimal low level fussing.
chrigelburri 6:48eeb41188dd 41 * Base code should have methods resetDevice(), setupDevice(), callbackRead(u8 *buff, int len) and callBackWrite() functions
chrigelburri 6:48eeb41188dd 42 *
chrigelburri 6:48eeb41188dd 43 */
chrigelburri 6:48eeb41188dd 44
chrigelburri 6:48eeb41188dd 45 class AndroidAccessory {
chrigelburri 6:48eeb41188dd 46 public:
chrigelburri 6:48eeb41188dd 47
chrigelburri 6:48eeb41188dd 48
chrigelburri 6:48eeb41188dd 49
chrigelburri 6:48eeb41188dd 50 /** Create a AndroidAccessory object
chrigelburri 6:48eeb41188dd 51 *
chrigelburri 6:48eeb41188dd 52 * Create a AndroidAccessoryobject with specified buffer sizes and infomation
chrigelburri 6:48eeb41188dd 53 *
chrigelburri 6:48eeb41188dd 54 * @param rbuffsize The size of the read buffer
chrigelburri 6:48eeb41188dd 55 * @param wbuffsize The size of the write buffer
chrigelburri 6:48eeb41188dd 56 * @param manufacturer The manufacturer of the accessory
chrigelburri 6:48eeb41188dd 57 * @param model The model of the accessory
chrigelburri 6:48eeb41188dd 58 * @param description A short description of the accessory
chrigelburri 6:48eeb41188dd 59 * @param version The current version of the accessory
chrigelburri 6:48eeb41188dd 60 * @param uri Some data to go with the accessory (URL or more description)
chrigelburri 6:48eeb41188dd 61 * @param serial The serial number of the accessory
chrigelburri 6:48eeb41188dd 62 */
chrigelburri 6:48eeb41188dd 63 AndroidAccessory(int rbuffsize,int wbuffsize,
chrigelburri 6:48eeb41188dd 64 const char* manufacturer,
chrigelburri 6:48eeb41188dd 65 const char *model,
chrigelburri 6:48eeb41188dd 66 const char *description,
chrigelburri 6:48eeb41188dd 67 const char *version,
chrigelburri 6:48eeb41188dd 68 const char *uri,
chrigelburri 6:48eeb41188dd 69 const char *serial
chrigelburri 6:48eeb41188dd 70 );
chrigelburri 6:48eeb41188dd 71
chrigelburri 6:48eeb41188dd 72 /** Init the device
chrigelburri 6:48eeb41188dd 73 * This is meant to be implimented by the user of the class
chrigelburri 6:48eeb41188dd 74 *
chrigelburri 6:48eeb41188dd 75 * @param device Device number
chrigelburri 6:48eeb41188dd 76 * @param configuration Configuration
chrigelburri 6:48eeb41188dd 77 * @param interfaceNumber Inteface number
chrigelburri 6:48eeb41188dd 78 */
chrigelburri 6:48eeb41188dd 79 virtual void init(int device, int configuration, int interfaceNumber);
chrigelburri 6:48eeb41188dd 80
chrigelburri 6:48eeb41188dd 81 /** Reset the device
chrigelburri 6:48eeb41188dd 82 * This is meant to be implimented by the user of the class
chrigelburri 6:48eeb41188dd 83 *
chrigelburri 6:48eeb41188dd 84 */
chrigelburri 6:48eeb41188dd 85 virtual void resetDevice()=0;
chrigelburri 6:48eeb41188dd 86
chrigelburri 6:48eeb41188dd 87 /** Setup the device
chrigelburri 6:48eeb41188dd 88 * This is meant to be implimented by the user of the class. Called when the device is first intialised
chrigelburri 6:48eeb41188dd 89 *
chrigelburri 6:48eeb41188dd 90 */
chrigelburri 6:48eeb41188dd 91 virtual void setupDevice()=0;
chrigelburri 6:48eeb41188dd 92
chrigelburri 6:48eeb41188dd 93 /** Callback on Read
chrigelburri 6:48eeb41188dd 94 * This is meant to be implimented by the user of the class. Called when some data has been read in.
chrigelburri 6:48eeb41188dd 95 *
chrigelburri 6:48eeb41188dd 96 * @param buff The buffered read in data
chrigelburri 6:48eeb41188dd 97 * @param len The length of the packet recived
chrigelburri 6:48eeb41188dd 98 *
chrigelburri 6:48eeb41188dd 99 */
chrigelburri 6:48eeb41188dd 100 virtual int callbackRead(u8 *buff, int len)=0;
chrigelburri 6:48eeb41188dd 101
chrigelburri 6:48eeb41188dd 102 /** Callback after Write
chrigelburri 6:48eeb41188dd 103 * This is meant to be implimented by the user of the class. Called when the write has been finished.
chrigelburri 6:48eeb41188dd 104 *
chrigelburri 6:48eeb41188dd 105 */
chrigelburri 6:48eeb41188dd 106 virtual int callbackWrite()=0;
chrigelburri 6:48eeb41188dd 107
chrigelburri 6:48eeb41188dd 108 /** Write over USB
chrigelburri 6:48eeb41188dd 109 * This sends the data in the buffer over USB in a packet
chrigelburri 6:48eeb41188dd 110 *
chrigelburri 6:48eeb41188dd 111 * @param buff The buffer to write out
chrigelburri 6:48eeb41188dd 112 * @param len The length of the packet to send
chrigelburri 6:48eeb41188dd 113 *
chrigelburri 6:48eeb41188dd 114 */
chrigelburri 6:48eeb41188dd 115 int write(u8 *buff, int len);
chrigelburri 6:48eeb41188dd 116
chrigelburri 6:48eeb41188dd 117 /** Write over USB
chrigelburri 6:48eeb41188dd 118 * This sends the data in the buffer over USB in a packet, sends _writebuff and _writebuffsize
chrigelburri 6:48eeb41188dd 119 *
chrigelburri 6:48eeb41188dd 120 */
chrigelburri 6:48eeb41188dd 121 int write() {
chrigelburri 6:48eeb41188dd 122 return write(_writebuff,_writebuffsize);
chrigelburri 6:48eeb41188dd 123 }
chrigelburri 6:48eeb41188dd 124
chrigelburri 6:48eeb41188dd 125 /** Write over USB with no callback
chrigelburri 6:48eeb41188dd 126 * This sends the data in the buffer over USB in a packet, waits until the packet is sent, rather than doing a callback
chrigelburri 6:48eeb41188dd 127 *
chrigelburri 6:48eeb41188dd 128 * @param buff The buffer to write out
chrigelburri 6:48eeb41188dd 129 * @param len The length of the packet to send
chrigelburri 6:48eeb41188dd 130 *
chrigelburri 6:48eeb41188dd 131 */
chrigelburri 6:48eeb41188dd 132 int writeNC(u8 *buff, int len);
chrigelburri 6:48eeb41188dd 133
chrigelburri 6:48eeb41188dd 134 /** Write over USB
chrigelburri 6:48eeb41188dd 135 * This sends the data in the buffer over USB in a packet, waits until the packet is sent, rather than doing a callback, sends _writebuff and _writebuffsize
chrigelburri 6:48eeb41188dd 136 *
chrigelburri 6:48eeb41188dd 137 */
chrigelburri 6:48eeb41188dd 138 int writeNC() {
chrigelburri 6:48eeb41188dd 139 return writeNC(_writebuff,_writebuffsize);
chrigelburri 6:48eeb41188dd 140 }
chrigelburri 6:48eeb41188dd 141
chrigelburri 6:48eeb41188dd 142 /** Read the buffer USB
chrigelburri 6:48eeb41188dd 143 * This sends the data in the buffer over USB in a packet, waits until the packet is sent, rather than doing a callback
chrigelburri 6:48eeb41188dd 144 *
chrigelburri 6:48eeb41188dd 145 * @param buff The buffer to read into
chrigelburri 6:48eeb41188dd 146 * @param len The length of the packet to read in
chrigelburri 6:48eeb41188dd 147 *
chrigelburri 6:48eeb41188dd 148 * @param returns The number of bytes read
chrigelburri 6:48eeb41188dd 149 *
chrigelburri 6:48eeb41188dd 150 */
chrigelburri 6:48eeb41188dd 151 int read(u8 *buff, int len);
chrigelburri 6:48eeb41188dd 152
chrigelburri 6:48eeb41188dd 153
chrigelburri 6:48eeb41188dd 154 void adkEnd() {
chrigelburri 6:48eeb41188dd 155 // _initok=false;
chrigelburri 6:48eeb41188dd 156 resetDevice();
chrigelburri 6:48eeb41188dd 157 }; //if connection close
chrigelburri 6:48eeb41188dd 158 bool switchDevice(int device);
chrigelburri 6:48eeb41188dd 159
chrigelburri 6:48eeb41188dd 160 //buffer
chrigelburri 6:48eeb41188dd 161 u8* _readbuff;
chrigelburri 6:48eeb41188dd 162 int _readbuffsize;
chrigelburri 6:48eeb41188dd 163 u8* _writebuff;
chrigelburri 6:48eeb41188dd 164 int _writebuffsize;
chrigelburri 6:48eeb41188dd 165 u8* _strbuff;//255bytes;
chrigelburri 6:48eeb41188dd 166 void sendString(const char *str);
chrigelburri 6:48eeb41188dd 167
chrigelburri 6:48eeb41188dd 168 private:
chrigelburri 6:48eeb41188dd 169
chrigelburri 6:48eeb41188dd 170 void sendString(int device, int index, const char *str);
chrigelburri 6:48eeb41188dd 171 int getProtocol(int device);
chrigelburri 6:48eeb41188dd 172
chrigelburri 6:48eeb41188dd 173 const char *manufacturer;
chrigelburri 6:48eeb41188dd 174 const char *model;
chrigelburri 6:48eeb41188dd 175 const char *description;
chrigelburri 6:48eeb41188dd 176 const char *version;
chrigelburri 6:48eeb41188dd 177 const char *uri;
chrigelburri 6:48eeb41188dd 178 const char *serial;
chrigelburri 6:48eeb41188dd 179
chrigelburri 6:48eeb41188dd 180 //endpoints
chrigelburri 6:48eeb41188dd 181 int input_ep;
chrigelburri 6:48eeb41188dd 182 int output_ep;
chrigelburri 6:48eeb41188dd 183
chrigelburri 6:48eeb41188dd 184 int _device;
chrigelburri 6:48eeb41188dd 185 int _configuration;
chrigelburri 6:48eeb41188dd 186 int _interfaceNumber;
chrigelburri 6:48eeb41188dd 187
chrigelburri 6:48eeb41188dd 188 //bool _initok;
chrigelburri 6:48eeb41188dd 189
chrigelburri 6:48eeb41188dd 190 };
chrigelburri 6:48eeb41188dd 191
chrigelburri 6:48eeb41188dd 192 extern AndroidAccessory* _adk; //declared in cpp
chrigelburri 6:48eeb41188dd 193
chrigelburri 6:48eeb41188dd 194
chrigelburri 6:48eeb41188dd 195 #endif