?? init.c
字號:
for(i=0x32; i<=0x35; i++)
x_status[i] = 0;
for(i=0x38; i<=0x3f; i++)
x_status[i] = 0;
rx_v8bis_cl_msg[0] = 0;
rx_v8bis_cl_msg[0xd] = 0;
rx_v8bis_cl_msg[0xe] = 0;
rx_v8bis_cl_msg[0xf] = 0;
rx_v8bis_cl_msg[0x10] = 0;
}
//-------------------------------------------------------------
// I/O related UART initialisation.
void io_init_task(void)
{
io_state = 0;
io_old_state = 0;
io_uart_status = 0;
io_uart_msr = 0;
io_remote_control_mode = 0;
io_at_esc_detect = 0;
io_at_esc_state = 0;
//UART_SetQue (0,0,0,0);
io_init_dce_tx_fifo();
io_init_dce_rx_fifo();
UART_ri_off();
UART_cts_on();
UART_cd_off();
UART_dsr_on();
//io_sync_power_up_init();
io_send_break_to_remote = 0;
}
void ll_init_na (void)
{
H_dial_tone_hole_time = 0xff;
H_max_auto_answer_ring_count = 0xff;
H_max_no_answer_timeout = 0xff;
H_comma_pause_duration_limit = 0xff;
H_ringer_impedance_relay_flag = 0;
H_pulse_dial_make_time = 0x27;
H_pulse_dial_break_time = 0x3d;
H_min_busy_cadence_on_time = 0x12;
H_max_busy_cadence_on_time = 0x3c;
H_min_busy_cadence_off_time = 0x12;
H_max_busy_cadence_off_time = 0x3c;
H_answer_tone_validation_time = 0xa;
H_min_no_answer_timeout = 1;
H_detect_busy_tone_during_dial_tone = 1;
H_dial_tone_or_call_progress_filter = 5;
H_TAD_tx_level_dB = 0xa;
// Copied fromJamie's base country init.
H_shunt_relay_on_time = 5;
}
//-------------------------------------------------------------------------
// Internationalisation stuff.
//
// Country specific stuff.
void ll_init_uk(void)
{
H_blacklist_or_delay_flag = 0;
H_off_hook_restrictions = 0;
H_pulse_dial_make_time = 0x22;
H_pulse_dial_break_time = 0x44;
H_DTMF_high_tone_level_ndB = 6;
H_min_DTMF_dial_speed = 0x5a;
H_max_DTMF_dial_speed = 0x5a;
H_min_auto_answer_ring_count = 1;
H_max_auto_answer_ring_count = 4;
H_detect_number_unavailable = 1;
H_guard_tone_type = 2;
H_hook_flash_time = 7;
H_min_blind_dial_pause = 4;
H_max_blind_dial_pause = 4;
H_min_no_answer_timeout = 0x1e;
H_max_no_answer_timeout = 0x3c;
H_min_dial_pause_time = 4;
H_max_dial_pause_time = 8;
H_transmit_level_ndB = 9;
H_DTMF_high_low_tone_level_difference_dB = 3;
H_dial_tone_or_call_progress_filter = 3;
H_DC_loop_VI_characteristics_relay_flag = 1;
strcpy( country_name, "United Kingdom");
}
void ll_init_jp(void)
{
H_max_blind_dial_pause = 255;
H_pulse_dial_make_time = 34;
H_pulse_dial_break_time = 66;
H_DTMF_high_tone_level_ndB = 7;
H_min_DTMF_dial_speed = 70;
H_dial_tone_hole_time = 250;
H_ring_count_reset_delay = 80;
H_min_ring_cadence_off_time = 40;
H_answer_tone_validation_time = 50;
H_blacklist_or_delay_flag = 1;
H_blacklist_duration = 3;
H_max_failure_count_before_blacklist = 3;
H_troubled_call_delay = 0;
H_erroneous_call_delay = 0;
H_hook_flash_time = 50;
H_min_blind_dial_pause = 4;
H_min_no_answer_timeout = 35;
H_max_no_answer_timeout = 59;
H_transmit_level_ndB = 14;
H_max_failed_attempts_stage_1 = 0;
H_TAD_tx_level_dB = 13;
S(0x7f) = 1;
strcpy( country_name, "Japan");
}
void ll_init_czech (void)
{
homol[0xEE7 - HBASE] = 0x28;
homol[0xEE8 - HBASE] = 0x3C;
homol[0xF1C - HBASE] = 8;
homol[0xF22 - HBASE] = 0x23;
homol[0xEEF - HBASE] = 0x1E;
homol[0xF21 - HBASE] = 6;
homol[0xEEA - HBASE] = 6;
homol[0xF1E - HBASE] = 2;
homol[0xF15 - HBASE] = 0xA;
homol[0xEEB - HBASE] = 0x5F;
homol[0xEEC - HBASE] = 0x5F;
homol[0xF0D - HBASE] = 2;
homol[0xF0E - HBASE] = 0x14;
homol[0xF11 - HBASE] = 2;
homol[0xF12 - HBASE] = 0x14;
homol[0xEF9 - HBASE] = 2;
homol[0xEED - HBASE] = 0x23;
homol[0xEF0 - HBASE] = 0x50;
homol[0xEF1 - HBASE] = 2;
homol[0xEF2 - HBASE] = 6;
homol[0xF0C - HBASE] = 0xA;
homol[0xEFE - HBASE] = 1;
homol[0xF1A - HBASE] = 0xC;
homol[0xF16 - HBASE] = 1;
homol[0xEFF - HBASE] = 0xC;
homol[0xF00 - HBASE] = 1;
homol[0xF01 - HBASE] = 1;
homol[0xF02 - HBASE] = 1;
homol[0xF03 - HBASE] = 0xF0;
homol[0xF2F - HBASE] = 2;
strcpy( country_name, "Czech Rebuplic");
}
void ll_init_ita(void)
{
H_busy_detect_disable = 0;
H_pulse_dial_make_time = 0x29;
H_pulse_dial_break_time = 0x41;
H_min_DTMF_dial_speed = 0x5a;
H_max_DTMF_dial_speed = 0x5a;
H_call_progress_detection_threshold_ndB = 0x32;
H_dial_tone_hole_time = 0xa;
H_ring_count_reset_delay = 0x50;
H_min_auto_answer_ring_count = 1;
H_max_auto_answer_ring_count = 4;
H_busy_cycles_threshold = 2;
H_answer_tone_validation_time = 0x14;
H_blacklist_or_delay_flag = 1;
H_max_failure_count_before_blacklist = 4;
H_blacklist_duration = 6;
H_blind_dial_flag = 1;
H_min_blind_dial_pause = 4;
H_guard_tone_type = 2;
H_off_hook_restrictions = 2;
H_hook_flash_time = 9;
H_max_blind_dial_pause = 0xa;
H_min_no_answer_timeout = 0x1e;
H_max_no_answer_timeout = 0x3c;
H_transmit_level_ndB = 9;
H_dial_tone_validation_time = 0x16;
H_dial_tone_or_call_progress_filter = 4;
H_dial_tone_detection_threshold_dB = 0x28;
H_dial_modifier_validation = 1;
H_data_or_fax_carrier_rx_threshold_dB = 0x24;
strcpy( country_name, "Italy");
}
void x_init_international (void)
{
if ((S (0x75) & 0xf0) == 0x50)
H_min_ring_cadence_on_time = 0xf;
else
H_min_ring_cadence_on_time = 0xe;
H_pulse_dial_make_time = 0x24;
H_pulse_dial_break_time = 0x40;
H_pulse_dial_digit_pattern = 0x1;
H_DTMF_high_tone_level_ndB = 6;
H_min_DTMF_dial_speed = 0x32;
H_max_DTMF_dial_speed = 0x96;
H_call_progress_detection_threshold_ndB = 0x2b;
H_dial_tone_detection_delay = 0;
H_dial_tone_hole_time = 0x32;
H_ring_count_reset_delay = 0x3c;
H_min_auto_answer_ring_count = 1;
H_max_auto_answer_ring_count = 15;
H_min_ring_signal_period = 0x12;
H_max_ring_signal_period = 0x50;
H_max_no_carrier_disconnect_time = 0xff;
strcpy(country_name, "");
H_max_failed_attempts_anywhere = 0xff;
H_min_ring_cadence_off_time = 0x1e;
H_min_busy_cadence_on_time = 0;
H_max_busy_cadence_on_time = 0;
H_busy_cycles_threshold = 4;
H_min_busy_cadence_off_time = 0;
H_max_busy_cadence_off_time = 0;
H_detect_number_unavailable = 0;
H_answer_tone_validation_time = 0xa;
H_blacklist_or_delay_flag = 0;
H_max_failure_count_before_blacklist = 5;
H_troubled_call_delay = 1;
H_ineffective_call_delay = 1;
H_erroneous_call_delay = 1;
H_blacklist_duration = 0xc;
H_overcurrent_sense_validation_time = 0;
H_calling_tone_flag = 1;
H_blind_dial_flag = 1;
H_busy_detect_disable = 1;
H_guard_tone_type = 0;
H_bell_modes_permitted = 1;
H_off_hook_restrictions = 0;
H_shunt_relay_on_time = 5;
H_hook_flash_time = 0x32;
H_min_blind_dial_pause = 2;
H_max_blind_dial_pause = 0x41;
H_min_no_answer_timeout = 0x23;
H_max_no_answer_timeout = 0x41;
H_min_dial_pause_time = 2;
H_max_dial_pause_time = 41;
H_min_no_carrier_disconnect_time = 1;
H_transmit_level_ndB =0xa;
H_TAD_rx_gain = 3;
H_full_wave_ring_detect = 1;
H_max_failed_attempts_stage_1 = 1;
H_erronous_call_increment_count = 1;
H_dial_tone_validation_time = 25;
H_detect_busy_tone_during_dial_tone = 0;
H_DTMF_high_low_tone_level_difference_dB = 2;
H_not_local_phone_detection_in_speakerphone = 0;
H_not_pulse_dial_flag = 0;
H_dial_tone_or_call_progress_filter = 1;
H_dial_tone_detection_threshold_dB = 0x2b;
H_disallow_ABCD_dialing = 0;
H_comma_pause_duration_limit = 0x1e;
H_TAD_tx_level_dB = 0xa;
H_data_or_fax_carrier_rx_threshold_dB = 0x25;
H_data_or_fax_answer_detection_threshold_dB = 0x2b;
H_dialtone_level = 0; // try 2? Should be 0.
H_fax_rx_threshold_dB = 0x2b;
H_disallow_mixed_tone_and_pulse_dial = 0;
H_ringer_impedance_relay_flag = 0;
H_DC_loop_VI_characteristics_relay_flag = 0;
H_DC_loop_limiting_relay_flag = 0;
H_real_complex_impedance_setting = 0;
H_mercury_cioca_MSB_rx_gain = 0x88;
H_mercury_cioca_LSB_hybrid = 0x80;
H_mercury_ciocb_MSB_tx_gain = 0x6b;
H_mercury_ciocb_LSB_BOM_control = 0x1e;
H_mercury_ciocb_MSB_tx_gain_in_TAD_mode = 0x13;
H_mercury_ciocb_MSB_tx_gain_in_FDSP_mode = 0xcd;
H_dial_modifier_validation = 0;
H_0x7f = 0;
H_0xd6 = 0;
if (x_dsp_mars)
H_full_wave_ring_detect = 1;
country_code = read_eeprom (0);
switch (country_code) {
case COUNTRY_UNITED_KINGDOM:
ll_init_uk();
break;
case COUNTRY_JAPAN:
ll_init_jp();
break;
case COUNTRY_NORTH_AMERICA:
ll_init_na();
break;
case COUNTRY_CZECH_REPUBLIC:
ll_init_czech();
break;
case COUNTRY_ITALY:
ll_init_ita();
break;
default:
printf("Sorry your country is not yet fully supported! ");
printf("Defaulting to North America.\n");
ll_init_na();
}
//ll_init_ctr21();
ll_init_vendor ();
if (S (0xd6) == 1)
{
//ll_init_tbr21();
}
// Does some registry based stuff to do with country key.
//ll_update_parameters ();
S_line_transmit_level = H_transmit_level_ndB;
if (H_DTMF_high_tone_level_ndB < 2)
H_DTMF_high_tone_level_ndB = 2;
PRINTF ("Country is set to %s\n", country_name);
}
// FIXME. This needs to be rechecked. I was very tired when translating.
void x_init_international_default (void)
{
S (0x35) = H_guard_tone_type;
if (H_calling_tone_flag == 0)
S_data_calling_tone = 0;
if (!H_bell_modes_permitted
|| (country_code != COUNTRY_NORTH_AMERICA
&& country_code != COUNTRY_CANADA))
S (0x3a) = 0;
if (S_connect_completion_timeout < H_min_no_answer_timeout)
S_connect_completion_timeout = H_min_no_answer_timeout;
if (S_connect_completion_timeout > H_max_no_answer_timeout)
S_connect_completion_timeout = H_max_no_answer_timeout;
H_no_dialtone_timeout_with_W_modifier = S_connect_completion_timeout;
switch (country_code)
{
case COUNTRY_AUSTRALIA: // 27300
S_wait_before_dialing = 4;
S_DTMF_dial_speed = 95;
break;
case COUNTRY_DENMARK: // 2733d
S_DTMF_dial_speed = 90;
break;
case COUNTRY_FINLAND: // 27313
S_auto_disconnect_delay = 2;
break;
case COUNTRY_FRANCE: // 2731f
S_connect_completion_timeout = 140;
S_auto_disconnect_delay = 2;
S_DTMF_dial_speed = 80;
H_no_dialtone_timeout_with_W_modifier = 10;
break;
case COUNTRY_GERMANY: // 2733d
case COUNTRY_NETHERLANDS: // 2733d
S_DTMF_dial_speed = 90;
break;
case COUNTRY_NEW_ZEALAND: // 2734f
S_auto_disconnect_delay = 15;
break;
case COUNTRY_NORWAY: // 27346
S_auto_disconnect_delay = 9;
break;
case COUNTRY_SPAIN: // 27358
H_no_dialtone_timeout_with_W_modifier = 11;
break;
case COUNTRY_SWEDEN: // 27398
S_DTMF_dial_speed = 70;
break;
case COUNTRY_UNITED_KINGDOM: // 27443
S_wait_before_dialing = 4;
S_DTMF_dial_speed = 85;
break;
case COUNTRY_JAPAN: // 27438
S_data_calling_tone = 0;
break;
case COUNTRY_KOREA: // 27425
S_wait_before_dialing = 4;
S_connect_completion_timeout = 45;
case COUNTRY_PORTUGAL: // 27412
S_auto_disconnect_delay = 2;
S_inactivity_timer = 4;
break;
case COUNTRY_NORTH_AMERICA: // 27438
S_data_calling_tone = 0;
break;
case COUNTRY_IRELAND: // 27391
S_wait_before_dialing = 4;
S_DTMF_dial_speed = 0x46;
break;
}
//cell_nec_rx ();
if (S_DTMF_dial_speed < H_min_DTMF_dial_speed)
S_DTMF_dial_speed = H_min_DTMF_dial_speed;
if (S_DTMF_dial_speed > H_max_DTMF_dial_speed)
S_DTMF_dial_speed = H_max_DTMF_dial_speed;
if (S_wait_before_dialing < H_min_blind_dial_pause)
S_wait_before_dialing = H_min_blind_dial_pause;
if (S_wait_before_dialing > H_max_blind_dial_pause)
S_wait_before_dialing = H_max_blind_dial_pause;
if (S_comma_dial_time < H_min_dial_pause_time)
S_comma_dial_time = H_min_dial_pause_time;
if (S_comma_dial_time > H_max_dial_pause_time)
S_comma_dial_time = H_max_dial_pause_time;
}
void io_sync_power_up_init(void)
{
V80_Options[0] = 0;
V80_Options[1] = 0x63;
V80_Options[2] = 0x63;
V80_Options[3] = 0x63;
V80_Options[4] = 0;
V80_Options[5] = 0;
V80_Options[6] = 0x63;
V80_Options[7] = 0x63;
V80_Options[8] = 0;
V80_Options[9] = 4;
V80_Options[10] = 0;
V80_Options[11] = 1;
v80_tx_timer = 0;
v80_rx_timer = 0;
v80_retrain = 0;
}
/* All that effort to initialise from tables, then this insists on
changing it again! No I haven't a clue why. Europe in general shows
strongly here... */
void ll_init_vendor (void)
{
H_shunt_relay_on_time = 255;
H_transmit_level_ndB = 10;
H_overcurrent_sense_validation_time = 2;
H_busy_cycles_threshold = 4;
switch (country_code)
{
case COUNTRY_BELGIUM:
case COUNTRY_DENMARK:
case COUNTRY_FINLAND:
case COUNTRY_FRANCE:
case COUNTRY_GERMANY:
case COUNTRY_ITALY:
case COUNTRY_NORWAY:
case COUNTRY_SPAIN:
case COUNTRY_SWITZERLAND:
case COUNTRY_UNITED_KINGDOM:
case COUNTRY_AUSTRIA:
case COUNTRY_PORTUGAL:
case COUNTRY_IRELAND:
case COUNTRY_GREECE:
S (0xd6) = 1;
break;
case COUNTRY_NETHERLANDS:
H_shunt_relay_on_time = 27;
S (0xd6) = 1;
break;
case COUNTRY_SWEDEN:
H_transmit_level_ndB = 13;
S (0xd6) = 1;
break;
case COUNTRY_EUROPE:
ll_init_uk();
S (0xd6) = 1;
strcpy(country_name, "Ctr21");
break;
case COUNTRY_AUSTRALIA:
H_shunt_relay_on_time = 30;
break;
case COUNTRY_JAPAN:
H_DTMF_high_tone_level_ndB = 6;
H_transmit_level_ndB = 15;
break;
case COUNTRY_NORTH_AMERICA:
case COUNTRY_CANADA:
H_pulse_dial_make_time = 0x27;
H_pulse_dial_break_time = 0x3d;
H_DTMF_high_tone_level_ndB = 2;
break;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -