Deals with user inputs

Dependents:   ELEC350_Project2

Revision:
27:f665c1bc9dbb
Parent:
26:d06a55487056
Child:
28:2673cf270bf0
--- a/serial_terminal.cpp	Fri Dec 28 12:05:28 2018 +0000
+++ b/serial_terminal.cpp	Wed Jan 02 19:45:43 2019 +0000
@@ -26,9 +26,12 @@
         
         if(argnum != 2)
         {
+            /*
             printlock.lock();
             pc->printf("INVALID COMMAND\r\n");   
             printlock.unlock();
+            */
+            printQueue.call(printf, "INVALID COMMAND\r\n");
         }
         else
         {
@@ -39,16 +42,28 @@
             
             if(logging)
             {
+                /*
                 printlock.lock();
                 pc->printf("Command %s recieved with argument of %s, containing %d readable numbers\r\n\n",cmnd,arg,argnum);
                 printlock.unlock();   
+                */
+                printQueue.call(printf,"Command %s recieved with argument of %s, containing %d readable numbers\r\n\n",cmnd,arg,argnum);
             }
             
             switch (e_cmnd)
             {
                 
                 case (READ) :
-                    if ((argnum == 0 && e_arg != ALL) || (argnum == 1 && val < 1)) {printlock.lock(); pc->printf("INVALID COMMAND\n\n\r"); printlock.unlock(); break;}
+                    if ((argnum == 0 && e_arg != ALL) || (argnum == 1 && val < 1)) 
+                    {
+                        /*
+                        printlock.lock(); 
+                        pc->printf("INVALID COMMAND\n\n\r"); 
+                        printlock.unlock(); 
+                        */
+                        printQueue.call(printf, "INVALID COMMAND\n\n\r");
+                        break;
+                    }
                     else if (e_arg == ALL || val >= (BUFFERSIZE-Nspaces))
                     {
                         SDqueue.call(SDread,-1); //read all                    
@@ -60,7 +75,16 @@
                     break;     
                            
                 case (DELETE) : 
-                    if ((argnum == 0 && e_arg != ALL) || (argnum == 1 && val < 1)) {printlock.lock(); pc->printf("INVALID COMMAND\n\n\r"); printlock.unlock(); break;}
+                    if ((argnum == 0 && e_arg != ALL) || (argnum == 1 && val < 1)) 
+                    {
+                        /*
+                        printlock.lock(); 
+                        pc->printf("INVALID COMMAND\n\n\r"); 
+                        printlock.unlock(); 
+                        */
+                        printQueue.call(printf,"INVALID COMMAND\n\n\r");
+                        break;
+                    }
                     if (e_arg == ALL || val > (BUFFERSIZE-Nspaces)) SDqueue.call(SDdelete,-1); //delete all
                     else SDqueue.call(SDdelete,val);
                     break;
@@ -77,9 +101,12 @@
                     timeLock.unlock();
                     if (mktime(timeData) == -1)
                     {
+                        /*
                         printlock.lock();
                         pc->printf("SETDATE failed\n\n\r");
                         printlock.unlock();   
+                        */
+                        printQueue.call(printf,"SETDATE failed\n\n\r");
                     }
                     else
                     {
@@ -87,9 +114,12 @@
                         set_time(mktime(timeData));
                         timeLock.unlock();
                         seconds = time(NULL);
+                        /*
                         printlock.lock();
                         pc->printf("Date updated to %s\n\n\r", ctime(&seconds));
                         printlock.unlock();
+                        */
+                        printQueue.call(printf,"Date updated to %s\n\n\r", ctime(&seconds));
                     }
                     break;
                     
@@ -105,9 +135,12 @@
                     timeLock.unlock();
                     if (mktime(timeData) == -1)
                     {
+                        /*
                         printlock.lock();
                         pc->printf("SETTIME FAILED\n\n\r");
                         printlock.unlock();   
+                        */
+                        printQueue.call(printf, "SETTIME FAILED\n\n\r");
                     }
                     else
                     {
@@ -115,35 +148,55 @@
                         set_time(mktime(timeData));
                         seconds = time(NULL);
                         timeLock.unlock();
+                        /*
                         printlock.lock();
                         pc->printf("TIME UPDATED TO %s\n\n\r", ctime(&seconds));
                         printlock.unlock();
+                        */
+                        printQueue.call(printf,"TIME UPDATED TO %s\n\n\r", ctime(&seconds));
+                        
                     }
                     break;
                     
                 case (SETT) :
                     //Set the sampling rate
-                    if (e_arg == ALL || val < 0.1 || val > 60) {printlock.lock(); pc->printf("OUT OF RANGE\n\n\r"); printlock.unlock(); break;}
+                    if (e_arg == ALL || val < 0.1 || val > 60) 
+                    {
+                        /*
+                        printlock.lock(); 
+                        pc->printf("OUT OF RANGE\n\n\r"); 
+                        printlock.unlock();
+                        */
+                        printQueue.call(printf, "OUT OF RANGE\n\n\r");
+                        break;
+                    }
                     else 
                     {
                         sample_rate = val;
                         if(sampling)
                         {
                             sample.attach(&sampleISR, sample_rate);   
-                        }                    
+                        } 
+                        /*                   
                         printlock.lock(); 
                         pc->printf("Sample rate set to %5.2f\n\n\r", sample_rate); 
                         printlock.unlock();}                
-                    break;
+                        */
+                        printQueue.call(printf, "Sample rate set to %5.2f\n\n\r", sample_rate);
+                        break;
+                    }
                     
                 case (STATE) :
                     if (e_arg == ON)
                     {
                         sample.attach(&sampleISR, sample_rate);
                         sampling = true;
+                        /*
                         printlock.lock();
                         pc->printf("Sampling ON\n\n\r");
                         printlock.unlock();
+                        */
+                        printQueue.call(printf,"Sampling ON\n\n\r");
                         break;
                     }
                     else if (e_arg == OFF)
@@ -151,16 +204,22 @@
                         //sample.attach(NULL, sample_rate);
                         sample.detach();
                         sampling = false;
+                        /*
                         printlock.lock();
                         pc->printf("Sampling OFF\n\n\r");
                         printlock.unlock();
+                        */
+                        printQueue.call(printf,"Sampling OFF\n\n\r");
                         break; 
                     }
                     else
                     {
+                        /*
                         printlock.lock();
                         pc->printf("Invalid command\n\n\r"); 
                         printlock.unlock();
+                        */
+                        printQueue.call(printf,"Invalid command\n\n\r");
                         break;
                     }
                       
@@ -169,32 +228,44 @@
                    if (e_arg == ON)
                     {
                         logging = true;
+                        /*
                         printlock.lock();
                         pc->printf("LOGGING ON\n\n\r");
                         printlock.unlock();
+                        */
+                        printQueue.call(printf,"LOGGING ON\n\n\r");
                         break;
                     }
                     else if (e_arg == OFF)
                     {
                         logging = false;
+                        /*
                         printlock.lock();
                         pc->printf("LOGGING OFF\n\n\r");
                         printlock.unlock();
+                        */
+                        printQueue.call(printf,"LOGGING OFF\n\n\r");
                         break; 
                     }
                     else
                     {
+                        /*
                         printlock.lock();
                         pc->printf("INVALID COMMAND\n\n\r"); 
                         printlock.unlock();
+                        */
+                        printQueue.call(printf,"INVALID COMMAND\n\n\r");
                         break;
                     }
-                    break;
+                    //break;
                     
                 default :
+                    /*
                     printlock.lock();
                     pc->printf("INVALID COMMAND\n\n\r");
                     printlock.unlock();
+                    */
+                    printQueue.call(printf,"INVALID COMMAND\n\n\r");
                     break;            
             }    
         }