Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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 }
Generated on Wed Jul 13 2022 12:36:27 by
1.7.2