73 #define ROOMBA_MASK_LED_NONE 0
74 #define ROOMBA_MASK_LED_PLAY 0x2
75 #define ROOMBA_MASK_LED_ADVANCE 0x8
78 #define ROOMBA_MASK_DIGITAL_OUT_0 0x1
79 #define ROOMBA_MASK_DIGITAL_OUT_1 0x2
80 #define ROOMBA_MASK_DIGITAL_OUT_2 0x4
83 #define ROOMBA_MASK_DRIVER_0 0x1
84 #define ROOMBA_MASK_DRIVER_1 0x2
85 #define ROOMBA_MASK_DRIVER_2 0x4
87 #define ROOMBA_MASK_SIDE_BRUSH 0x1
88 #define ROOMBA_MASK_VACUUM 0x2
89 #define ROOMBA_MASK_MAIN_BRUSH 0x4
92 #define ROOMBA_MASK_BUMP_RIGHT 0x1
93 #define ROOMBA_MASK_BUMP_LEFT 0x2
94 #define ROOMBA_MASK_WHEELDROP_RIGHT 0x4
95 #define ROOMBA_MASK_WHEELDROP_LEFT 0x8
96 #define ROOMBA_MASK_WHEELDROP_CASTER 0x10
99 #define ROOMBA_MASK_LD1 0x1
100 #define ROOMBA_MASK_LD0 0x2
101 #define ROOMBA_MASK_LD2 0x4
102 #define ROOMBA_MASK_RIGHT_WHEEL 0x8
103 #define ROOMBA_MASK_LEFT_WHEEL 0x10
108 #define ROOMBA_MASK_BUTTON_PLAY 0x1
109 #define ROOMBA_MASK_BUTTON_ADVANCE 0x4
111 #define ROOMBA_MASK_BUTTON_MAX 0x1
112 #define ROOMBA_MASK_BUTTON_CLEAN 0x2
113 #define ROOMBA_MASK_BUTTON_SPOT 0x4
114 #define ROOMBA_MASK_BUTTON_POWER 0x8
117 #define ROOMBA_MASK_DIGITAL_IN_0 0x1
118 #define ROOMBA_MASK_DIGITAL_IN_1 0x2
119 #define ROOMBA_MASK_DIGITAL_IN_2 0x4
120 #define ROOMBA_MASK_DIGITAL_IN_3 0x8
121 #define ROOMBA_MASK_DIGITAL_IN_DEVICE_DETECT 0x10
124 #define ROOMBA_MASK_INTERNAL_CHARGER 0x1
125 #define ROOMBA_MASK_HOME_BASE 0x2
130 #define ROOMBA_READ_TIMEOUT 200
226 DemoCoverAndDock = 1,
229 DemoDriveFigureEight = 4,
241 DriveStraight = 0x8000,
242 DriveInPlaceClockwise = 0xFFFF,
243 DriveInPlaceCounterClockwise = 0x0001,
250 StreamCommandPause = 0,
251 StreamCommandResume = 1,
258 EventTypeWheelDrop = 1,
259 EventTypeFronWheelDrop = 2,
260 EventTypeLeftWheelDrop = 3,
261 EventTypeRightWheelDrop = 4,
263 EventTypeLeftBump = 6,
264 EventTypeRightBump = 7,
265 EventTypeVirtualWall = 8,
268 EventTypeLeftCliff = 11,
269 EventTypeFrontLeftCliff = 12,
270 EventTypeFrontRightCliff = 13,
271 EventTypeRightCliff = 14,
272 EventTypeHomeBase = 15,
273 EventTypeAdvanceButton = 16,
274 EventTypePlayButton = 17,
275 EventTypeDigitalInput0 = 18,
276 EventTypeDigitalInput1 = 19,
277 EventTypeDigitalInput2 = 20,
278 EventTypeDigitalInput3 = 21,
279 EventTypeModePassive = 22,
288 IRCommandForward = 130,
289 IRCommandRight = 131,
292 IRCommandSmall = 134,
293 IRCommandMedium = 135,
294 IRCommandLargeClean = 136,
295 IRCommandPause = 137,
296 IRCommandPower = 138,
297 IRCommandArcForwardLeft = 139,
298 IRCommandArcForwardRight = 140,
299 IRCommandDriveStop = 141,
301 IRCommandSendAll = 142,
302 IRCommandSeekDock = 143,
304 IRCommandReserved1 = 240,
305 IRCommandRedBuoy = 248,
306 IRCommandGreenBuoy = 244,
307 IRCommandForceField = 242,
308 IRCommandRedGreenBuoy = 252,
309 IRCommandRedBuoyForceField = 250,
310 IRCommandGreenBuoyForceField = 246,
311 IRCommandRedGreenBuoyForceField = 254,
318 ChargeStateNotCharging = 0,
319 ChargeStateReconditioningCharging = 1,
320 ChargeStateFullChanrging = 2,
321 ChargeStateTrickleCharging = 3,
322 ChargeStateWaiting = 4,
323 ChargeStateFault = 5,
347 SensorBumpsAndWheelDrops = 7,
350 SensorCliffFrontLeft = 10,
351 SensorCliffFrontRight = 11,
352 SensorCliffRight = 12,
353 SensorVirtualWall = 13,
354 SensorOvercurrents = 14,
361 SensorChargingState = 21,
364 SensorBatteryTemperature = 24,
365 SensorBatteryCharge = 25,
366 SensorBatteryCapacity = 26,
367 SensorWallSignal = 27,
368 SensoCliffLeftSignal = 28,
369 SensoCliffFrontLeftSignal = 29,
370 SensoCliffFrontRightSignal = 30,
371 SensoCliffRightSignal = 31,
372 SensorUserDigitalInputs = 32,
373 SensorUserAnalogInput = 33,
374 SensorChargingSourcesAvailable = 34,
376 SensorSongNumber = 36,
377 SensorSongPlaying = 37,
378 SensorNumberOfStreamPackets = 38,
381 SensorRightVelocity = 41,
382 SensorLeftVelocity = 42,
448 void drive(int16_t velocity, int16_t radius);
454 void driveDirect(int16_t leftVelocity, int16_t rightVelocity);
461 void leds(uint8_t
leds, uint8_t powerColour, uint8_t powerIntensity);
474 void pwmDrivers(uint8_t dutyCycle0, uint8_t dutyCycle1, uint8_t dutyCycle2);
484 void sendIR(uint8_t data);
491 void song(uint8_t songNumber,
const uint8_t* notes,
int len);
505 void stream(
const uint8_t* packetIDs,
int len);
528 void wait(uint8_t ticks);
559 bool getData(uint8_t* dest, uint8_t len);
571 bool getSensors(uint8_t packetID, uint8_t* dest, uint8_t len);
584 bool getSensorsList(uint8_t* packetIDs, uint8_t numPacketIDs, uint8_t* dest, uint8_t len);
606 uint8_t
getScript(uint8_t* dest, uint8_t len);
614 PollStateWaitCount = 1,
615 PollStateWaitBytes = 2,
616 PollStateWaitChecksum = 3,
623 HardwareSerial* _serial;
629 uint8_t _pollChecksum;