mirror of https://github.com/sfeakes/AqualinkD.git
Version 1.3.4a
parent
b5b37c188d
commit
d6533885ec
58
aqualinkd.c
58
aqualinkd.c
|
@ -224,30 +224,31 @@ void processMessage(char *message)
|
||||||
// ie "POOL TEMP" and "POOL TEMP IS SET TO" so want correct match first.
|
// ie "POOL TEMP" and "POOL TEMP IS SET TO" so want correct match first.
|
||||||
//
|
//
|
||||||
|
|
||||||
if (stristr(msg, "JANDY AquaLinkRS") != NULL)
|
if (stristr(msg, "JANDY AquaLinkRS") != NULL) {
|
||||||
{
|
|
||||||
//_aqualink_data.display_message = NULL;
|
//_aqualink_data.display_message = NULL;
|
||||||
_aqualink_data.last_display_message[0] = '\0';
|
_aqualink_data.last_display_message[0] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't do any message counts if we are programming
|
||||||
|
if (_aqualink_data.active_thread.thread_id == 0) {
|
||||||
// If we have more than 10 messages without "Service Mode is active" assume it's off.
|
// If we have more than 10 messages without "Service Mode is active" assume it's off.
|
||||||
if (_aqualink_data.service_mode_state == ON && service_msg_count++ > 10)
|
if (_aqualink_data.service_mode_state == ON && service_msg_count++ > 10) {
|
||||||
{
|
_aqualink_data.service_mode_state = OFF;
|
||||||
_aqualink_data.service_mode_state = OFF;
|
service_msg_count = 0;
|
||||||
service_msg_count = 0;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// If we have more than 20 messages without "SALT or AQUAPURE" assume SWG is off.
|
// If we have more than 20 messages without "SALT or AQUAPURE" assume SWG is off.
|
||||||
if (_aqualink_data.ar_swg_status == SWG_STATUS_ON && swg_msg_count++ > 20) {
|
if (_aqualink_data.ar_swg_status == SWG_STATUS_ON && swg_msg_count++ > 40) {
|
||||||
_aqualink_data.ar_swg_status = SWG_STATUS_OFF;
|
printf("***************** Manually turned SWG off ************************\n");
|
||||||
swg_msg_count = 0;
|
_aqualink_data.ar_swg_status = SWG_STATUS_OFF;
|
||||||
}
|
swg_msg_count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// If we have more than 10 messages without "FREE PROTECT ACTIVATED" assume it's off.
|
// If we have more than 10 messages without "FREE PROTECT ACTIVATED" assume it's off.
|
||||||
if (_aqualink_data.frz_protect_state == ON && freeze_msg_count++ > 10)
|
if (_aqualink_data.frz_protect_state == ON && freeze_msg_count++ > 10) {
|
||||||
{
|
_aqualink_data.frz_protect_state = ENABLE;
|
||||||
_aqualink_data.frz_protect_state = ENABLE;
|
freeze_msg_count = 0;
|
||||||
freeze_msg_count = 0;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//else
|
//else
|
||||||
|
@ -364,13 +365,15 @@ void processMessage(char *message)
|
||||||
else if (strncasecmp(msg, MSG_SWG_PCT, MSG_SWG_PCT_LEN) == 0)
|
else if (strncasecmp(msg, MSG_SWG_PCT, MSG_SWG_PCT_LEN) == 0)
|
||||||
{
|
{
|
||||||
_aqualink_data.swg_percent = atoi(msg + MSG_SWG_PCT_LEN);
|
_aqualink_data.swg_percent = atoi(msg + MSG_SWG_PCT_LEN);
|
||||||
if (_aqualink_data.ar_swg_status == SWG_STATUS_OFF) {_aqualink_data.ar_swg_status = SWG_STATUS_ON; swg_msg_count = 0;}
|
if (_aqualink_data.ar_swg_status == SWG_STATUS_OFF) {_aqualink_data.ar_swg_status = SWG_STATUS_ON;}
|
||||||
|
swg_msg_count = 0;
|
||||||
//logMessage(LOG_DEBUG, "*** '%s' ***\n", msg);
|
//logMessage(LOG_DEBUG, "*** '%s' ***\n", msg);
|
||||||
}
|
}
|
||||||
else if (strncasecmp(msg, MSG_SWG_PPM, MSG_SWG_PPM_LEN) == 0)
|
else if (strncasecmp(msg, MSG_SWG_PPM, MSG_SWG_PPM_LEN) == 0)
|
||||||
{
|
{
|
||||||
_aqualink_data.swg_ppm = atoi(msg + MSG_SWG_PPM_LEN);
|
_aqualink_data.swg_ppm = atoi(msg + MSG_SWG_PPM_LEN);
|
||||||
if (_aqualink_data.ar_swg_status == SWG_STATUS_OFF) {_aqualink_data.ar_swg_status = SWG_STATUS_ON; swg_msg_count = 0;}
|
if (_aqualink_data.ar_swg_status == SWG_STATUS_OFF) {_aqualink_data.ar_swg_status = SWG_STATUS_ON;}
|
||||||
|
swg_msg_count = 0;
|
||||||
//logMessage(LOG_DEBUG, "Stored SWG PPM as %d\n", _aqualink_data.swg_ppm);
|
//logMessage(LOG_DEBUG, "Stored SWG PPM as %d\n", _aqualink_data.swg_ppm);
|
||||||
}
|
}
|
||||||
else if ((msg[1] == ':' || msg[2] == ':') && msg[strlen(msg) - 1] == 'M')
|
else if ((msg[1] == ':' || msg[2] == ':') && msg[strlen(msg) - 1] == 'M')
|
||||||
|
@ -994,6 +997,7 @@ void main_loop()
|
||||||
int packet_length;
|
int packet_length;
|
||||||
unsigned char packet_buffer[AQ_MAXPKTLEN+1];
|
unsigned char packet_buffer[AQ_MAXPKTLEN+1];
|
||||||
bool interestedInNextAck = false;
|
bool interestedInNextAck = false;
|
||||||
|
bool changed = false;
|
||||||
int i;
|
int i;
|
||||||
//int delayAckCnt = 0;
|
//int delayAckCnt = 0;
|
||||||
|
|
||||||
|
@ -1101,6 +1105,7 @@ void main_loop()
|
||||||
else if (packet_length > 0)
|
else if (packet_length > 0)
|
||||||
{
|
{
|
||||||
blank_read = 0;
|
blank_read = 0;
|
||||||
|
changed = false;
|
||||||
|
|
||||||
if (_config_parameters.debug_RSProtocol_packets || getLogLevel() >= LOG_DEBUG_SERIAL)
|
if (_config_parameters.debug_RSProtocol_packets || getLogLevel() >= LOG_DEBUG_SERIAL)
|
||||||
logPacket(packet_buffer, packet_length);
|
logPacket(packet_buffer, packet_length);
|
||||||
|
@ -1133,7 +1138,8 @@ void main_loop()
|
||||||
// warnings and errors. If something changed, notify any listeners
|
// warnings and errors. If something changed, notify any listeners
|
||||||
if (process_packet(packet_buffer, packet_length) != false)
|
if (process_packet(packet_buffer, packet_length) != false)
|
||||||
{
|
{
|
||||||
broadcast_aqualinkstate(mgr.active_connections);
|
//broadcast_aqualinkstate(mgr.active_connections);
|
||||||
|
changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}/*
|
}/*
|
||||||
|
@ -1155,7 +1161,7 @@ void main_loop()
|
||||||
if (packet_buffer[PKT_CMD] == CMD_PPM)
|
if (packet_buffer[PKT_CMD] == CMD_PPM)
|
||||||
{
|
{
|
||||||
_aqualink_data.ar_swg_status = packet_buffer[5];
|
_aqualink_data.ar_swg_status = packet_buffer[5];
|
||||||
if (_aqualink_data.swg_delayed_percent != TEMP_UNKNOWN && _aqualink_data.ar_swg_status == 0x00)
|
if (_aqualink_data.swg_delayed_percent != TEMP_UNKNOWN && _aqualink_data.ar_swg_status == SWG_STATUS_ON)
|
||||||
{ // We have a delayed % to set.
|
{ // We have a delayed % to set.
|
||||||
char sval[10];
|
char sval[10];
|
||||||
snprintf(sval, 9, "%d", _aqualink_data.swg_delayed_percent);
|
snprintf(sval, 9, "%d", _aqualink_data.swg_delayed_percent);
|
||||||
|
@ -1164,6 +1170,7 @@ void main_loop()
|
||||||
_aqualink_data.swg_delayed_percent = TEMP_UNKNOWN;
|
_aqualink_data.swg_delayed_percent = TEMP_UNKNOWN;
|
||||||
}
|
}
|
||||||
_aqualink_data.swg_ppm = packet_buffer[4] * 100;
|
_aqualink_data.swg_ppm = packet_buffer[4] * 100;
|
||||||
|
changed = true;
|
||||||
//logMessage(LOG_DEBUG, "Read SWG PPM %d from ID 0x%02hhx\n", _aqualink_data.swg_ppm, SWG_DEV_ID);
|
//logMessage(LOG_DEBUG, "Read SWG PPM %d from ID 0x%02hhx\n", _aqualink_data.swg_ppm, SWG_DEV_ID);
|
||||||
}
|
}
|
||||||
interestedInNextAck = false;
|
interestedInNextAck = false;
|
||||||
|
@ -1171,6 +1178,7 @@ void main_loop()
|
||||||
else if (interestedInNextAck == true && packet_buffer[PKT_DEST] != DEV_MASTER && _aqualink_data.ar_swg_status != 0x00)
|
else if (interestedInNextAck == true && packet_buffer[PKT_DEST] != DEV_MASTER && _aqualink_data.ar_swg_status != 0x00)
|
||||||
{
|
{
|
||||||
_aqualink_data.ar_swg_status = SWG_STATUS_OFF;
|
_aqualink_data.ar_swg_status = SWG_STATUS_OFF;
|
||||||
|
changed = true;
|
||||||
interestedInNextAck = false;
|
interestedInNextAck = false;
|
||||||
}
|
}
|
||||||
else if (packet_buffer[PKT_DEST] == SWG_DEV_ID)
|
else if (packet_buffer[PKT_DEST] == SWG_DEV_ID)
|
||||||
|
@ -1178,8 +1186,9 @@ void main_loop()
|
||||||
interestedInNextAck = true;
|
interestedInNextAck = true;
|
||||||
if (packet_buffer[3] == CMD_PERCENT && _aqualink_data.active_thread.thread_id == 0)
|
if (packet_buffer[3] == CMD_PERCENT && _aqualink_data.active_thread.thread_id == 0)
|
||||||
{
|
{
|
||||||
// Only read SWG Percent if we are not programming, as we might be changing this
|
// Only read message from controller to SWG to set SWG Percent if we are not programming, as we might be changing this
|
||||||
_aqualink_data.swg_percent = (int)packet_buffer[4];
|
_aqualink_data.swg_percent = (int)packet_buffer[4];
|
||||||
|
changed = true;
|
||||||
//logMessage(LOG_DEBUG, "Read SWG Percent %d from ID 0x%02hhx\n", _aqualink_data.swg_percent, SWG_DEV_ID);
|
//logMessage(LOG_DEBUG, "Read SWG Percent %d from ID 0x%02hhx\n", _aqualink_data.swg_percent, SWG_DEV_ID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1189,8 +1198,10 @@ void main_loop()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_config_parameters.read_pentair_packets && getProtocolType(packet_buffer) == PENTAIR) {
|
if (_config_parameters.read_pentair_packets && getProtocolType(packet_buffer) == PENTAIR) {
|
||||||
if (processPentairPacket(packet_buffer, packet_length, &_aqualink_data))
|
if (processPentairPacket(packet_buffer, packet_length, &_aqualink_data)) {
|
||||||
broadcast_aqualinkstate(mgr.active_connections);
|
//broadcast_aqualinkstate(mgr.active_connections);
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* Removed, iAqualink has sleep mode, so no use
|
/* Removed, iAqualink has sleep mode, so no use
|
||||||
if (packet_buffer[PKT_DEST] == IAQ_DEV_ID && packet_buffer[PKT_CMD] == CMD_IAQ_MSG) {
|
if (packet_buffer[PKT_DEST] == IAQ_DEV_ID && packet_buffer[PKT_CMD] == CMD_IAQ_MSG) {
|
||||||
|
@ -1203,6 +1214,9 @@ void main_loop()
|
||||||
// logMessage(LOG_DEBUG_SERIAL, "Received Packet for ID 0x%02hhx of type %s %s\n",packet_buffer[PKT_DEST], get_packet_type(packet_buffer, packet_length),
|
// logMessage(LOG_DEBUG_SERIAL, "Received Packet for ID 0x%02hhx of type %s %s\n",packet_buffer[PKT_DEST], get_packet_type(packet_buffer, packet_length),
|
||||||
// (packet_buffer[PKT_DEST] == _config_parameters.device_id)?" <-- Aqualinkd ID":"");
|
// (packet_buffer[PKT_DEST] == _config_parameters.device_id)?" <-- Aqualinkd ID":"");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (changed)
|
||||||
|
broadcast_aqualinkstate(mgr.active_connections);
|
||||||
}
|
}
|
||||||
mg_mgr_poll(&mgr, 0);
|
mg_mgr_poll(&mgr, 0);
|
||||||
|
|
||||||
|
|
Binary file not shown.
Loading…
Reference in New Issue