![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
First version
Dependencies: mbed EthernetInterface mbed-rto
Diff: LEDDriver.cpp
- Revision:
- 55:4e06cfb6d010
- Parent:
- 54:4274186bf584
- Child:
- 56:f0ddd28b1766
diff -r 4274186bf584 -r 4e06cfb6d010 LEDDriver.cpp --- a/LEDDriver.cpp Wed May 09 13:10:51 2018 +0000 +++ b/LEDDriver.cpp Wed May 09 13:34:15 2018 +0000 @@ -1,21 +1,15 @@ #include "LEDDriver.h" -//Serial pc(USBTX,USBRX); LEDDriver::LEDDriver( Queue<int,8>* queue) { - //this->messageList=messageList; - //this->leds=leds; - this->queue=queue;// prep for multithreaded - printf("Queue created\r\n"); + this->queue=queue; initArrays(); - printf("Arrays initialised.\r\n"); currentLocation=0; } void LEDDriver::drive(int numberOfLeds) { if(currentLocation==0){ - poll(numberOfLeds,1); - poll(numberOfLeds,2); + poll(numberOfLeds); } setLEDS(currentLocation); @@ -23,47 +17,15 @@ if(currentLocation>=25){ currentLocation=0; } - - /* - Ticker ticker; - while(true) - { - poll(numberOfLeds,1) ;//prep multi - //for(int i =0;i<numberOfLeds;i++) - //{ - //ticker.attach(this,&LEDDriver::sendData,0.000625f); - //} - poll(numberOfLeds,2) ; - }*/ -} - -void LEDDriver::run(Ticker* ticker) -{ - printf("ticker attached.\r\n"); - ticker->attach(this,&LEDDriver::drive8leds,10.0);//TODO faster } void LEDDriver::drive8leds(){ - printf("tick\r\n");//TODO drive(8); } -void LEDDriver::ownWait(uint32_t us) +void LEDDriver::poll(int numberOfLeds) { - for(uint32_t i=0;i<us;i++) - { - for(volatile uint32_t j =0; j <3;j++) - { - - } - } -} - -void LEDDriver::poll(int numberOfLeds,int first) -{ - if(first==1) - { - for(int i =0;i<(numberOfLeds/2);i++) + for(int i =0;i<(numberOfLeds);i++) { osEvent event = queue->get(); int temp = *((int*)event.value.p); @@ -71,34 +33,21 @@ { messageList[i]=temp; } - } - } - else if(first==2) - { - for(int i =(numberOfLeds/2);i<(numberOfLeds);i++) - { - osEvent event = queue->get(); - int temp = *((int*)event.value.p); - if(temp==0||temp==1||temp==2||temp==3||temp==4) - { - messageList[i]=temp; - } - } - } + } } void LEDDriver::initArrays() { // 1 1 1 1 0 0 0 0 0 1 - int tempCodedMessage0[25]=/*{1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1};*/{1,1,1,1,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,0,1};// currently frequency measure message(standard square wave) 4:('1')+2 ticker 0.002f. (250Hz, 10ms down) + int tempCodedMessage0[25]=/*{1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1};*/{1,1,1,1,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,1,0,1};// commented message is frequency measure message(standard square wave) 4:('1')+2 ticker 0.002f. (250Hz, 10ms down) // 1 1 1 1 0 1 0 0 0 1 int tempCodedMessage1[25]={1,1,1,1,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 1 0 1 0 0 1 int tempCodedMessage2[25]={1,1,1,1,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 1 0 0 0 1 int tempCodedMessage3[25]={1,1,1,1,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0,1}; - int tempCodedMessage4[25]={1,1,1,1,1,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]={0,0,0,0,0,0,0,0};//TODO + int tempCodedMessage4[25]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; + int tempMessageList[8]={4,4,4,4,4,4,4,4}; DigitalOut *tempLeds[]={new DigitalOut(p23),new DigitalOut(p11),new DigitalOut(p12),new DigitalOut(p13),new DigitalOut(p14),new DigitalOut(p15),new DigitalOut(p16),new DigitalOut(p17)}; printf("Arrays created.\r\n"); @@ -122,30 +71,24 @@ 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||messageList[led]==-1) { leds[led]->write(codedMessage4[j]); - //ownWait(25); } } - //wait_ms(10); } //TODO destructor \ No newline at end of file