mirror of https://github.com/sfeakes/AqualinkD.git
Merge pull request #433 from locnho/pda-ps6-swg-prog-fix
Fix failure setting SWG percentpull/429/merge
commit
0518337472
|
@ -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;
|
||||||
|
@ -460,7 +460,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;
|
||||||
|
|
||||||
|
@ -477,6 +477,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) {
|
||||||
|
@ -639,7 +658,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;
|
||||||
|
@ -711,7 +730,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");
|
||||||
|
@ -783,7 +802,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);
|
||||||
|
|
||||||
|
@ -820,7 +839,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
|
||||||
|
@ -836,10 +855,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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1052,7 +1071,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;
|
||||||
|
@ -1074,7 +1093,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;
|
||||||
|
@ -1091,7 +1110,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;
|
||||||
}
|
}
|
||||||
|
@ -1114,7 +1133,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;
|
||||||
}
|
}
|
||||||
|
@ -1149,7 +1168,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;
|
||||||
}
|
}
|
||||||
|
@ -1174,7 +1193,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;
|
||||||
|
@ -1194,7 +1213,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;
|
||||||
|
@ -1216,7 +1235,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)) {
|
||||||
|
@ -1227,7 +1246,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;
|
||||||
|
@ -1242,7 +1261,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;
|
||||||
}
|
}
|
||||||
|
@ -1302,7 +1321,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:
|
||||||
|
|
||||||
|
@ -1326,7 +1345,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;
|
||||||
}
|
}
|
||||||
|
@ -1341,7 +1360,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