First version

Dependencies:   mbed EthernetInterface mbed-rto

Revision:
45:2d877f01ca7b
Parent:
44:ffac07bff0d8
Child:
47:8fe84f455571
diff -r ffac07bff0d8 -r 2d877f01ca7b LEDDriver.cpp
--- a/LEDDriver.cpp	Wed May 02 15:04:28 2018 +0000
+++ b/LEDDriver.cpp	Wed May 09 07:24:39 2018 +0000
@@ -1,20 +1,23 @@
 #include "LEDDriver.h" 
-Serial pc(USBTX,USBRX);
+//Serial pc(USBTX,USBRX);
 LEDDriver::LEDDriver( Queue<int,8>* queue)
 {
-    static int messageList[8]={4,4,4,4,4,4,4,4};
-    static DigitalOut leds[]={DigitalOut(p23),DigitalOut(p11),DigitalOut(p12),DigitalOut(p13),DigitalOut(p14),DigitalOut(p15),DigitalOut(p16),DigitalOut(p17)};
-    this->messageList=messageList;
-    this->leds=leds;
+    //this->messageList=messageList;
+    //this->leds=leds;
     this->queue=queue;// prep for multithreaded
-    
+    initArrays();
+    currentLocation=0;
 }
 
 void LEDDriver::drive(int numberOfLeds)
 {
     poll(numberOfLeds,1);
     poll(numberOfLeds,2);    
-    sendData();
+    setLEDS(currentLocation);
+    currentLocation++;
+    if(currentLocation>=20){
+        currentLocation=0;
+    }
     
     /*
     Ticker ticker;    
@@ -31,7 +34,7 @@
 
 void LEDDriver::run(Ticker* ticker)
 {
-    ticker->attach(this,&LEDDriver::drive8leds,1);
+    ticker->attach(this,&LEDDriver::drive8leds,1);//TODO faster
 }
 
 void LEDDriver::drive8leds(){
@@ -57,7 +60,7 @@
         { 
             osEvent event = queue->get();
             int temp = *((int*)event.value.p);
-            if(temp==1||temp==1||temp==2||temp==3)
+            if(temp==0||temp==1||temp==2||temp==3)
             {
                 messageList[i]=temp; 
             }     
@@ -69,7 +72,7 @@
         { 
             osEvent event = queue->get();
             int temp = *((int*)event.value.p);
-            if(temp==1||temp==1||temp==2||temp==3)
+            if(temp==0||temp==1||temp==2||temp==3)
             {
                 messageList[i]=temp; 
             }                     
@@ -77,46 +80,57 @@
     }    
 }
 
-void LEDDriver::sendData()
+void LEDDriver::initArrays()
 {
-                              //   1    1  1   1   0   0   0   0   0   1
-    static int codedMessage0[]={1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//{1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,0};  currently frequency measure message(standard square wave)
+                         //   1    1  1   1   0   0   0   0   0   1
+    int tempCodedMessage0[20]={1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0};//{1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,0};  currently frequency measure message(standard square wave)
                             //    1   1   1  1  0   1     0  0   0   1 
-    static int codedMessage1[]={1,0,1,0,1,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0};
+    int tempCodedMessage1[20]={1,0,1,0,1,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0};
                             //    1   1   1  1  1   0     1  0   0   1
-    static int codedMessage2[]={1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0};
+    int tempCodedMessage2[20]={1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0};
                             //   1   1   1   1   1   1   0  0    0   1  
-    static int codedMessage3[]={1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0};
-    static int codedMessage4[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//default message for multithreading
+    int tempCodedMessage3[20]={1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0};
+    int tempCodedMessage4[20]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//default message for multithreading
+    int tempMessageList[8]={4,4,4,4,4,4,4,4};
+    DigitalOut tempLeds[]={DigitalOut(p23),DigitalOut(p11),DigitalOut(p12),DigitalOut(p13),DigitalOut(p14),DigitalOut(p15),DigitalOut(p16),DigitalOut(p17)};
+    
+    memcpy(codedMessage0,tempCodedMessage0,sizeof(codedMessage0));
+    memcpy(codedMessage1,tempCodedMessage1,sizeof(codedMessage1));
+    memcpy(codedMessage2,tempCodedMessage2,sizeof(codedMessage2));
+    memcpy(codedMessage3,tempCodedMessage3,sizeof(codedMessage3));
+    memcpy(codedMessage4,tempCodedMessage4,sizeof(codedMessage4));
+    
+    memcpy(tempMessageList,messageList,sizeof(messageList));
+    memcpy(leds,tempLeds,sizeof(leds));
+}
+
+void LEDDriver::setLEDS(int j){
     for(int led =0 ; led<8;led++)
-    {
-        for(int j =0;j<20;j++)
         {
             if(messageList[led]==0)
             {
                 leds[led].write(codedMessage0[j]);
-                ownWait(25);//100HZ
+                //ownWait(25);//100HZ
             }
             else if(messageList[led]==1)
             {
                 leds[led].write(codedMessage1[j]);
-                ownWait(25);
+                //ownWait(25);
             }
             else if(messageList[led]==2)
             {
                 leds[led].write(codedMessage2[j]);
-                ownWait(25);
+                //ownWait(25);
             }
             else if(messageList[led]==3)
             {
                 leds[led].write(codedMessage3[j]);
-                ownWait(25);
+                //ownWait(25);
             }
             else if(messageList[led]==4)
             {
                 leds[led].write(codedMessage4[j]);
-                ownWait(25);
+                //ownWait(25);
             }
         } 
-    }             
 }
\ No newline at end of file