|
DataMuseum.dkPresents historical artifacts from the history of: RC3500 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC3500 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 21504 (0x5400) Types: TextFileVerbose Names: »alarmenv14«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »alarmenv14«
▶04◀alarmenv14; (* PT.TSSYS.50/10 *) (**************************************************************** * * * alarmenvironment is included at compiletime to make the * * module know all general constants and types used in the * * alarm system. * * * * call : * * <obj>=pascal80 alarmenv <source> * * * *****************************************************************) const al_env_version = #h14; (*********************************************************** * max-values * ************************************************************) const max_lam = 15; (* max number-1 of lam-driver_inkarnations *) max_at = 256; (* max number of at-connectors in ts *) max_vc = 256; (* max number of vc-connectors in ts *) \f (********************************************************** * simple types * ***********************************************************) type func_grp = 0..15; (* function group in operationcode *) what = (generate,check); (* used by check5-function *) ts_time = array (0..1) of integer; (* the type of time in ts *) statusbits = (unused, at_tim, hs, au, serif, restart, batt_lim, batt_sup); (* possible statusbits from at *) \f (********************************************************** * structured types * ***********************************************************) update_range = #h0..#h07; result_range = #h0..#h1f; (* the structure of a macroaddress *) macroaddr = packed record DC_addr : 0..15; NC_addr : 0..63; TS_addr : 0..63; end; (* the structure af an alarmnetaddress *) alarmnetaddr = record macro : macroaddr; micro : integer; end; (* the fixed part of all alarmmessages *) alarmlabel = packed record no_of_by : integer; rec : alarmnetaddr; send : alarmnetaddr; op_code : byte; update : update_range; result : result_range; ts_add : ts_time; end; (* the structure of a paxnetaddress *) paxnetaddr = packed record net_addr : byte; reg_addr : byte; node_addr: byte; user_addr: integer; end; \f (***************************************************************** * miscellaneous constants * ******************************************************************) const label_size = 14; (* number of bytes in alarmlabel *) AT_control = 24+4+3; (* controlword for LAM-drivers AT-channel *) (* 110 bps, 8 databits, 2 stopelements, no parity *) TS_control =96+24+4+3; (* controlword for LAM-drivers TS-channel *) (* 1200 bps, 8 databits, 2 stopelements, no parity *) VCIT_control = 96+24+4+3; (* controlword for LAM-drivers VC(IT)-channel *) max_byte = 255; max_int = 32767 ; (* max value for an integer in ts *) time = ts_time(0,0); (* time used in messages in demo *) receipt = 1; (* used by at-connector *) \f (************************************************************** * installation parameters for connectors * ***************************************************************) trans_err_rate = 20; (* the rate at which the transmissionerrorcounter is *) (* incremented at transmissionerror *) trans_err_int = 0; (* initial value for transmissionerrorcounter *) stop_poll_lim = 180; (* a stop-poll-alarm is send first time transmissionerrorcounter *) (* is greather than or equal to stop_poll_lim *) service_lim = 100; (* a servicealarm is send first time transmissionerrorcounter *) (* is greather than or equal to service_lim *) max_succ_lin_err = 3; (* a linealarm is send when max_succ_line_err *) (* transmissionerrors has come successively *) tsc_port = 0; (* the port-no used by ts-connector in lam-no 1 *) dcm_out_port = 1; dcm_in_port = 1; (* the port-no used by dc-module in lam-no 1 *) \f (*************************************************************** * listen_buffers * ****************************************************************) (* numbers of listenbuffers *) no_listen = 20; (* the total number of listenbuffers in ts *) (* i.e. allocated in a pool in ts-supervisor *) no_netc_listen = 1; (* the number of listenbuffers at net-connector *) no_vch_listen = 4; (* the number of listenbuffers at vc-handler *) (* the number of listenbuffers at at-connector *) no_vcc_listen = 2; (* the number of listenbuffers at vc-connector *) no_pax_listen = 2; (* the number of listenbuffers at net-connector *) (* i.e. allocated in a pool in net-connector *) (* sizes of listenbuffers *) (* all sizes are given in words *) size_listen = 40; (* size of listenbuffers allocated in ts-supervisor *) size_pax_listen = 32; (* size of listenbuffers allocated in net-connector *) size_supp = 25; (* size of supplybuffers allocated in ts-supervisor *) \f (************************************************************** * talk_buffers * ***************************************************************) (* numbers of talkbuffers *) no_pax_talk =1; (* the number of buffers allocated for sending to paxnet *) no_req_supp = 4; (* the number of buffers used to request for a supplybuffer *) (* at the allocator of the operating system *) no_tss_talk = 0; (* the number of buffers used to talk from ts-supervisor *) no_nc_talk = 5; no_lam_talk = 1; (* the number of buffers used to talk to lam-driver *) (* sizes of talkbuffers given in words *) (* the names are associates to the names given above *) size_pax_talk = 32; size_req_supp = 1; size_tss_talk = 0; size_lam_talk = 2; \f (********************************************************** * timeout_buffers * ***********************************************************) (* numbers of timers_buffers at each modul *) (* timersbuffers are used to give timeout from timeoutmodule *) no_netc_tim = 1; no_tss_tim = 6; no_ath_tim = 30; no_vch_tim = 30; no_atc_tim = 2; no_vcc_tim = 2; (* types of timersbuffers *) type timers = record object : integer; end; (* numbers of updatebuffers at each modul *) (* updatebuffers are used to update time and book a timeout at timeoutmodule *) const no_netc_upd = 1; no_tss_upd = 6; no_ath_upd = 30; no_vch_upd = 30; no_atc_upd = 1; no_vcc_upd = 2; (* type of updatebuffers *) type updates = record index : integer; count : integer; object : integer; end; \f (************************************************************ * time_out_periods * *************************************************************) const (* the timeunit used by timeoutmodule *) time_out_unit = 1000; (* i.e. 1 sec. *) nt_default = 1 * 60; (* default value of node test interval *) (* short timeout for messages from DC *) tss_dc_stime = -10; (* long timeout for messages from NC *) tss_nc_ltime = -3*60; (* short timeout for messages from NC *) tss_nc_stime = -5; (* timeout for messages from netc to tss *) tss_netc_time = -1*60; (* and so on .... *) tss_ath_time = -1*60+10; tss_vch_time = -1*60+10; ath_tss_ltime = 1*60; ath_tss_stime = 1; vch_tss_ltime = 1*60; vch_tss_stime = 1; ath_atc_time = 1*60+10; vch_vcc_time = 1*60+10; atc_ath_stime = 2*60; atc_ath_ltime = 7*60; vcc_vch_stime = 30; vcc_vch_ltime = 3*60; con_lam_time = 5; poll_delay_time = 5; \f (********************************************************** * values for u3 * ***********************************************************) (* routes between modules in ts *) tim_route = 20; tim_route1 = 21; tim_route2=22; (* buffer must bee returned by any moduls *) dummy_route = 0; (* buffer goes from netc or tss down in ts *) netc_route = 2; netc_route1 = 3; netc_route2 = 23; at_route = 4; at_route1 = 5; vca_route = 6; vca_route1 = 7; vci_route = 8; vci_route1 = 9; (* buffer from lam *) lam_route = 10; (* buffer from tss *) tss_route = 12; (* buffer from DC-module *) dc_route = 14; op_route = 16; (* buffer from TTY-module *) nc_route = 18; (* buffer from NC supervisor *) \f (********************************************************** * microaddresses * ***********************************************************) (* lower limit for at-microaddresses *) at_addr_limit = 256; (* lower limit for vc-microaddresses *) vc_addr_limit = 32; tss_mic_addr = 0; ath_mic_addr = 1; vch_mic_addr = 2; netc_mic_addr = 3; dc_log_mic_addr = 1; (* caution: fe supervisor modifies the micro addresses *) dc_poll_mic_addr = 5; dc_test_mic_addr = 6; dc_erh_mic_addr = 7; \f (*********************************************************** * table_lengthes * ************************************************************) vca_vcm_l = 5; (* no of entries in vca_vcm_table *) at_l = 8; (* no of entries in at-table *) vc_l = 3; (* no of entries in vc_table *) vc_addr_l = 5; (* no of entries in vc_address_table *) at_addr_l = 5; (* no of entries in at-address-table *) at_ts_l = 5; (* no of entries in at_ts_table *) vcmit_l = 5; (* no of entries in vcm(it)_table *) vcmat_l = 5; (* no of entries in vcm(at)_table *) vce_l = 5; (* no of entries in vce_table *) timeout_l = 70; (* number of entryes in timeouttables *) lam_l = max_lam+1; (* number of entryes in lam_table *) \f (********************************************************** * semaphorenumbers * ***********************************************************) (* index in ts_sem_tab *) tssup_sem_no = 1; ath_sem_no = 2; vch_sem_no = 3; netc_sem_no = 4; timeout_sem_no = 5; nc_sem_no = 6; fesup_sem_no = 7; dc_sem_no = fesup_sem_no; vas_sem_no = 8; vis_sem_no = 9; tssup_int1 = 10; tssup_int2 = 11; tssup_int3 = 12; ath_int1 = 13; vch_int1 = 14; mirror_sem_no = 15; stream_sem_no = 16; stream_xmit = 17; stream_rec = 18; osif_sem_no = 19; fesup_write = 20; fesup_que_up = 21; fesup_que_down = 22; dc_int1 = fesup_write;; dc_int2 = fesup_que_up;; dc_int3 = fesup_que_down;; ncsup_int1 = 24; ncsup_int2 = 25; tap_sem_no = 26; tap1_sem_no = 27; com_pool = 28; pax_pool = 29; alc_sem_no = 30; lam_sem_no = 35; spool_test_sem_no = 40; pax_sem_1 = 41; pax_sem_2 = 42; pax_sem_3 = 43; pax_sem_4 = 44; pax_ncp_sem = 45; tap_net_sem_no = 46; tap_dte_sem_no = 47; dte_sem_no = 48; vagt_int = lam_sem_no + lam_l; vcc_sem_no = vagt_int + 5 * vc_l; atc_sem_no = vcc_sem_no + ( vc_l * 2 ); ts_sem_total = atc_sem_no + ( at_l * 2 ) + 3; type ts_pointer = record s : sempointer; w : sempointer; end; ts_pointer_vector = array (1..ts_sem_total) of ts_pointer; \f (********************************************************** * create parameters * ***********************************************************) const create_unit = 512; tss_size = 2*create_unit; ath_size = create_unit+13*at_l+4*vca_vcm_l;; vch_size = create_unit+11*vc_l; atc_size = create_unit; vac_size = 2*create_unit; vic_size = 2*create_unit; tim_size = create_unit+timeout_l*6; netc_size = 3*create_unit; tsc_size = create_unit; dc_sim_size = 4*create_unit; vas_size = 2*create_unit; vis_size = 2*create_unit; lam_size = 4*create_unit; tap_size = create_unit; nc_sup_size = 600; fesup_size = create_unit; stream_size = create_unit*2; osif_size = create_unit; pu_no = 0; tss_pri = -1; ath_pri = -1; vch_pri = -1; vcc_pri = -1; atc_pri = -1; tim_pri = -1; netc_pri = -1; dc_sim_pri = -1; vc_sim_pri = -1; lam_pri = 0; hl_lam_pri = 2; tsc_pri = -1; tap_pri = -1; fesup_pri = -1; stream_pri = -1; osif_pri = -1; \f (********************************************************** * table_entrys * ***********************************************************) type at_range = 0..at_l; vc_range = 0..vc_l; vc_sem_range = vcc_sem_no..vcc_sem_no + 2 * vc_l - 1; (* entry for vca-vcm-table *) vca_vcm_e = record vca_addr : alarmnetaddr; vcm_addr : alarmnetaddr; end; (* entry for at-table *) at_e = record at_mic : integer; incar_index : at_range; activity : 0..2; pvc_index : integer; end; (* entry for vc-table *) vc_e = record vc_mic : integer; incar_index : vc_range; end; (* entry for vc-address-table *) vc_addr_e = record addr_code : byte; vc_index : integer; block : byte; steering : boolean end; (* entry for at-address-table *) at_addr_e = record at_addr : alarmnetaddr; addr_code : byte; end; (* entry for at-ts-table *) at_ts_e = record ts_addr : macroaddr; ts_type : bit; index : integer; end; (* entry for vcm(it)-table *) vcmit_e = record vcm_addr : alarmnetaddr; end; (* entry for vcm(at)-table *) vcmat_e = record vc_code : byte; vc_addr : alarmnetaddr; vc_arrange : 0..3; vc_relief : boolean; end; (* entry for actual vce-table *) vce_e = record vce_addr : alarmnetaddr; end; (* entry for paxnet-table *) paxnet_e = record alarm_addr : alarmnetaddr; pax_addr : paxnetaddr; end; (* entry for encryption-table *) encrypt_e = record at_vc_mic : integer; encryp_key : array (1..4) of integer; c_redun : array (1..3) of integer; o_redun : array (1..3) of integer; end; (* entry for incarnation-table in vch *) vc_incar_e = record vc_mic : integer; state : byte; in_sem : vc_sem_range; shix : vc_range; end; vcc_table = array (vc_range) of vc_incar_e; \f (**************************************************** * types and values used in dataparts * *******************************************************) type alarm = array (1..2*size_listen - label_size - 2) of byte; steering = array (1..2*size_listen - label_size - 2) of byte; alarm_code = byte; status_byte = byte; count_code = byte; at_address = alarmnetaddr; operation_code = byte; vcavcm_index = integer; lam_no= byte; port_no= byte; start_stop_code = byte; vc_type = byte; test_byte = byte; const (* values for countcode and alarmcode *) recall = 0; call = 1; at_tim_excess = 5; (* values for result code *) accepted = #h00; not_accepted = #h01; rejected = #h02; not_implemented = #h03; unknown_sender = #h04; unknown_receiver = #h05; not_steering = #h06; no_room = #h08; not_found = #h09; existing_entry = #h0a; state_hs_error = #h0b; state_power_error = #h0c; transmit_error = #h0d; no_resources = #h0e; no_connection = #h10; breaked = #h11; not_ready = #h12; passivated = #h13; data_inconsistent = #h14; data_incomplete = #h15; out_of_range = #h16; forbidden = #h18; illegal_operation = #h19; state_au_error = #h1a; state_serif_error = #h1b; unknown_route = #h1c; unknown_opcode = #h1d; unknown_update = #h1e; unknown_result = #h1f; (* values of new activity state for a connector ( update field ) *) start_code = 0; stop_code = 1; service_code = 2; break_code = 3; type connector_state = start_code..break_code; const (* values for vc-type *) vcat = 0; vcit = 1; (* values for updatecode *) read_code = 0; insert_code = 1; modify_code = 2; remove_code = 3; (* values for timeout functions - u1 *) delay_req = 3; update_req = 4; read_write = 6; book_req = 7; (* values for timeout result - u2 *) book_up_ok = 1; book_array_full = 2; book_wrong_index = 3; book_wrong_object = 4; book_range_error = 5; book_unknown_func = 6; (* guard arrange *) no_arrange = 0; recieve_arr = 1; giveup_arr = 2; full_arr = 3; (* values of tstypes *) ts_type_pvc = 0; ts_type_avc = 1; (* values for lam-functions *) create_at_ch = 8; read_at = 9; write_at = 10; write_read_at =11; create_it_ch = 12; read_it = 13; write_it = 14; write_read_it = 15; create_tty_ch= 16; read_tty= 17; write_tty= 18; write_read_tty = 19; (* values for lam-results -u2 *) ok_result=0; create_done=1; transi_err =2; persi_err =3; ill_func =4; timeout_err =5; \f (******************************************************** * zones * *********************************************************) type buffertype = record first, last, next: integer; name: alfa; data: array (1..80) of char; end; zone = record testoutpool: pool 1 of buffertype; testoutsem: semaphore; opsem: ^semaphore end; (****************************************************** * external functions and procedures * *******************************************************) (* check5 is used to generate or control the five *) (* checkbits in a telegram sent to or received from *) (* at or vc(at) *) function check5( var msg: reference; dowhat : what ): boolean; external; (* timerbook is used to book a timeout at imeoutmodule *) procedure timerbook( var book_mess, timer_mess : reference; ticks, object: integer; var timeout_sem, answer: semaphore ); external; (* timerupdate is used to update timeoutperiod at *) (* timeoutmodule *) procedure timerupdate( var update_mess:reference; ticks: integer; var timeout_sem, answer: semaphore ); external; (* testopen is used to open testmode for a module *) procedure testopen( var z: zone; modulename: alfa; ps: ^semaphore ); external; procedure testout( (* testout is used to send a message to the operatormodule *) var z: zone; text: alfa; i: integer ); external; (* count is used for counting, without risk for overflow *) procedure count ( var c: integer ); external; . «eof»