|
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: 19200 (0x4b00) Types: TextFileVerbose Names: »alarmenvc«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system └─⟦72244f0ef⟧ └─⟦this⟧ »alarmenvc«
▶04◀alarmenvc; (* PT.TSSYS.50/10 *) const cmax = 6; type ltsmarray = array(1..cmax) of tap_pointer; (************************ chh constants and types **********************************) (**************************************************************** * * * 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 = 12; (*********************************************************** * 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 * ***********************************************************) (* 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 : 0..15; result : 0..15; 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 = 40; (* 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 = 16; (* size of listenbuffers allocated in ts-supervisor *) size_pax_listen = 32; (* size of listenbuffers allocated in net-connector *) size_supp = 32; (* 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_ath_talk = 1; (* the number of buffers used to talk from at-handler *) no_vch_talk = 1; 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_ath_talk = 1; size_vch_talk = 1; 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. *) (* 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 *) (* route means no supply of listenbuffer (even number) *) (* route1 means supply of listenbuffer from the module above (uneven number) *) 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; 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 *) \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 = 3; 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; dc_sem_no = 7; vagt_sem_no = 8; tssup_int1 = 9; tssup_int2 = 10; tssup_int3 = 11; ath_int1 = 12; vch_int1 = 13; net_int1 = 14; net_int2 = 15; net_int3 = 16; net_int4 = 17; net_int5 = 18; net_int6 = 19; dc_int1 = 20; dc_int2 = 21; dc_int3 = 22; dc_int4 = 23; vagt_int1 = 24; vagt_int2 = 25; vagt_int3 = 26; vagt_int4 = 27; tap_sem_no = 28; com_pool = 29; lam_sem_no = 30; vcatc_sem_no = lam_sem_no + lam_l; atc_sem_no = vcatc_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 = 500; 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; vcc_size = 2*create_unit; tim_size = create_unit+timeout_l*6; netc_size = 2*create_unit; tsc_size = create_unit; dc_sim_size = 4*create_unit; vc_sim_size = 2*create_unit; lam_size = 4*create_unit; tap_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; tsc_pri = -1; tap_pri = -1; \f (********************************************************** * table_entrys * ***********************************************************) type at_range = 0..at_l; vc_range = 0..vc_l; (* 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; receive : bit; 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 *) incar_e = record in_sem : ts_pointer; shad : shadow; end; \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 resultcode *) accepted = 0; rejected = 1; no_connection = 2; unknown_route = 3; unknown_opcode = 4; module_not_ready = 5; module_passive = 6; not_found = 7; no_room = 8; update_error = 9; sender_error = 10; (* values for start-stop-code *) start_code = 0; stop_code = 1; service_code = 2; (* 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; (* 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; (* 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; . «eof»