// proto.h

boolean attach_pending();
void speed_filter();
int convert(float duration, speedCode spd);
void tx_byte(byte data_byte);
void tx_quadlet(quadlet quad_data);
void send_control(ArbState control, boolean out_of_packet, int not_to_port);
void portTspeed(int port_num, speedCode pkt_speed, pktType packet_format);
void start_tx_packet(speedCode pkt_speed, pktType pkt);
void stop_tx_packet(ArbState ending_status, int port_to_grant);
ArbState portR_next_arb(int port_num);
void wait_symbol_time(speedCode symbol_speed);
void tx_control(ArbState control, int r_port);
void start_rx_packet();
boolean fly_by_permitted();
boolean Legacy_junior_request();
boolean data_coming();
boolean data_coming_on(int port);
void Legacy_request_actions();
boolean arb_OK();
void boss_end_packet_actions(boolean grant_received_from_senior, ArbState grant_type);
void gap_repeat_actions(boolean out_of_packet, int port);
void remote_access(int page, int port_num, int reg, int ext_type);
void remote_command(int cmnd, int e_cmnd, int port_num);
void decode_phy_packet(PHY_PKT phy_pkt);
void phy_response_actions();
void arb_power_reset();
boolean reset_detected();
void reset_start_actions();
void reset_wait_actions();
boolean reset_complete();
void tree_ID_start_actions();
void child_handshake_actions();
boolean child_handshake_complete();
void root_contend_actions();
void self_ID_start_actions();
void self_ID_grant_actions();
void self_ID_receive_actions();
void self_ID_transmit_actions();
void capture_link_requests();
void process_requests();
boolean idle_bus();
void idle_actions();
void grant_actions();
void transmit_actions();
void receive_actions();
void activate_connect_detect(int delay);
void port_power_reset();
void send_tone();
boolean signal_detect_OK();
boolean start_resume_port();
boolean start_port();
boolean set_Beta();
void set_DS();
void disabled_actions();
void resume_actions();
void suspend_initiator_actions();
void suspend_target_actions();
void suspended_actions();
void restore_actions();
void standby_initiator_actions();
void standby_target_actions();
void standby_actions();
void untested_actions();
void loop_disabled_actions();
void push_data_zero();
boolean port_error_monitor();
void rx_control_map(int rx_ctrl);
void request_type_map(int request);
int rx_control_decode(int character_in);
int rx_reqtype_decode(int character_in, disparityType rd);
int rx_data_decode(int character_in, disparityType rd);
int rx_comma_decode(int character_in, disparityType rd);
void update_descrambler();
boolean rx_character();
boolean character_sync();
boolean bspeed_filter();
void train_character_sync();
void rx_off_actions();
void rx_sync_lost_actions();
void scrambler_sync_actions();
void rx_sync_actions();
void bport_receive_actions();
int control_symbol_map(ArbState txctrl, disparityType rd);
int arb_req_symbol_map(BetaRequestCode txrequest);
int config_req_symbol_map(ArbState txrequest);
void update_scrambler();
void tx_character(portSymbol tx);
void tx_speed_signal(speedCode tx_speed, pktType pkt_type);
void tx_off_actions();
void tx_sync_lost_actions();
void tx_sync_actions();
void bport_transmit_actions();
void node_status_monitor();
boolean suspend_in_progress();
boolean resume_in_progress();
void suspend_all_active_ports();
void resume_all_ports();
boolean resume_rx_OK();
boolean restore_in_progress();
void restore_port();
void bias_status();
void send_LTP();
void tx_PHY_packet(PHY_PKT packet_to_send, int port_num);
PHY_PKT rx_PHY_packet(int port_num);
void con_mgmnt_granted();
void loop_detector();
int new_test_value();
void loop_test_interval_actions();
ArbState decode(RX_arbstate rx_arb);
void decode_bit();
void stopped_clock_detector();
TX_arbstate encode(ArbState arb_state);
void portTarb(int port_number, ArbState arb);
void portTarb_at_speed(int port_number, ArbState arb, speedCode speed);
BetaRequestCode bestReq (byte *apm, byte *ipm, int *bap, int *bip, 
  boolean *in_phase_isoch_request, boolean *in_phase_async_request,
  boolean *i_advance_interval, boolean *a_advance_interval);
void push(portSymbol symbol_to_push);   // prototype for fifo push routine

void ds_tx_bit(dataBit bit_to_send);
void ds_tx_byte(byte data_byte);
void tx_dribble_bits(TX_arbstate ending_status, boolean in_packet);
void dsport_transmit_actions();
boss_eop_status test_requests(int *best_port, boolean grant_received_from_senior,
  ArbState *received_grant);
disparityType update_rd(int character, disparityType rd);   // prototype for syntax checking
void portTspeed_raw(int port_number, speedCode speed); // Set raw transmit speed on indicated DS port
int symbol_time(speedCode spd);   		// time to send a symbol of the given speed (S400 or lower)
void dc_connection_detector();
void signal_detect_monitor();
void toner();
void receive_speed_indication();
void connection_status();
void cancel_requests();
float Legacy_time(int n);
void wait_Legacy_time(int n);
boolean LEGACY_ARB();
boolean LEGACY_GRANT();
void receive_ok_monitor();
boolean gap_token(int port);
