Slave
Revision 0:cb801dad3124, committed 2019-06-04
- 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 |
--- /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++; + } +}
--- /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