1st release (without comment)

Revision:
0:bc10ea82aec3
Child:
1:5e6c5fbd48d6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/RMS_UART.cpp	Thu Sep 15 01:47:46 2016 +0000
@@ -0,0 +1,206 @@
+#include "mbed.h"
+#include "RMS_UART.h"
+
+#ifdef EXT_SERIAL
+    Serial serial_device(SERIAL_TX, SERIAL_RX);
+#else
+    Serial serial_device(SERIAL_TX, SERIAL_RX);
+#endif
+
+char Msg_RxBuf[MSG_BUF_SIZE + 1];            // Reading Cmd Buffer 
+int  Msg_index;                              // An Cmd index
+
+char Content_RxBuf[CONTENT_BUF_SIZE + 1];    // Reading Cmd Buffer 
+int  Content_index;                          // An Cmd index
+
+char FileName[MSG2FILENAME];
+
+bool MsgContentManagement = false;
+
+/**
+ * @brief   
+ * @note 
+ * @retval 
+ */
+void Init_SerialDevice()
+{
+    serial_device.baud(BPS_9600);
+    serial_device.attach(&RxMsgInterruptCallback);
+}
+
+/**
+ * @brief   
+ * @note 
+ * @retval 
+ */
+void RxMsgInterruptCallback()
+{
+    /* Start Rx interrupt  */
+    if(MsgContentManagement == false)
+    {
+        DoTheMsgCmd();
+    }
+    else
+    {
+        DoTheContent();
+    }
+}
+
+/**
+ * @brief 
+ * @note 
+ * @retval
+ */
+void DoTheContent()
+{   
+    // Note: you need to actually read from the serial to clear the RX interrupt
+    Content_RxBuf[Content_index] = serial_device.getc();
+    Content_index++;
+    
+    if(strstr(Content_RxBuf,"*end*"))
+    {
+        SendContentToFile();
+        ClearContentIndexAndBuf();
+        MsgContentManagement = false;
+    }
+    
+    if(Content_index == CONTENT_BUF_SIZE)
+    {
+        SendContentToFile();
+        ClearContentIndexAndBuf();
+    }
+}
+
+ /**
+ * @brief 
+ * @note 
+ * @retval
+ */
+void DoTheMsgCmd()
+{
+        
+    // Note: you need to actually read from the serial to clear the RX interrupt
+    Msg_RxBuf[Msg_index] = serial_device.getc();
+    Msg_index++;
+    
+    if(strstr(Msg_RxBuf,"ls"))
+    {
+        GetListFileCmd();
+    }
+    
+    if(strstr(Msg_RxBuf,".csv"))
+    {
+        CheckReadEditCmd();
+    }
+        
+    if(strstr(Msg_RxBuf,".xml"))
+    {
+        CheckReadEditCmd();
+    }
+    
+    if(strstr(Msg_RxBuf,".log"))
+    {
+        CheckReadEditCmd();
+    }
+    
+    if(Msg_index >= 2)
+    {
+        if( !((strstr(Msg_RxBuf,"ls")) || (strstr(Msg_RxBuf,"rd")) || (strstr(Msg_RxBuf,"ed"))))
+        {
+            GetCmdError();
+        }
+    }
+    
+    if(Msg_index == MSG_BUF_SIZE)
+    {
+       ClearCmdIndexAndBuf();
+    }
+}
+
+/**
+ * @brief 
+ * @note 
+ * @retval
+ */
+void GetListFileCmd()
+{   
+    ClearCmdIndexAndBuf();
+}
+
+/**
+ * @brief 
+ * @note 
+ * @retval
+ */
+void CheckReadEditCmd()
+{
+    if(strstr(Msg_RxBuf,"rd"))
+    {   
+        GetFileName();
+    }
+    else if(strstr(Msg_RxBuf,"ed"))
+    {
+        GetFileName();
+        MsgContentManagement = true;
+    }
+    else
+    {
+        GetCmdError();
+    }
+}
+
+/**
+ * @brief 
+ * @note 
+ * @retval
+ */
+void GetCmdError()
+{   
+    serial_device.printf("$?? -- Command Error\n",Msg_RxBuf + 1);
+    ClearCmdIndexAndBuf();
+}
+
+/**
+ * @brief 
+ * @note 
+ * @retval
+ */
+void GetFileName()
+{   
+    memcpy(FileName,&Msg_RxBuf[3],Msg_index - 3);
+    ClearCmdIndexAndBuf();
+}
+
+/**
+ * @brief 
+ * @note 
+ * @retval
+ */
+void SendContentToFile()
+{   
+    MsgContentManagement = true;
+    serial_device.printf("Content -- %s \n",Content_RxBuf);
+    ClearContentIndexAndBuf();
+}
+
+/**
+ * @brief 
+ * @note 
+ * @retval
+ */
+void ClearCmdIndexAndBuf()
+{   
+    Msg_index = 0;
+    memset(Msg_RxBuf,' ',MSG_BUF_SIZE);
+}
+
+/**
+ * @brief 
+ * @note 
+ * @retval
+ */
+void ClearContentIndexAndBuf()
+{   
+    Content_index = 0;
+    memset(Content_RxBuf,' ',CONTENT_BUF_SIZE);
+}