From 9f91af03ce7ad37ddbba5a36269a37b58b7f44a3 Mon Sep 17 00:00:00 2001 From: sfeakes Date: Tue, 30 May 2023 18:14:04 -0500 Subject: [PATCH] V2.3.0e --- README.md | 5 +- aq_panel.c | 2 +- aq_programmer.c | 4 +- aq_programmer.h | 10 +- aq_serial.c | 7 +- aqualinkd.c | 54 +----- config.c | 4 + config.h | 1 + json_messages.c | 3 + packetLogger.c | 25 ++- pda.c | 420 ++++++++++++++++------------------------- pda_aq_programmer.c | 92 +++++++-- pda_aq_programmer.h | 8 + pda_menu.c | 30 ++- pda_menu.h | 2 +- release/aqualinkd | Bin 419756 -> 424664 bytes release/aqualinkd.conf | 7 +- rs_msg_utils.c | 2 +- utils.c | 4 +- web/config.js | 16 ++ web/controller.html | 36 +++- 21 files changed, 385 insertions(+), 347 deletions(-) diff --git a/README.md b/README.md index 85d3174..d990bb0 100644 --- a/README.md +++ b/README.md @@ -78,15 +78,16 @@ Designed to mimic AqualinkRS6 All Button keypad and (like the keypad) is used to * Allow selecting of pre-defined VSP programs (Aqualink Touch & OneTouch protocols.) * Add set time to OneTouch protocol. -# Update in Release 2.3.0d (pre release) +# Update in Release 2.3.0e (pre release) * This is pre-release, please treat it as such. * Proceed with caution on PDA panels I have not been able to test it fully on all variants and you may need to go back to your current (or previous) version of AqualinkD * Changed a lot of logic around different protocols. -* Add support for dimmers. * AqualinkD will find out the fastest way to change something depending on the protocols available. * Added scheduler (click time in web ui). supports full calendar year (ie seasons), See wiki for details. * Added timers for devices (ie can turn on Pump for x minutes), Long press on device in WebUI. * Timers supported in MQTT/API. +* Add support for dimmers. +* Extended SWG status now in web UI. * Serial logging / error checking enhancements. * Added simulator back. (+ Improved UI). * Fix issue with incorrect device state after duplicate MQTT messages being sent in rapid succession ( < 0.5 second). diff --git a/aq_panel.c b/aq_panel.c index be49bba..b31b85d 100644 --- a/aq_panel.c +++ b/aq_panel.c @@ -109,7 +109,7 @@ setPanel("RS-8 Combo"); */ -char _panelString[36]; +char _panelString[60]; void setPanelString() { sprintf(_panelString, "%s%s-%d %s%s%s", diff --git a/aq_programmer.c b/aq_programmer.c index 789c5a4..194883c 100644 --- a/aq_programmer.c +++ b/aq_programmer.c @@ -81,8 +81,8 @@ bool waitForButtonState(struct aqualinkdata *aq_data, aqkey* button, aqledstate bool waitForEitherMessage(struct aqualinkdata *aq_data, char* message1, char* message2, int numMessageReceived); bool push_aq_cmd(unsigned char cmd); -void waitfor_queue2empty(); -void longwaitfor_queue2empty(); +//void waitfor_queue2empty(); +//void longwaitfor_queue2empty(); void _aq_programmer(program_type r_type, char *args, struct aqualinkdata *aq_data, bool allowOveride); diff --git a/aq_programmer.h b/aq_programmer.h index 364d257..3bdd160 100644 --- a/aq_programmer.h +++ b/aq_programmer.h @@ -119,6 +119,9 @@ void queueGetProgramData(emulation_type source_type, struct aqualinkdata *aq_dat //void queueGetExtendedProgramData(emulation_type source_type, struct aqualinkdata *aq_data, bool labels); unsigned char pop_aq_cmd(struct aqualinkdata *aq_data); +void waitForSingleThreadOrTerminate(struct programmingThreadCtrl *threadCtrl, program_type type); +void cleanAndTerminateThread(struct programmingThreadCtrl *threadCtrl); + //void force_queue_delete() // Yes I want compiler warning if this is used. @@ -137,11 +140,6 @@ int RPM_check(pump_type type, int value, struct aqualinkdata *aqdata); const char *ptypeName(program_type type); const char *programtypeDisplayName(program_type type); -// These shouldn't be here, but just for the PDA AQ PROGRAMMER -void send_cmd(unsigned char cmd); -bool push_aq_cmd(unsigned char cmd); -void waitForSingleThreadOrTerminate(struct programmingThreadCtrl *threadCtrl, program_type type); -void cleanAndTerminateThread(struct programmingThreadCtrl *threadCtrl); -bool waitForMessage(struct aqualinkdata *aq_data, char* message, int numMessageReceived); + #endif diff --git a/aq_serial.c b/aq_serial.c index 5e29b92..068ac84 100644 --- a/aq_serial.c +++ b/aq_serial.c @@ -51,7 +51,10 @@ const char* get_packet_type(unsigned char* packet , int length) switch (packet[PKT_CMD]) { case CMD_ACK: - return "Ack"; + if (packet[5] == NUL) + return "Ack"; + else + return "Ack w/ Command"; break; case CMD_STATUS: return "Status"; @@ -919,7 +922,7 @@ int get_packet(int fd, unsigned char* packet) } LOG(RSSD_LOG,LOG_DEBUG_SERIAL, "Serial read %d bytes\n",index); - if (_aqconfig_.log_protocol_packets) + if (_aqconfig_.log_protocol_packets || getLogLevel(RSSD_LOG) >= LOG_DEBUG_SERIAL) logPacketRead(packet, index); // Return the packet length. return index; diff --git a/aqualinkd.c b/aqualinkd.c index 67b4e4e..cb57918 100644 --- a/aqualinkd.c +++ b/aqualinkd.c @@ -1235,6 +1235,14 @@ int main(int argc, char *argv[]) LOG(AQUA_LOG,LOG_NOTICE, "Config light_pgm_mode = %.2f\n", _aqconfig_.light_programming_mode); LOG(AQUA_LOG,LOG_NOTICE, "Debug RS485 protocol = %s\n", bool2text(_aqconfig_.log_protocol_packets)); LOG(AQUA_LOG,LOG_NOTICE, "Debug RS485 protocol raw = %s\n", bool2text(_aqconfig_.log_raw_bytes)); + if ( _aqconfig_.RSSD_LOG_filter != NUL) + LOG(AQUA_LOG,LOG_NOTICE, "Log RS485 packets from = 0x%02hhx\n", _aqconfig_.RSSD_LOG_filter + + + + + + ); //LOG(AQUA_LOG,LOG_NOTICE, "Use PDA 4 auxiliary info = %s\n", bool2text(_aqconfig_.use_PDA_auxiliary)); //LOG(AQUA_LOG,LOG_NOTICE, "Read Pentair Packets = %s\n", bool2text(_aqconfig_.read_pentair_packets)); // logMessage (LOG_NOTICE, "Config serial_port = %s\n", config_parameters->serial_port); @@ -1861,52 +1869,6 @@ void main_loop() if (getProtocolType(packet_buffer) == JANDY) { _aqualink_data.updated = processJandyPacket(packet_buffer, packet_length, &_aqualink_data); - /* - // We received the ack from a Jandy device we are interested in - if (packet_buffer[PKT_DEST] == DEV_MASTER && interestedInNextAck != DRS_NONE) - { - if (interestedInNextAck == DRS_SWG) - { - _aqualink_data.updated = processPacketFromSWG(packet_buffer, packet_length, &_aqualink_data); - } - else if (interestedInNextAck == DRS_EPUMP) - { - _aqualink_data.updated = processPacketFromJandyPump(packet_buffer, packet_length, &_aqualink_data); - } - interestedInNextAck = DRS_NONE; - previous_packet_to = NUL; - } - // We were expecting an ack from Jandy device but didn't receive it. - else if (packet_buffer[PKT_DEST] != DEV_MASTER && interestedInNextAck != DRS_NONE ) - { - if (interestedInNextAck == DRS_SWG && _aqualink_data.ar_swg_device_status != SWG_STATUS_OFF) - { // SWG Offline - processMissingAckPacketFromSWG(previous_packet_to, &_aqualink_data); - } - else if (interestedInNextAck == DRS_EPUMP) - { // ePump offline - processMissingAckPacketFromJandyPump(previous_packet_to, &_aqualink_data); - } - interestedInNextAck = DRS_NONE; - previous_packet_to = NUL; - } - else if (READ_RSDEV_SWG && packet_buffer[PKT_DEST] == SWG_DEV_ID) - { - interestedInNextAck = DRS_SWG; - _aqualink_data.updated = processPacketToSWG(packet_buffer, packet_length, &_aqualink_data, _aqconfig_.swg_zero_ignore); - previous_packet_to = packet_buffer[PKT_DEST]; - } - else if (READ_RSDEV_ePUMP && packet_buffer[PKT_DEST] >= JANDY_DEC_PUMP_MIN && packet_buffer[PKT_DEST] <= JANDY_DEC_PUMP_MAX) - { - interestedInNextAck = DRS_EPUMP; - _aqualink_data.updated = processPacketToJandyPump(packet_buffer, packet_length, &_aqualink_data); - previous_packet_to = packet_buffer[PKT_DEST]; - } - else - { - interestedInNextAck = DRS_NONE; - previous_packet_to = NUL; - }*/ } // Process Pentair Device Packed (pentair have to & from in message, so no need to) else if (getProtocolType(packet_buffer) == PENTAIR && READ_RSDEV_vsfPUMP) { diff --git a/config.c b/config.c index 6b8ba40..83d9394 100644 --- a/config.c +++ b/config.c @@ -79,6 +79,7 @@ void init_parameters (struct aqconfig * parms) //parms->device_id = strtoul(DEFAULT_DEVICE_ID, &p, 16); parms->device_id = strtoul(DEFAULT_DEVICE_ID, NULL, 16); parms->rssa_device_id = NUL; + parms->RSSD_LOG_filter = NUL; parms->paneltype_mask = 0; #if defined AQ_ONETOUCH || defined AQ_IAQTOUCH parms->extended_device_id = NUL; @@ -381,6 +382,9 @@ bool setConfigValue(struct aqualinkdata *aqdata, char *param, char *value) { } else if (strncasecmp(param, "rssa_device_id", 14) == 0) { _aqconfig_.rssa_device_id = strtoul(cleanalloc(value), NULL, 16); rtn=true; + } else if (strncasecmp(param, "RSSD_LOG_filter", 15) == 0) { + _aqconfig_.RSSD_LOG_filter = strtoul(cleanalloc(value), NULL, 16); + rtn=true; #if defined AQ_ONETOUCH || defined AQ_IAQTOUCH } else if (strncasecmp (param, "extended_device_id_programming", 30) == 0) { // Has to be before the below. diff --git a/config.h b/config.h index e4cff04..a4b4eb1 100644 --- a/config.h +++ b/config.h @@ -77,6 +77,7 @@ struct aqconfig bool display_warnings_web; bool log_protocol_packets; // Read & Write as packets bool log_raw_bytes; // Read as bytes + unsigned char RSSD_LOG_filter; //bool log_raw_RS_bytes; bool readahead_b4_write; bool mqtt_timed_update; diff --git a/json_messages.c b/json_messages.c index df533bd..ea8865d 100644 --- a/json_messages.c +++ b/json_messages.c @@ -501,6 +501,9 @@ int build_aqualink_status_JSON(struct aqualinkdata *aqdata, char* buffer, int si if ( aqdata->orp != TEMP_UNKNOWN ) length += sprintf(buffer+length, ",\"chem_orp\":\"%d\"",aqdata->orp ); + if ( READ_RSDEV_SWG ) + length += sprintf(buffer+length, ",\"swg_fullstatus\": \"%d\"", aqdata->ar_swg_device_status); + length += sprintf(buffer+length, ",\"leds\":{" ); for (i=0; i < aqdata->total_buttons; i++) { diff --git a/packetLogger.c b/packetLogger.c index 631f688..13a736c 100644 --- a/packetLogger.c +++ b/packetLogger.c @@ -13,6 +13,7 @@ static FILE *_byteLogFile = NULL; static bool _logfile_raw = false; static bool _logfile_packets = false; //static bool _includePentair = false; +static unsigned char _lastReadFrom = NUL; void _logPacket(int16_t from, unsigned char *packet_buffer, int packet_length, bool error, bool force, bool is_read); int _beautifyPacket(char *buff, unsigned char *packet_buffer, int packet_length, bool error, bool is_read); @@ -95,9 +96,29 @@ void debuglogPacket(int16_t from, unsigned char *packet_buffer, int packet_lengt void _logPacket(int16_t from, unsigned char *packet_buffer, int packet_length, bool error, bool force, bool is_read) { // No point in continuing if loglevel is < debug_serial and not writing to file - if ( force == false && error == false && getLogLevel(from) < LOG_DEBUG_SERIAL /*&& _logfile_raw == false*/ && _logfile_packets == false) { + if ( force == false && + error == false && + getLogLevel(from) < LOG_DEBUG_SERIAL && + /*_logfile_raw == false &&*/ + _logfile_packets == false ) { return; } + + if ( _aqconfig_.RSSD_LOG_filter != NUL ) { + if (is_read) { + _lastReadFrom = packet_buffer[PKT_DEST]; + if ( is_read && _aqconfig_.RSSD_LOG_filter != packet_buffer[PKT_DEST]) { + return; + } + } else if (!is_read && _lastReadFrom != _aqconfig_.RSSD_LOG_filter) // Must be write + return; +/* + if ( is_read && _aqconfig_.RSSD_LOG_filter != packet_buffer[PKT_DEST]) { + return; + } +*/ + } + char buff[1000]; _beautifyPacket(buff, packet_buffer, packet_length, error, is_read); @@ -110,6 +131,8 @@ void _logPacket(int16_t from, unsigned char *packet_buffer, int packet_length, b else { if (force) LOG(from,LOG_DEBUG, "%s", buff); + //else if (is_read && _aqconfig_.serial_debug_filter != NUL && _aqconfig_.serial_debug_filter == packet_buffer[PKT_DEST]) + // LOG(from,LOG_NOTICE, "%s", buff); else LOG(from,LOG_DEBUG_SERIAL, "%s", buff); } diff --git a/pda.c b/pda.c index d66c7a0..c14e84e 100644 --- a/pda.c +++ b/pda.c @@ -32,10 +32,6 @@ #include "devices_jandy.h" #include "rs_msg_utils.h" -// This needs to be tested on a real panel. -//#define NEW_UPDATE_METHOD - - // static struct aqualinkdata _aqualink_data; static struct aqualinkdata *_aqualink_data; static unsigned char _last_packet_type; @@ -137,31 +133,30 @@ void set_pda_led(struct aqualinkled *led, char state) } } -#ifdef NEW_UPDATE_METHOD void equiptment_update_cycle(int eqID) { // If you have a -1, it's a reset to clear / update information. int i; static uint32_t update_equiptment_bitmask = 0; if (eqID == -1) { - LOG(PDA_LOG,LOG_DEBUG, "(not implimented) Start new equiptment cycle\n"); + LOG(PDA_LOG,LOG_DEBUG, "Start new equiptment cycle\n"); - for (i=0; i < _aqualink_data->total_buttons; i++) { + for (i=0; i < _aqualink_data->total_buttons - 2 ; i++) { // total_buttons - 2 because we don't get heaters in this cycle if ((update_equiptment_bitmask & (1 << (i+1))) != (1 << (i+1))) { if (_aqualink_data->aqbuttons[i].led->state != OFF) { _aqualink_data->aqbuttons[i].led->state = OFF; _aqualink_data->updated = true; - LOG(PDA_LOG,LOG_DEBUG, "(not implimented) Turn off equiptment id %d %s not seen in last cycle\n", i, _aqualink_data->aqbuttons[i].name); + LOG(PDA_LOG,LOG_DEBUG, "Turn off equiptment id %d %s not seen in last cycle\n", i, _aqualink_data->aqbuttons[i].name); } } } update_equiptment_bitmask = 0; } else { update_equiptment_bitmask |= (1 << (eqID+1)); - LOG(PDA_LOG,LOG_DEBUG, "(not implimented) Added equiptment id %d %s to updated cycle\n", eqID, _aqualink_data->aqbuttons[eqID].name); + LOG(PDA_LOG,LOG_DEBUG, "Added equiptment id %d %s to updated cycle\n", eqID, _aqualink_data->aqbuttons[eqID].name); } } -#endif + void pass_pda_equiptment_status_item_OLD(char *msg) { @@ -250,10 +245,8 @@ void pass_pda_equiptment_status_item_OLD(char *msg) { if (strcasecmp(msg, _aqualink_data->aqbuttons[i].label) == 0) { -#ifdef NEW_UPDATE_METHOD equiptment_update_cycle(i); -#endif - LOG(PDA_LOG,LOG_DEBUG, "*** Found Status for %s = '%.*s'\n", _aqualink_data->aqbuttons[i].label, AQ_MSGLEN, msg); + LOG(PDA_LOG,LOG_DEBUG, "Status for %s = '%.*s'\n", _aqualink_data->aqbuttons[i].label, AQ_MSGLEN, msg); // It's on (or delayed) if it's listed here. if (_aqualink_data->aqbuttons[i].led->state != FLASH) { @@ -414,17 +407,21 @@ void setSingleDeviceMode() void process_pda_packet_msg_long_set_time(const char *msg) { - /* +/* // NOT Working at moment, also wrong format LOG(PDA_LOG,LOG_DEBUG, "process_pda_packet_msg_long_set_temp\n"); if (msg[4] == '/' && msg[7] == '/'){ //DATE - rsm_strncpycut(_aqualink_data->date, msg, AQ_MSGLEN-1, AQ_MSGLEN-1); + //rsm_strncpycut(_aqualink_data->date, msg, AQ_MSGLEN-1, AQ_MSGLEN-1); + strncpy(_aqualink_data->date, msg + 11, 3); } else if (msg[6] == ':' && msg[11] == 'M') { // TIME - rsm_strncpycut(_aqualink_data->time, msg, AQ_MSGLEN-1, AQ_MSGLEN-1); + //rsm_strncpycut(_aqualink_data->time, msg, AQ_MSGLEN-1, AQ_MSGLEN-1); + if (msg[4] == ' ') + strncpy(_aqualink_data->time, msg + 5, 6); + else } - */ + */ } void process_pda_packet_msg_long_set_temp(const char *msg) @@ -538,6 +535,25 @@ void process_pda_packet_msg_long_unknown(const char *msg) } } +void pda_pump_update(struct aqualinkdata *aq_data, int updated) { + const int bitmask[MAX_PUMPS] = {1,2,4,8}; + static unsigned char updates = '\0'; + int i; + + if (updated == -1) { + for(i=0; i < MAX_PUMPS; i++) { + if ((updates & bitmask[i]) != bitmask[i]) { + aq_data->pumps[i].rpm = PUMP_OFF_RPM; + aq_data->pumps[i].gpm = PUMP_OFF_GPM; + aq_data->pumps[i].watts = PUMP_OFF_WAT; + } + } + updates = '\0'; + } else if (updated >=0 && updated < MAX_PUMPS) { + updates |= bitmask[updated]; + } +} + void log_pump_information() { int i; //bool rtn = false; @@ -578,9 +594,10 @@ void log_pump_information() { for (i=0; i < _aqualink_data->num_pumps; i++) { if (_aqualink_data->pumps[i].pumpIndex == pump_index) { + LOG(PDA_LOG,LOG_INFO, "PDA Pump label: %s Index: %d, ID: %d, RPM: %d, Watts: %d, GPM: %d\n",_aqualink_data->pumps[i].button->name, i ,pump_index,pump_index,rpm,watts,gpm); //printf("**** FOUND PUMP %d at index %d *****\n",pump_index,i); //aq_data->pumps[i].updated = true; - //pump_update(_aqualink_data, i); + pda_pump_update(_aqualink_data, i); _aqualink_data->pumps[i].rpm = rpm; _aqualink_data->pumps[i].watts = watts; _aqualink_data->pumps[i].gpm = gpm; @@ -594,27 +611,19 @@ void log_pump_information() { _aqualink_data->pumps[i].pumpType = EPUMP; } //printf ("Set Pump Type to %d\n",aq_data->pumps[i].pumpType); + return; } } + LOG(PDA_LOG,LOG_ERR, "PDA Could not find config for Pump %s, Index %d, RPM %d, Watts %d, GPM %d\n",m3_line,pump_index,rpm,watts,gpm); } } void process_pda_packet_msg_long_equiptment_status(const char *msg_line, int lineindex, bool reset) { - //pass_pda_equiptment_status_item(msg); - -#ifdef NEW_UPDATE_METHOD - if (reset) { - equiptment_update_cycle(-1); - LOG(PDA_LOG,LOG_DEBUG, "*************** Equiptment reset\n"); - return; - } -#endif - - LOG(PDA_LOG,LOG_DEBUG, "*************** Pass Equiptment msg '%.16s'\n", msg_line); + LOG(PDA_LOG,LOG_DEBUG, "*** Pass Equiptment msg '%.16s'\n", msg_line); if (msg_line == NULL) { - LOG(PDA_LOG,LOG_DEBUG, "*************** Pass Equiptment msg is NULL do nothing\n"); + LOG(PDA_LOG,LOG_DEBUG, "*** Pass Equiptment msg is NULL do nothing\n"); return; } @@ -643,16 +652,8 @@ void process_pda_packet_msg_long_equiptment_status(const char *msg_line, int lin // FILTER PUMP // CLEANER // - // Equipment Status - // - // Intelliflo VS 1 - // RPM: 1700 - // Watts: 367 - // - // - // - // - // + + // VSP Pumps are not read here, since they are over multiple lines. // Check message for status of device // Loop through all buttons and match the PDA text. @@ -678,53 +679,29 @@ void process_pda_packet_msg_long_equiptment_status(const char *msg_line, int lin _aqualink_data->swg_ppm = atoi(index + strlen(MSG_SWG_PPM)); //if (_aqualink_data->ar_swg_status == SWG_STATUS_OFF) {_aqualink_data->ar_swg_status = SWG_STATUS_ON;} LOG(PDA_LOG,LOG_DEBUG, "SALT = %d\n", _aqualink_data->swg_ppm); - } - else if ((index = rsm_strnstr(msg, MSG_PMP_RPM, AQ_MSGLEN)) != NULL) - { // Default to pump 0, should check for correct pump - _aqualink_data->pumps[0].rpm = atoi(index + strlen(MSG_PMP_RPM)); - LOG(PDA_LOG,LOG_DEBUG, "RPM = %d\n", _aqualink_data->pumps[0].rpm); - log_pump_information(); - } - else if ((index = rsm_strnstr(msg, MSG_PMP_WAT, AQ_MSGLEN)) != NULL) - { // Default to pump 0, should check for correct pump - _aqualink_data->pumps[0].watts = atoi(index + strlen(MSG_PMP_WAT)); - LOG(PDA_LOG,LOG_DEBUG, "Watts = %d\n", _aqualink_data->pumps[0].watts); - log_pump_information(); - } - else if ((index = rsm_strnstr(msg, MSG_PMP_GPM, AQ_MSGLEN)) != NULL) - { // Default to pump 0, should check for correct pump - _aqualink_data->pumps[0].gpm = atoi(index + strlen(MSG_PMP_GPM)); - LOG(PDA_LOG,LOG_DEBUG, "GPM = %d\n", _aqualink_data->pumps[0].gpm); - log_pump_information(); - } - else if ((index = rsm_strnstr(msg, "(Offline)", AQ_MSGLEN)) != NULL) - { // Default to pump 0, should check for correct pump - //_aqualink_data->pumps[0].gpm = atoi(index + strlen(MSG_PMP_GPM)); - LOG(PDA_LOG,LOG_DEBUG, "Pump offline\n"); - log_pump_information(); - } + } else if (rsm_strncmp(msg_line, "POOL HEAT ENA",AQ_MSGLEN) == 0) { _aqualink_data->aqbuttons[_aqualink_data->pool_heater_index].led->state = ENABLE; LOG(PDA_LOG,LOG_DEBUG, "Pool Hearter is enabled\n"); + //equiptment_update_cycle(_aqualink_data->pool_heater_index); } else if (rsm_strncmp(msg_line, "SPA HEAT ENA",AQ_MSGLEN) == 0) { _aqualink_data->aqbuttons[_aqualink_data->spa_heater_index].led->state = ENABLE; - LOG(PDA_LOG,LOG_DEBUG, "Pool Hearter is enabled\n"); + LOG(PDA_LOG,LOG_DEBUG, "Spa Hearter is enabled\n"); + //equiptment_update_cycle(_aqualink_data->spa_heater_index); } else { for (i = 0; i < _aqualink_data->total_buttons; i++) { //LOG(PDA_LOG,LOG_DEBUG, "*** check msg '%s' against '%s'\n",labelBuff,_aqualink_data->aqbuttons[i].label); - LOG(PDA_LOG,LOG_DEBUG, "*** check msg '%.*s' against '%s'\n",AQ_MSGLEN,msg_line,_aqualink_data->aqbuttons[i].label); + //LOG(PDA_LOG,LOG_DEBUG, "*** check msg '%.*s' against '%s'\n",AQ_MSGLEN,msg_line,_aqualink_data->aqbuttons[i].label); if (rsm_strncmp(msg_line, _aqualink_data->aqbuttons[i].label, AQ_MSGLEN-1) == 0) //if (rsm_strcmp(_aqualink_data->aqbuttons[i].label, labelBuff) == 0) { -#ifdef NEW_UPDATE_METHOD equiptment_update_cycle(i); -#endif LOG(PDA_LOG,LOG_DEBUG, "Found Status for %s = '%.*s'\n", _aqualink_data->aqbuttons[i].label, AQ_MSGLEN, msg_line); // It's on (or delayed) if it's listed here. if (_aqualink_data->aqbuttons[i].led->state != FLASH) @@ -808,211 +785,138 @@ bool process_pda_packet(unsigned char *packet, int length) //int i; char *msg; int index = -1; - static bool equiptment_updated = false; - //static bool init = false; - - if (getLogLevel(PDA_LOG) == LOG_DEBUG) { - char buff[1024]; - beautifyPacket(buff, packet, length, true); - LOG(PDA_LOG,LOG_DEBUG, "%s", buff); - } + static bool equiptment_update_loop = false; + static bool read_equiptment_menu = false; -/* - // Some panels don't give the startup messages we used to key the init sequence, so check here - // need to put this in a better spot some time in the future - if (_initWithRS == false && pda_m_type() == PM_FW_VERSION && packet[PKT_CMD] == CMD_PDA_CLEAR ) { - _initWithRS == true; - queueGetProgramData(AQUAPDA, _aqualink_data); - } -*/ - process_pda_menu_packet(packet, length); + process_pda_menu_packet(packet, length, in_programming_mode(_aqualink_data)); - // NSF. - - //_aqualink_data->last_msg_was_status = false; - - // debugPacketPrint(0x00, packet, length); switch (packet[PKT_CMD]) { - - case CMD_ACK: - LOG(PDA_LOG,LOG_DEBUG, "RS Received ACK length %d.\n", length); - //if (init == false) - /* - if (_initWithRS == false) - { - LOG(PDA_LOG,LOG_DEBUG, "Running PDA_INIT\n"); - aq_programmer(AQ_PDA_INIT, NULL, _aqualink_data); - //init = true; - }*/ + case CMD_ACK: + LOG(PDA_LOG,LOG_DEBUG, "RS Received ACK length %d.\n", length); break; - case CMD_STATUS: - _aqualink_data->last_display_message[0] = '\0'; - if (equiptment_updated == true && pda_m_type() != PM_EQUIPTMENT_STATUS) - { - process_pda_packet_msg_long_equiptment_status(NULL, 0, true); - equiptment_updated = false; - } else if (_initWithRS == false && pda_m_type() == PM_FW_VERSION) { - _initWithRS = true; - LOG(PDA_LOG,LOG_DEBUG, "**** PDA INIT ****\n"); - //aq_programmer(AQ_PDA_INIT, NULL, _aqualink_data); - queueGetProgramData(AQUAPDA, _aqualink_data); - } -/* - // If we get a status packet, and we are on the status menu, this is a list of what's on - // or pending so unless flash turn everything off, and just turn on items that are listed. - // This is the only way to update a device that's been turned off by a real PDA / keypad. - // Note: if the last line of the status menu is present it may be cut off - if (pda_m_type() == PM_EQUIPTMENT_STATUS) - { + case CMD_PDA_CLEAR: + read_equiptment_menu = false; // Reset the have read menu flag, since this is new menu. + break; - if (_aqualink_data->frz_protect_state == ON) - _aqualink_data->frz_protect_state = ENABLE; - - //if (_aqualink_data->ar_swg_status == SWG_STATUS_ON) - // _aqualink_data->ar_swg_status = SWG_STATUS_OFF; - - if (_aqualink_data->swg_led_state == ON) - setSWGenabled(_aqualink_data); - - // Need to remove this when new way works. -#ifndef NEW_UPDATE_METHOD - if (pda_m_line(PDA_LINES - 1)[0] == '\0') + case CMD_STATUS: + _aqualink_data->last_display_message[0] = '\0'; + if (equiptment_update_loop == false && pda_m_type() == PM_EQUIPTMENT_STATUS) { - for (i = 0; i < _aqualink_data->total_buttons; i++) - { - if (_aqualink_data->aqbuttons[i].led->state != FLASH) - { - _aqualink_data->aqbuttons[i].led->state = OFF; - } - } + LOG(PDA_LOG,LOG_DEBUG, "**** PDA Start new Equiptment loop ****\n"); + equiptment_update_loop = true; + // Need to process the equiptment full MENU here } - else + else if (read_equiptment_menu == false && equiptment_update_loop == true && pda_m_type() == PM_EQUIPTMENT_STATUS) { - LOG(PDA_LOG,LOG_DEBUG, "PDA Equipment status may be truncated.\n"); + LOG(PDA_LOG,LOG_DEBUG, "**** PDA read Equiptment page ****\n"); + log_pump_information(); + read_equiptment_menu = true; } + else if (equiptment_update_loop == true && pda_m_type() != PM_EQUIPTMENT_STATUS) + { + LOG(PDA_LOG,LOG_DEBUG, "**** PDA End Equiptment loop ****\n"); + // Moved onto different MENU. Probably need to update any pump changes + equiptment_update_loop = false; - for (i = 1; i < PDA_LINES; i++) - pass_pda_equiptment_status_item(pda_m_line(i)); -#else - if (!equiptment_updated) { - equiptment_updated = true; - for (i = 1; i < PDA_LINES; i++) { - pass_pda_equiptment_status_item(pda_m_line(i)); + // End of equiptment status chain of menus, reset any pump or equiptment that wasn't listed in menus as long as we are not in programming mode + if (!in_programming_mode(_aqualink_data) ) { + pda_pump_update(_aqualink_data, -1); + equiptment_update_cycle(-1); } - } -#endif - } - if (pda_m_type() == PM_FREEZE_PROTECT_DEVICES) - { - process_pda_freeze_protect_devices(); - }*/ - break; - case CMD_MSG_LONG: - { - //printf ("*******************************************************************************************\n"); - //printf ("menu type %d\n",pda_m_type()); - - msg = (char *)packet + PKT_DATA + 1; - index = packet[PKT_DATA] & 0xF; - - //strcpy(_aqualink_data->last_message, msg); - - if (packet[PKT_DATA] == 0x82) - { // Air & Water temp is always this ID - process_pda_packet_msg_long_temp(msg); -#ifdef NEW_UPDATE_METHOD -// if (!equiptment_updated) { -// equiptment_update_cycle(-1); // Reset equiptment cycle -// equiptment_updated = false; -// } -#endif - } - else if (packet[PKT_DATA] == 0x40) - { // Time is always on this ID - process_pda_packet_msg_long_time(msg); - // If it wasn't a specific msg, (above) then run through and see what kind - // of message it is depending on the PDA menu. Note don't process EQUIPTMENT - // STATUS menu here, wait until a CMD_STATUS is received. - } - else { - switch (pda_m_type()) { - case PM_EQUIPTMENT_CONTROL: - process_pda_packet_msg_long_equipment_control(msg); - break; - case PM_HOME: - case PM_BUILDING_HOME: - process_pda_packet_msg_long_home(msg); - break; - case PM_EQUIPTMENT_STATUS: - process_pda_packet_msg_long_equiptment_status(msg, index, false); - equiptment_updated = true; - break; - case PM_SET_TEMP: - process_pda_packet_msg_long_set_temp(msg); - break; - case PM_SPA_HEAT: - process_pda_packet_msg_long_spa_heat(msg); - break; - case PM_POOL_HEAT: - process_pda_packet_msg_long_pool_heat(msg); - break; - case PM_FREEZE_PROTECT: - process_pda_packet_msg_long_freeze_protect(msg); - break; - case PM_AQUAPURE: - process_pda_packet_msg_long_SWG(msg); - break; - case PM_AUX_LABEL_DEVICE: - process_pda_packet_msg_long_level_aux_device(msg); - break; - - case PM_SET_TIME: - process_pda_packet_msg_long_set_time(msg); - break; - - //case PM_FW_VERSION: - // process_pda_packet_msg_long_FW_version(msg); - //break; - case PM_UNKNOWN: - default: - process_pda_packet_msg_long_unknown(msg); - break; - } - } - - // printf("** Line index='%d' Highligh='%s' Message='%.*s'\n",pda_m_hlightindex(), pda_m_hlight(), AQ_MSGLEN, msg); - LOG(PDA_LOG,LOG_INFO, "PDA Menu '%d' Selectedline '%s', Last line received '%.*s'\n", pda_m_type(), pda_m_hlight(), AQ_MSGLEN, msg); - break; - } - case CMD_PDA_0x1B: - { - LOG(PDA_LOG,LOG_DEBUG, "**** CMD_PDA_0x1B ****\n"); - // We get two of these on startup, one with 0x00 another with 0x01 at index 4. Just act on one. - // Think this is PDA finishd showing startup screen - if (packet[4] == 0x00) { - if (_initWithRS == false) + } + else if (_initWithRS == false && pda_m_type() == PM_FW_VERSION) { _initWithRS = true; LOG(PDA_LOG,LOG_DEBUG, "**** PDA INIT ****\n"); - //aq_programmer(AQ_PDA_INIT, NULL, _aqualink_data); + //printf("**** PDA INIT PUT BACK IN ****\n"); queueGetProgramData(AQUAPDA, _aqualink_data); - delay(50); // Make sure this one runs first. -#ifdef BETA_PDA_AUTOLABEL - if (_aqconfig_->use_panel_aux_labels) - aq_programmer(AQ_GET_AUX_LABELS, NULL, _aqualink_data); -#endif - aq_programmer(AQ_PDA_WAKE_INIT, NULL, _aqualink_data); - } else { - LOG(PDA_LOG,LOG_DEBUG, "**** PDA WAKE INIT ****\n"); - aq_programmer(AQ_PDA_WAKE_INIT, NULL, _aqualink_data); } - } - } - break; + break; + + case CMD_MSG_LONG: + msg = (char *)packet + PKT_DATA + 1; + index = packet[PKT_DATA] & 0xF; + if (packet[PKT_DATA] == 0x82) + { // Air & Water temp is always this ID + process_pda_packet_msg_long_temp(msg); + } + else if (packet[PKT_DATA] == 0x40) + { // Time is always on this ID + process_pda_packet_msg_long_time(msg); + } + else + { + switch (pda_m_type()) + { + case PM_EQUIPTMENT_CONTROL: + process_pda_packet_msg_long_equipment_control(msg); + break; + case PM_HOME: + case PM_BUILDING_HOME: + process_pda_packet_msg_long_home(msg); + break; + case PM_EQUIPTMENT_STATUS: + process_pda_packet_msg_long_equiptment_status(msg, index, false); + break; + case PM_SET_TEMP: + process_pda_packet_msg_long_set_temp(msg); + break; + case PM_SPA_HEAT: + process_pda_packet_msg_long_spa_heat(msg); + break; + case PM_POOL_HEAT: + process_pda_packet_msg_long_pool_heat(msg); + break; + case PM_FREEZE_PROTECT: + process_pda_packet_msg_long_freeze_protect(msg); + break; + case PM_AQUAPURE: + process_pda_packet_msg_long_SWG(msg); + break; + case PM_AUX_LABEL_DEVICE: + process_pda_packet_msg_long_level_aux_device(msg); + break; + case PM_SET_TIME: + process_pda_packet_msg_long_set_time(msg); + break; + //case PM_FW_VERSION: + // process_pda_packet_msg_long_FW_version(msg); + //break; + case PM_UNKNOWN: + default: + process_pda_packet_msg_long_unknown(msg); + break; + } + } + break; + + case CMD_PDA_0x1B: + LOG(PDA_LOG,LOG_DEBUG, "**** CMD_PDA_0x1B ****\n"); + // We get two of these on startup, one with 0x00 another with 0x01 at index 4. Just act on one. + // Think this is PDA finishd showing startup screen + if (packet[4] == 0x00) { + if (_initWithRS == false) + { + _initWithRS = true; + LOG(PDA_LOG,LOG_DEBUG, "**** PDA INIT ****\n"); + //aq_programmer(AQ_PDA_INIT, NULL, _aqualink_data); + queueGetProgramData(AQUAPDA, _aqualink_data); + delay(50); // Make sure this one runs first. +#ifdef BETA_PDA_AUTOLABEL + if (_aqconfig_->use_panel_aux_labels) + aq_programmer(AQ_GET_AUX_LABELS, NULL, _aqualink_data); +#endif + aq_programmer(AQ_PDA_WAKE_INIT, NULL, _aqualink_data); + } else { + LOG(PDA_LOG,LOG_DEBUG, "**** PDA WAKE INIT ****\n"); + aq_programmer(AQ_PDA_WAKE_INIT, NULL, _aqualink_data); + } + } + break; } if (packet[PKT_CMD] == CMD_MSG_LONG || packet[PKT_CMD] == CMD_PDA_HIGHLIGHT || @@ -1022,8 +926,14 @@ bool process_pda_packet(unsigned char *packet, int length) // We processed the next message, kick any threads waiting on the message. kick_aq_program_thread(_aqualink_data, AQUAPDA); } - + + // HERE AS A TEST. NEED TO FULLY TEST THIS IS GOES TO PROD. + else if (packet[PKT_CMD] == CMD_STATUS) + { + kick_aq_program_thread(_aqualink_data, AQUAPDA); + } return rtn; } + diff --git a/pda_aq_programmer.c b/pda_aq_programmer.c index 64a4e92..f8689a4 100644 --- a/pda_aq_programmer.c +++ b/pda_aq_programmer.c @@ -33,6 +33,7 @@ #include "pda_aq_programmer.h" #include "config.h" #include "aq_panel.h" +#include "rs_msg_utils.h" #ifdef AQ_DEBUG @@ -123,7 +124,8 @@ bool wait_pda_selected_item(struct aqualinkdata *aq_data) } bool waitForPDAnextMenu(struct aqualinkdata *aq_data) { - waitForPDAMessageType(aq_data,CMD_PDA_CLEAR,10); + if (!waitForPDAMessageType(aq_data,CMD_PDA_CLEAR,10)) + return false; return waitForPDAMessageTypes(aq_data,CMD_PDA_HIGHLIGHT,CMD_PDA_HIGHLIGHTCHARS,15); } @@ -250,10 +252,12 @@ bool find_pda_menu_item(struct aqualinkdata *aq_data, char *menuText, int charli if ((min_index != -1) && ((index - i) > (i - min_index + max_index - index + 1))) { cnt = i - min_index + max_index - index + 1; for (i=0; i < cnt; i++) { + waitfor_queue2empty(); send_cmd(KEY_PDA_UP); } } else { for (i=pda_m_hlightindex(); i < index; i++) { + waitfor_queue2empty(); send_cmd(KEY_PDA_DOWN); } } @@ -261,10 +265,12 @@ bool find_pda_menu_item(struct aqualinkdata *aq_data, char *menuText, int charli if ((min_index != -1) && ((i - index) > (index - min_index + max_index - i + 1))) { cnt = i - min_index + max_index - index + 1; for (i=0; i < cnt; i++) { + waitfor_queue2empty(); send_cmd(KEY_PDA_UP); } } else { for (i=pda_m_hlightindex(); i > index; i--) { + waitfor_queue2empty(); send_cmd(KEY_PDA_UP); } } @@ -291,7 +297,7 @@ bool _select_pda_menu_item(struct aqualinkdata *aq_data, char *menuText, bool wa LOG(PDA_LOG,LOG_DEBUG, "PDA Device programmer selected menu item '%s'\n",menuText); if (waitForNextMenu) - waitForPDAnextMenu(aq_data); + return waitForPDAnextMenu(aq_data); return true; } @@ -306,6 +312,7 @@ bool _select_pda_menu_item(struct aqualinkdata *aq_data, char *menuText, bool wa // https://www.jandy.com/-/media/zodiac/global/downloads/h/h0574200.pdf // and 6594 - AquaLink RS Control Panel Installation Manual // https://www.jandy.com/-/media/zodiac/global/downloads/0748-91071/6594.pdf + bool goto_pda_menu(struct aqualinkdata *aq_data, pda_menu_type menu) { bool ret = true; int cnt = 0; @@ -600,8 +607,10 @@ void *set_aqualink_PDA_init( void *ptr ) //printf("****** Version '%s' ********\n",aq_data->version); LOG(PDA_LOG,LOG_DEBUG, "PDA type=%d, version=%s\n", _PDA_Type, aq_data->version); // don't wait for version menu to time out press back to get to home menu faster - send_cmd(KEY_PDA_BACK); - if (! waitForPDAnextMenu(aq_data)) { + //send_cmd(KEY_PDA_BACK); + //if (! waitForPDAnextMenu(aq_data)) { // waitForPDAnextMenu waits for highlight chars, which we don't get on normal menu + + if (! waitForPDAMessageType(aq_data,CMD_PDA_CLEAR,10)) { LOG(PDA_LOG,LOG_ERR, "PDA Init :- wait for next menu failed\n"); } } @@ -626,6 +635,8 @@ void *set_aqualink_PDA_init( void *ptr ) pda_reset_sleep(); + goto_pda_menu(aq_data, PM_HOME); + cleanAndTerminateThread(threadCtrl); // just stop compiler error, ptr is not valid as it's just been freed @@ -678,7 +689,11 @@ bool get_PDA_aqualink_pool_spa_heater_temps(struct aqualinkdata *aq_data) { // Get heater setpoints if (! goto_pda_menu(aq_data, PM_SET_TEMP)) { - return false; + LOG(PDA_LOG,LOG_ERR, "Could not get heater setpoints, trying again!\n"); + // Going to try this twice. + if (! goto_pda_menu(aq_data, PM_SET_TEMP)) { + return false; + } } return true; @@ -715,19 +730,23 @@ bool waitForPDAMessageHighlight(struct aqualinkdata *aq_data, int highlighIndex, } -bool waitForPDAMessageType(struct aqualinkdata *aq_data, unsigned char mtype, int numMessageReceived) +bool _waitForPDAMessageType(struct aqualinkdata *aq_data, unsigned char mtype, int numMessageReceived, bool forceNext) { LOG(PDA_LOG,LOG_DEBUG, "waitForPDAMessageType 0x%02hhx\n",mtype); int i=0; pthread_mutex_lock(&aq_data->active_thread.thread_mutex); + if (forceNext) { // Ignore current message type, and wait for next + pthread_cond_wait(&aq_data->active_thread.thread_cond, &aq_data->active_thread.thread_mutex); + } + while( ++i <= numMessageReceived) { LOG(PDA_LOG,LOG_DEBUG, "waitForPDAMessageType 0x%02hhx, last message type was 0x%02hhx (%d of %d)\n",mtype,aq_data->last_packet_type,i,numMessageReceived); - + if (aq_data->last_packet_type == mtype) break; - + pthread_cond_wait(&aq_data->active_thread.thread_cond, &aq_data->active_thread.thread_mutex); } @@ -743,6 +762,16 @@ bool waitForPDAMessageType(struct aqualinkdata *aq_data, unsigned char mtype, in return true; } +bool waitForPDAMessageType(struct aqualinkdata *aq_data, unsigned char mtype, int numMessageReceived){ + return _waitForPDAMessageType(aq_data, mtype, numMessageReceived, false); +} +bool waitForPDANextMessageType(struct aqualinkdata *aq_data, unsigned char mtype, int numMessageReceived){ + return _waitForPDAMessageType(aq_data, mtype, numMessageReceived, true); +} + + + + // Wait for Message, hit return on particular menu. bool waitForPDAMessageTypesOrMenu(struct aqualinkdata *aq_data, unsigned char mtype1, unsigned char mtype2, int numMessageReceived, char *text, int line) { @@ -785,6 +814,10 @@ bool waitForPDAMessageTypes(struct aqualinkdata *aq_data, unsigned char mtype1, return waitForPDAMessageTypesOrMenu(aq_data, mtype1, mtype2, numMessageReceived, NULL, 0); } +/* + Use -1 for cur_val if you want this to find the delected value and change it. + Use number for cur_val to increase / decrease from known start point +*/ bool set_PDA_numeric_field_value(struct aqualinkdata *aq_data, int val, int cur_val, char *select_label, int step) { int i=0; @@ -792,19 +825,43 @@ bool set_PDA_numeric_field_value(struct aqualinkdata *aq_data, int val, int cur_ // :TODO: Should probably change below to call find_pda_menu_item(), rather than doing it here // If we lease this, need to limit on the number of loops //while ( strncasecmp(pda_m_hlight(), select_label, 8) != 0 ) { - while ( strncasecmp(pda_m_hlight(), select_label, strlen(select_label)) != 0 ) { + //while ( strncasecmp(pda_m_hlight(), select_label, strlen(select_label)) != 0 ) { + while ( rsm_strncmp(pda_m_hlight(), select_label, strlen(select_label)) != 0 ) { + LOG(PDA_LOG,LOG_DEBUG, "Numeric selector selecting '%s' current selection '%s'\n", select_label, pda_m_hlight()); send_cmd(KEY_PDA_DOWN); - delay(500); // Last message probably was CMD_PDA_HIGHLIGHT, so wait before checking. - waitForPDAMessageType(aq_data,CMD_PDA_HIGHLIGHT,2); + //delay(500); // Last message probably was CMD_PDA_HIGHLIGHT, so wait before checking. + waitfor_queue2empty(); + waitForPDAMessageType(aq_data,CMD_PDA_HIGHLIGHT,5); if (i > 10) { LOG(PDA_LOG,LOG_ERR, "Numeric selector could not find string '%s'\n", select_label); return false; } i++; } + LOG(PDA_LOG,LOG_DEBUG, "Numeric selector, selecting '%s'\n", pda_m_hlight()); send_cmd(KEY_PDA_SELECT); } + if (cur_val == -1) { + char *hghlight_chars; + int hlight_length=0; + int i=0; + //hghlight_chars = pda_m_hlightchars(&hlight_length); + while (hlight_length >= 15 || hlight_length <= 0) { + delay(500); + waitForPDANextMessageType(aq_data,CMD_PDA_HIGHLIGHTCHARS,5); + hghlight_chars = pda_m_hlightchars(&hlight_length); + LOG(PDA_LOG,LOG_DEBUG, "Numeric selector, highlight chars '%.*s'\n",hlight_length , hghlight_chars); + if (++i >= 20) { + LOG(PDA_LOG,LOG_ERR, "Numeric selector, didn't find highlight chars, current selection is '%.*s'\n",hlight_length , hghlight_chars); + return false; + } + } + + cur_val = atoi(hghlight_chars); + LOG(PDA_LOG,LOG_DEBUG, "Numeric selector, highlight chars '%.*s', numeric value using %d\n",hlight_length , hghlight_chars, cur_val); + } + if (val < cur_val) { LOG(PDA_LOG,LOG_DEBUG, "Numeric selector %s value : lower from %d to %d\n", select_label, cur_val, val); for (i = cur_val; i > val; i=i-step) { @@ -816,7 +873,7 @@ bool set_PDA_numeric_field_value(struct aqualinkdata *aq_data, int val, int cur_ send_cmd(KEY_PDA_UP); } } else { - LOG(PDA_LOG,LOG_INFO, "Numeric selector %s value : already at %d\n", select_label, val); + LOG(PDA_LOG,LOG_DEBUG, "Numeric selector %s value : already at %d\n", select_label, val); } send_cmd(KEY_PDA_SELECT); @@ -829,12 +886,15 @@ bool set_PDA_aqualink_SWG_setpoint(struct aqualinkdata *aq_data, int val) { if (! goto_pda_menu(aq_data, PM_AQUAPURE)) { LOG(PDA_LOG,LOG_ERR, "Error finding SWG setpoints menu\n"); + return false; } - if (aq_data->aqbuttons[SPA_INDEX].led->state != OFF) - return set_PDA_numeric_field_value(aq_data, val, aq_data->swg_percent, "SET SPA", 5); - else - return set_PDA_numeric_field_value(aq_data, val, aq_data->swg_percent, "SET POOL", 5); + if (aq_data->aqbuttons[SPA_INDEX].led->state != OFF) { + //int cur_val = atoi + return set_PDA_numeric_field_value(aq_data, val, -1, "SET SPA", 5); + } else { + return set_PDA_numeric_field_value(aq_data, val, -1, "SET POOL", 5); + } //return true; } diff --git a/pda_aq_programmer.h b/pda_aq_programmer.h index c4932b6..55ea22b 100644 --- a/pda_aq_programmer.h +++ b/pda_aq_programmer.h @@ -24,6 +24,14 @@ bool get_PDA_aqualink_aux_labels(struct aqualinkdata *aq_data); bool set_PDA_aqualink_boost(struct aqualinkdata *aq_data, bool val); bool set_PDA_aqualink_time(struct aqualinkdata *aq_data); + +// These are from aq_programmer.c , exposed here for PDA AQ PROGRAMMER +void send_cmd(unsigned char cmd); +bool push_aq_cmd(unsigned char cmd); +bool waitForMessage(struct aqualinkdata *aq_data, char* message, int numMessageReceived); +void waitfor_queue2empty(); +void longwaitfor_queue2empty(); + //void pda_programming_thread_check(struct aqualinkdata *aq_data); #endif // AQ_PDA_PROGRAMMER_H_ \ No newline at end of file diff --git a/pda_menu.c b/pda_menu.c index 8fb1e9f..f7654a4 100644 --- a/pda_menu.c +++ b/pda_menu.c @@ -44,7 +44,7 @@ void print_menu() } if (_hlightcharindexstart > -1) { - LOG(PDA_LOG,LOG_DEBUG, "PDA Menu highlighted characters numer=%d start=%d end=%d actual='%.*s'\n",(_hlightcharindexstop-_hlightcharindexstart),_hlightcharindexstart,_hlightcharindexstop,(_hlightcharindexstop-_hlightcharindexstart),&_menu[_hlightindex][_hlightcharindexstart+1]); + LOG(PDA_LOG,LOG_DEBUG, "PDA Menu highlighted characters line#=%d numer=%d start=%d end=%d actual='%.*s'\n",_hlightindex,(_hlightcharindexstop-_hlightcharindexstart),_hlightcharindexstart,_hlightcharindexstop,(_hlightcharindexstop-_hlightcharindexstart),&_menu[_hlightindex][_hlightcharindexstart+1]); } } @@ -69,7 +69,11 @@ char *pda_m_line(int index) char *pda_m_hlightchars(int *len) { - *len = _hlightcharindexstop - _hlightcharindexstart + 1; + if (_hlightindex <= -1) { + *len = 0; + return NULL; + } + *len = _hlightcharindexstop - _hlightcharindexstart; return &_menu[_hlightindex][_hlightcharindexstart]; } @@ -196,7 +200,7 @@ Line 0 = EQUIPMENT (Line 0 is first. Highlight when complete) */ -bool process_pda_menu_packet(unsigned char* packet, int length) +bool process_pda_menu_packet(unsigned char* packet, int length, bool force_print_menu) { bool rtn = true; signed char first_line; @@ -204,6 +208,7 @@ bool process_pda_menu_packet(unsigned char* packet, int length) signed char line_shift; signed char i; int index = 0; + static bool printed_page = false; switch (packet[PKT_CMD]) { @@ -212,6 +217,13 @@ bool process_pda_menu_packet(unsigned char* packet, int length) _hlightcharindexstart = -1; _hlightcharindexstop = -1; memset(_menu, 0, PDA_LINES * (AQ_MSGLEN+1)); + printed_page = false; + break; + case CMD_STATUS: + if ( printed_page == false && (getLogLevel(PDA_LOG) >= LOG_DEBUG)){ + print_menu(); + printed_page = true; + } break; case CMD_MSG_LONG: /* @@ -226,7 +238,7 @@ bool process_pda_menu_packet(unsigned char* packet, int length) strncpy(_menu[index], (char*)packet+PKT_DATA+1, AQ_MSGLEN); _menu[index][AQ_MSGLEN] = '\0'; } - if (getLogLevel(PDA_LOG) >= LOG_DEBUG){print_menu();} + if (getLogLevel(PDA_LOG) >= LOG_DEBUG && force_print_menu ){print_menu();} break; case CMD_PDA_HIGHLIGHT: // when switching from hlight to hlightchars index 255 is sent to turn off hlight @@ -236,10 +248,11 @@ bool process_pda_menu_packet(unsigned char* packet, int length) _hlightcharindexstop = -1; } else { _hlightindex = -1; - _hlightcharindexstart = -1; + _hlightcharindexstart = -1; _hlightcharindexstop = -1; } - if (getLogLevel(PDA_LOG) >= LOG_DEBUG){print_menu();} + //if (getLogLevel(PDA_LOG) >= LOG_DEBUG){print_menu();} + if (getLogLevel(PDA_LOG) >= LOG_DEBUG && force_print_menu ){print_menu();} break; case CMD_PDA_HIGHLIGHTCHARS: // pkt[4] = line, pkt[5] = startchar, pkt[6] = endchar, pkt[7] = clr/inv @@ -253,13 +266,16 @@ bool process_pda_menu_packet(unsigned char* packet, int length) // https://github.com/ballle98/AqualinkD/issues/46 // Character highlight should not update highlight index if (packet[4] <= PDA_LINES) { + _hlightindex = packet[4]; _hlightcharindexstart = packet[5]; _hlightcharindexstop = packet[6]; } else { + _hlightindex = -1; _hlightcharindexstart = -1; _hlightcharindexstop = -1; } - if (getLogLevel(PDA_LOG) >= LOG_DEBUG){print_menu();} + //if (getLogLevel(PDA_LOG) >= LOG_DEBUG){print_menu();} + if (getLogLevel(PDA_LOG) >= LOG_DEBUG && force_print_menu ){print_menu();} break; case CMD_PDA_SHIFTLINES: // press up from top - shift menu down by 1 diff --git a/pda_menu.h b/pda_menu.h index 86af3d2..f0c337a 100644 --- a/pda_menu.h +++ b/pda_menu.h @@ -68,7 +68,7 @@ typedef enum pda_menu_type { */ //bool pda_mode(); //void set_pda_mode(bool val); -bool process_pda_menu_packet(unsigned char* packet, int length); +bool process_pda_menu_packet(unsigned char* packet, int length, bool force_print_menu); int pda_m_hlightindex(); char *pda_m_hlight(); char *pda_m_line(int index); diff --git a/release/aqualinkd b/release/aqualinkd index ce86fc64a78b604a1324bc351ada33313f97cef3..dcb725af62b68494de05ba641cbb6c69388b5784 100755 GIT binary patch delta 146622 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 c-p&7c-}igJ>-s*gYq|El*4}Hc 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%0Deb9Y`!BX5hfCWi&m7g$b)eW== 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 Vet3&-cFN}~ea_+N4Rp|d{y*?%|H}XX diff --git a/release/aqualinkd.conf b/release/aqualinkd.conf index 4731daa..087c92c 100755 --- a/release/aqualinkd.conf +++ b/release/aqualinkd.conf @@ -123,11 +123,14 @@ report_zero_pool_temp = no # MQTT will only post updated information, this option AqualinkD will re-post all MQTT information every ~5 minutes. #mqtt_timed_update = no -# Please see forum for this, only set to yes when logging information to support -# new devices. Inflrmation will be written to /tmp/RS485.log & /tmp/RS485_raw.log respectively +# Please see forum for this, only set to yes when logging information to support new devices. (or debugging protocol) +# Information will be written to /tmp/RS485.log & /tmp/RS485_raw.log respectively #debug_RSProtocol_packets = no #debug_RSProtocol_bytes = no +# Log any packets from this device. +#serial_debug_filter = 0x00 + # Not documented. These will change how RS485 / Serial works, Only use if asked to for problem solving purposes. #serial_readahead_b4_write = yes #thread_netservices = yes diff --git a/rs_msg_utils.c b/rs_msg_utils.c index 1ae3f11..606ee6b 100644 --- a/rs_msg_utils.c +++ b/rs_msg_utils.c @@ -103,7 +103,7 @@ int rsm_strncmp(const char *haystack, const char *needle, int length) while(isspace(*ep1)) ep1--; - //LOG(AQUA_LOG,LOG_DEBUG, "CHECK haystack SP1='%c' EP1='%c' SP2='%c' '%.*s' for '%s' length=%d\n",*sp1,*ep1,*sp2,(ep1-sp1)+1,sp1,sp2,(ep1-sp1)+1); + LOG(AQUA_LOG,LOG_DEBUG, "CHECK haystack SP1='%c' EP1='%c' SP2='%c' '%.*s' for '%s' length=%d\n",*sp1,*ep1,*sp2,(ep1-sp1)+1,sp1,sp2,(ep1-sp1)+1); // Need to write this myself for speed // Need to check if full length string (no space on end), that the +1 is accurate. MIN should do it return strncasecmp(sp1, sp2, MIN((ep1-sp1)+1,length)); diff --git a/utils.c b/utils.c index aeb61e0..5cb8441 100644 --- a/utils.c +++ b/utils.c @@ -82,7 +82,9 @@ int getLogLevel(int16_t from) // RSSD_LOG should default to INFO unless the mask is explicitly set. // IE Even if DEBUG is set, (Note ignored for the moment) - if ( ((_logforcemask & from) == from ) && _log_level < LOG_DEBUG_SERIAL) + if ( from == RSSD_LOG && ((_logforcemask & from) == from ) && _log_level < LOG_DEBUG_SERIAL) + return LOG_DEBUG_SERIAL; + else if ( ((_logforcemask & from) == from ) && _log_level < LOG_DEBUG_SERIAL) return LOG_DEBUG; return _log_level; diff --git a/web/config.js b/web/config.js index f80ce14..593a738 100644 --- a/web/config.js +++ b/web/config.js @@ -60,6 +60,22 @@ "Cool Cabaret - Show" ]; + // all SWG return a status number, some have different meanings. Change the text below to suit, NOT THE NUMBER. + var swgStatus = { + 0: "On", + 1: "No flow", + 2: "Low salt", + 4: "High salt", + 8: "Clean cell", + 9: "Turning off", + 16: "High current", + 32: "Low volts", + 64: "Low temp", + 128: "Check PCB", + 255: "Off" + } + + /* * BELOW IS NOT RELIVENT FOR simple.html or simple inteface * diff --git a/web/controller.html b/web/controller.html index 472d6ae..b1614dd 100644 --- a/web/controller.html +++ b/web/controller.html @@ -580,6 +580,25 @@ else var _link_spa_and_heater=false; + // If swgStatus was defined in config.js, use it, else create our own + if (typeof swgStatus !== 'undefined') { + var _swgStatus = swgStatus; + } else { + var _swgStatus = { + 0: "On", + 1: "No flow", + 2: "Low salt", + 4: "High salt", + 8: "Clean cell", + 9: "Turning off", + 16: "High current", + 32: "Low volts", + 64: "Low temp", + 128: "Check PCB", + 255: "Off" + } + } + function init() { setSizeSpecifics(); populateLightProgram(-1); @@ -1014,6 +1033,7 @@ return status; } + function setTileOn(id, status) { //console.log("setTileOn "+id+ " "+status); var tile; @@ -1052,7 +1072,12 @@ var type; if ((type = tile.getAttribute('type')) != null) { if (type == 'setpoint_swg') { - if (tile.getAttribute('Boost') == 'on') + var exstatus = parseInt(tile.getAttribute('fullstatus')) + // Could also ignore "Enabled" in below, that way we don't jump different stats on startup + if (exstatus > 0 && exstatus < 255) {// Not off or on + //text = swgFullstatus2String(exstatus); + text = _swgStatus[exstatus]; + } else if (tile.getAttribute('Boost') == 'on') text = "Boost"; else if (status == 'enabled') text = 'Enabled'; @@ -2035,11 +2060,14 @@ if (typeof(data.swg_ppm) !== 'undefined') setTileValue("SWG/PPM", data.swg_ppm); - + if (typeof(data.swg_fullstatus) !== 'undefined') + setTileAttribute('SWG', "fullstatus", data.swg_fullstatus); + if (typeof(data.chem_ph) !== 'undefined') setTileValue("CHEM/pH", data.chem_ph); if (typeof(data.chem_orp) !== 'undefined') setTileValue("CHEM/ORP", data.chem_orp); + /* setTileValue("Air", data.air_temp); setTileValue("Pool_Water", data.pool_temp); @@ -2050,8 +2078,8 @@ if (obj.toString() == 'SWG/Boost') { //console.log("BOOST IS "+data.leds[obj]); setTileAttribute('SWG', "Boost", data.leds[obj]); - setTileValue - } + //setTileValue + } } for (var obj in data.timers) { setTileOnText(obj.toString(),"On (timer)");