mirror of https://github.com/sfeakes/AqualinkD.git
Fix failure setting SWG percent
At time, setting the SWG percent doesn't work. Instead, it turns off the filter pump. Require to bring back to the HOME menu with the first item highlighted. Add an option to got back to PDM Home menu with goto_pda_menu. Signed-off-by: locnho <locnhinho@gmail.com>pull/433/head
parent
d7e45594b3
commit
c4cc4504d9
|
@ -44,7 +44,7 @@ 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 waitForPDAMessageTypes(struct aqualinkdata *aq_data, unsigned char mtype1, unsigned char mtype2, int numMessageReceived);
|
bool waitForPDAMessageTypes(struct aqualinkdata *aq_data, unsigned char mtype1, unsigned char mtype2, int numMessageReceived);
|
||||||
bool waitForPDAMessageTypesOrMenu(struct aqualinkdata *aq_data, unsigned char mtype1, unsigned char mtype2, int numMessageReceived, char *text, int line);
|
bool waitForPDAMessageTypesOrMenu(struct aqualinkdata *aq_data, unsigned char mtype1, unsigned char mtype2, int numMessageReceived, char *text, int line);
|
||||||
bool goto_pda_menu(struct aqualinkdata *aq_data, pda_menu_type menu);
|
bool goto_pda_menu(struct aqualinkdata *aq_data, pda_menu_type menu, bool home_first);
|
||||||
bool wait_pda_selected_item(struct aqualinkdata *aq_data);
|
bool wait_pda_selected_item(struct aqualinkdata *aq_data);
|
||||||
bool waitForPDAnextMenu(struct aqualinkdata *aq_data);
|
bool waitForPDAnextMenu(struct aqualinkdata *aq_data);
|
||||||
bool loopover_devices(struct aqualinkdata *aq_data);
|
bool loopover_devices(struct aqualinkdata *aq_data);
|
||||||
|
@ -247,7 +247,7 @@ bool loopover_devices(struct aqualinkdata *aq_data) {
|
||||||
int i;
|
int i;
|
||||||
int index = -1;
|
int index = -1;
|
||||||
|
|
||||||
if (! goto_pda_menu(aq_data, PM_EQUIPTMENT_CONTROL)) {
|
if (! goto_pda_menu(aq_data, PM_EQUIPTMENT_CONTROL, false)) {
|
||||||
LOG(PDA_LOG,LOG_ERR, "loopover_devices :- can't goto PM_EQUIPTMENT_CONTROL menu\n");
|
LOG(PDA_LOG,LOG_ERR, "loopover_devices :- can't goto PM_EQUIPTMENT_CONTROL menu\n");
|
||||||
//cleanAndTerminateThread(threadCtrl);
|
//cleanAndTerminateThread(threadCtrl);
|
||||||
return false;
|
return false;
|
||||||
|
@ -459,7 +459,7 @@ bool _select_pda_menu_item(struct aqualinkdata *aq_data, char *menuText, bool wa
|
||||||
// and 6594 - AquaLink RS Control Panel Installation Manual
|
// and 6594 - AquaLink RS Control Panel Installation Manual
|
||||||
// https://www.jandy.com/-/media/zodiac/global/downloads/0748-91071/6594.pdf
|
// 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 goto_pda_menu(struct aqualinkdata *aq_data, pda_menu_type menu, bool home_first) {
|
||||||
bool ret = true;
|
bool ret = true;
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
|
|
||||||
|
@ -476,6 +476,25 @@ bool goto_pda_menu(struct aqualinkdata *aq_data, pda_menu_type menu) {
|
||||||
waitForPDAMessageType(aq_data,CMD_PDA_HIGHLIGHT,15);
|
waitForPDAMessageType(aq_data,CMD_PDA_HIGHLIGHT,15);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (home_first) {
|
||||||
|
//
|
||||||
|
// Before start, put back to home menu. Otherwise may get timing issue.
|
||||||
|
// We can be sending SELECT at EQUIPMNET menu while PDA immediate fall back to HOME
|
||||||
|
// menu. Also going back to HOME with first menu item highlighted seems to be
|
||||||
|
// more stable.
|
||||||
|
send_pda_cmd(KEY_PDA_BACK);
|
||||||
|
if (!waitForPDAnextMenu(aq_data)) {
|
||||||
|
LOG(PDA_LOG,LOG_ERR, "PDA goto menu: can't find HOME menu\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (pda_m_type() == PM_HOME && pda_m_hlightindex() != 4) {
|
||||||
|
send_pda_cmd(KEY_PDA_BACK);
|
||||||
|
if (!waitForPDAnextMenu(aq_data)) {
|
||||||
|
LOG(PDA_LOG,LOG_ERR, "PDA goto menu: can't find HOME menu\n");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
while (ret && (pda_m_type() != menu) && cnt <= 5) {
|
while (ret && (pda_m_type() != menu) && cnt <= 5) {
|
||||||
switch (menu) {
|
switch (menu) {
|
||||||
|
@ -638,7 +657,7 @@ void *set_aqualink_PDA_device_on_off( void *ptr )
|
||||||
|
|
||||||
LOG(PDA_LOG,LOG_INFO, "PDA Device On/Off, device '%s', state %d\n",aq_data->aqbuttons[device].label,state);
|
LOG(PDA_LOG,LOG_INFO, "PDA Device On/Off, device '%s', state %d\n",aq_data->aqbuttons[device].label,state);
|
||||||
|
|
||||||
if (! goto_pda_menu(aq_data, PM_EQUIPTMENT_CONTROL)) {
|
if (! goto_pda_menu(aq_data, PM_EQUIPTMENT_CONTROL, true)) {
|
||||||
LOG(PDA_LOG,LOG_ERR, "PDA Device On/Off :- can't find EQUIPTMENT CONTROL menu\n");
|
LOG(PDA_LOG,LOG_ERR, "PDA Device On/Off :- can't find EQUIPTMENT CONTROL menu\n");
|
||||||
cleanAndTerminateThread(threadCtrl);
|
cleanAndTerminateThread(threadCtrl);
|
||||||
return ptr;
|
return ptr;
|
||||||
|
@ -710,7 +729,7 @@ void *get_aqualink_PDA_device_status( void *ptr )
|
||||||
|
|
||||||
waitForSingleThreadOrTerminate(threadCtrl, AQ_PDA_DEVICE_STATUS);
|
waitForSingleThreadOrTerminate(threadCtrl, AQ_PDA_DEVICE_STATUS);
|
||||||
|
|
||||||
goto_pda_menu(aq_data, PM_HOME);
|
goto_pda_menu(aq_data, PM_HOME, false);
|
||||||
|
|
||||||
if (! loopover_devices(aq_data)) {
|
if (! loopover_devices(aq_data)) {
|
||||||
LOG(PDA_LOG,LOG_ERR, "PDA Device Status :- failed\n");
|
LOG(PDA_LOG,LOG_ERR, "PDA Device Status :- failed\n");
|
||||||
|
@ -782,7 +801,7 @@ void *set_aqualink_PDA_init( void *ptr )
|
||||||
|
|
||||||
pda_reset_sleep();
|
pda_reset_sleep();
|
||||||
|
|
||||||
goto_pda_menu(aq_data, PM_HOME);
|
goto_pda_menu(aq_data, PM_HOME, false);
|
||||||
|
|
||||||
cleanAndTerminateThread(threadCtrl);
|
cleanAndTerminateThread(threadCtrl);
|
||||||
|
|
||||||
|
@ -819,7 +838,7 @@ void *set_aqualink_PDA_wakeinit( void *ptr )
|
||||||
bool _get_PDA_freeze_protect_temp(struct aqualinkdata *aq_data) {
|
bool _get_PDA_freeze_protect_temp(struct aqualinkdata *aq_data) {
|
||||||
|
|
||||||
if ( _PDA_Type == PDA) {
|
if ( _PDA_Type == PDA) {
|
||||||
if (! goto_pda_menu(aq_data, PM_FREEZE_PROTECT)) {
|
if (! goto_pda_menu(aq_data, PM_FREEZE_PROTECT, true)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
/* select the freeze protect temp to see which devices are enabled by freeze
|
/* select the freeze protect temp to see which devices are enabled by freeze
|
||||||
|
@ -835,10 +854,10 @@ bool _get_PDA_freeze_protect_temp(struct aqualinkdata *aq_data) {
|
||||||
bool _get_PDA_aqualink_pool_spa_heater_temps(struct aqualinkdata *aq_data) {
|
bool _get_PDA_aqualink_pool_spa_heater_temps(struct aqualinkdata *aq_data) {
|
||||||
|
|
||||||
// Get heater setpoints
|
// Get heater setpoints
|
||||||
if (! goto_pda_menu(aq_data, PM_SET_TEMP)) {
|
if (! goto_pda_menu(aq_data, PM_SET_TEMP, true)) {
|
||||||
LOG(PDA_LOG,LOG_ERR, "Could not get heater setpoints, trying again!\n");
|
LOG(PDA_LOG,LOG_ERR, "Could not get heater setpoints, trying again!\n");
|
||||||
// Going to try this twice.
|
// Going to try this twice.
|
||||||
if (! goto_pda_menu(aq_data, PM_SET_TEMP)) {
|
if (! goto_pda_menu(aq_data, PM_SET_TEMP, false)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1051,7 +1070,7 @@ void *set_PDA_aqualink_SWG_setpoint(void *ptr) {
|
||||||
int val = atoi((char*)threadCtrl->thread_args);
|
int val = atoi((char*)threadCtrl->thread_args);
|
||||||
val = setpoint_check(SWG_SETPOINT, val, aq_data);
|
val = setpoint_check(SWG_SETPOINT, val, aq_data);
|
||||||
|
|
||||||
if (! goto_pda_menu(aq_data, PM_AQUAPURE)) {
|
if (! goto_pda_menu(aq_data, PM_AQUAPURE, true)) {
|
||||||
LOG(PDA_LOG,LOG_ERR, "Error finding SWG setpoints menu\n");
|
LOG(PDA_LOG,LOG_ERR, "Error finding SWG setpoints menu\n");
|
||||||
cleanAndTerminateThread(threadCtrl);
|
cleanAndTerminateThread(threadCtrl);
|
||||||
return ptr;
|
return ptr;
|
||||||
|
@ -1073,7 +1092,7 @@ void *set_PDA_aqualink_SWG_setpoint(void *ptr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
waitfor_pda_queue2empty();
|
waitfor_pda_queue2empty();
|
||||||
goto_pda_menu(aq_data, PM_HOME);
|
goto_pda_menu(aq_data, PM_HOME, false);
|
||||||
|
|
||||||
cleanAndTerminateThread(threadCtrl);
|
cleanAndTerminateThread(threadCtrl);
|
||||||
return ptr;
|
return ptr;
|
||||||
|
@ -1090,7 +1109,7 @@ void *set_PDA_aqualink_boost(void *ptr)
|
||||||
|
|
||||||
int val = atoi((char*)threadCtrl->thread_args);
|
int val = atoi((char*)threadCtrl->thread_args);
|
||||||
|
|
||||||
if (! goto_pda_menu(aq_data, PM_BOOST)) {
|
if (! goto_pda_menu(aq_data, PM_BOOST, true)) {
|
||||||
LOG(PDA_LOG,LOG_ERR, "Error finding BOOST menu\n");
|
LOG(PDA_LOG,LOG_ERR, "Error finding BOOST menu\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1113,7 +1132,7 @@ void *set_PDA_aqualink_boost(void *ptr)
|
||||||
}
|
}
|
||||||
|
|
||||||
waitfor_pda_queue2empty();
|
waitfor_pda_queue2empty();
|
||||||
goto_pda_menu(aq_data, PM_HOME);
|
goto_pda_menu(aq_data, PM_HOME, false);
|
||||||
cleanAndTerminateThread(threadCtrl);
|
cleanAndTerminateThread(threadCtrl);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
@ -1148,7 +1167,7 @@ bool set_PDA_aqualink_heater_setpoint(struct aqualinkdata *aq_data, int val, boo
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! goto_pda_menu(aq_data, PM_SET_TEMP)) {
|
if (! goto_pda_menu(aq_data, PM_SET_TEMP, true)) {
|
||||||
LOG(PDA_LOG,LOG_ERR, "Error finding heater setpoints menu\n");
|
LOG(PDA_LOG,LOG_ERR, "Error finding heater setpoints menu\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -1173,7 +1192,7 @@ void *set_aqualink_PDA_pool_heater_temps( void *ptr )
|
||||||
set_PDA_aqualink_heater_setpoint(aq_data, val, true);
|
set_PDA_aqualink_heater_setpoint(aq_data, val, true);
|
||||||
|
|
||||||
waitfor_pda_queue2empty();
|
waitfor_pda_queue2empty();
|
||||||
goto_pda_menu(aq_data, PM_HOME);
|
goto_pda_menu(aq_data, PM_HOME, false);
|
||||||
|
|
||||||
cleanAndTerminateThread(threadCtrl);
|
cleanAndTerminateThread(threadCtrl);
|
||||||
return ptr;
|
return ptr;
|
||||||
|
@ -1193,7 +1212,7 @@ void *set_aqualink_PDA_spa_heater_temps( void *ptr )
|
||||||
set_PDA_aqualink_heater_setpoint(aq_data, val, false);
|
set_PDA_aqualink_heater_setpoint(aq_data, val, false);
|
||||||
|
|
||||||
waitfor_pda_queue2empty();
|
waitfor_pda_queue2empty();
|
||||||
goto_pda_menu(aq_data, PM_HOME);
|
goto_pda_menu(aq_data, PM_HOME, false);
|
||||||
|
|
||||||
cleanAndTerminateThread(threadCtrl);
|
cleanAndTerminateThread(threadCtrl);
|
||||||
return ptr;
|
return ptr;
|
||||||
|
@ -1215,7 +1234,7 @@ void *set_aqualink_PDA_freeze_protectsetpoint( void *ptr )
|
||||||
if (_PDA_Type != PDA) {
|
if (_PDA_Type != PDA) {
|
||||||
LOG(PDA_LOG,LOG_INFO, "In PDA AquaPalm mode, freezepoints not supported\n");
|
LOG(PDA_LOG,LOG_INFO, "In PDA AquaPalm mode, freezepoints not supported\n");
|
||||||
//return false;
|
//return false;
|
||||||
} else if (! goto_pda_menu(aq_data, PM_FREEZE_PROTECT)) {
|
} else if (! goto_pda_menu(aq_data, PM_FREEZE_PROTECT, true)) {
|
||||||
LOG(PDA_LOG,LOG_ERR, "Error finding freeze protect setpoints menu\n");
|
LOG(PDA_LOG,LOG_ERR, "Error finding freeze protect setpoints menu\n");
|
||||||
//return false;
|
//return false;
|
||||||
} else if (! set_PDA_numeric_field_value(aq_data, val, aq_data->frz_protect_set_point, NULL, 1)) {
|
} else if (! set_PDA_numeric_field_value(aq_data, val, aq_data->frz_protect_set_point, NULL, 1)) {
|
||||||
|
@ -1226,7 +1245,7 @@ void *set_aqualink_PDA_freeze_protectsetpoint( void *ptr )
|
||||||
}
|
}
|
||||||
|
|
||||||
waitfor_pda_queue2empty();
|
waitfor_pda_queue2empty();
|
||||||
goto_pda_menu(aq_data, PM_HOME);
|
goto_pda_menu(aq_data, PM_HOME, false);
|
||||||
|
|
||||||
cleanAndTerminateThread(threadCtrl);
|
cleanAndTerminateThread(threadCtrl);
|
||||||
return ptr;
|
return ptr;
|
||||||
|
@ -1241,7 +1260,7 @@ void *set_PDA_aqualink_time( void *ptr )
|
||||||
|
|
||||||
waitForSingleThreadOrTerminate(threadCtrl, AQ_PDA_SET_TIME);
|
waitForSingleThreadOrTerminate(threadCtrl, AQ_PDA_SET_TIME);
|
||||||
|
|
||||||
if (! goto_pda_menu(aq_data, PM_SET_TIME)) {
|
if (! goto_pda_menu(aq_data, PM_SET_TIME, true)) {
|
||||||
LOG(PDA_LOG,LOG_ERR, "Error finding set time menu\n");
|
LOG(PDA_LOG,LOG_ERR, "Error finding set time menu\n");
|
||||||
goto f_end;
|
goto f_end;
|
||||||
}
|
}
|
||||||
|
@ -1301,7 +1320,7 @@ Debug: PDA: PDA Menu Line 9 = to continue.
|
||||||
|
|
||||||
waitForPDAnextMenu(aq_data);
|
waitForPDAnextMenu(aq_data);
|
||||||
waitfor_pda_queue2empty();
|
waitfor_pda_queue2empty();
|
||||||
goto_pda_menu(aq_data, PM_HOME);
|
goto_pda_menu(aq_data, PM_HOME, false);
|
||||||
|
|
||||||
f_end:
|
f_end:
|
||||||
|
|
||||||
|
@ -1325,7 +1344,7 @@ void *get_PDA_aqualink_aux_labels( void *ptr ) {
|
||||||
|
|
||||||
LOG(PDA_LOG,LOG_INFO, "Finding PDA labels, (BETA ONLY)\n");
|
LOG(PDA_LOG,LOG_INFO, "Finding PDA labels, (BETA ONLY)\n");
|
||||||
|
|
||||||
if (! goto_pda_menu(aq_data, PM_AUX_LABEL)) {
|
if (! goto_pda_menu(aq_data, PM_AUX_LABEL, true)) {
|
||||||
LOG(PDA_LOG,LOG_ERR, "Error finding aux label menu\n");
|
LOG(PDA_LOG,LOG_ERR, "Error finding aux label menu\n");
|
||||||
goto f_end;
|
goto f_end;
|
||||||
}
|
}
|
||||||
|
@ -1340,7 +1359,7 @@ void *get_PDA_aqualink_aux_labels( void *ptr ) {
|
||||||
// Read first page of devices and make some assumptions.
|
// Read first page of devices and make some assumptions.
|
||||||
|
|
||||||
waitfor_pda_queue2empty();
|
waitfor_pda_queue2empty();
|
||||||
goto_pda_menu(aq_data, PM_HOME);
|
goto_pda_menu(aq_data, PM_HOME, false);
|
||||||
|
|
||||||
f_end:
|
f_end:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue