mirror of https://github.com/sfeakes/AqualinkD.git
Merge branch 'master' of github.com:sfeakes/AqualinkD
commit
5f6eb03d85
|
@ -132,21 +132,23 @@ bool waitForPDAnextMenu(struct aqualinkdata *aq_data) {
|
||||||
|
|
||||||
bool loopover_devices(struct aqualinkdata *aq_data) {
|
bool loopover_devices(struct aqualinkdata *aq_data) {
|
||||||
int i;
|
int i;
|
||||||
|
int index = -1;
|
||||||
if (! goto_pda_menu(aq_data, PM_EQUIPTMENT_CONTROL)) {
|
if (! goto_pda_menu(aq_data, PM_EQUIPTMENT_CONTROL)) {
|
||||||
//logMessage(LOG_ERR, "PDA :- can't find main menu\n");
|
logMessage(LOG_ERR, "loopover_devices :- can't goto PM_EQUIPTMENT_CONTROL menu\n");
|
||||||
//cleanAndTerminateThread(threadCtrl);
|
//cleanAndTerminateThread(threadCtrl);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should look for message "ALL OFF", that's end of device list.
|
// Should look for message "ALL OFF", that's end of device list.
|
||||||
for (i=0; i < 18 && pda_find_m_index("ALL OFF") == -1 ; i++) {
|
for (i=0; i < 18 && (index = pda_find_m_index("ALL OFF")) == -1 ; i++) {
|
||||||
send_cmd(KEY_PDA_DOWN);
|
send_cmd(KEY_PDA_DOWN);
|
||||||
//while (get_aq_cmd_length() > 0) { delay(200); }
|
// Wait for highlight change or shift and update of current line
|
||||||
//waitForPDAMessageType(aq_data,CMD_PDA_HIGHLIGHT,3);
|
waitForPDAMessageTypes(aq_data,CMD_PDA_HIGHLIGHT,CMD_MSG_LONG,8);
|
||||||
waitForMessage(aq_data, NULL, 1);
|
}
|
||||||
|
if (index == -1) {
|
||||||
|
logMessage(LOG_ERR, "loopover_devices :- can't find ALL OFF\n");
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -170,7 +172,7 @@ bool find_pda_menu_item(struct aqualinkdata *aq_data, char *menuText, int charli
|
||||||
send_cmd(KEY_PDA_DOWN);
|
send_cmd(KEY_PDA_DOWN);
|
||||||
//delay(500);
|
//delay(500);
|
||||||
//wait_for_empty_cmd_buffer();
|
//wait_for_empty_cmd_buffer();
|
||||||
waitForPDAMessageType(aq_data,CMD_PDA_HIGHLIGHT,2);
|
waitForPDAMessageTypes(aq_data,CMD_PDA_HIGHLIGHT,CMD_MSG_LONG,8);
|
||||||
//waitForMessage(aq_data, NULL, 1);
|
//waitForMessage(aq_data, NULL, 1);
|
||||||
index = (charlimit == 0)?pda_find_m_index(menuText):pda_find_m_index_case(menuText, charlimit);
|
index = (charlimit == 0)?pda_find_m_index(menuText):pda_find_m_index_case(menuText, charlimit);
|
||||||
if (index >= 0) {
|
if (index >= 0) {
|
||||||
|
@ -183,7 +185,8 @@ bool find_pda_menu_item(struct aqualinkdata *aq_data, char *menuText, int charli
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
logMessage(LOG_ERR, "PDA Device programmer couldn't find menu item '%s'\n",menuText);
|
logMessage(LOG_ERR, "PDA Device programmer couldn't find menu item '%s' in menu %d index %d\n",
|
||||||
|
menuText, pda_m_type(), index);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -274,7 +277,7 @@ bool select_pda_menu_item(struct aqualinkdata *aq_data, char *menuText, bool wai
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
logMessage(LOG_ERR, "PDA Device programmer couldn't selected menu item '%s' at index %d\n",menuText, index);
|
logMessage(LOG_ERR, "PDA Device programmer couldn't select menu item '%s' menu %d\n",menuText, pda_m_type());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,6 +306,10 @@ bool goto_pda_menu(struct aqualinkdata *aq_data, pda_menu_type menu) {
|
||||||
|
|
||||||
while (ret && (pda_m_type() != menu)) {
|
while (ret && (pda_m_type() != menu)) {
|
||||||
switch (menu) {
|
switch (menu) {
|
||||||
|
case PM_HOME:
|
||||||
|
send_cmd(KEY_PDA_BACK);
|
||||||
|
ret = waitForPDAnextMenu(aq_data);
|
||||||
|
break;
|
||||||
case PM_EQUIPTMENT_CONTROL:
|
case PM_EQUIPTMENT_CONTROL:
|
||||||
if (pda_m_type() == PM_HOME) {
|
if (pda_m_type() == PM_HOME) {
|
||||||
ret = select_pda_menu_item(aq_data, "EQUIPMENT ON/OFF", true);
|
ret = select_pda_menu_item(aq_data, "EQUIPMENT ON/OFF", true);
|
||||||
|
@ -410,7 +417,8 @@ bool goto_pda_menu(struct aqualinkdata *aq_data, pda_menu_type menu) {
|
||||||
menu, pda_m_type());
|
menu, pda_m_type());
|
||||||
}
|
}
|
||||||
if (pda_m_type() != menu) {
|
if (pda_m_type() != menu) {
|
||||||
logMessage(LOG_ERR, "PDA Device programmer didn't find a requested menu\n");
|
logMessage(LOG_ERR, "PDA Device programmer didn't find a requested menu %d, current %d\n",
|
||||||
|
menu, pda_m_type());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -441,7 +449,7 @@ void *set_aqualink_PDA_device_on_off( void *ptr )
|
||||||
logMessage(LOG_INFO, "PDA Device On/Off, device '%s', state %d\n",aq_data->aqbuttons[device].pda_label,state);
|
logMessage(LOG_INFO, "PDA Device On/Off, device '%s', state %d\n",aq_data->aqbuttons[device].pda_label,state);
|
||||||
|
|
||||||
if (! goto_pda_menu(aq_data, PM_EQUIPTMENT_CONTROL)) {
|
if (! goto_pda_menu(aq_data, PM_EQUIPTMENT_CONTROL)) {
|
||||||
logMessage(LOG_ERR, "PDA Device On/Off :- can't find main menu\n");
|
logMessage(LOG_ERR, "PDA Device On/Off :- can't find EQUIPTMENT CONTROL menu\n");
|
||||||
cleanAndTerminateThread(threadCtrl);
|
cleanAndTerminateThread(threadCtrl);
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
|
@ -497,8 +505,6 @@ void *set_aqualink_PDA_device_on_off( void *ptr )
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void *get_aqualink_PDA_device_status( void *ptr )
|
void *get_aqualink_PDA_device_status( void *ptr )
|
||||||
{
|
{
|
||||||
struct programmingThreadCtrl *threadCtrl;
|
struct programmingThreadCtrl *threadCtrl;
|
||||||
|
@ -576,6 +582,10 @@ void *set_aqualink_PDA_init( void *ptr )
|
||||||
logMessage(LOG_ERR, "PDA Init :- Error getting freeze setpoints\n");
|
logMessage(LOG_ERR, "PDA Init :- Error getting freeze setpoints\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// shift line test
|
||||||
|
// goto_pda_menu(aq_data,PM_SYSTEM_SETUP);
|
||||||
|
// select_pda_menu_item(aq_data, "SERVICE INFO", true);
|
||||||
|
|
||||||
pda_reset_sleep();
|
pda_reset_sleep();
|
||||||
|
|
||||||
cleanAndTerminateThread(threadCtrl);
|
cleanAndTerminateThread(threadCtrl);
|
||||||
|
@ -747,7 +757,7 @@ bool set_PDA_numeric_field_value(struct aqualinkdata *aq_data, int val, int *cur
|
||||||
if (select_label != NULL) {
|
if (select_label != NULL) {
|
||||||
// :TODO: Should probably change below to call find_pda_menu_item(), rather than doing it here
|
// :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
|
// 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 ) {
|
||||||
send_cmd(KEY_PDA_DOWN);
|
send_cmd(KEY_PDA_DOWN);
|
||||||
delay(500); // Last message probably was CMD_PDA_HIGHLIGHT, so wait before checking.
|
delay(500); // Last message probably was CMD_PDA_HIGHLIGHT, so wait before checking.
|
||||||
waitForPDAMessageType(aq_data,CMD_PDA_HIGHLIGHT,2);
|
waitForPDAMessageType(aq_data,CMD_PDA_HIGHLIGHT,2);
|
||||||
|
|
23
pda_menu.c
23
pda_menu.c
|
@ -169,6 +169,11 @@ Line 0 = EQUIPMENT
|
||||||
bool process_pda_menu_packet(unsigned char* packet, int length)
|
bool process_pda_menu_packet(unsigned char* packet, int length)
|
||||||
{
|
{
|
||||||
bool rtn = true;
|
bool rtn = true;
|
||||||
|
signed char first_line;
|
||||||
|
signed char last_line;
|
||||||
|
signed char line_shift;
|
||||||
|
signed char i;
|
||||||
|
|
||||||
switch (packet[PKT_CMD]) {
|
switch (packet[PKT_CMD]) {
|
||||||
case CMD_PDA_CLEAR:
|
case CMD_PDA_CLEAR:
|
||||||
_hlightindex = -1;
|
_hlightindex = -1;
|
||||||
|
@ -200,7 +205,23 @@ bool process_pda_menu_packet(unsigned char* packet, int length)
|
||||||
if (getLogLevel() >= LOG_DEBUG){print_menu();}
|
if (getLogLevel() >= LOG_DEBUG){print_menu();}
|
||||||
break;
|
break;
|
||||||
case CMD_PDA_SHIFTLINES:
|
case CMD_PDA_SHIFTLINES:
|
||||||
memcpy(_menu[1], _menu[2], (PDA_LINES-1) * (AQ_MSGLEN+1) );
|
// press up from top - shift menu down by 1
|
||||||
|
// PDA Shif | HEX: 0x10|0x02|0x62|0x0f|0x01|0x08|0x01|0x8d|0x10|0x03|
|
||||||
|
// press down from bottom - shift menu up by 1
|
||||||
|
// PDA Shif | HEX: 0x10|0x02|0x62|0x0f|0x01|0x08|0xff|0x8b|0x10|0x03|
|
||||||
|
first_line = (signed char)(packet[4]);
|
||||||
|
last_line = (signed char)(packet[5]);
|
||||||
|
line_shift = (signed char)(packet[6]);
|
||||||
|
logMessage(LOG_DEBUG, "\n");
|
||||||
|
if (line_shift < 0) {
|
||||||
|
for (i = first_line-line_shift; i <= last_line; i++) {
|
||||||
|
memcpy(_menu[i+line_shift], _menu[i], AQ_MSGLEN+1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (i = last_line; i >= first_line+line_shift; i--) {
|
||||||
|
memcpy(_menu[i], _menu[i-line_shift], AQ_MSGLEN+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (getLogLevel() >= LOG_DEBUG){print_menu();}
|
if (getLogLevel() >= LOG_DEBUG){print_menu();}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue