📄 menuprocess_dopt.c
字号:
/*
BYTE menu_2_als_set( BYTE FlashLcd )
{
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
BYTE xdata buffer[2][LCD_MAX_CASE];
BYTE list_char = 7;
KeyPro.keyEnter = key_go_next;
KeyPro.keyLeft = menu_set_left;
KeyPro.keyRight = menu_set_rigth;
KeyPro.keyCanncel = menu_1_preview;
memcpy( &buffer[0][0], rownull, LCD_LAST_CASE );
memcpy( &buffer[1][0], rownull, LCD_LAST_CASE );
memcpy( &buffer[0][0], " Local ALS set ", LCD_LAST_CASE );
if( FlashLcd == FLASH_SCREEN )
LcdDisplay_length( ROW_2, CHAR_0, rownull, LCD_MAX_CASE );
else
{
if( psys->set_value )
list_char = 14;
}
get_als_status( &buffer[1][0] );
LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_LAST_CASE );
LcdDisplay_length( ROW_2, CHAR_0, &buffer[1][0], 7 );
LcdDisplay_length( ROW_2, CHAR_8, &buffer[1][8], 6 );
diaplay_char( ROW_2, list_char, LCD_PRINT_TRIANGLE );
if( list_char == 7 )
LcdDisplay_length( ROW_2, CHAR_14, &buffer[1][14], 1 );
else
LcdDisplay_length( ROW_2, CHAR_7, &buffer[1][7], 1 );
return key_process_status( &KeyPro );
}
*/
BYTE menu_1_Protect( BYTE FlashLcd )
{
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
psys->set_value = 0;
return menu_main_show( " 1+1 protection ", FlashLcd );
}
void get_protect_status( BYTE *pbuffer )
{
BYTE flash_status;
SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
flash_status = flash_time( );
switch( psdev->local.protect_mode )
{
case IDB_FIBER_AUTO:
flash_char_status( &pbuffer[2], "Auto", flash_status, 4 );
flash_char_status( &pbuffer[8], "force", SHOW_CHAR_STATUS, 5 );
break;
case IDB_FIBER_MASTER:
case IDB_FIBER_SLAVE:
flash_char_status( &pbuffer[2], "Auto", SHOW_CHAR_STATUS, 4 );
flash_char_status( &pbuffer[8], "force", flash_status, 5 );
break;
}
}
BYTE menu_auto_yes_no( void )
{
SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
if( psys->yes_no == SET_YES )
{
SetSystemProtectMode( IDB_FIBER_AUTO );
save_protect_mode( IDB_FIBER_AUTO );
}
return PREVIEW_MENU;
}
void show_protect_force( BYTE *pbuffer, BYTE FlashLcd, SYSTEM_INFOMATION *psys )
{
BYTE xdata flash_status;
BYTE xdata list_char = 9;
SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
if( FlashLcd == FLASH_SCREEN )
{
LcdDisplay_length( ROW_2, CHAR_0, rownull, LCD_MAX_CASE );
}
if( psys->set_protect_value )
list_char = 13;
flash_status = flash_time( );
memcpy( pbuffer, " Force: ", LCD_LAST_CASE );
switch( psdev->local.protect_mode )
{
case IDB_FIBER_AUTO:
flash_char_status( &pbuffer[8], "M S", SHOW_CHAR_STATUS, 5 );
break;
case IDB_FIBER_MASTER:
flash_char_status( &pbuffer[8], "M", flash_status, 1 );
flash_char_status( &pbuffer[12], "S", SHOW_CHAR_STATUS, 1 );
break;
case IDB_FIBER_SLAVE:
flash_char_status( &pbuffer[8], "M", SHOW_CHAR_STATUS, 1 );
flash_char_status( &pbuffer[12], "S", flash_status, 1 );
break;
}
LcdDisplay_length( ROW_2, CHAR_0, pbuffer, 9 );
LcdDisplay_length( ROW_2, CHAR_10, &pbuffer[10], 3 );
diaplay_char( ROW_2, list_char, LCD_PRINT_TRIANGLE );
if( list_char == 9 )
LcdDisplay_length( ROW_2, CHAR_13, rownull, 1 );
else
LcdDisplay_length( ROW_2, CHAR_9, rownull, 1 );
}
BYTE menu_force_yes_no( void )
{
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
BYTE mode;
if( psys->yes_no == SET_YES )
{
if( gSystemInfo.set_protect_value == 0 )
mode = IDB_FIBER_MASTER;
else
mode = IDB_FIBER_SLAVE;
SetSystemProtectMode( mode );
save_protect_mode( mode );
}
return PREVIEW_MENU;
}
BYTE menu_4_protect_set( BYTE FlashLcd )
{
BYTE xdata buffer[2][LCD_MAX_CASE];
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
KeyPro.keyEnter = menu_force_yes_no;
KeyPro.keyLeft = menu_yes_no_left;
KeyPro.keyRight = menu_yes_no_rigth;
KeyPro.keyCanncel = menu_1_preview;
memcpy( &buffer[0], rownull, LCD_MAX_CASE );
memcpy( &buffer[1], rownull, LCD_MAX_CASE );
if( gSystemInfo.set_protect_value == 0 )
{
LcdDisplay_length( ROW_1, CHAR_0, " Force master ", LCD_MAX_CASE );
}
else
{
LcdDisplay_length( ROW_1, CHAR_0, " Force slave ", LCD_MAX_CASE );
}
yes_no_display( FlashLcd, psys );
return key_process_status( &KeyPro );
}
BYTE menu_protect_set_left( void )
{
if( gSystemInfo.set_protect_value )
gSystemInfo.set_protect_value = 0;
return NOCHANGE_MENU;
}
BYTE menu_protect_set_rigth( void )
{
if( gSystemInfo.set_protect_value == 0 )
gSystemInfo.set_protect_value = 1;
return NOCHANGE_MENU;
}
BYTE menu_3_protect_set( BYTE FlashLcd )
{
BYTE xdata buffer[2][LCD_MAX_CASE];
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
if( gSystemInfo.set_value == 0 )
{
KeyPro.keyEnter = menu_auto_yes_no;
KeyPro.keyLeft = menu_yes_no_left;
KeyPro.keyRight = menu_yes_no_rigth;
KeyPro.keyCanncel = menu_1_preview;
memcpy( &buffer[0], " Auto protection ", LCD_MAX_CASE );
LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_MAX_CASE );
yes_no_display( FlashLcd, psys );
}
else
{
KeyPro.keyEnter = key_go_next;
KeyPro.keyLeft = menu_protect_set_left;
KeyPro.keyRight = menu_protect_set_rigth;
KeyPro.keyCanncel = menu_1_preview;
memcpy( &buffer[0], "Force protection", LCD_MAX_CASE );
LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_MAX_CASE );
show_protect_force( &buffer[1], FlashLcd, psys );
}
return key_process_status( &KeyPro );
}
BYTE menu_2_protect_set( BYTE FlashLcd )
{
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
BYTE xdata buffer[2][LCD_MAX_CASE];
BYTE list_char = 6;
psys->set_protect_value = 0;
KeyPro.keyEnter = key_go_next;
KeyPro.keyLeft = menu_set_left;
KeyPro.keyRight = menu_set_rigth;
KeyPro.keyCanncel = menu_1_preview;
memcpy( &buffer[0][0], rownull, LCD_LAST_CASE );
memcpy( &buffer[1][0], rownull, LCD_LAST_CASE );
memcpy( &buffer[0][0], " 1+1 protection ", LCD_MAX_CASE );
get_protect_status( &buffer[1][0] );
if( FlashLcd == FLASH_SCREEN )
{
LcdDisplay_length( ROW_2, CHAR_0, rownull, LCD_LAST_CASE );
}
if( psys->set_value )
list_char = 13;
LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_MAX_CASE );
LcdDisplay_length( ROW_2, CHAR_0, &buffer[1][0], 6 );
LcdDisplay_length( ROW_2, CHAR_7, &buffer[1][7], 6 );
diaplay_char( ROW_2, list_char, LCD_PRINT_TRIANGLE );
if( list_char == 6 )
LcdDisplay_length( ROW_2, CHAR_13, rownull, 1 );
else
LcdDisplay_length( ROW_2, CHAR_6, rownull, 1 );
return key_process_status( &KeyPro );
}
BYTE menu_1_loop_set( BYTE FlashLcd )
{
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
if( FlashLcd == FLASH_SCREEN )
{
psys->yes_no = SET_YES;
}
return menu_main_show( " Loop set ", FlashLcd );
}
BYTE menu_e1_loop_yes_no( void )
{
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
BYTE status;
if( psys->yes_no == SET_YES )
{
status = (psdev->remote.e1_status[psys->e1_number-1]&(~E1_NOLOOP))>>2;
if( status == IDB_E1_NOLOOP )
{
psys->setbuffer[0] |= BIT0<<(psys->e1_number-1);
psdev->remote.e1_status[psys->e1_number-1] |= E1_LOOP;
}
else
{
psdev->remote.e1_status[psys->e1_number-1] &= E1_NOLOOP;
psys->setbuffer[0] &= ~( BIT0<<(psys->e1_number-1) );
}
WriteChip( SOFTLOOP_ADDR, psys->setbuffer[0] );
psys->sendrc7017 = SETCMDSERIAL;
psys->SetCommandCounter = 0;
}
return PREVIEW_MENU;
}
BYTE menu_e1_loop_left( void )
{
if( gSystemInfo.e1_number > 1 )
gSystemInfo.e1_number --;
return NOCHANGE_MENU;
}
BYTE menu_e1_loop_rigth( void )
{
if( gSystemInfo.e1_number < gSystemInfo.max_system_e1 )
gSystemInfo.e1_number ++;
return NOCHANGE_MENU;
}
BYTE menu_4_e1_loop( BYTE FlashLcd )
{
SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
BYTE xdata buffer[2][LCD_MAX_CASE];
BYTE status;
KeyPro.keyEnter = menu_e1_loop_yes_no;
KeyPro.keyLeft = menu_yes_no_left;
KeyPro.keyRight = menu_yes_no_rigth;
KeyPro.keyCanncel = menu_1_preview;
memcpy( &buffer[0][0], rownull, LCD_LAST_CASE );
memcpy( &buffer[1][0], rownull, LCD_LAST_CASE );
status = (psdev->remote.e1_status[psys->e1_number-1]&(~E1_NOLOOP))>>2;
switch( status )
{
case IDB_E1_LOOP:
memcpy( &buffer[0][0], " E1- loop DIS ", LCD_MAX_CASE);
break;
case IDB_E1_NOLOOP:
memcpy( &buffer[0][0], " E1- loop EN ", LCD_MAX_CASE);
break;
}
buffer[0][4] = NUMBER_CHAR_ADDRESS + psys->e1_number;
LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_LAST_CASE );
yes_no_display( FlashLcd, psys );
return key_process_status( &KeyPro );
}
BYTE menu_3_e1_loop( BYTE FlashLcd )
{
SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
SYSTEM_INFOMATION xdata *psys = &gSystemInfo;
BYTE xdata buffer[2][LCD_MAX_CASE], lbuffer[5];
BYTE xdata e1counter;
BYTE xdata flash_status = flash_time( );
BYTE *pe1, status;
KeyPro.keyEnter = key_go_next;
KeyPro.keyLeft = menu_e1_loop_left;
KeyPro.keyRight = menu_e1_loop_rigth;
KeyPro.keyCanncel = menu_1_preview;
memcpy( &buffer[0][0], rownull, LCD_LAST_CASE );
memcpy( &buffer[1][0], rownull, LCD_MAX_CASE );
if( FlashLcd == FLASH_SCREEN )
{
LcdDisplay_length( ROW_2, CHAR_0, rownull, LCD_MAX_CASE );
}
if( psys->set_value == 0 )
{
pe1 = psdev->remote.e1_status;
memcpy( &buffer[0][0], " L:E1 loop O-O) ", LCD_LAST_CASE );
if( (check_remote_status() == ALARM) )
KeyPro.keyEnter = key_do_nothing;
else
KeyPro.keyEnter = key_go_next;
KeyPro.keyLeft = menu_e1_loop_left;
KeyPro.keyRight = menu_e1_loop_rigth;
}
else
{
pe1 = psdev->local.e1_status;
memcpy( &buffer[0][0], " R:E1 loop (O-O ", LCD_LAST_CASE );
KeyPro.keyEnter = key_do_nothing;
KeyPro.keyLeft = key_do_nothing;
KeyPro.keyRight = key_do_nothing;
}
KeyPro.keyCanncel = menu_1_preview;
LcdDisplay_length( ROW_1, CHAR_0, &buffer[0][0], LCD_LAST_CASE );
if( (check_remote_status() == ALARM) && (psys->set_value == 1) )
{
memcpy( &buffer[1][0], rownull, LCD_MAX_CASE );
flash_char_status( &buffer[1][4], "unknown", flash_status, 7 );
LcdDisplay_length( ROW_2, CHAR_0, &buffer[1][0], LCD_LAST_CASE );
}
else
{
for( e1counter=0; e1counter<psys->max_system_e1; e1counter++ )
{
status = (pe1[e1counter]&(~E1_NOLOOP))>>2;
switch( status )
{
case IDB_E1_LOOP:
lbuffer[0] = NUMBER_CHAR_ADDRESS + e1counter+1;
if( (check_remote_status() == ALARM) )
flash_status = SHOW_CHAR_STATUS;
flash_char_status( &buffer[1][e1counter*2], lbuffer, flash_status, 1 );
break;
case IDB_E1_NOLOOP:
lbuffer[0] = NUMBER_CHAR_ADDRESS + e1counter+1;
flash_char_status( &buffer[1][e1counter*2], lbuffer, SHOW_CHAR_STATUS, 1 );
break;
}
LcdDisplay_length( ROW_2, e1counter*2, &buffer[1][e1counter*2], 1 );
if( (psys->e1_number-1) != e1counter )
LcdDisplay_length( ROW_2, e1counter*2+1, rownull, 1 );
}
}
if( psys->set_value == 0 )
diaplay_char( ROW_2, psys->e1_number*2-1, LCD_PRINT_TRIANGLE );
return key_process_status( &KeyPro );
}
void get_loop_status( BYTE *pbuffer, SYSTEM_INFOMATION *psys )
{
SYSTEM_DEVICE_STATUS xdata *psdev = &gsystemStauts;
BYTE xdata flash_status, last_status;
BYTE xdata endcouter, e1counter;
BYTE xdata loop[2] = {IDB_E1_NOLOOP, IDB_E1_NOLOOP};
BYTE xdata list_char = 6;
BYTE xdata status;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -