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

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

This topic: ACC/Bunch > WebHome > CBICManPage > FunctionTree
Topic revision: 08 Jan 2015, mgs9
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding CLASSE Wiki? Send feedback