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.
Diff: Roomba.cpp
- Revision:
- 2:144ca2f5d850
- Parent:
- 1:aed433d882c9
--- a/Roomba.cpp Wed Jan 21 16:20:12 2015 +0000
+++ b/Roomba.cpp Sat Feb 14 11:32:14 2015 +0000
@@ -1,4 +1,4 @@
-#include "mbed.h"
+#include <mbed.h>
#include "Roomba.h"
/**
@@ -6,87 +6,14 @@
* @param tx
* @param rx
*/
-Roomba::Roomba(PinName tx, PinName rx, PinName led):
- _s(tx, rx), _led(led){
- count = 0;
- timedOut = false;
- _led = 0;
- //_mode = Roomba::Mode::Off;
- Roomba::mp = &Roomba::serialReceiveCallback;
- _s.attach(this, Roomba::mp, Serial::RxIrq);
-}
-
-
-/**
- * @bref コマンド送信インターフェースの実装
- * @param e イベント引数
- * @return true
- */
-bool Roomba::send(EventArg e) {
-
- Roomba::start();
- Roomba::mode(Roomba::Full);//(Roomba::Mode::Full); If write struct Mode and no name enum, Compiler say no sutable constructor conver to enum...
- Roomba::drive(e.leftWheetVelocity, e.rightWheelVelocity);
-
- return true;
-}
-
-/**
- * @bref コマンド送信結果受信時のインターフェースの実装
- * @param result コマンド送信結果
- */
-void Roomba::notify(bool result) {
- if (result == true) {
- _led = 1;
- } else {
- _led = 0;
- }
+Roomba::Roomba(PinName tx, PinName rx):
+ _s(tx, rx) {
+ _mode = Roomba::Mode::Off;
}
/**
- * @bref 周期タイマのコールバックメソッド
- * @param e イベント引数
- */
-void Roomba::periodicCallback(EventArg e) {
-
- count = count + 1;
-
- if (count > 10) {
- if (timedOut == false) {
- timedOut = true;
- Roomba::notify(timedOut);
- }
- }
-
- Roomba::send(e);
-
-}
-
-/**
- * @bref シリアル受信時コールバックメソッド
- */
-void Roomba::serialReceiveCallback() {
- count = 0;
-
- if (timedOut) {
- timedOut = false;
- Roomba::notify(timedOut);
- }
-}
-
-///**
-// * @bref シリアル受信のアタッチ
-// */
-////継承先から操作できるようにしただけ
-//void Roomba::attachSerialReceiveCallback() {
-// Roomba::mp = &Roomba::serialReceiveCallback;
-// _s.attach(this, Roomba::mp, Serial::RxIrq);
-// //_s.attach(this, &Roomba::notify, Serial::RxIrq);
-//}
-
-/**
- * @bref Start
+ * @bref start
* @return true
*/
bool Roomba::start() {
@@ -102,7 +29,7 @@
* @param 操作モード
* @return true
*/
-bool Roomba::mode(Roomba::Mode m) {
+bool Roomba::mode(Roomba::Mode::EMode m) {
_s.putc(132);//Full;
@@ -111,36 +38,36 @@
/**
- * @bref Start
+ * @bref
* @param true
*/
bool Roomba::drive(int rightWheelVelocity, int leftWheelVelocity) {
+ bool ret = false;
- bool ret = false;
+ char command[10];
if ((-500 <= rightWheelVelocity && rightWheelVelocity <= 500)
&& (-500 <= leftWheelVelocity && leftWheelVelocity <= 500)) {
- Roomba::command[0] = 145;
- Roomba::command[1] = (rightWheelVelocity & 0xFF00) >> 8; //MSB
- Roomba::command[2] = rightWheelVelocity & 0xFF; //LSB
- Roomba::command[3] = (leftWheelVelocity & 0xFF00) >> 8; //MSB
- Roomba::command[4] = leftWheelVelocity & 0xFF; //LSB
- Roomba::command[5] = '\0';
+ command[0] = 145;
+ command[1] = (rightWheelVelocity & 0xFF00) >> 8; //MSB
+ command[2] = rightWheelVelocity & 0xFF; //LSB
+ command[3] = (leftWheelVelocity & 0xFF00) >> 8; //MSB
+ command[4] = leftWheelVelocity & 0xFF; //LSB
+ command[5] = '\0';
- for (int i = 0; Roomba::command[i] != '\0'; i++) {
- _s.putc(Roomba::command[i]);
+ for (int i = 0; i < 5; i++) {
+ _s.putc(command[i]);
}
- //_led = 0;
ret = true;
}
- //_led = 1;
return ret;
}
/**
* @bref バッテリ状態
+ * 実装未完了
* @param true
* @return
* @retval