Jeroen van Zoeren / Ophaalbrug-dev

Dependencies:   mbed-dev mbed-rtos

Committer:
jeroenvz
Date:
Thu Jan 14 18:56:40 2016 +0000
Revision:
1:f29c0aa25711
Parent:
0:87617851c15a
Definitive

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jeroenvz 0:87617851c15a 1 #include "Slagboom.h"
jeroenvz 0:87617851c15a 2
jeroenvz 0:87617851c15a 3 Slagboom::Slagboom(bool geopend, PinName ophalen, PinName sluiten): _thread2(&Slagboom::threadStarter, this, osPriorityNormal,1024){
jeroenvz 0:87617851c15a 4 mBoom_Open = geopend;
jeroenvz 0:87617851c15a 5 mBoom_Gesloten = !mBoom_Open; //Initiele status wordt meegegeven in de constructor
jeroenvz 0:87617851c15a 6 mOphalen = new DigitalOut(ophalen);
jeroenvz 0:87617851c15a 7 mSluiten = new DigitalOut(sluiten);
jeroenvz 0:87617851c15a 8 *mOphalen = false; //Standaard niets doen
jeroenvz 0:87617851c15a 9 *mSluiten = false;
jeroenvz 0:87617851c15a 10 verkeer1 = new Stoplicht(D14, D15);
jeroenvz 0:87617851c15a 11 _thread2.signal_set(0x1);
jeroenvz 0:87617851c15a 12 }
jeroenvz 0:87617851c15a 13 void Slagboom::stoplichtRood(){
jeroenvz 0:87617851c15a 14 verkeer1->set_Rood();
jeroenvz 0:87617851c15a 15 }
jeroenvz 0:87617851c15a 16
jeroenvz 0:87617851c15a 17 void Slagboom::boom_Ophalen(bool nood) { //Functie om boom op te halen
jeroenvz 0:87617851c15a 18 pc.printf("BOOM OPHALEN\n\r");
jeroenvz 0:87617851c15a 19 *mOphalen = true;
jeroenvz 0:87617851c15a 20 *mSluiten = false;
jeroenvz 0:87617851c15a 21 mBoom_Gesloten = false;
jeroenvz 0:87617851c15a 22 float temp = 0;
jeroenvz 0:87617851c15a 23 for(float i=0;i<5;i+=0.2){
jeroenvz 0:87617851c15a 24 if(State == "noodstop" && nood == true){
jeroenvz 0:87617851c15a 25 break;
jeroenvz 0:87617851c15a 26 }
jeroenvz 0:87617851c15a 27 wait(0.2);
jeroenvz 0:87617851c15a 28 temp += 0.2;
jeroenvz 0:87617851c15a 29 }
jeroenvz 0:87617851c15a 30 *mOphalen = false;
jeroenvz 0:87617851c15a 31 if(temp >= 4.9){
jeroenvz 0:87617851c15a 32 mBoom_Open = true;
jeroenvz 0:87617851c15a 33 pc.printf("BOOM OPGEHAALD\n\r");
jeroenvz 0:87617851c15a 34 }
jeroenvz 0:87617851c15a 35 }
jeroenvz 0:87617851c15a 36
jeroenvz 0:87617851c15a 37 void Slagboom::boom_LatenZakken(bool nood){ //Functie om boom te laten zakken
jeroenvz 0:87617851c15a 38 pc.printf("BOOM ZAKKEN\n\r");
jeroenvz 0:87617851c15a 39 *mOphalen = false;
jeroenvz 0:87617851c15a 40 *mSluiten = true;
jeroenvz 0:87617851c15a 41 mBoom_Open = false;
jeroenvz 0:87617851c15a 42 float temp = 0;
jeroenvz 0:87617851c15a 43 for(float i=0;i<5;i+=0.2){
jeroenvz 0:87617851c15a 44 if(State == "noodstop" && nood == true){
jeroenvz 0:87617851c15a 45 break;
jeroenvz 0:87617851c15a 46 }
jeroenvz 0:87617851c15a 47 wait(0.2);
jeroenvz 0:87617851c15a 48 temp += 0.2;
jeroenvz 0:87617851c15a 49 }
jeroenvz 0:87617851c15a 50 *mSluiten = false;
jeroenvz 0:87617851c15a 51 if(temp >= 4.9){
jeroenvz 0:87617851c15a 52 mBoom_Gesloten = true;
jeroenvz 0:87617851c15a 53 pc.printf("BOOM GEZAKT\n\r");
jeroenvz 0:87617851c15a 54 }
jeroenvz 0:87617851c15a 55 }
jeroenvz 0:87617851c15a 56
jeroenvz 0:87617851c15a 57 bool Slagboom::getStatus(){ //Geeft waarde true (of false?) als de boom gesloten is
jeroenvz 0:87617851c15a 58 return mBoom_Gesloten;
jeroenvz 0:87617851c15a 59
jeroenvz 0:87617851c15a 60 }
jeroenvz 0:87617851c15a 61
jeroenvz 0:87617851c15a 62 void Slagboom::stoplichtGroen(){
jeroenvz 0:87617851c15a 63 verkeer1->set_Groen();
jeroenvz 0:87617851c15a 64 }
jeroenvz 0:87617851c15a 65
jeroenvz 0:87617851c15a 66 void Slagboom::setGesloten(){
jeroenvz 0:87617851c15a 67 mBoom_Gesloten = true;
jeroenvz 0:87617851c15a 68 mBoom_Open = false;
jeroenvz 0:87617851c15a 69 }
jeroenvz 0:87617851c15a 70 void Slagboom::setOpen(){
jeroenvz 0:87617851c15a 71 mBoom_Gesloten = false;
jeroenvz 0:87617851c15a 72 mBoom_Open = true;
jeroenvz 0:87617851c15a 73 }
jeroenvz 0:87617851c15a 74
jeroenvz 0:87617851c15a 75 void Slagboom::threadStarter(void const *p)
jeroenvz 0:87617851c15a 76 {
jeroenvz 0:87617851c15a 77 Slagboom *instance = (Slagboom*)p;
jeroenvz 0:87617851c15a 78 instance->threadWorker();
jeroenvz 0:87617851c15a 79 }
jeroenvz 0:87617851c15a 80 void Slagboom::threadWorker()
jeroenvz 0:87617851c15a 81 {
jeroenvz 0:87617851c15a 82 _thread2.signal_wait(0x1);
jeroenvz 0:87617851c15a 83 while(1) {
jeroenvz 0:87617851c15a 84
jeroenvz 0:87617851c15a 85 osEvent evt = slagboomqueue.get();
jeroenvz 0:87617851c15a 86 if (evt.status == osEventMessage) {
jeroenvz 0:87617851c15a 87 if(evt.value.v == BRUG_VRIJMAKEN) {
jeroenvz 0:87617851c15a 88 pc.printf("COMMAND: Brug Vrijmaken\n\r");
jeroenvz 0:87617851c15a 89 if(mBoom_Open == true && State != "noodstop"){
jeroenvz 0:87617851c15a 90 verkeer1->set_Rood();
jeroenvz 0:87617851c15a 91 wait(1);
jeroenvz 0:87617851c15a 92 if(State != "noodstop"){
jeroenvz 0:87617851c15a 93 boom_LatenZakken(true);
jeroenvz 0:87617851c15a 94 }
jeroenvz 0:87617851c15a 95 }
jeroenvz 0:87617851c15a 96 else{
jeroenvz 0:87617851c15a 97 pc.printf("ERROR: Slagbomen zijn al naar beneden!\n\r");
jeroenvz 0:87617851c15a 98 }
jeroenvz 0:87617851c15a 99 }
jeroenvz 0:87617851c15a 100
jeroenvz 0:87617851c15a 101 if(evt.value.v == BRUG_VRIJGEVEN) {
jeroenvz 0:87617851c15a 102 pc.printf("COMMAND: Brug Vrijgeven\n\r");
jeroenvz 0:87617851c15a 103 string temp = State;
jeroenvz 0:87617851c15a 104 State = "vrijgeven";
jeroenvz 0:87617851c15a 105 if(GLOBAL_gesloten == true ){
jeroenvz 0:87617851c15a 106 if(mBoom_Gesloten == true ){
jeroenvz 0:87617851c15a 107 boom_Ophalen(true);
jeroenvz 0:87617851c15a 108 if(State != "noodstop"){
jeroenvz 0:87617851c15a 109 wait(1);
jeroenvz 0:87617851c15a 110 verkeer1->set_Groen();
jeroenvz 0:87617851c15a 111 pc.printf("MESSAGE: Brug vrij!\n\r");
jeroenvz 0:87617851c15a 112 }
jeroenvz 0:87617851c15a 113 }
jeroenvz 0:87617851c15a 114 else{
jeroenvz 0:87617851c15a 115 pc.printf("MESSAGE: Bomen al open!\n\r");
jeroenvz 0:87617851c15a 116 }
jeroenvz 0:87617851c15a 117 }
jeroenvz 0:87617851c15a 118 else{
jeroenvz 0:87617851c15a 119 pc.printf("ERROR: Brug is nog open!\n\r");
jeroenvz 0:87617851c15a 120 }
jeroenvz 0:87617851c15a 121 State = temp;
jeroenvz 0:87617851c15a 122 }
jeroenvz 0:87617851c15a 123 }
jeroenvz 0:87617851c15a 124 }
jeroenvz 0:87617851c15a 125 }