UART Command Parser Time Manager Data Store for SD Card for stm32l476 [it's not Licensed as BSD/GPLx]

Dependencies:   mbed SDFileSystem

Files at this revision

API Documentation at this revision

Comitter:
Inscape_ao
Date:
Fri Jul 05 01:26:19 2019 +0000
Parent:
18:f0027b61bc08
Commit message:
add LICENSE.txt

Changed in this revision

LICENSE.txt Show annotated file Show diff for this revision Revisions of this file
common/CommandParser.cpp Show annotated file Show diff for this revision Revisions of this file
event.cpp Show annotated file Show diff for this revision Revisions of this file
include/CommandParser.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LICENSE.txt	Fri Jul 05 01:26:19 2019 +0000
@@ -0,0 +1,27 @@
+Copyright (c) 2019, Analog Devices, Inc.
+Copyright (c) 2019, Inscape, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met: 
+
+1. Redistributions of source code must retain the above copyright notice,
+   this list of conditions and the following disclaimer. 
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution. 
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The views and conclusions contained in the software and documentation are those
+of the authors and should not be interpreted as representing official policies, 
+either expressed or implied, of the FreeBSD Project.
--- a/common/CommandParser.cpp	Fri Jun 14 00:21:09 2019 +0000
+++ b/common/CommandParser.cpp	Fri Jul 05 01:26:19 2019 +0000
@@ -41,16 +41,16 @@
     
     /* parsing */
     head = pStr;
-    uprintf("%s\n", pStr);
+    //uprintf("%s\n", pStr);
     
     /** Command Format ":0 CMD 0000" */
     if (len != CmdLen) {
-        this->reply(false, CommandParser::CmdReply::InvalidLen);
+        this->reply(false, CommandParser::NakCode::NAK_INVAL_LEN);
         return -1;
     }
     /** check Command Header */
     if (head[0] != ':') {
-        this->reply(false, CommandParser::CmdReply::InvalidFmt);
+        this->reply(false, CommandParser::NakCode::NAK_INVAL_FMT);
         return -1;
     }
     /** check Command DeviceID */
@@ -72,7 +72,7 @@
             ruleTable[rn].exarg);
 
     }
-    this->reply(false, CommandParser::CmdReply::InvalidCmd);
+    this->reply(false, CommandParser::NakCode::NAK_INVAL_CMD);
     return -1;
 }
 
--- a/event.cpp	Fri Jun 14 00:21:09 2019 +0000
+++ b/event.cpp	Fri Jul 05 01:26:19 2019 +0000
@@ -66,7 +66,7 @@
     bool success;
     success = pDevRept->start();
     if (!success) {
-        pC->reply(false, 3);
+        pC->reply(false, CommandParser::NakCode::NAK_IN_RUNNING);
         return 1;
     }
     pC->reply();
@@ -78,7 +78,7 @@
     bool success;
     success = pDevRept->stop();
     if (!success) {
-        pC->reply(false, 3);
+        pC->reply(false, CommandParser::NakCode::NAK_IN_STOPPED);
         return 1;
     }
     pC->reply();
@@ -90,7 +90,7 @@
     bool success;
     success = pDevRept->readyToStart();
     if (!success) {
-        pC->reply(false, 3);
+        pC->reply(false, CommandParser::NakCode::NAK_IN_RUNNING);
         return 1;
     }
     pC->reply();
@@ -103,7 +103,7 @@
     int setvalue = atoi(arg);
     success = pDevRept->setRepeatCount(setvalue);
     if (!success) {
-        pC->reply(false, 4);
+        pC->reply(false, CommandParser::NakCode::NAK_IN_RUNNING);
         return 1;
     }
     pC->reply();
@@ -126,12 +126,12 @@
         /* NOP setvalue = setvalue */
     } else {
         /* invalid format */
-        pC->reply(false, 6);
+        pC->reply(false, CommandParser::NakCode::NAK_INVAL_PARAM);
         return 1;
     }
     success = pDevRept->setRepeatStride(setvalue);
     if (!success) {
-        pC->reply(false, 5);
+        pC->reply(false, CommandParser::NakCode::NAK_IN_RUNNING);
         return 1;
     }
     pC->reply();
@@ -148,13 +148,13 @@
         setMode = false;
     } else {
         /* INVALID COMMAND */
-        pC->reply(false, 7);
+        pC->reply(false, CommandParser::NakCode::NAK_INVAL_PARAM);
         return 1;        
     }
     success = pDevRept->setRepeatSingleShot(setMode);
     if (success != true) {
         /* INVALID COMMAND in SetMode */
-        pC->reply(false, 5);
+        pC->reply(false, CommandParser::NakCode::NAK_IN_RUNNING);
         return 1;        
     }
     pC->reply();
@@ -170,7 +170,7 @@
     int setvalue = strtol(arg, NULL, 16);
     success = pDevRept->setConfigId(setvalue);
     if (!success) {
-        pC->reply(false, 3);
+        pC->reply(false,  CommandParser::NakCode::NAK_INVAL_SEQ);
         return 1;
     }
     pC->reply();
@@ -183,7 +183,7 @@
     int setvalue = strtol(arg, NULL, 16);
     success = pDevRept->setConfigValue(setvalue);
     if (!success) {
-        pC->reply(false, 3);
+        pC->reply(false, CommandParser::NakCode::NAK_INVAL_SEQ);
         return 1;
     }
     pC->reply();
@@ -198,7 +198,7 @@
     
     success = pDevRept->getConfigValue(&getvalue);
     if (!success) {
-        pC->reply(false, 3);
+        pC->reply(false, CommandParser::NakCode::NAK_INVAL_SEQ);
         return 1;
     }
     uprintf(":%d CFG 0004 %04x\n", pC->getDeviceID(), getvalue);
@@ -223,8 +223,11 @@
 /* Sample Command */
 static int sampleHanlder(CommandParser *pC, char *arg, int exarg)
 {   
-    pC->reply();
-    return 0;
+    wait(1);
+    NVIC_SystemReset();
+    /* Never Reached. */
+    pC->reply(false, CommandParser::NakCode::NAK_INVAL_SEQ);
+    return 1;
 }
 
 /****************************************************/
@@ -233,7 +236,7 @@
 static int startSDStore(CommandParser *pC, char *arg, int exarg)
 {
     if (pSds->startFileWithTimeStamp("","txt") != true) {
-        pC->reply(false, 1);
+        pC->reply(false, CommandParser::NakCode::NAK_INTERNAL_ERR);
         return 1;
     }
     pC->reply();
@@ -262,7 +265,7 @@
     
     if ((fp = pSds->getFilePointer()) == NULL) {
         /* NOP */
-        pC->reply(false, 2);
+        pC->reply(false, CommandParser::NakCode::NAK_INVAL_SEQ);
         return 2;
     }
     pTM->getTimeStamp(curr);
@@ -291,7 +294,7 @@
         success = pTM->setCurrentTime(exarg,setvalue);
         break;
     }
-    pC->reply(success, (success)? 0 : setvalue );
+    pC->reply(success, (success)? 0 : CommandParser::NakCode::NAK_INVAL_PARAM );
     return 0;
 }
 
--- a/include/CommandParser.h	Fri Jun 14 00:21:09 2019 +0000
+++ b/include/CommandParser.h	Fri Jul 05 01:26:19 2019 +0000
@@ -24,13 +24,18 @@
     /* CMD total length */
     const static int CmdLen = sizeof(":0 CMD 0000") - 1 /* EOL */;
     /* reply code (for ACK/NAK) */
-    class CmdReply
+    class NakCode
     {
     public:
-        const static int Success = 0;
-        const static int InvalidFmt = 1;
-        const static int InvalidCmd = 2;
-        const static int InvalidLen = 3;
+        const static int NAK_UNDEFINED = 0000;
+        const static int NAK_INVAL_CMD = 1000;
+        const static int NAK_INVAL_LEN = 1001;
+        const static int NAK_INVAL_FMT = 1002;
+        const static int NAK_INVAL_PARAM = 1003;
+        const static int NAK_INVAL_SEQ = 1004;
+        const static int NAK_IN_RUNNING = 2000;
+        const static int NAK_IN_STOPPED = 2010;
+        const static int NAK_INTERNAL_ERR = 4000;
     };
 private:
     int deviceID;
--- a/main.cpp	Fri Jun 14 00:21:09 2019 +0000
+++ b/main.cpp	Fri Jul 05 01:26:19 2019 +0000
@@ -54,6 +54,7 @@
     pCP->run();
         
     uprintf(":%d ACK 0004 0000\n", deviceId);
+    uprintf(":%d WAK 0004 0000\n", deviceId);
     dbgprintf("start mainloop\n");
     mainloop();    
 }