Yosuke Kirihata / Mbed 2 deprecated Nucleo_roomba

Dependencies:   mbed

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