improved serial handeling added aux state info

This commit is contained in:
IMback
2018-09-03 20:47:01 +02:00
parent 296d38e8b0
commit 20b4663887
9 changed files with 676 additions and 659 deletions

View File

@ -9,7 +9,7 @@
#include "rgbled.h"
#include "eeprom.h"
#define MAX_RELAYS 32
#define MAX_RELAYS 16
#define COMMAND_BUFFER_SIZE 32
#define SNPRINTF_BUFFER_SIZE 64
@ -35,7 +35,7 @@ inline static void printHelp(Serial* serial)
relay list : Print list of saved Wireless Relays.\n\
relay machine [on/off] : Get machine readable relay state when state changes.\n\
relay [on/off] [nn] : Turn on/off nth relay.\n\
relay state : Get machine readable relay state.\n\
state : Get machine readable state.\n\
erase : Erase epprom.\n\
rgb [on/off] : Turn on/off RGB leds at current value.\n\
rgb print : Print current RGB value.\n\
@ -50,7 +50,7 @@ inline static void printHelp(Serial* serial)
void writeState( WirelessRelayStore* relays, Pwm16b* auxPwm, Serial* serial )
{
serial->write("ST");
serial->write(auxPwm.isOn() ? auxPwm.getValueA() : 0);
serial->write(auxPwm->isOn() ? auxPwm->getValueA() >> 8 : 0);
serial->putChar(',');
serial->write(relays->count);
for(uint8_t i = 0; i < relays->count; i++)
@ -61,7 +61,7 @@ void writeState( WirelessRelayStore* relays, Pwm16b* auxPwm, Serial* serial )
serial->putChar('\n');
}
void relayDispatch(WirelessRelayStore* relays, char* inBuffer, Serial* serial)
void relayDispatch(WirelessRelayStore* relays, Pwm16b* auxPwm, char* inBuffer, Serial* serial)
{
if( strncmp(inBuffer, "add", 3) == 0 && inBuffer[3] != '\0')
{
@ -106,7 +106,7 @@ void relayDispatch(WirelessRelayStore* relays, char* inBuffer, Serial* serial)
snprintf(buffer, SNPRINTF_BUFFER_SIZE, "RELAY: %u turned on\n", selected);
serial->write(buffer, SNPRINTF_BUFFER_SIZE);
if(relays->printState) writeState(relays, serial);
if(relays->printState) writeState(relays, auxPwm, serial);
}
else serial->write("No sutch Relay\n");
}
@ -119,7 +119,7 @@ void relayDispatch(WirelessRelayStore* relays, char* inBuffer, Serial* serial)
snprintf(buffer, SNPRINTF_BUFFER_SIZE, "RELAY: %u turned off\n", selected);
serial->write(buffer, SNPRINTF_BUFFER_SIZE);
if(relays->printState) writeState(relays, serial);
if(relays->printState) writeState(relays, auxPwm, serial);
}
else serial->write("No sutch Relay\n");
}
@ -240,7 +240,7 @@ void serialDispatch(Serial* serial , WirelessRelayStore* relays, RgbLed* rgbled,
{
if(length > 4 && strncmp(buffer, "relay", 5) == 0)
{
relayDispatch(relays, buffer+6, serial);
relayDispatch(relays, auxPwm, buffer+6, serial);
}
else if(length > 2 && strncmp(buffer, "rgb", 3) == 0)
{
@ -348,7 +348,7 @@ int main()
if(doorTow) openCount++;
if(openCount > 60000)
{
serial.write("Door Open Warning\n");
serial.write_p(PSTR("Door Open Warning\n"));
openCount = 0;
}