demo versie 16/05

Dependencies:   EthernetInterface mbed-rto mbed

Fork of ProjectVLC by Klaas Govaerts

Committer:
KlaasGovaerts
Date:
Wed May 09 12:10:54 2018 +0000
Revision:
52:dfcd7bd87114
Parent:
50:c5cd73d93045
Extra code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
albireo987 38:47c075a354b5 1 #include "LEDDriver.h"
KlaasGovaerts 47:2d877f01ca7b 2 //Serial pc(USBTX,USBRX);
KlaasGovaerts 52:dfcd7bd87114 3 LEDDriver::LEDDriver( Queue<int,8>* queue):led2(LED2)
albireo987 2:36158325f7b0 4 {
KlaasGovaerts 47:2d877f01ca7b 5 //this->messageList=messageList;
KlaasGovaerts 47:2d877f01ca7b 6 //this->leds=leds;
albireo987 25:4c673da1a3ae 7 this->queue=queue;// prep for multithreaded
KlaasGovaerts 49:8fe84f455571 8 printf("Queue created\r\n");
KlaasGovaerts 47:2d877f01ca7b 9 initArrays();
KlaasGovaerts 49:8fe84f455571 10 printf("Arrays initialised.\r\n");
KlaasGovaerts 47:2d877f01ca7b 11 currentLocation=0;
albireo987 2:36158325f7b0 12 }
albireo987 2:36158325f7b0 13
albireo987 2:36158325f7b0 14 void LEDDriver::drive(int numberOfLeds)
albireo987 2:36158325f7b0 15 {
KlaasGovaerts 49:8fe84f455571 16 if(currentLocation==0){
KlaasGovaerts 49:8fe84f455571 17 poll(numberOfLeds,1);
KlaasGovaerts 49:8fe84f455571 18 poll(numberOfLeds,2);
KlaasGovaerts 49:8fe84f455571 19 }
KlaasGovaerts 49:8fe84f455571 20
KlaasGovaerts 47:2d877f01ca7b 21 setLEDS(currentLocation);
KlaasGovaerts 47:2d877f01ca7b 22 currentLocation++;
KlaasGovaerts 47:2d877f01ca7b 23 if(currentLocation>=20){
KlaasGovaerts 47:2d877f01ca7b 24 currentLocation=0;
KlaasGovaerts 47:2d877f01ca7b 25 }
KlaasGovaerts 46:ffac07bff0d8 26
KlaasGovaerts 46:ffac07bff0d8 27 /*
albireo987 38:47c075a354b5 28 Ticker ticker;
albireo987 32:537005b4a065 29 while(true)
albireo987 25:4c673da1a3ae 30 {
albireo987 26:29948b116e82 31 poll(numberOfLeds,1) ;//prep multi
KlaasGovaerts 44:bb1d9d8a9fe4 32 //for(int i =0;i<numberOfLeds;i++)
KlaasGovaerts 44:bb1d9d8a9fe4 33 //{
KlaasGovaerts 46:ffac07bff0d8 34 //ticker.attach(this,&LEDDriver::sendData,0.000625f);
KlaasGovaerts 44:bb1d9d8a9fe4 35 //}
albireo987 38:47c075a354b5 36 poll(numberOfLeds,2) ;
KlaasGovaerts 46:ffac07bff0d8 37 }*/
albireo987 2:36158325f7b0 38 }
albireo987 2:36158325f7b0 39
KlaasGovaerts 46:ffac07bff0d8 40 void LEDDriver::run(Ticker* ticker)
albireo987 2:36158325f7b0 41 {
KlaasGovaerts 49:8fe84f455571 42 printf("ticker attached.\r\n");
KlaasGovaerts 52:dfcd7bd87114 43 ticker->attach(this,&LEDDriver::drive8leds,1);//TODO faster
KlaasGovaerts 46:ffac07bff0d8 44 }
KlaasGovaerts 46:ffac07bff0d8 45
KlaasGovaerts 46:ffac07bff0d8 46 void LEDDriver::drive8leds(){
KlaasGovaerts 52:dfcd7bd87114 47 //printf("tick\r\n");//TODO
KlaasGovaerts 52:dfcd7bd87114 48 led2 = !led2;
KlaasGovaerts 52:dfcd7bd87114 49 //drive(8);
albireo987 2:36158325f7b0 50 }
albireo987 2:36158325f7b0 51
albireo987 10:7871aeacea08 52 void LEDDriver::ownWait(uint32_t us)
albireo987 10:7871aeacea08 53 {
albireo987 10:7871aeacea08 54 for(uint32_t i=0;i<us;i++)
albireo987 10:7871aeacea08 55 {
albireo987 38:47c075a354b5 56 for(volatile uint32_t j =0; j <3;j++)
albireo987 10:7871aeacea08 57 {
albireo987 10:7871aeacea08 58
albireo987 10:7871aeacea08 59 }
albireo987 10:7871aeacea08 60 }
albireo987 25:4c673da1a3ae 61 }
albireo987 25:4c673da1a3ae 62
albireo987 26:29948b116e82 63 void LEDDriver::poll(int numberOfLeds,int first)
albireo987 25:4c673da1a3ae 64 {
albireo987 26:29948b116e82 65 if(first==1)
albireo987 26:29948b116e82 66 {
albireo987 26:29948b116e82 67 for(int i =0;i<(numberOfLeds/2);i++)
albireo987 26:29948b116e82 68 {
KlaasGovaerts 46:ffac07bff0d8 69 osEvent event = queue->get();
KlaasGovaerts 46:ffac07bff0d8 70 int temp = *((int*)event.value.p);
KlaasGovaerts 47:2d877f01ca7b 71 if(temp==0||temp==1||temp==2||temp==3)
albireo987 26:29948b116e82 72 {
KlaasGovaerts 46:ffac07bff0d8 73 messageList[i]=temp;
albireo987 38:47c075a354b5 74 }
albireo987 26:29948b116e82 75 }
albireo987 26:29948b116e82 76 }
albireo987 26:29948b116e82 77 else if(first==2)
albireo987 38:47c075a354b5 78 {
albireo987 26:29948b116e82 79 for(int i =(numberOfLeds/2);i<(numberOfLeds);i++)
albireo987 26:29948b116e82 80 {
KlaasGovaerts 46:ffac07bff0d8 81 osEvent event = queue->get();
KlaasGovaerts 46:ffac07bff0d8 82 int temp = *((int*)event.value.p);
KlaasGovaerts 47:2d877f01ca7b 83 if(temp==0||temp==1||temp==2||temp==3)
albireo987 26:29948b116e82 84 {
KlaasGovaerts 46:ffac07bff0d8 85 messageList[i]=temp;
albireo987 38:47c075a354b5 86 }
albireo987 26:29948b116e82 87 }
albireo987 32:537005b4a065 88 }
albireo987 38:47c075a354b5 89 }
albireo987 38:47c075a354b5 90
KlaasGovaerts 47:2d877f01ca7b 91 void LEDDriver::initArrays()
albireo987 38:47c075a354b5 92 {
KlaasGovaerts 47:2d877f01ca7b 93 // 1 1 1 1 0 0 0 0 0 1
KlaasGovaerts 47:2d877f01ca7b 94 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)
albireo987 38:47c075a354b5 95 // 1 1 1 1 0 1 0 0 0 1
KlaasGovaerts 47:2d877f01ca7b 96 int tempCodedMessage1[20]={1,0,1,0,1,0,1,0,0,1,1,0,0,1,0,1,0,1,1,0};
albireo987 38:47c075a354b5 97 // 1 1 1 1 1 0 1 0 0 1
KlaasGovaerts 47:2d877f01ca7b 98 int tempCodedMessage2[20]={1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,1,0};
albireo987 38:47c075a354b5 99 // 1 1 1 1 1 1 0 0 0 1
KlaasGovaerts 47:2d877f01ca7b 100 int tempCodedMessage3[20]={1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,1,0,1,1,0};
KlaasGovaerts 47:2d877f01ca7b 101 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
KlaasGovaerts 49:8fe84f455571 102 int tempMessageList[8]={0,0,0,0,0,0,0,0};//TODO
KlaasGovaerts 50:c5cd73d93045 103 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)};
KlaasGovaerts 49:8fe84f455571 104 printf("Arrays created.\r\n");
KlaasGovaerts 47:2d877f01ca7b 105
KlaasGovaerts 47:2d877f01ca7b 106 memcpy(codedMessage0,tempCodedMessage0,sizeof(codedMessage0));
KlaasGovaerts 47:2d877f01ca7b 107 memcpy(codedMessage1,tempCodedMessage1,sizeof(codedMessage1));
KlaasGovaerts 47:2d877f01ca7b 108 memcpy(codedMessage2,tempCodedMessage2,sizeof(codedMessage2));
KlaasGovaerts 47:2d877f01ca7b 109 memcpy(codedMessage3,tempCodedMessage3,sizeof(codedMessage3));
KlaasGovaerts 47:2d877f01ca7b 110 memcpy(codedMessage4,tempCodedMessage4,sizeof(codedMessage4));
KlaasGovaerts 49:8fe84f455571 111 printf("First 5 arrays copied.\r\n");
KlaasGovaerts 47:2d877f01ca7b 112
KlaasGovaerts 49:8fe84f455571 113 memcpy(messageList,tempMessageList,sizeof(messageList));
KlaasGovaerts 49:8fe84f455571 114 printf("messageList array copied.\r\n");
KlaasGovaerts 49:8fe84f455571 115
KlaasGovaerts 47:2d877f01ca7b 116 memcpy(leds,tempLeds,sizeof(leds));
KlaasGovaerts 49:8fe84f455571 117 printf("LEDS array copied.\r\n");
KlaasGovaerts 47:2d877f01ca7b 118 }
KlaasGovaerts 47:2d877f01ca7b 119
KlaasGovaerts 47:2d877f01ca7b 120 void LEDDriver::setLEDS(int j){
albireo987 38:47c075a354b5 121 for(int led =0 ; led<8;led++)
albireo987 38:47c075a354b5 122 {
albireo987 38:47c075a354b5 123 if(messageList[led]==0)
albireo987 38:47c075a354b5 124 {
KlaasGovaerts 50:c5cd73d93045 125 leds[led]->write(codedMessage0[j]);
KlaasGovaerts 47:2d877f01ca7b 126 //ownWait(25);//100HZ
albireo987 38:47c075a354b5 127 }
albireo987 38:47c075a354b5 128 else if(messageList[led]==1)
albireo987 38:47c075a354b5 129 {
KlaasGovaerts 50:c5cd73d93045 130 leds[led]->write(codedMessage1[j]);
KlaasGovaerts 47:2d877f01ca7b 131 //ownWait(25);
albireo987 38:47c075a354b5 132 }
albireo987 38:47c075a354b5 133 else if(messageList[led]==2)
albireo987 38:47c075a354b5 134 {
KlaasGovaerts 50:c5cd73d93045 135 leds[led]->write(codedMessage2[j]);
KlaasGovaerts 47:2d877f01ca7b 136 //ownWait(25);
albireo987 38:47c075a354b5 137 }
albireo987 38:47c075a354b5 138 else if(messageList[led]==3)
albireo987 38:47c075a354b5 139 {
KlaasGovaerts 50:c5cd73d93045 140 leds[led]->write(codedMessage3[j]);
KlaasGovaerts 47:2d877f01ca7b 141 //ownWait(25);
albireo987 38:47c075a354b5 142 }
KlaasGovaerts 49:8fe84f455571 143 else if(messageList[led]==4||messageList[led]==-1)
albireo987 38:47c075a354b5 144 {
KlaasGovaerts 50:c5cd73d93045 145 leds[led]->write(codedMessage4[j]);
KlaasGovaerts 47:2d877f01ca7b 146 //ownWait(25);
albireo987 38:47c075a354b5 147 }
albireo987 38:47c075a354b5 148 }
KlaasGovaerts 50:c5cd73d93045 149 }
KlaasGovaerts 50:c5cd73d93045 150
KlaasGovaerts 50:c5cd73d93045 151 //TODO destructor