Eric Wu / Mbed 2 deprecated WifiRobot

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers irobot.cpp Source File

irobot.cpp

00001 #include "irobotUART.h"
00002 #include "irobotSensor.h"
00003 #include "irobotSensorPoll.h"
00004 #include "irobotSensorStream.h"
00005 #include "irobotActuator.h"
00006 #include "irobotCommand.h"
00007 #include "irobotTime.h"
00008 
00009 int32_t irobotOpen(const irobotUARTPort_t port){
00010     int32_t status = ERROR_SUCCESS;
00011     
00012     irobot_IfIsNotError(status, irobotUARTOpen(port, IROBOT_BAUD_57600));
00013 
00014     // in case iRobot was just powered on, wait for it to start up
00015     if(!irobot_IsError(status)){
00016         irobotDelayMs(5000);
00017     }
00018     
00019     // put robot into start mode; delay for startup
00020     irobot_IfIsNotError(status, irobotStart(port));
00021     if(!irobot_IsError(status)){
00022         irobotDelayMs(1000);
00023     }
00024 
00025     irobot_IfIsNotError(status, irobotFull(port));
00026 
00027     irobot_IfIsNotError(status, irobotStop(port));
00028 
00029     // clear receive queue, which may have old sensor stream data
00030     irobot_IfIsNotError(status, irobotSensorStreamPause(port, true));
00031     if(!irobot_IsError(status)){
00032         irobotDelayMs(250);
00033     }
00034     irobot_IfIsNotError(status, irobotUARTClear(port));
00035 
00036     // set status LEDs
00037     irobot_IfIsNotError(status, irobotLEDs(port, LED_ADVANCE_PLAY, 0, 255));
00038 
00039     return status;
00040 }
00041 
00042 int32_t irobotClose(const irobotUARTPort_t port){
00043     int32_t status = ERROR_SUCCESS;
00044 
00045     // Always attempt to stop, even if an error has occurred
00046     irobot_StatusMerge(&status, irobotStop(port));
00047 
00048     // Clear sensor stream
00049     irobot_IfIsNotError(status, irobotSensorStreamPause(port, true));
00050     if(!irobot_IsError(status)){
00051         irobotDelayMs(150);
00052     }
00053 
00054     // Clear UART
00055     irobot_IfIsNotError(status, irobotUARTClear(port));
00056 
00057     // reset LED state
00058     irobot_IfIsNotError(status, irobotLEDs(port, LED_NONE, 255, 255));
00059 
00060     // restore baud
00061     irobot_IfIsNotError(status, irobotBaudChange(port, IROBOT_BAUD_57600));
00062 
00063     // always close UART, even if an error has occurred
00064     irobot_StatusMerge(&status, irobotUARTClose(port));
00065 
00066     return status;
00067 }