|
|
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: 23808 (0x5d00)
Types: TextFileVerbose
Names: »ryf«
└─⟦a41ae585a⟧ Bits:30001842 SW-save af projekt 1000, Alarm-system
└─⟦72244f0ef⟧
└─⟦this⟧ »ryf«
alarmenv10; (* 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 = #h10;
(***********************************************************
* 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 = 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_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. *)
(* 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;
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 = 3;
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;
dc_sem_no = 7;
vas_sem_no = 8;
vis_sem_no = 9;
tssup_int1 = 10;
tssup_int2 = 11;
tssup_int3 = 12;
ath_int1 = 13;
vch_int1 = 14;
net_int1 = 15;
net_int2 = 16;
net_int3 = 17;
net_int4 = 18;
dc_int1 = 20;
dc_int2 = 21;
dc_int3 = 22;
dc_int4 = 23;
ncsup_int1 = 24;
ncsup_int2 = 25;
tap_sem_no = 26;
tap1_sem_no = 27;
com_pool = 28;
alc_sem_no = 30;
lam_sem_no = 35;
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 = 2*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;
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;
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_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;
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;
(* 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;
(* 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»