Yosuke Kirihata / Mbed 2 deprecated Nucleo_roomba

Dependencies:   mbed

Revision:
0:32eb0835b5a3
Child:
2:144ca2f5d850
diff -r 000000000000 -r 32eb0835b5a3 Roomba.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Roomba.h	Tue Jan 20 15:58:19 2015 +0000
@@ -0,0 +1,69 @@
+#include "mbed.h"
+#include "EventArg.h"
+
+#ifndef __ROOMBA_H_INCLUDED__
+#define __ROOMBA_H_INCLUDED__
+
+/**
+ * ルンバ制御クラスのインターフェース
+ * 下記メソッドを継承先が実装すること
+ */
+class IRoomba {
+    public:
+        //virtual ~IRoomba(){};//なぜ宣言を書いたのか、コメントにした理由とともに忘れた
+        virtual bool send(EventArg e) = 0;
+        virtual void notify(bool result) = 0;
+};
+
+/**
+ * ルンバ制御クラス
+ */
+class Roomba : public IRoomba {
+    public:
+        virtual bool send(EventArg e);
+        virtual void notify(bool result);
+        
+        //Mode.Fullのような書き方(またはそれに近い書き方がしたい)
+        //調べていたら、Roomba::Mode::Fullのように書くことできそうだとわかったので試したが、上手く行かない
+        //上手く行かない理由の考察はできていない
+        //http://stackoverflow.com/questions/8213696/accessing-enum-values-defined-in-a-struct
+        //struct Mode
+        //{
+            enum Mode
+            {
+                Off,
+                Passive,//??
+                Safe,
+                Full
+            };
+        //};
+    
+    private:
+        Serial _s;
+        Roomba::Mode _mode;// = Roomba::Mode.Off;
+        //EventArg::EventArg _e;
+        DigitalOut _led;//Notify()で使用するLED:ルンバ状態を通知する
+        //void (Roomba::*serialReceiveCallback)(); //= notify;
+        void (Roomba::*mp)();//member function pointer
+        
+        char command[10];
+        
+        int count;    //タイムアウト検出カウンタ(カウント値が一定数を超えればタイムアウト)
+        bool timedOut;//タイムアウト検出フラグ
+        
+    public:
+        Roomba(PinName tx, PinName rx, PinName led);
+        
+        void attachPeriodicCallback();
+        virtual void periodicCallback(EventArg e);
+        void attachSerialReceiveCallback();
+        void serialReceiveCallback();
+        
+        bool mode(Roomba::Mode m);
+        //Mode getMode();
+        bool start();
+        bool drive(int rightWheelVelocity, int leftWheelVelocity);
+        bool battery(int* batteryCapacity);
+};
+
+#endif
\ No newline at end of file