1691 lines
49 KiB
C++
1691 lines
49 KiB
C++
/***************************************************************************
|
|
menu_hardware_setup.cpp - description
|
|
-------------------
|
|
begin : Tue Mar 30 2004
|
|
copyright : (C) 2004 by David Rokhvarg
|
|
email : davidr@sangoma.com
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#include "menu_hardware_setup.h"
|
|
#include "text_box_help.h"
|
|
#include "input_box.h"
|
|
#include "text_box_yes_no.h"
|
|
#include "menu_hardware_card_type.h"
|
|
#include "menu_hardware_serial_card_advanced_options.h"
|
|
#include "menu_hardware_te1_card_advanced_options.h"
|
|
#include "menu_hardware_te3_card_advanced_options.h"
|
|
|
|
#include "menu_hardware_select_comms_port.h"
|
|
#include "menu_te1_select_media.h"
|
|
#include "menu_te3_select_media.h"
|
|
|
|
#include "menu_hardware_serial_select_medium.h"
|
|
#include "menu_s508_io_port_select.h"
|
|
#include "menu_s508_irq_select.h"
|
|
#include "menu_s508_memory_addr.h"
|
|
|
|
#include "menu_list_existing_wanpipes.h"
|
|
#include "menu_aft_logical_channels_list.h"
|
|
|
|
#include "menu_advanced_pci_configuration.h"
|
|
|
|
#include "menu_adsl_encapsulation.h"
|
|
#include "menu_adsl_advanced_cfg.h"
|
|
|
|
#include "menu_tdmv_law.h"
|
|
|
|
#define DBG_MENU_HARDWARE_SETUP 1
|
|
|
|
extern char* adapter_type_help_str;
|
|
extern char* cpu_number_help_str;
|
|
extern char* media_type_help_str;
|
|
|
|
#define MIN_PCI_BUS_SLOT 0
|
|
#define MAX_PCI_BUS_SLOT 255
|
|
|
|
///////////////////////////////////////////////////////////
|
|
char* te1_advanced_cfg_help_str =
|
|
"This option allows to set following T1/E1 parameters:\n"
|
|
" -Line decoding\n"
|
|
" -Framing\n"
|
|
" -TE clock mode\n"
|
|
" -Act. channels\n"
|
|
" -LBO (T1 only)\n";
|
|
|
|
|
|
char* comms_port_help_str =
|
|
"COMMUNICATION PORT\n"
|
|
"\n"
|
|
"Currently only CHDLC and HDLC Streaming protocols can use\n"
|
|
"both ports on a S508 or S514 PCI card at the same time.\n"
|
|
"Thus, two physical links can be hooked up to\n"
|
|
"a single card using the above protocols.\n"
|
|
"\n"
|
|
"Availabe options:\n"
|
|
"\n"
|
|
"PRI: Primary High speed port\n"
|
|
" S508: up to 2Mbps\n"
|
|
" S514: up to 4Mbps\n"
|
|
"\n"
|
|
"SEC: Secondary Low speed port\n"
|
|
" S508: up to 256Kbps\n"
|
|
" S514: up to 512Kbps\n"
|
|
"\n"
|
|
"Default: PRI\n";
|
|
|
|
char* s508_io_port_help_str =
|
|
"S508 IO PORT\n"
|
|
"\n"
|
|
"Adapter's I/O port address. Make sure there is no\n"
|
|
"conflict with other devices on the system in\n"
|
|
"/proc/ioports.\n"
|
|
"IO port address values are set by\n"
|
|
"the jumpers on the S508 board.\n"
|
|
"Refer to the user manual for the jumper setup.\n";
|
|
|
|
char* s508_irq_help_str =
|
|
"S508 IRQ\n"
|
|
"\n"
|
|
"Adapters interrupt request level. Make sure there is no\n"
|
|
"conflict with other devices on the system in\n"
|
|
"/proc/interrupts.\n"
|
|
"IRQ used by S508 is software set and\n"
|
|
"NO jumper reconfiguration is needed.\n";
|
|
|
|
char* s508_shared_memory_addr =
|
|
"MEMORY ADDRESS\n"
|
|
"\n"
|
|
"Address of the adapter shared memory window.\n"
|
|
"If set to Auto the memory address is determined\n"
|
|
"automatically.\n"
|
|
"\n"
|
|
"Default: Auto\n";
|
|
|
|
char* serial_physical_interface_help_str =
|
|
"Serial Line Physical Interface\n"
|
|
"\n"
|
|
"Physical interface type. Available options are:\n"
|
|
" RS232 RS-232C interface (V.10)\n"
|
|
" V35 V.35 interface (X.21/EIA530/RS-422/V.11)\n";
|
|
|
|
char* serial_advanced_configuration_help_str =
|
|
"Advanced Serial Line Configuration\n"
|
|
"----------------------------------\n"
|
|
"CLOCKING\n"
|
|
"\n"
|
|
"Source of the adapter transmit and receive clock\n"
|
|
"signals. Available options are:\n"
|
|
"\n"
|
|
"External: Clock is provided externally (e.g. by\n"
|
|
"the modem or CSU/DSU). Use this for the\n"
|
|
"FT1 (S5143) boards too.\n"
|
|
"\n"
|
|
"Internal: Clock is generated on the adapter.\n"
|
|
"When there are two Sangoma Cards back\n"
|
|
"to back set clocking to Internal on one\n"
|
|
"of the cards.\n"
|
|
"Note: Jumpers must be set for internal or external\n"
|
|
"clocking for RS232 communication on:\n"
|
|
"s508 board: RS232 SEC port\n"
|
|
"s514 board: RS232 PRI and SEC port\n"
|
|
"\n"
|
|
"BAUDRATE\n"
|
|
"\n"
|
|
"Data transfer rate in bits per second. These values\n"
|
|
"are meaningful if internal clocking is selected\n"
|
|
"(like in a back-to-back testing configuration).\n";
|
|
|
|
|
|
///////////////////////////////////////////////////////////
|
|
|
|
enum HW_SETUP_OPTIONS {
|
|
EMPTY_LINE=1,
|
|
CARD_TYPE,
|
|
S514_SERIAL_INTERFACE,
|
|
S514_TE1_INTERFACE,
|
|
AFT_TE3_INTERFACE,
|
|
COMMS_PORT,
|
|
S514_SERIAL_ADVANCED,
|
|
S514_TE1_ADVANCED,
|
|
AFT_TE1_ADVANCED,
|
|
AFT_TE3_ADVANCED,
|
|
ADSL_ENCAPSULATION_MODE,
|
|
ADSL_ATM_AUTOCFG,
|
|
ADSL_VCI,
|
|
ADSL_VPI,
|
|
ADSL_WATCHDOG,
|
|
ADSL_ADVANCED,
|
|
S508_IO_PORT,
|
|
S508_MEMORY,
|
|
S508_IRQ,
|
|
TIMESLOT_GROUP_CFG,
|
|
ADVANCED_PCI_CFG,
|
|
TDMV_LAW_SELECT,
|
|
TDMV_OPERMODE,
|
|
AFT_ANALOG_ADVANCED,
|
|
AFT_SERIAL_CONNECTION_TYPE,
|
|
AFT_SERIAL_LINE_CODING,
|
|
AFT_SERIAL_LINE_IDLE
|
|
};
|
|
|
|
menu_hardware_setup::menu_hardware_setup( IN char * lxdialog_path,
|
|
IN conf_file_reader* cfr)
|
|
{
|
|
Debug(DBG_MENU_HARDWARE_SETUP, ("menu_hardware_setup::menu_hardware_setup()\n"));
|
|
|
|
snprintf(this->lxdialog_path, MAX_PATH_LENGTH, "%s", lxdialog_path);
|
|
|
|
this->cfr = cfr;
|
|
}
|
|
|
|
menu_hardware_setup::~menu_hardware_setup()
|
|
{
|
|
Debug(DBG_MENU_HARDWARE_SETUP, ("menu_hardware_setup::~menu_hardware_setup()\n"));
|
|
}
|
|
|
|
int menu_hardware_setup::run(OUT int * selection_index)
|
|
{
|
|
string menu_str;
|
|
int rc;
|
|
char tmp_buff[MAX_PATH_LENGTH];
|
|
unsigned int option_selected;
|
|
char exit_dialog;
|
|
int number_of_items;
|
|
|
|
int old_card_type;
|
|
int new_card_type;
|
|
|
|
//help text box
|
|
text_box tb;
|
|
|
|
input_box inb;
|
|
char backtitle[MAX_PATH_LENGTH];
|
|
char explanation_text[MAX_PATH_LENGTH];
|
|
char initial_text[MAX_PATH_LENGTH];
|
|
|
|
snprintf(backtitle, MAX_PATH_LENGTH, "WANPIPE Configuration Utility");
|
|
|
|
link_def_t * link_def;
|
|
wandev_conf_t *linkconf;
|
|
wan_adsl_conf_t* adsl_cfg;
|
|
sdla_fe_cfg_t* fe_cfg;
|
|
|
|
again:
|
|
number_of_items = 0;
|
|
|
|
link_def = cfr->link_defs;
|
|
linkconf = cfr->link_defs->linkconf;
|
|
adsl_cfg = &linkconf->u.adsl;
|
|
fe_cfg = &linkconf->fe_cfg;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SETUP, ("menu_hardware_setup::run(): cfr->link_defs->name: %s\n", link_def->name));
|
|
|
|
rc = YES;
|
|
option_selected = 0;
|
|
exit_dialog = NO;
|
|
|
|
menu_str = " ";
|
|
////////////////////////////////////////////////
|
|
//depending on 'current hardware' display it's settings
|
|
//e.g.: CHANNELS is irrelevant for S5141
|
|
// V.35 is irrelevant for S5147
|
|
switch(linkconf->card_type)
|
|
{
|
|
case WANOPT_S51X:
|
|
|
|
if(get_S514_card_version_string(link_def->card_version) == NULL){
|
|
ERR_DBG_OUT(("Invalid S514 Card Version!!"));
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
/////////////////////////////////////////////////
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", CARD_TYPE);
|
|
menu_str = tmp_buff;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Card Type-------> %s\" ",
|
|
get_S514_card_version_string(link_def->card_version));
|
|
menu_str += tmp_buff;
|
|
|
|
switch(link_def->card_version)
|
|
{
|
|
case S5141_ADPTR_1_CPU_SERIAL:
|
|
number_of_items = 2;
|
|
|
|
form_s514_serial_options_menu(menu_str, number_of_items);
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", S514_SERIAL_ADVANCED);
|
|
menu_str += tmp_buff;
|
|
menu_str += " \"Advanced Physical Medium Configuration\" ";
|
|
|
|
form_pci_card_locations_options_menu(menu_str, number_of_items);
|
|
break;
|
|
|
|
case S5143_ADPTR_1_CPU_FT1:
|
|
//no options
|
|
number_of_items = 1;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
form_pci_card_locations_options_menu(menu_str, number_of_items);
|
|
break;
|
|
|
|
case S5144_ADPTR_1_CPU_T1E1:
|
|
number_of_items = 2;
|
|
|
|
form_s514_TE1_options_menu(menu_str, number_of_items);
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", S514_TE1_ADVANCED);
|
|
menu_str += tmp_buff;
|
|
menu_str += " \"Advanced Physical Medium Configuration\" ";
|
|
|
|
form_pci_card_locations_options_menu(menu_str, number_of_items);
|
|
break;
|
|
|
|
case S5145_ADPTR_1_CPU_56K:
|
|
//no options
|
|
number_of_items = 1;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
form_pci_card_locations_options_menu(menu_str, number_of_items);
|
|
break;
|
|
|
|
}//switch(link_def->card_version)
|
|
break;
|
|
|
|
case WANOPT_AFT:
|
|
|
|
number_of_items = 2;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", CARD_TYPE);
|
|
menu_str = tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Card Type-------> %s\" ",
|
|
get_card_type_string(linkconf->card_type, link_def->card_version));
|
|
menu_str += tmp_buff;
|
|
|
|
switch(link_def->card_version)
|
|
{
|
|
case A101_ADPTR_1TE1://WAN_MEDIA_T1:
|
|
case A104_ADPTR_4TE1://WAN_MEDIA_T1:
|
|
//AFT using the same code for TE1 configuration
|
|
form_s514_TE1_options_menu(menu_str, number_of_items);
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", AFT_TE1_ADVANCED);
|
|
menu_str += tmp_buff;
|
|
menu_str += " \"Advanced Physical Medium Configuration\" ";
|
|
|
|
//timeslot group configuration
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", TIMESLOT_GROUP_CFG);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Advanced %s Configuration\" ", TIME_SLOT_GROUPS_STR);
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
break;
|
|
|
|
case A200_ADPTR_ANALOG:
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", TDMV_LAW_SELECT);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"TDMV LAW--------> %s\" ",
|
|
(fe_cfg->tdmv_law == WAN_TDMV_MULAW ? "MuLaw" : "ALaw"));
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
//for backwards compatibility with older files, check TDMV_OPERMODE was read
|
|
//or initiaized when card type was selected
|
|
if(fe_cfg->cfg.remora.opermode_name[0] != 0){
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", TDMV_OPERMODE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"TDMV Operational Mode-> %s\" ",
|
|
fe_cfg->cfg.remora.opermode_name);
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
}
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", AFT_ANALOG_ADVANCED);
|
|
menu_str += tmp_buff;
|
|
menu_str += " \"Advanced Physical Medium Configuration\" ";
|
|
number_of_items++;
|
|
|
|
//timeslot group configuration
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", TIMESLOT_GROUP_CFG);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Advanced %s Configuration\" ", TIME_SLOT_GROUPS_STR);
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
break;
|
|
|
|
case A300_ADPTR_U_1TE3://WAN_MEDIA_DS3:
|
|
form_TE3_options_menu(menu_str, number_of_items);
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", AFT_TE3_ADVANCED);
|
|
menu_str += tmp_buff;
|
|
menu_str += " \"Advanced Physical Medium Configuration\" ";
|
|
break;
|
|
case AFT_ADPTR_ISDN://WAN_MEDIA_BRI:
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", AFT_TE1_ADVANCED);
|
|
menu_str += tmp_buff;
|
|
menu_str += " \"Advanced Physical Medium Configuration\" ";
|
|
break;
|
|
case AFT_ADPTR_2SERIAL_V35X21:
|
|
form_AFT_Serial_options_menu(menu_str, number_of_items);
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", S514_SERIAL_ADVANCED);
|
|
menu_str += tmp_buff;
|
|
menu_str += " \"Advanced Physical Medium Configuration\" ";
|
|
break;
|
|
}
|
|
|
|
form_pci_card_locations_options_menu(menu_str, number_of_items);
|
|
break;
|
|
|
|
case WANOPT_ADSL:
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", CARD_TYPE);
|
|
menu_str = tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Card Type-------> %s\" ",
|
|
get_card_type_string(linkconf->card_type, link_def->card_version));
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", ADSL_ENCAPSULATION_MODE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"EncapMode-> %s\" ",
|
|
ADSL_ENCAPSULATION_DECODE(adsl_cfg->EncapMode));
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", ADSL_ATM_AUTOCFG);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"ATM_AUTOCFG-> %s\" ",
|
|
(adsl_cfg->atm_autocfg == WANOPT_NO ? "NO" : "YES"));
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", ADSL_VCI);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"VCI---------> %u\" ",
|
|
adsl_cfg->Vci);
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", ADSL_VPI);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"VPI---------> %u\" ",
|
|
adsl_cfg->Vpi);
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", ADSL_WATCHDOG);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"ADSL_WATCHDOG-> %s\" ",
|
|
(adsl_cfg->atm_watchdog == WANOPT_NO ? "NO" : "YES"));
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", EMPTY_LINE);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \" \" ");
|
|
menu_str += tmp_buff;
|
|
number_of_items++;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", ADSL_ADVANCED);
|
|
menu_str += tmp_buff;
|
|
menu_str += " \"Advanced ADSL Configuration\" ";
|
|
number_of_items++;
|
|
|
|
form_pci_card_locations_options_menu(menu_str, number_of_items);
|
|
number_of_items++;
|
|
|
|
break;
|
|
|
|
case WANOPT_S50X:
|
|
number_of_items = 5;
|
|
|
|
menu_str.sprintf(" \"%d\" ", CARD_TYPE);
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Card Type-------> %s\" ",
|
|
get_card_type_string(linkconf->card_type, link_def->card_version));
|
|
menu_str += tmp_buff;
|
|
|
|
/////////////////////
|
|
//initialize for new configuration
|
|
if(linkconf->ioport == 0){
|
|
linkconf->ioport = 0x360;
|
|
}
|
|
if(linkconf->irq == 0){
|
|
linkconf->irq = 7;
|
|
}
|
|
/////////////////////
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", COMMS_PORT);
|
|
menu_str+= tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Comms Port------> %s\" ",
|
|
(linkconf->comm_port == 0 ? "Primary" : "Secondary"));
|
|
menu_str += tmp_buff;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", S508_IO_PORT);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"IOPORT----------> 0x%X\" ", linkconf->ioport);
|
|
menu_str += tmp_buff;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", S508_IRQ);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"IRQ-------------> %d\" ", linkconf->irq);
|
|
menu_str += tmp_buff;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", S508_MEMORY);
|
|
menu_str += tmp_buff;
|
|
if(linkconf->maddr == 0x00){
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Memory Addr-----> Auto\" ");
|
|
}else{
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Memory Addr-----> 0x%lX\" ", linkconf->maddr);
|
|
}
|
|
menu_str += tmp_buff;
|
|
|
|
form_s514_serial_options_menu(menu_str, number_of_items);
|
|
|
|
number_of_items++;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", S514_SERIAL_ADVANCED);
|
|
menu_str += tmp_buff;
|
|
menu_str += " \"Advanced Physical Medium Configuration\" ";
|
|
break;
|
|
|
|
case NOT_SET:
|
|
//It is a new configuration.
|
|
//Do not display "Undefined" twice - go directly to hardware selection.
|
|
goto display_hardware_selection_label;
|
|
|
|
}//switch(linkconf->card_type)
|
|
|
|
Debug(DBG_MENU_HARDWARE_SETUP, ("number_of_items: %d\n", number_of_items));
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//create the explanation text for the menu
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH,
|
|
"\n------------------------------------------\
|
|
\nHardware for Wan Device: %s", link_def->name);
|
|
|
|
if(set_configuration( YES,//indicates to call V2 of the function
|
|
MENU_BOX_BACK,//MENU_BOX_SELECT,
|
|
lxdialog_path,
|
|
"HARDWARE CONFIGURATION",
|
|
WANCFG_PROGRAM_NAME,
|
|
tmp_buff,
|
|
MENU_HEIGTH, MENU_WIDTH,
|
|
number_of_items,
|
|
(char*)menu_str.c_str()
|
|
) == NO){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
|
|
if(show(selection_index) == NO){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
exit_dialog = NO;
|
|
switch(*selection_index)
|
|
{
|
|
case MENU_BOX_BUTTON_SELECT:
|
|
Debug(DBG_MENU_HARDWARE_SETUP,
|
|
("hardware_setup: option selected for editing: %s\n", get_lxdialog_output_string()));
|
|
|
|
switch(atoi(get_lxdialog_output_string()))
|
|
{
|
|
case EMPTY_LINE:
|
|
//do nothing
|
|
break;
|
|
|
|
case CARD_TYPE:
|
|
case NOT_SET:
|
|
display_hardware_selection_label:
|
|
{
|
|
old_card_type = new_card_type = linkconf->card_type;
|
|
|
|
menu_hardware_card_type hardware_card_type(lxdialog_path, cfr);
|
|
if(hardware_card_type.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}else{
|
|
new_card_type = linkconf->card_type;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SETUP,
|
|
("hardware_setup: old_card_type: %d, new_card_type: %d\n", old_card_type, new_card_type));
|
|
|
|
if(old_card_type != new_card_type){
|
|
//if card type change reset everything to defaults
|
|
//delete list of logical channels
|
|
if(cfr->main_obj_list != NULL){
|
|
delete cfr->main_obj_list;
|
|
cfr->main_obj_list = NULL;
|
|
}
|
|
|
|
//create the new list
|
|
cfr->main_obj_list = new objects_list();
|
|
|
|
//insert one logical channel
|
|
switch(new_card_type)
|
|
{
|
|
case WANOPT_S50X:
|
|
case WANOPT_S51X:
|
|
adjust_number_of_logical_channels_in_list(WANCONFIG_GENERIC, cfr->main_obj_list,
|
|
cfr, 1);
|
|
break;
|
|
|
|
case WANOPT_AFT:
|
|
adjust_number_of_logical_channels_in_list(WANCONFIG_AFT, cfr->main_obj_list,
|
|
cfr, 1);
|
|
break;
|
|
|
|
case WANOPT_ADSL:
|
|
adjust_number_of_logical_channels_in_list(WANCONFIG_ADSL, cfr->main_obj_list,
|
|
cfr, 1);
|
|
break;
|
|
|
|
default:
|
|
ERR_DBG_OUT(("Invalid card type 0x%X!!\n", linkconf->card_type));
|
|
}
|
|
}else{
|
|
Debug(DBG_MENU_HARDWARE_SETUP, ("card type unchanged\n"));
|
|
|
|
if(linkconf->card_type == NOT_SET){
|
|
//user did NOT select any card type, but wants to exit. exit the dialog.
|
|
rc = YES;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
|
|
case S514_TE1_INTERFACE:
|
|
{
|
|
menu_te1_select_media te1_select_media(lxdialog_path, cfr);
|
|
if(te1_select_media.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case AFT_TE3_INTERFACE:
|
|
{
|
|
menu_te3_select_media te3_select_media(lxdialog_path, cfr);
|
|
if(te3_select_media.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case COMMS_PORT://Pri/Sec
|
|
{
|
|
menu_hardware_select_comms_port select_comms_port(lxdialog_path, cfr);
|
|
if(select_comms_port.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case S514_SERIAL_INTERFACE://V.35/RS232
|
|
{
|
|
menu_hardware_serial_select_medium serial_select_medium(lxdialog_path, cfr);
|
|
if(serial_select_medium.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case S514_SERIAL_ADVANCED://Clock + bit rate
|
|
{
|
|
menu_hardware_serial_card_advanced_options hardware_serial_card_advanced_options(
|
|
lxdialog_path, cfr);
|
|
if(hardware_serial_card_advanced_options.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case S514_TE1_ADVANCED:
|
|
case AFT_TE1_ADVANCED:
|
|
{
|
|
menu_hardware_te1_card_advanced_options hardware_te1_card_advanced_options(
|
|
lxdialog_path, cfr);
|
|
if(hardware_te1_card_advanced_options.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case AFT_ANALOG_ADVANCED:
|
|
{
|
|
menu_hardware_analog_card_advanced_options hardware_analog_card_advanced_options(
|
|
lxdialog_path, cfr);
|
|
if(hardware_analog_card_advanced_options.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case AFT_TE3_ADVANCED:
|
|
{
|
|
menu_hardware_te3_card_advanced_options hardware_te3_card_advanced_options(
|
|
lxdialog_path, cfr);
|
|
if(hardware_te3_card_advanced_options.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case S508_IO_PORT:
|
|
{
|
|
menu_s508_io_port_select s508_io_port_select(lxdialog_path, cfr);
|
|
if(s508_io_port_select.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case S508_IRQ:
|
|
{
|
|
menu_s508_irq_select s508_irq_select(lxdialog_path, cfr);
|
|
if(s508_irq_select.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case S508_MEMORY:
|
|
{
|
|
menu_s508_memory_addr s508_memory_addr(lxdialog_path, cfr);
|
|
if(s508_memory_addr.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case TIMESLOT_GROUP_CFG:
|
|
//for the AFT card:
|
|
//1. get number of logical channels
|
|
//2. for each log. cha-l get the timeslots it will use
|
|
//3. for each log. cha-l get the protocol
|
|
{
|
|
menu_aft_logical_channels_list aft_logical_channels_list(lxdialog_path, cfr);
|
|
if(aft_logical_channels_list.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ADVANCED_PCI_CFG:
|
|
{
|
|
menu_advanced_pci_configuration advanced_pci_configuration(lxdialog_path, cfr);
|
|
if(advanced_pci_configuration.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ADSL_ENCAPSULATION_MODE:
|
|
{
|
|
int old_encapsulation = adsl_cfg->EncapMode;
|
|
|
|
menu_adsl_encapsulation adsl_encapsulation(lxdialog_path, adsl_cfg);
|
|
if(adsl_encapsulation.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
|
|
if(old_encapsulation != adsl_cfg->EncapMode){
|
|
//change the 'sub_config_id' accordingly
|
|
switch(adsl_cfg->EncapMode)
|
|
{
|
|
case RFC_MODE_BRIDGED_ETH_LLC:
|
|
case RFC_MODE_BRIDGED_ETH_VC:
|
|
link_def->sub_config_id = PROTOCOL_ETHERNET;
|
|
break;
|
|
|
|
case RFC_MODE_ROUTED_IP_LLC:
|
|
case RFC_MODE_ROUTED_IP_VC:
|
|
case RFC_MODE_RFC1577_ENCAP:
|
|
link_def->sub_config_id = PROTOCOL_IP;
|
|
break;
|
|
|
|
case RFC_MODE_PPP_LLC:
|
|
case RFC_MODE_PPP_VC:
|
|
link_def->sub_config_id = WANCONFIG_MPPP;
|
|
break;
|
|
}//switch(adsl_cfg->EncapMode)
|
|
}
|
|
}
|
|
break;
|
|
|
|
case ADSL_ATM_AUTOCFG:
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, "Do you want to %s ADSL autoconfiguration?",
|
|
(adsl_cfg->atm_autocfg == WANOPT_NO ? "Enable" : "Disable"));
|
|
|
|
if(yes_no_question( selection_index,
|
|
lxdialog_path,
|
|
NO_PROTOCOL_NEEDED,
|
|
tmp_buff) == NO){
|
|
//error displaying dialog
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
|
|
switch(*selection_index)
|
|
{
|
|
case YES_NO_TEXT_BOX_BUTTON_YES:
|
|
if(adsl_cfg->atm_autocfg == WANOPT_NO){
|
|
//disabled, user wants to enable
|
|
adsl_cfg->atm_autocfg = WANOPT_YES;
|
|
}else{
|
|
adsl_cfg->atm_autocfg = WANOPT_NO;
|
|
}
|
|
break;
|
|
|
|
case YES_NO_TEXT_BOX_BUTTON_NO:
|
|
//don't do anything
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case ADSL_VCI:
|
|
show_vci_input_box:
|
|
snprintf(explanation_text, MAX_PATH_LENGTH, "Enter Vci number");
|
|
snprintf(initial_text, MAX_PATH_LENGTH, "%d", adsl_cfg->Vci);
|
|
|
|
inb.set_configuration( lxdialog_path,
|
|
backtitle,
|
|
explanation_text,
|
|
INPUT_BOX_HIGTH,
|
|
INPUT_BOX_WIDTH,
|
|
initial_text);
|
|
|
|
inb.show(selection_index);
|
|
|
|
switch(*selection_index)
|
|
{
|
|
case INPUT_BOX_BUTTON_OK:
|
|
adsl_cfg->Vci = atoi(remove_spaces_in_int_string(inb.get_lxdialog_output_string()));
|
|
break;
|
|
|
|
case INPUT_BOX_BUTTON_HELP:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, option_not_implemented_yet_help_str);
|
|
goto show_vci_input_box;
|
|
}//switch(*selection_index)
|
|
break;
|
|
|
|
case ADSL_VPI:
|
|
show_vpi_input_box:
|
|
snprintf(explanation_text, MAX_PATH_LENGTH, "Enter Vpi number");
|
|
snprintf(initial_text, MAX_PATH_LENGTH, "%d", adsl_cfg->Vpi);
|
|
|
|
inb.set_configuration( lxdialog_path,
|
|
backtitle,
|
|
explanation_text,
|
|
INPUT_BOX_HIGTH,
|
|
INPUT_BOX_WIDTH,
|
|
initial_text);
|
|
|
|
inb.show(selection_index);
|
|
|
|
switch(*selection_index)
|
|
{
|
|
case INPUT_BOX_BUTTON_OK:
|
|
adsl_cfg->Vpi = atoi(remove_spaces_in_int_string(inb.get_lxdialog_output_string()));
|
|
break;
|
|
|
|
case INPUT_BOX_BUTTON_HELP:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, option_not_implemented_yet_help_str);
|
|
goto show_vpi_input_box;
|
|
}//switch(*selection_index)
|
|
break;
|
|
|
|
case ADSL_WATCHDOG:
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, "Do you want to %s ADSL watchdog?",
|
|
(adsl_cfg->atm_watchdog == WANOPT_NO ? "Enable" : "Disable"));
|
|
|
|
if(yes_no_question( selection_index,
|
|
lxdialog_path,
|
|
NO_PROTOCOL_NEEDED,
|
|
tmp_buff) == NO){
|
|
//error displaying dialog
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
|
|
switch(*selection_index)
|
|
{
|
|
case YES_NO_TEXT_BOX_BUTTON_YES:
|
|
if(adsl_cfg->atm_watchdog == WANOPT_NO){
|
|
//disabled, user wants to enable
|
|
adsl_cfg->atm_watchdog = WANOPT_YES;
|
|
}else{
|
|
adsl_cfg->atm_watchdog = WANOPT_NO;
|
|
}
|
|
break;
|
|
|
|
case YES_NO_TEXT_BOX_BUTTON_NO:
|
|
//don't do anything
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case ADSL_ADVANCED:
|
|
{
|
|
menu_adsl_advanced_cfg adsl_advanced_cfg(lxdialog_path, adsl_cfg);
|
|
if(adsl_advanced_cfg.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case TDMV_LAW_SELECT:
|
|
{
|
|
menu_tdmv_law tdmv_law(lxdialog_path, cfr);
|
|
if(tdmv_law.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case TDMV_OPERMODE:
|
|
{
|
|
menu_tdmv_opermode tdmv_opermode(lxdialog_path, cfr);
|
|
if(tdmv_opermode.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
case AFT_SERIAL_CONNECTION_TYPE:
|
|
{
|
|
menu_hardware_serial_connection_type hardware_serial_connection_type(
|
|
lxdialog_path, cfr);
|
|
if(hardware_serial_connection_type.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case AFT_SERIAL_LINE_CODING:
|
|
{
|
|
menu_hardware_serial_line_coding hardware_serial_line_coding(
|
|
lxdialog_path, cfr);
|
|
if(hardware_serial_line_coding.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
case AFT_SERIAL_LINE_IDLE:
|
|
{
|
|
menu_hardware_serial_line_idle hardware_serial_line_idle(
|
|
lxdialog_path, cfr);
|
|
if(hardware_serial_line_idle.run(selection_index) == NO){
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
}
|
|
break;
|
|
|
|
default:
|
|
ERR_DBG_OUT(("Invalid option selected for editing!! selection: %s\n",
|
|
get_lxdialog_output_string()));
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
break;
|
|
|
|
case MENU_BOX_BUTTON_HELP:
|
|
|
|
switch(atoi(get_lxdialog_output_string()))
|
|
{
|
|
case CARD_TYPE:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, adapter_type_help_str);
|
|
break;
|
|
|
|
case S514_TE1_ADVANCED:
|
|
case AFT_TE1_ADVANCED:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, te1_advanced_cfg_help_str);
|
|
break;
|
|
|
|
case S514_TE1_INTERFACE:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, media_type_help_str);
|
|
break;
|
|
|
|
case COMMS_PORT:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, comms_port_help_str);
|
|
break;
|
|
|
|
case S508_IO_PORT:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, s508_io_port_help_str);
|
|
break;
|
|
|
|
case S508_IRQ:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, s508_irq_help_str);
|
|
break;
|
|
|
|
case S508_MEMORY:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, s508_shared_memory_addr);
|
|
break;
|
|
|
|
case S514_SERIAL_INTERFACE:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, serial_physical_interface_help_str);
|
|
break;
|
|
|
|
case S514_SERIAL_ADVANCED:
|
|
tb.show_help_message( lxdialog_path, NO_PROTOCOL_NEEDED,
|
|
serial_advanced_configuration_help_str);
|
|
break;
|
|
|
|
case ADSL_ADVANCED:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, option_not_implemented_yet_help_str);
|
|
break;
|
|
|
|
default:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED, option_not_implemented_yet_help_str);
|
|
}
|
|
break;
|
|
|
|
case MENU_BOX_BUTTON_EXIT:
|
|
rc = YES;
|
|
exit_dialog = YES;
|
|
break;
|
|
}//switch(*selection_index)
|
|
|
|
if(exit_dialog == NO){
|
|
goto again;
|
|
}
|
|
|
|
cleanup:
|
|
return rc;
|
|
}
|
|
|
|
void menu_hardware_setup::form_s514_serial_options_menu(string& str, int& number_of_items)
|
|
{
|
|
char tmp_buff[MAX_PATH_LENGTH];
|
|
link_def_t * link_def;
|
|
wandev_conf_t *linkconf;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SETUP,
|
|
("menu_net_interface_setup::form_s514_serial_options_menu()\n"));
|
|
|
|
link_def = cfr->link_defs;
|
|
linkconf = cfr->link_defs->linkconf;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", S514_SERIAL_INTERFACE);
|
|
str += tmp_buff;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Physical Medium-> %s\" ",
|
|
//snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Interface------> %s\" ",
|
|
(linkconf->electrical_interface == WANOPT_V35 ? "V.35" : "RS232"));
|
|
str += tmp_buff;
|
|
|
|
number_of_items++;
|
|
}
|
|
|
|
void menu_hardware_setup::form_AFT_Serial_options_menu(string& str, int& number_of_items)
|
|
{
|
|
char tmp_buff[MAX_PATH_LENGTH];
|
|
link_def_t * link_def;
|
|
wandev_conf_t *linkconf;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SETUP, ("menu_net_interface_setup::%s()\n", __FUNCTION__));
|
|
|
|
link_def = cfr->link_defs;
|
|
linkconf = cfr->link_defs->linkconf;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
//Serial connection type
|
|
//Permanent - CTS/RTS are always up
|
|
//Switched - CTS/RTS are only brought up tx
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", AFT_SERIAL_CONNECTION_TYPE);
|
|
str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Connection Type-> %s\" ",
|
|
(linkconf->connection == WANOPT_PERMANENT ? "Permanent" : (linkconf->connection == WANOPT_SWITCHED?"Switched":"Unknown!")));
|
|
str += tmp_buff;
|
|
number_of_items++;
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
//Serial LineCoding: NRZ or NRZI
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", AFT_SERIAL_LINE_CODING);
|
|
str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Line Coding-----> %s\" ",
|
|
(linkconf->line_coding == WANOPT_NRZ ? "NRZ" : (linkconf->line_coding == WANOPT_NRZI ? "NRZI":"Unknown!")));
|
|
str += tmp_buff;
|
|
number_of_items++;
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
//Serial LineIdle:
|
|
//Flag - use flags to idle on the line
|
|
//Mark - use mark to idle on the line
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", AFT_SERIAL_LINE_IDLE);
|
|
str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Line Idle-------> %s\" ",
|
|
(linkconf->line_idle == WANOPT_IDLE_FLAG ? "Flag" : (linkconf->line_idle == WANOPT_IDLE_MARK ? "Mark":"Unknown!")));
|
|
str += tmp_buff;
|
|
number_of_items++;
|
|
//////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
}
|
|
|
|
void menu_hardware_setup::form_s514_TE1_options_menu(string& str, int& number_of_items)
|
|
{
|
|
char tmp_buff[MAX_PATH_LENGTH];
|
|
link_def_t * link_def;
|
|
wandev_conf_t *linkconf;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SETUP,
|
|
("menu_net_interface_setup::form_s514_TE1_options_menu()\n"));
|
|
|
|
link_def = cfr->link_defs;
|
|
linkconf = cfr->link_defs->linkconf;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", S514_TE1_INTERFACE);
|
|
str += tmp_buff;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Physical Medium-> %s\" ",
|
|
//snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Media-----------> %s\" ",
|
|
MEDIA_DECODE(&linkconf->fe_cfg));
|
|
str += tmp_buff;
|
|
|
|
number_of_items++;
|
|
}
|
|
|
|
void menu_hardware_setup::form_TE3_options_menu(string& str, int& number_of_items)
|
|
{
|
|
char tmp_buff[MAX_PATH_LENGTH];
|
|
link_def_t * link_def;
|
|
wandev_conf_t *linkconf;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SETUP,
|
|
("menu_net_interface_setup::form_TE3_options_menu()\n"));
|
|
|
|
link_def = cfr->link_defs;
|
|
linkconf = cfr->link_defs->linkconf;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", AFT_TE3_INTERFACE);
|
|
str += tmp_buff;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SETUP, ("linkconf->fe_cfg.media: 0x%X\n",
|
|
linkconf->fe_cfg.media));
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Physical Medium-> %s\" ",
|
|
(linkconf->fe_cfg.media == WAN_MEDIA_DS3 ? "T3" : "E3"));
|
|
str += tmp_buff;
|
|
|
|
number_of_items++;
|
|
}
|
|
|
|
void menu_hardware_setup::form_pci_card_locations_options_menu(string& str, int& number_of_items)
|
|
{
|
|
char tmp_buff[MAX_PATH_LENGTH];
|
|
|
|
Debug(DBG_MENU_HARDWARE_SETUP,
|
|
("menu_net_interface_setup::form_pci_card_locations_options_menu()\n"));
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", ADVANCED_PCI_CFG);
|
|
str += tmp_buff;
|
|
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Advanced PCI Configuration\" ");
|
|
str += tmp_buff;
|
|
|
|
number_of_items++;
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
enum SERIAL_CONNECTION_TYPE{
|
|
PERMANENT,
|
|
SWITCHED
|
|
};
|
|
|
|
#define DBG_MENU_HARDWARE_SERIAL_CONNECTION_TYPE 1
|
|
|
|
menu_hardware_serial_connection_type::
|
|
menu_hardware_serial_connection_type(IN char * lxdialog_path,
|
|
IN conf_file_reader* ptr_cfr)
|
|
{
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_CONNECTION_TYPE,
|
|
("menu_hardware_serial_connection_type::%s()\n", __FUNCTION__));
|
|
|
|
snprintf(this->lxdialog_path, MAX_PATH_LENGTH, "%s", lxdialog_path);
|
|
this->cfr = ptr_cfr;
|
|
}
|
|
|
|
menu_hardware_serial_connection_type::~menu_hardware_serial_connection_type()
|
|
{
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_CONNECTION_TYPE,
|
|
("menu_hardware_serial_connection_type::%s()\n", __FUNCTION__));
|
|
}
|
|
|
|
int menu_hardware_serial_connection_type::run(OUT int * selection_index)
|
|
{
|
|
string menu_str;
|
|
int rc;
|
|
char tmp_buff[MAX_PATH_LENGTH];
|
|
char exit_dialog;
|
|
int number_of_items;
|
|
|
|
//help text box
|
|
text_box tb;
|
|
|
|
link_def_t * link_def;
|
|
wandev_conf_t *linkconf;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_CONNECTION_TYPE,
|
|
("menu_hardware_serial_connection_type::%s()\n", __FUNCTION__));
|
|
|
|
again:
|
|
number_of_items = 2;
|
|
|
|
link_def = cfr->link_defs;
|
|
linkconf = cfr->link_defs->linkconf;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_CONNECTION_TYPE, ("cfr->link_defs->name: %s\n", link_def->name));
|
|
|
|
rc = YES;
|
|
exit_dialog = NO;
|
|
menu_str = " ";
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_CONNECTION_TYPE, ("linkconf->card_type: DEC:%d, HEX: 0x%X\n",
|
|
linkconf->card_type, linkconf->card_type));
|
|
|
|
/////////////////////////////////////////////////
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", WANOPT_PERMANENT);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Permanent\" ");
|
|
menu_str += tmp_buff;
|
|
|
|
/////////////////////////////////////////////////
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", WANOPT_SWITCHED);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Switched\" ");
|
|
menu_str += tmp_buff;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//create the explanation text for the menu
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH,
|
|
"\n------------------------------------------\
|
|
\nSelect Serial Connection type for Wan Device: %s", link_def->name);
|
|
|
|
if(set_configuration( YES,//indicates to call V2 of the function
|
|
MENU_BOX_BACK,//MENU_BOX_SELECT,
|
|
lxdialog_path,
|
|
"SELECT CONNECTION TYPE",
|
|
WANCFG_PROGRAM_NAME,
|
|
tmp_buff,
|
|
MENU_HEIGTH, MENU_WIDTH,
|
|
number_of_items,
|
|
(char*)menu_str.c_str()
|
|
) == NO){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
|
|
if(show(selection_index) == NO){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
exit_dialog = NO;
|
|
switch(*selection_index)
|
|
{
|
|
case MENU_BOX_BUTTON_SELECT:
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_CONNECTION_TYPE,
|
|
("hardware_setup: option selected for editing: %s\n", get_lxdialog_output_string()));
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_CONNECTION_TYPE,
|
|
("serial select clock: atoi(get_lxdialog_output_string(): %d\n",
|
|
atoi(get_lxdialog_output_string())));
|
|
|
|
switch(atoi(get_lxdialog_output_string()))
|
|
{
|
|
case WANOPT_PERMANENT:
|
|
linkconf->connection = WANOPT_PERMANENT;
|
|
exit_dialog = YES;
|
|
break;
|
|
|
|
case WANOPT_SWITCHED:
|
|
linkconf->connection = WANOPT_SWITCHED;
|
|
exit_dialog = YES;
|
|
break;
|
|
|
|
default:
|
|
ERR_DBG_OUT(("Invalid option selected for editing!! selection: %s\n",
|
|
get_lxdialog_output_string()));
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
break;
|
|
|
|
case MENU_BOX_BUTTON_HELP:
|
|
|
|
switch(atoi(get_lxdialog_output_string()))
|
|
{
|
|
case WANOPT_PERMANENT:
|
|
case WANOPT_SWITCHED:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED,
|
|
"Please select Serial Connection type.");
|
|
break;
|
|
|
|
default:
|
|
ERR_DBG_OUT(("Invalid option selected for editing!! selection: %s\n",
|
|
get_lxdialog_output_string()));
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
break;
|
|
|
|
case MENU_BOX_BUTTON_EXIT:
|
|
exit_dialog = YES;
|
|
break;
|
|
}//switch(*selection_index)
|
|
|
|
if(exit_dialog == NO){
|
|
goto again;
|
|
}
|
|
|
|
cleanup:
|
|
return rc;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
enum SERIAL_LINE_CODING{
|
|
NRZ,
|
|
NRZI
|
|
};
|
|
|
|
#define DBG_MENU_HARDWARE_SERIAL_LINE_CODING 1
|
|
|
|
menu_hardware_serial_line_coding::
|
|
menu_hardware_serial_line_coding(IN char * lxdialog_path,
|
|
IN conf_file_reader* ptr_cfr)
|
|
{
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_CODING,
|
|
("menu_hardware_serial_line_coding::%s()\n", __FUNCTION__));
|
|
|
|
snprintf(this->lxdialog_path, MAX_PATH_LENGTH, "%s", lxdialog_path);
|
|
this->cfr = ptr_cfr;
|
|
}
|
|
|
|
menu_hardware_serial_line_coding::~menu_hardware_serial_line_coding()
|
|
{
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_CODING,
|
|
("menu_hardware_serial_line_coding::%s()\n", __FUNCTION__));
|
|
}
|
|
|
|
int menu_hardware_serial_line_coding::run(OUT int * selection_index)
|
|
{
|
|
string menu_str;
|
|
int rc;
|
|
char tmp_buff[MAX_PATH_LENGTH];
|
|
char exit_dialog;
|
|
int number_of_items;
|
|
|
|
//help text box
|
|
text_box tb;
|
|
|
|
link_def_t * link_def;
|
|
wandev_conf_t *linkconf;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_CODING,
|
|
("menu_hardware_serial_line_coding::%s()\n", __FUNCTION__));
|
|
|
|
again:
|
|
number_of_items = 2;
|
|
|
|
link_def = cfr->link_defs;
|
|
linkconf = cfr->link_defs->linkconf;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_CODING, ("cfr->link_defs->name: %s\n", link_def->name));
|
|
|
|
rc = YES;
|
|
exit_dialog = NO;
|
|
menu_str = " ";
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_CODING, ("linkconf->card_type: DEC:%d, HEX: 0x%X\n",
|
|
linkconf->card_type, linkconf->card_type));
|
|
|
|
/////////////////////////////////////////////////
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", WANOPT_NRZ);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"NRZ\" ");
|
|
menu_str += tmp_buff;
|
|
|
|
/////////////////////////////////////////////////
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", WANOPT_NRZI);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"NRZI\" ");
|
|
menu_str += tmp_buff;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//create the explanation text for the menu
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH,
|
|
"\n------------------------------------------\
|
|
\nSelect Serial Line Coding type for Wan Device: %s", link_def->name);
|
|
|
|
if(set_configuration( YES,//indicates to call V2 of the function
|
|
MENU_BOX_BACK,//MENU_BOX_SELECT,
|
|
lxdialog_path,
|
|
"SELECT LINE CODING",
|
|
WANCFG_PROGRAM_NAME,
|
|
tmp_buff,
|
|
MENU_HEIGTH, MENU_WIDTH,
|
|
number_of_items,
|
|
(char*)menu_str.c_str()
|
|
) == NO){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
|
|
if(show(selection_index) == NO){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
exit_dialog = NO;
|
|
switch(*selection_index)
|
|
{
|
|
case MENU_BOX_BUTTON_SELECT:
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_CODING,
|
|
("hardware_setup: option selected for editing: %s\n", get_lxdialog_output_string()));
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_CODING,
|
|
("serial select clock: atoi(get_lxdialog_output_string(): %d\n",
|
|
atoi(get_lxdialog_output_string())));
|
|
|
|
switch(atoi(get_lxdialog_output_string()))
|
|
{
|
|
case WANOPT_NRZ:
|
|
linkconf->line_coding = WANOPT_NRZ;
|
|
exit_dialog = YES;
|
|
break;
|
|
|
|
case WANOPT_NRZI:
|
|
linkconf->line_coding = WANOPT_NRZI;
|
|
exit_dialog = YES;
|
|
break;
|
|
|
|
default:
|
|
ERR_DBG_OUT(("Invalid option selected for editing!! selection: %s\n",
|
|
get_lxdialog_output_string()));
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
break;
|
|
|
|
case MENU_BOX_BUTTON_HELP:
|
|
|
|
switch(atoi(get_lxdialog_output_string()))
|
|
{
|
|
case WANOPT_NRZ:
|
|
case WANOPT_NRZI:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED,
|
|
"Please select Serial Line coding.");
|
|
break;
|
|
|
|
default:
|
|
ERR_DBG_OUT(("Invalid option selected for editing!! selection: %s\n",
|
|
get_lxdialog_output_string()));
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
break;
|
|
|
|
case MENU_BOX_BUTTON_EXIT:
|
|
exit_dialog = YES;
|
|
break;
|
|
}//switch(*selection_index)
|
|
|
|
if(exit_dialog == NO){
|
|
goto again;
|
|
}
|
|
|
|
cleanup:
|
|
return rc;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
enum SERIAL_LINE_IDLE{
|
|
FLAG,
|
|
MARK
|
|
};
|
|
|
|
#define DBG_MENU_HARDWARE_SERIAL_LINE_IDLE 1
|
|
|
|
menu_hardware_serial_line_idle::
|
|
menu_hardware_serial_line_idle(IN char * lxdialog_path,
|
|
IN conf_file_reader* ptr_cfr)
|
|
{
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_IDLE,
|
|
("menu_hardware_serial_line_idle::%s()\n", __FUNCTION__));
|
|
|
|
snprintf(this->lxdialog_path, MAX_PATH_LENGTH, "%s", lxdialog_path);
|
|
this->cfr = ptr_cfr;
|
|
}
|
|
|
|
menu_hardware_serial_line_idle::~menu_hardware_serial_line_idle()
|
|
{
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_IDLE,
|
|
("menu_hardware_serial_line_idle::%s()\n", __FUNCTION__));
|
|
}
|
|
|
|
int menu_hardware_serial_line_idle::run(OUT int * selection_index)
|
|
{
|
|
string menu_str;
|
|
int rc;
|
|
char tmp_buff[MAX_PATH_LENGTH];
|
|
char exit_dialog;
|
|
int number_of_items;
|
|
|
|
//help text box
|
|
text_box tb;
|
|
|
|
link_def_t * link_def;
|
|
wandev_conf_t *linkconf;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_IDLE,
|
|
("menu_hardware_serial_line_idle::%s()\n", __FUNCTION__));
|
|
|
|
again:
|
|
number_of_items = 2;
|
|
|
|
link_def = cfr->link_defs;
|
|
linkconf = cfr->link_defs->linkconf;
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_IDLE, ("cfr->link_defs->name: %s\n", link_def->name));
|
|
|
|
rc = YES;
|
|
exit_dialog = NO;
|
|
menu_str = " ";
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_IDLE, ("linkconf->card_type: DEC:%d, HEX: 0x%X\n",
|
|
linkconf->card_type, linkconf->card_type));
|
|
|
|
/////////////////////////////////////////////////
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", WANOPT_IDLE_FLAG);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Flag\" ");
|
|
menu_str += tmp_buff;
|
|
|
|
/////////////////////////////////////////////////
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"%d\" ", WANOPT_IDLE_MARK);
|
|
menu_str += tmp_buff;
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH, " \"Mark\" ");
|
|
menu_str += tmp_buff;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
//create the explanation text for the menu
|
|
snprintf(tmp_buff, MAX_PATH_LENGTH,
|
|
"\n------------------------------------------\
|
|
\nSelect Serial Line Idle for Wan Device: %s", link_def->name);
|
|
|
|
if(set_configuration( YES,//indicates to call V2 of the function
|
|
MENU_BOX_BACK,//MENU_BOX_SELECT,
|
|
lxdialog_path,
|
|
"SELECT LINE IDLE",
|
|
WANCFG_PROGRAM_NAME,
|
|
tmp_buff,
|
|
MENU_HEIGTH, MENU_WIDTH,
|
|
number_of_items,
|
|
(char*)menu_str.c_str()
|
|
) == NO){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
|
|
if(show(selection_index) == NO){
|
|
rc = NO;
|
|
goto cleanup;
|
|
}
|
|
//////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
exit_dialog = NO;
|
|
switch(*selection_index)
|
|
{
|
|
case MENU_BOX_BUTTON_SELECT:
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_IDLE,
|
|
("hardware_setup: option selected for editing: %s\n", get_lxdialog_output_string()));
|
|
|
|
Debug(DBG_MENU_HARDWARE_SERIAL_LINE_IDLE,
|
|
("serial select clock: atoi(get_lxdialog_output_string(): %d\n",
|
|
atoi(get_lxdialog_output_string())));
|
|
|
|
switch(atoi(get_lxdialog_output_string()))
|
|
{
|
|
case WANOPT_IDLE_FLAG:
|
|
linkconf->line_idle = WANOPT_IDLE_FLAG;
|
|
exit_dialog = YES;
|
|
break;
|
|
|
|
case WANOPT_IDLE_MARK:
|
|
linkconf->line_idle = WANOPT_IDLE_MARK;
|
|
exit_dialog = YES;
|
|
break;
|
|
|
|
default:
|
|
ERR_DBG_OUT(("Invalid option selected for editing!! selection: %s\n",
|
|
get_lxdialog_output_string()));
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
break;
|
|
|
|
case MENU_BOX_BUTTON_HELP:
|
|
|
|
switch(atoi(get_lxdialog_output_string()))
|
|
{
|
|
case WANOPT_IDLE_FLAG:
|
|
case WANOPT_IDLE_MARK:
|
|
tb.show_help_message(lxdialog_path, NO_PROTOCOL_NEEDED,
|
|
"Please select Serial Line Idle.");
|
|
break;
|
|
|
|
default:
|
|
ERR_DBG_OUT(("Invalid option selected for editing!! selection: %s\n",
|
|
get_lxdialog_output_string()));
|
|
rc = NO;
|
|
exit_dialog = YES;
|
|
}
|
|
break;
|
|
|
|
case MENU_BOX_BUTTON_EXIT:
|
|
exit_dialog = YES;
|
|
break;
|
|
}//switch(*selection_index)
|
|
|
|
if(exit_dialog == NO){
|
|
goto again;
|
|
}
|
|
|
|
cleanup:
|
|
return rc;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////
|