First version

Dependencies:   mbed EthernetInterface mbed-rto

Revision:
38:47c075a354b5
Parent:
32:537005b4a065
Child:
42:bb1d9d8a9fe4
Child:
43:eaa8348f1150
Child:
63:0ab266251e86
--- a/LEDDriver.cpp	Wed May 02 06:33:40 2018 +0000
+++ b/LEDDriver.cpp	Wed May 02 12:44:26 2018 +0000
@@ -1,5 +1,5 @@
-#include "LEDDriver.h"
-Serial pc(USBTX,USBRX);    
+#include "LEDDriver.h" 
+Serial pc(USBTX,USBRX);
 LEDDriver::LEDDriver( Queue<int,8>* queue)
 {
     static int messageList[8]={4,4,4,4,4,4,4,4};
@@ -13,50 +13,16 @@
 void LEDDriver::drive(int numberOfLeds)
 {
     poll(numberOfLeds,1) ;
-    poll(numberOfLeds,2) ;        
-                            //   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   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};
-                            //    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};
-                            //   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
+    poll(numberOfLeds,2) ;    
+    Ticker ticker;    
     while(true)
     {   
         poll(numberOfLeds,1) ;//prep multi
-        for(int j=0;j<20;j++)
-            {
-                for(int i =0;i<numberOfLeds;i++)
-                {
-                    if(messageList[i]==0)
-                    {
-                        leds[i].write(codedMessage0[j]);
-                        ownWait(1);//7.511kHZ
-                    }
-                    else if(messageList[i]==1)
-                    {
-                        leds[i].write(codedMessage1[j]);
-                        //    ownWait(1);
-                    }
-                    else if(messageList[i]==2)
-                    {
-                        leds[i].write(codedMessage2[j]);
-                        //    ownWait(1);
-                    }
-                    else if(messageList[i]==3)
-                    {
-                        leds[i].write(codedMessage3[j]);
-                         //   ownWait(1);
-                    }
-                    else if(messageList[i]==4)
-                    {
-                        leds[i].write(codedMessage4[j]);
-                        //    ownWait(1);
-                    }
-                 }   
-            }
+        for(int i =0;i<numberOfLeds;i++)
+        {
+            ticker.attach(this,&LEDDriver::sendData,0.000000625f);
+        }   
+        poll(numberOfLeds,2) ;
     }
 }
 
@@ -69,7 +35,7 @@
 {
    for(uint32_t i=0;i<us;i++)
         {
-            for(volatile uint32_t j =0; j <96;j++)
+            for(volatile uint32_t j =0; j <3;j++)
             {
 
             }
@@ -82,24 +48,68 @@
     {
         for(int i =0;i<(numberOfLeds/2);i++)
         { 
-            osEvent event = queue->get();
-            int temp = *((int*)event.value.p);
-            if(temp==1||temp==1||temp==2||temp==3)
+            //osEvent event = queue->get();
+            //int temp = *((int*)event.value.p);
+            //if(temp==1||temp==1||temp==2||temp==3)
             {
-                messageList[i]=temp; 
-            }               
+                messageList[i]=1; 
+            }     
         }       
     }        
     else if(first==2)
-    {
+    {   
         for(int i =(numberOfLeds/2);i<(numberOfLeds);i++)
         { 
-            osEvent event = queue->get();
-            int temp = *((int*)event.value.p);
-            if(temp==1||temp==1||temp==2||temp==3)
+            //osEvent event = queue->get();
+            //int temp = *((int*)event.value.p);
+            //if(temp==1||temp==1||temp==2||temp==3)
             {
-                messageList[i]=temp; 
-            }               
+                messageList[i]=1; 
+            }                     
         }  
     }    
+}
+
+void LEDDriver::sendData()
+{
+                              //   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   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};
+                            //    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};
+                            //   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
+    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
+            }
+            else if(messageList[led]==1)
+            {
+                leds[led].write(codedMessage1[j]);
+                ownWait(25);
+            }
+            else if(messageList[led]==2)
+            {
+                leds[led].write(codedMessage2[j]);
+                ownWait(25);
+            }
+            else if(messageList[led]==3)
+            {
+                leds[led].write(codedMessage3[j]);
+                ownWait(25);
+            }
+            else if(messageList[led]==4)
+            {
+                leds[led].write(codedMessage4[j]);
+                ownWait(25);
+            }
+        } 
+    }             
 }
\ No newline at end of file