teamALI / Mbed 2 deprecated HB2018

Dependencies:   mbed FreeRTOS

Revision:
19:4b0fe9a5ec38
Parent:
18:5aa48aec9cae
Child:
21:78302ecdb661
--- a/uart.cpp	Sat Dec 01 14:03:08 2018 +0000
+++ b/uart.cpp	Wed Dec 05 00:12:38 2018 +0000
@@ -1,6 +1,7 @@
 #include "typedef.h"
 #include "uart.h"
-#include "hbCommand.h"
+#include "mbed.h"
+#include "globalFlags.h"
 
 //ログ吐出し様シリアルポートインスタンス
 //----------------------------------
@@ -18,6 +19,82 @@
 //Asciiコード
 #define CR 0x0D
 #define LF 0x0A
+
+//-------------------------------------------------------------
+//グローバル変数
+//-------------------------------------------------------------
+char    cmdBuf[G_CMD_BUF_SIZ]    ={0,}   ;// コマンドバッファ
+static  UCHAR   bp=0;// バッファポインタ
+
+//-------------------------------------------------------------
+//受信コマンドバッファクリア
+//-------------------------------------------------------------
+static void xBufClear(){
+    memset(&cmdBuf[0] , 0x00 , sizeof(cmdBuf) );    //コマンドバッファクリア
+    bp=0;                                           //バッファポインタを先頭に戻す
+}
+//-------------------------------------------------------------
+//エンターが押されてコマンドを転送
+//-------------------------------------------------------------
+static void xSendMsg(){
+    
+    memcpy(g_CmdBuf, cmdBuf, sizeof(g_CmdBuf));
+    gf_CmdPrs = true;
+    xBufClear();
+}
+//-------------------------------------------------------------
+//バックスペースが来た時の処理
+//-------------------------------------------------------------
+static void xBs(){
+    cmdBuf[bp] = 0x0;   //現在位置をNULLにする
+    if(bp>0)    bp--;   //インデックスを戻す(先頭でなければ)
+}
+
+//-------------------------------------------------------------
+//コマンドバッファへ格納
+//-------------------------------------------------------------
+static void xPush(char cBuf){
+    //バッファ終端だったらエラー
+    if(bp < sizeof(cmdBuf)-1){
+        cmdBuf[bp] = cBuf;//受信文字をバッファへ格納
+        bp++;//次へ進める
+    }
+}
+
+//=============================================================
+// コマンドバッファへ受信キャラを格納
+//=============================================================
+static void xPushBuf(UCHAR iRxChar){
+    switch(iRxChar){
+        //▼タブ
+        case TAB: //姿勢制御ON/OFF
+            gf_AttCntEna = !gf_AttCntEna;
+            sp.printf("Attitude control %d\r\n",gf_AttCntEna);
+            break;
+        //▼バックスペース
+        case BS :
+            xBs();
+            break;
+        //▼エスケープ キャリッジリターン
+        case ESC:
+        case CR :
+            /*何もしない*/
+            break; 
+        //▼ラインフィード(改行)
+        case LF :
+            xSendMsg();
+            break;
+        //▼スペース
+        case SPC:
+            xPush(0x0);//Null文字にしてバッファ格納
+            break;
+        //▼//その他
+        default :
+            xPush(iRxChar);//コマンドバッファへプッシュ
+            break; 
+    }//switch
+}
+
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 // UART 受信割り込みハンドラ
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -27,13 +104,16 @@
     //エコーバック
     sp.putc(buf);    
     //コマンドバッファに突っ込む
-    commandPush(buf);
+    xPushBuf(buf);
 }
 
 //=============================================================
 //初期設定
 //=============================================================
 void uartInit(){
+    //バッファクリア
+    xBufClear();    
+
     //ボーレート設定
     sp.baud(BAUD_RATE);