mirror of https://github.com/sfeakes/AqualinkD.git
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 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 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 waitForPDAnextMenu(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 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");
|
||||
//cleanAndTerminateThread(threadCtrl);
|
||||
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
|
||||
// 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;
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
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);
|
||||
|
||||
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");
|
||||
cleanAndTerminateThread(threadCtrl);
|
||||
return ptr;
|
||||
|
@ -711,7 +730,7 @@ void *get_aqualink_PDA_device_status( void *ptr )
|
|||
|
||||
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)) {
|
||||
LOG(PDA_LOG,LOG_ERR, "PDA Device Status :- failed\n");
|
||||
|
@ -783,7 +802,7 @@ void *set_aqualink_PDA_init( void *ptr )
|
|||
|
||||
pda_reset_sleep();
|
||||
|
||||
goto_pda_menu(aq_data, PM_HOME);
|
||||
goto_pda_menu(aq_data, PM_HOME, false);
|
||||
|
||||
cleanAndTerminateThread(threadCtrl);
|
||||
|
||||
|
@ -820,7 +839,7 @@ void *set_aqualink_PDA_wakeinit( void *ptr )
|
|||
bool _get_PDA_freeze_protect_temp(struct aqualinkdata *aq_data) {
|
||||
|
||||
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;
|
||||
}
|
||||
/* 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) {
|
||||
|
||||
// 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");
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
@ -1052,7 +1071,7 @@ void *set_PDA_aqualink_SWG_setpoint(void *ptr) {
|
|||
int val = atoi((char*)threadCtrl->thread_args);
|
||||
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");
|
||||
cleanAndTerminateThread(threadCtrl);
|
||||
return ptr;
|
||||
|
@ -1074,7 +1093,7 @@ void *set_PDA_aqualink_SWG_setpoint(void *ptr) {
|
|||
}
|
||||
|
||||
waitfor_pda_queue2empty();
|
||||
goto_pda_menu(aq_data, PM_HOME);
|
||||
goto_pda_menu(aq_data, PM_HOME, false);
|
||||
|
||||
cleanAndTerminateThread(threadCtrl);
|
||||
return ptr;
|
||||
|
@ -1091,7 +1110,7 @@ void *set_PDA_aqualink_boost(void *ptr)
|
|||
|
||||
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");
|
||||
return false;
|
||||
}
|
||||
|
@ -1114,7 +1133,7 @@ void *set_PDA_aqualink_boost(void *ptr)
|
|||
}
|
||||
|
||||
waitfor_pda_queue2empty();
|
||||
goto_pda_menu(aq_data, PM_HOME);
|
||||
goto_pda_menu(aq_data, PM_HOME, false);
|
||||
cleanAndTerminateThread(threadCtrl);
|
||||
return ptr;
|
||||
}
|
||||
|
@ -1149,7 +1168,7 @@ bool set_PDA_aqualink_heater_setpoint(struct aqualinkdata *aq_data, int val, boo
|
|||
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");
|
||||
return false;
|
||||
}
|
||||
|
@ -1174,7 +1193,7 @@ void *set_aqualink_PDA_pool_heater_temps( void *ptr )
|
|||
set_PDA_aqualink_heater_setpoint(aq_data, val, true);
|
||||
|
||||
waitfor_pda_queue2empty();
|
||||
goto_pda_menu(aq_data, PM_HOME);
|
||||
goto_pda_menu(aq_data, PM_HOME, false);
|
||||
|
||||
cleanAndTerminateThread(threadCtrl);
|
||||
return ptr;
|
||||
|
@ -1194,7 +1213,7 @@ void *set_aqualink_PDA_spa_heater_temps( void *ptr )
|
|||
set_PDA_aqualink_heater_setpoint(aq_data, val, false);
|
||||
|
||||
waitfor_pda_queue2empty();
|
||||
goto_pda_menu(aq_data, PM_HOME);
|
||||
goto_pda_menu(aq_data, PM_HOME, false);
|
||||
|
||||
cleanAndTerminateThread(threadCtrl);
|
||||
return ptr;
|
||||
|
@ -1216,7 +1235,7 @@ void *set_aqualink_PDA_freeze_protectsetpoint( void *ptr )
|
|||
if (_PDA_Type != PDA) {
|
||||
LOG(PDA_LOG,LOG_INFO, "In PDA AquaPalm mode, freezepoints not supported\n");
|
||||
//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");
|
||||
//return false;
|
||||
} 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();
|
||||
goto_pda_menu(aq_data, PM_HOME);
|
||||
goto_pda_menu(aq_data, PM_HOME, false);
|
||||
|
||||
cleanAndTerminateThread(threadCtrl);
|
||||
return ptr;
|
||||
|
@ -1242,7 +1261,7 @@ void *set_PDA_aqualink_time( void *ptr )
|
|||
|
||||
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");
|
||||
goto f_end;
|
||||
}
|
||||
|
@ -1302,7 +1321,7 @@ Debug: PDA: PDA Menu Line 9 = to continue.
|
|||
|
||||
waitForPDAnextMenu(aq_data);
|
||||
waitfor_pda_queue2empty();
|
||||
goto_pda_menu(aq_data, PM_HOME);
|
||||
goto_pda_menu(aq_data, PM_HOME, false);
|
||||
|
||||
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");
|
||||
|
||||
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");
|
||||
goto f_end;
|
||||
}
|
||||
|
@ -1341,7 +1360,7 @@ void *get_PDA_aqualink_aux_labels( void *ptr ) {
|
|||
// Read first page of devices and make some assumptions.
|
||||
|
||||
waitfor_pda_queue2empty();
|
||||
goto_pda_menu(aq_data, PM_HOME);
|
||||
goto_pda_menu(aq_data, PM_HOME, false);
|
||||
|
||||
f_end:
|
||||
|
||||
|
|
Loading…
Reference in New Issue