Tobias Jansen / Mbed OS Lorawan_Version_0_1

Dependencies:   Lorawan_Version_0_1

Dependents:   Lorawan_Version_0_1

Revision:
70:65b2f1cc2859
Parent:
69:316fee01f5d9
Child:
71:ca2425c0a864
--- a/Light/Light.cpp	Sun Jan 19 15:53:57 2020 +0000
+++ b/Light/Light.cpp	Tue Jan 21 13:20:59 2020 +0000
@@ -8,88 +8,55 @@
 #include "GPS.h"
 #include <mbed.h>
 #include "Light.h"
-
-
-
-DigitalOut LichtAus(PC_12);
-DigitalOut LichtHell(PC_9);
-DigitalOut led1(LED1);
+static EventQueue *Ref_Events;
 
-static EventQueue *Ref_Events;
-int BlinkEventID;
-
-
-    int blink_counter,max_blink_count;
-int GPSEvent;
-
-Light::Light(EventQueue *q)
+Light::Light(EventQueue *q,DigitalOut *la,DigitalOut*lh)
 {
     Ref_Events=q;
+    LichtAus=la;
+    LichtHell=lh;
 }
 
 void Light::adjust(bool IsMoving, uint32_t TimeStanding )
 {       
-     LichtHell=IsMoving;
-     LichtAus=TimeStanding>10000;
-}
-
-void Light::Licht_aus()
-{
-     printf("\r\n LICHT AUS \r\n");
-     LichtHell=0;
-     LichtAus=1;
-}
-
-void Light::Licht_an(int time)
-{     
-    printf("\r\n LICHT AN\r\n"); 
-    LichtHell=1;    
-    LichtAus=0;
-    if (time>0) {Ref_Events->call_in(time, Licht_aus);}    
+    if (this->BlinkEventID == 0){ // if Blinking is active we shouldnt override the blink outputs
+        if(IsMoving) LichtHell->write(1); else LichtHell->write(0);
+        if(TimeStanding>10000) LichtAus->write(1); else LichtAus->write(0);
+    }
 }
 
 
-void Light::Licht_hell()
-{
-     LichtHell=1;
-}
-
-void Light::Licht_dunkel()
-{
-     LichtHell=0;
-}
-
-
-void Light::Licht_toggle()
+void Light::Licht_toggle(Light *l)
 {      
-    printf("\r\n LICHT TOGGLE \r\n"); 
-    if (LichtAus)
-    {
-    LichtHell=1;
-    LichtAus=0;           
-    }else
-    {
-    LichtHell=0;
-    LichtAus=1;       
+    printf("\r\n[Light] TOGGLE\n"); 
+    if (l->LichtAus->read()){
+        l->LichtHell->write(1);
+        l->LichtAus->write(0);           
+    }else{
+        l->LichtHell->write(0);
+        l->LichtAus->write(1);       
     }
 }
 
 
 
-void Light::Blinken_aus()
+void Light::Blinken_aus(Light *l)
 {  
-    printf("\r\n BLINKEN AUS \r\n");  
-    Ref_Events->cancel(BlinkEventID);     
-    LichtHell=0;
-    LichtAus=1;    
+    printf("\n[Light] BLINK STOP\n");  
+    Ref_Events->cancel(l->BlinkEventID);  
+    l->BlinkEventID=0;   
+    l->LichtHell->write(0);
+    l->LichtAus->write(1);    
 }
 
 
 void Light::Blinken_ein(int time_to_blink)
 {
-    printf("\r\n BLINKEN EIN\r\n");   
-    BlinkEventID=Ref_Events->call_every(500,Licht_toggle);
-    Ref_Events->call_in(time_to_blink, Blinken_aus);
+    if (this->BlinkEventID == 0){ // we can only track 1 blinkevent so we cant have 2 running at the same time
+        printf("\n [Light] BLINK START\n");   
+        this->BlinkEventID=Ref_Events->call_every(500,Licht_toggle,this);
+        Ref_Events->call_in(time_to_blink, Blinken_aus,this);
+    }
 }