main
- in /CBIC/main/cbic.c
- cbi_mem_setup
- cbpm_mem_setup
- cbi_read_config_file
- two_tier_startup
- cbi_init_mpm_comms - /BeamInstSupport/communication/cbi_init_mpm_comms.c
- cbi_read_allocation
- cbi_command_trace_open_file
- cbi_command_trace_addToLog
- cbpm_read_detector_params
- cbpm_read_instrument_params
- cbpm_load_instr_code_params
- verify_connectivity
- cbi_open_sockets_active
- FOR ALL INSTRUMENTS
- ->in_recovery = CBI_FALSE
- Check CBI Communication Struct Version, if instrument and CBIC don't match, then set active = CBI_INACTIVE
- Check CBPM Communication Struct Version, if instrument and CBIC don't match, then set active = CBI_INACTIVE
- cbi_check_heartbeat
- If heartbeat good:
- write Phase, Pedestal, Gains, Timing Configs
- cbpm_set_timing_setup_post
- write Code Params
- cbi_check_timing_integrity, if bad, then set active = CBI_INACTIVE
- if heartbeat bad, then set active = CBI_INACTIVE
- cbi_init_command
- cbi_execute_command
- cbi_wait_for_command
- cbpm_set_timing_setup_post
- cbi_close_sockets
...
verify_connectivity
- in /CBIC/management/verify_connectivity.c, called by
main
- try to ping instrument
- open cbi_net socket
- enable DSP through cbi_net ethernet
- if connection attempt failed
- make sure individual instrument power supply is on
- reset DSP using xbus
- if tried too many times, then set active = CBI_INACTIVE
cbi_dispatch_sequencer
- in /BeamInstSupport/utils/cbi_dispatch_sequencer.c, called by
main, and
cbi_cesr_interface
- for sequence step (optional)
cbi_inst_loop
- in /BeamInstSupport/utils/cbi_inst_loop.c, called by
cbi_dispatch_sequencer
- va_start
- if in_recovery = CBI_TRUE, and status not CBI_SUCCESS then active = CBI_INACTIVE, in 3 ways, num_args = 0, threading, serial
cbi_cesr_interface
- in /BeamInstSupport/cesr_intf/cbi_cesr_interface.c, called by
enter_server_mode
cbi_inst_status_handler
- in /BeamInstSupport/utils/cbi_inst_status_handler.c, called by
main, and
cbi_cesr_interface
- if
- CBI_F_HANDSHAKE_TIMEOUT
- CBI_F_COMM_ERROR
- CBI_F_HANDSHAKE_ERROR
- then in_recovery = CBI_TRUE
PrepFunction
- can be anywhere, usually in .../actions, called by
Fptr1
PostFunction
- can be anywhere, usually in .../actions, called by
Fptr2
FinalFunction
- can be anywhere, usually in .../actions, called by
Fptr2_2
...
EnterServerModeCommand
enter_server_mode, NULL, NULL
SelectActiveInstrumentsCommand
cbi_toggle_active_instruments, NULL, NULL
ResetAndReinitializeInstrumentsCommand
cbpm_reset_and_init, NULL, NULL
cbi_toggle_active_instruments
- in /BeamInstSupport/actions/cbi_online_instruments.c, called by
SelectActiveInstrumentsCommand
cbpm_reset_and_init
- in /CBPM-TSHARC/actions/cbpm_reset_init.c, called by
ResetAndReinitializeInstrumentsCommand
- among other things, ->in_recovery = CBI_FALSE
cbi_query_active
- in /BeamInstSupport/user_io/cbi_query_active.c, called by
cbi_toggle_active_instruments
- can set instrument to CBI_ACTIVE
- can set instrument to CBI_INACTIVE
- cbi_toggle_activity
...
enter_server_mode
- in /CBPM-TSHARC/actions/cbpm_enter_server_mode.c, called by
EnterServerModeCommand
...
cbi_copy_touched_structs
- in /BeamInstSupport/utils/cbi_copy_touched_structs.c, called by cbpm_current_monitor.c, cbpm_position_monitor.c,
cbi_dispatch_sequencer
- if fail to write struct, instrument is set to CBI_INACTIVE
--
MatthewStedinger - 26 Nov 2014