Add dynamic buffer space

Add dynamic buffer space
This commit is contained in:
Theo Arends 2018-11-27 12:09:36 +01:00
parent b3f1730660
commit 3f33e3efa8

View File

@ -36,7 +36,7 @@ TasmotaSerial *SerialBridgeSerial;
uint8_t serial_bridge_active = 1; uint8_t serial_bridge_active = 1;
uint8_t serial_bridge_in_byte_counter = 0; uint8_t serial_bridge_in_byte_counter = 0;
unsigned long serial_bridge_polling_window = 0; unsigned long serial_bridge_polling_window = 0;
char serial_bridge_buffer[SERIAL_BRIDGE_BUFFER_SIZE]; char *serial_bridge_buffer = NULL;
void SerialBridgeInput(void) void SerialBridgeInput(void)
{ {
@ -75,10 +75,13 @@ void SerialBridgeInit(void)
{ {
serial_bridge_active = 0; serial_bridge_active = 0;
if ((pin[GPIO_SBR_RX] < 99) && (pin[GPIO_SBR_TX] < 99)) { if ((pin[GPIO_SBR_RX] < 99) && (pin[GPIO_SBR_TX] < 99)) {
SerialBridgeSerial = new TasmotaSerial(pin[GPIO_SBR_RX], pin[GPIO_SBR_TX]); serial_bridge_buffer = (char*)(malloc(SERIAL_BRIDGE_BUFFER_SIZE));
if (SerialBridgeSerial->begin(Settings.sbaudrate * 1200)) { // Baud rate is stored div 1200 so it fits into one byte if (serial_bridge_buffer != NULL) {
serial_bridge_active = 1; SerialBridgeSerial = new TasmotaSerial(pin[GPIO_SBR_RX], pin[GPIO_SBR_TX]);
SerialBridgeSerial->flush(); if (SerialBridgeSerial->begin(Settings.sbaudrate * 1200)) { // Baud rate is stored div 1200 so it fits into one byte
serial_bridge_active = 1;
SerialBridgeSerial->flush();
}
} }
} }
} }
@ -122,7 +125,7 @@ boolean SerialBridgeCommand(void)
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_LVALUE, command, Settings.sbaudrate * 1200); snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_LVALUE, command, Settings.sbaudrate * 1200);
} }
else serviced = false; // Unknown command else serviced = false; // Unknown command
return serviced; return serviced;
} }