Slave

Files at this revision

API Documentation at this revision

Comitter:
williequesada
Date:
Tue Jun 04 17:00:29 2019 +0000
Commit message:
pablo

Changed in this revision

Slave.cpp Show annotated file Show diff for this revision Revisions of this file
Slave.h Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r cb801dad3124 Slave.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Slave.cpp	Tue Jun 04 17:00:29 2019 +0000
@@ -0,0 +1,145 @@
+#include "Slave.h"
+#include "mbed.h"
+#include "stdio.h"
+
+#define     NEXT_STEP           0x85
+#define     NEXT_SLEEP          0x86
+#define     NO_DATA             0x87
+
+
+char Slave_Buffer[255];
+int  Slave_Counter=0;
+
+SLAVE::SLAVE(PinName TX, PinName RX,PinName AWAKE):Uart(TX,RX),_AWAKE(AWAKE)
+{
+    _AWAKE=0;
+    Uart.attach(this,&SLAVE::UartInterruption);
+}
+
+bool SLAVE::Available()
+{
+    if(Slave_Counter>0) {
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
+bool SLAVE::Mensaje()
+{
+    if(Slave_Counter>4) {
+        return 1;
+    } else {
+        return 0;
+    }
+}
+
+
+void SLAVE::Command(uint8_t _Command)
+{
+    if(Uart.writeable()) {
+        Uart.putc(_Command);
+    } else {
+        wait_ms(500);
+        if(Uart.writeable()) {
+            Uart.putc(_Command);
+        }
+    }
+}
+
+void SLAVE::Send_Hosting(char Parquimetro[],char Municipio[],char Estado[])
+{
+    if(Uart.writeable()) {
+        Uart.printf("%s",Municipio);
+        Uart.printf("%s",Estado);
+        Uart.printf("%s",Parquimetro);
+    } else {
+        wait_ms(500);
+        if(Uart.writeable()) {
+            Uart.printf("%s",Municipio);
+            Uart.printf("%s",Estado);
+            Uart.printf("%s",Parquimetro);
+        }
+    }
+}
+
+void SLAVE::Send_User(char Parquimetro[],char Municipio[],int Tiempo,char Espacio[],char Track2[])
+{
+    if(Uart.writeable()) {
+        Uart.printf("%s",Municipio);
+        Uart.printf("%s",Espacio);
+        Uart.printf("%s",Parquimetro);
+        if(Tiempo<100) {
+            Uart.putc('0');
+            Uart.printf("%i",Tiempo);
+        } else {
+            Uart.printf("%i",Tiempo);
+        }
+        Uart.printf("%s",Track2);
+    } else {
+        wait_ms(500);
+        if(Uart.writeable()) {
+            Uart.printf("%s",Municipio);
+            Uart.printf("%s",Espacio);
+            Uart.printf("%s",Parquimetro);
+            if(Tiempo<100) {
+                Uart.putc('0');
+                Uart.printf("%i",Tiempo);
+            } else {
+                Uart.printf("%i",Tiempo);
+            }
+            Uart.printf("%s",Track2);
+        }
+    }
+}
+
+char SLAVE::Recibe()
+{
+    if(Slave_Counter>0) {
+        Slave_Counter--;
+        return Slave_Buffer[Slave_Counter];
+    } else {
+        return NO_DATA;
+    }
+}
+
+bool SLAVE::Answer()
+{
+    if(Slave_Counter>0) {
+        Slave_Counter--;
+        if(Slave_Buffer[Slave_Counter]==NEXT_STEP) {
+            return 1;
+        } else {
+            return 0;
+        }
+    }
+    return 0;
+}
+
+void SLAVE::Awake()
+{
+    _AWAKE=1;
+    wait_us(50);
+    _AWAKE=0;
+}
+
+void SLAVE::Sleep()
+{
+    if(Uart.writeable()) {
+        Uart.putc(NEXT_SLEEP);
+    } else {
+        wait_ms(500);
+        if(Uart.writeable()) {
+            Uart.putc(NEXT_SLEEP);
+        }
+    }
+
+}
+
+void SLAVE::UartInterruption()
+{
+    if(Uart.readable()) {
+        Slave_Buffer[Slave_Counter]=Uart.getc();
+        Slave_Counter++;
+    }
+}
diff -r 000000000000 -r cb801dad3124 Slave.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Slave.h	Tue Jun 04 17:00:29 2019 +0000
@@ -0,0 +1,26 @@
+#ifndef MBED_SLAVE_H
+#define MBED_SLAVE_H
+ 
+#include "mbed.h"
+ 
+class SLAVE {
+public:
+    SLAVE(PinName TX, PinName RX,PinName AWAKE);
+
+    void  Command(uint8_t _Command);
+    bool  Answer(); 
+    bool  Mensaje(); 
+    bool  Available();
+    void  Send_Hosting(char Parquimetro[],char Municipio[],char Estado[]);
+    void  Send_User(char Parquimetro[],char Municipio[],int Tiempo,char Espacio[],char Track2[]);
+    void  Awake();
+    void  Sleep(); 
+    char  Recibe();
+    void  UartInterruption();
+  
+private:  
+    RawSerial    Uart;
+    DigitalOut   _AWAKE;
+};
+ 
+#endif
\ No newline at end of file