fsm_master.c File Reference

EtherCAT master state machine. More...

Go to the source code of this file.

Defines

#define EC_SYSTEM_TIME_TOLERANCE_NS   1000000
 Time difference [ns] to tolerate without setting a new system time offset.

Functions

void ec_fsm_master_state_start (ec_fsm_master_t *fsm)
 Master state: START.
void ec_fsm_master_state_broadcast (ec_fsm_master_t *fsm)
 Master state: BROADCAST.
void ec_fsm_master_state_read_state (ec_fsm_master_t *fsm)
 Master state: READ STATE.
void ec_fsm_master_state_acknowledge (ec_fsm_master_t *fsm)
 Master state: ACKNOWLEDGE.
void ec_fsm_master_state_configure_slave (ec_fsm_master_t *fsm)
 Master state: CONFIGURE SLAVE.
void ec_fsm_master_state_clear_addresses (ec_fsm_master_t *fsm)
 Master state: CLEAR ADDRESSES.
void ec_fsm_master_state_dc_measure_delays (ec_fsm_master_t *fsm)
 Master state: DC MEASURE DELAYS.
void ec_fsm_master_state_scan_slave (ec_fsm_master_t *fsm)
 Master state: SCAN SLAVE.
void ec_fsm_master_state_dc_read_offset (ec_fsm_master_t *fsm)
 Master state: DC READ OFFSET.
void ec_fsm_master_state_dc_write_offset (ec_fsm_master_t *fsm)
 Master state: DC WRITE OFFSET.
void ec_fsm_master_state_write_sii (ec_fsm_master_t *fsm)
 Master state: WRITE SII.
void ec_fsm_master_state_sdo_dictionary (ec_fsm_master_t *fsm)
 Master state: SDO DICTIONARY.
void ec_fsm_master_state_sdo_request (ec_fsm_master_t *fsm)
 Master state: SDO REQUEST.
void ec_fsm_master_enter_clear_addresses (ec_fsm_master_t *fsm)
 Start clearing slave addresses.
void ec_fsm_master_enter_write_system_times (ec_fsm_master_t *fsm)
 Start writing DC system times.
void ec_fsm_master_init (ec_fsm_master_t *fsm, ec_master_t *master, ec_datagram_t *datagram)
 Constructor.
void ec_fsm_master_clear (ec_fsm_master_t *fsm)
 Destructor.
void ec_fsm_master_reset (ec_fsm_master_t *fsm)
 Reset state machine.
int ec_fsm_master_exec (ec_fsm_master_t *fsm)
 Executes the current state of the state machine.
int ec_fsm_master_idle (const ec_fsm_master_t *fsm)
void ec_fsm_master_restart (ec_fsm_master_t *fsm)
 Restarts the master state machine.
int ec_fsm_master_action_process_sii (ec_fsm_master_t *fsm)
 Check for pending SII write requests and process one.
int ec_fsm_master_action_process_sdo (ec_fsm_master_t *fsm)
 Check for pending SDO requests and process one.
void ec_fsm_master_action_idle (ec_fsm_master_t *fsm)
 Master action: IDLE.
void ec_fsm_master_action_next_slave_state (ec_fsm_master_t *fsm)
 Master action: Get state of next slave.
void ec_fsm_master_action_configure (ec_fsm_master_t *fsm)
 Master action: Configure.
u64 ec_fsm_master_dc_offset32 (ec_fsm_master_t *fsm, u64 system_time, u64 old_offset, unsigned long jiffies_since_read)
 Configure 32 bit time offset.
u64 ec_fsm_master_dc_offset64 (ec_fsm_master_t *fsm, u64 system_time, u64 old_offset, unsigned long jiffies_since_read)
 Configure 64 bit time offset.


Detailed Description

EtherCAT master state machine.

Definition in file fsm_master.c.


Function Documentation

void ec_fsm_master_state_start ( ec_fsm_master_t fsm  ) 

Master state: START.

Starts with getting slave count and slave states.

Parameters:
fsm  Master state machine.

Definition at line 197 of file fsm_master.c.

void ec_fsm_master_state_broadcast ( ec_fsm_master_t fsm  ) 

Master state: BROADCAST.

Processes the broadcast read slave count and slaves states.

Parameters:
fsm  Master state machine.

Definition at line 254 of file fsm_master.c.

void ec_fsm_master_state_read_state ( ec_fsm_master_t fsm  ) 

Master state: READ STATE.

Fetches the AL state of a slave.

Parameters:
fsm  Master state machine.

Definition at line 667 of file fsm_master.c.

void ec_fsm_master_state_acknowledge ( ec_fsm_master_t fsm  ) 

Master state: ACKNOWLEDGE.

Parameters:
fsm  Master state machine.

Definition at line 722 of file fsm_master.c.

void ec_fsm_master_state_configure_slave ( ec_fsm_master_t fsm  ) 

Master state: CONFIGURE SLAVE.

Starts configuring a slave.

Parameters:
fsm  Master state machine.

Definition at line 929 of file fsm_master.c.

void ec_fsm_master_state_clear_addresses ( ec_fsm_master_t fsm  ) 

Master state: CLEAR ADDRESSES.

Parameters:
fsm  Master state machine.

Definition at line 760 of file fsm_master.c.

void ec_fsm_master_state_dc_measure_delays ( ec_fsm_master_t fsm  ) 

Master state: DC MEASURE DELAYS.

Parameters:
fsm  Master state machine.

Definition at line 804 of file fsm_master.c.

void ec_fsm_master_state_scan_slave ( ec_fsm_master_t fsm  ) 

Master state: SCAN SLAVE.

Executes the sub-statemachine for the scanning of a slave.

Parameters:
fsm  Master state machine.

Definition at line 857 of file fsm_master.c.

void ec_fsm_master_state_dc_read_offset ( ec_fsm_master_t fsm  ) 

Master state: DC READ OFFSET.

Parameters:
fsm  Master state machine.

Definition at line 1085 of file fsm_master.c.

void ec_fsm_master_state_dc_write_offset ( ec_fsm_master_t fsm  ) 

Master state: DC WRITE OFFSET.

Parameters:
fsm  Master state machine.

Definition at line 1138 of file fsm_master.c.

void ec_fsm_master_state_write_sii ( ec_fsm_master_t fsm  ) 

Master state: WRITE SII.

Parameters:
fsm  Master state machine.

Definition at line 1173 of file fsm_master.c.

void ec_fsm_master_state_sdo_dictionary ( ec_fsm_master_t fsm  ) 

Master state: SDO DICTIONARY.

Parameters:
fsm  Master state machine.

Definition at line 1227 of file fsm_master.c.

void ec_fsm_master_state_sdo_request ( ec_fsm_master_t fsm  ) 

Master state: SDO REQUEST.

Parameters:
fsm  Master state machine.

Definition at line 1262 of file fsm_master.c.

void ec_fsm_master_enter_clear_addresses ( ec_fsm_master_t fsm  ) 

Start clearing slave addresses.

Parameters:
fsm  Master state machine.

Definition at line 744 of file fsm_master.c.

void ec_fsm_master_enter_write_system_times ( ec_fsm_master_t fsm  ) 

Start writing DC system times.

Parameters:
fsm  Master state machine.

Definition at line 957 of file fsm_master.c.

void ec_fsm_master_init ( ec_fsm_master_t fsm,
ec_master_t master,
ec_datagram_t datagram 
)

Constructor.

Parameters:
fsm  Master state machine.
master  EtherCAT master.
datagram  Datagram object to use.

Definition at line 76 of file fsm_master.c.

void ec_fsm_master_clear ( ec_fsm_master_t fsm  ) 

Destructor.

Parameters:
fsm  Master state machine.

Definition at line 103 of file fsm_master.c.

void ec_fsm_master_reset ( ec_fsm_master_t fsm  ) 

Reset state machine.

Parameters:
fsm  Master state machine.

Definition at line 121 of file fsm_master.c.

int ec_fsm_master_exec ( ec_fsm_master_t fsm  ) 

Executes the current state of the state machine.

If the state machine's datagram is not sent or received yet, the execution of the state machine is delayed to the next cycle.

Returns:
true, if the state machine was executed
Parameters:
fsm  Master state machine.

Definition at line 150 of file fsm_master.c.

int ec_fsm_master_idle ( const ec_fsm_master_t fsm  ) 

Returns:
true, if the state machine is in an idle phase
Parameters:
fsm  Master state machine.

Definition at line 169 of file fsm_master.c.

void ec_fsm_master_restart ( ec_fsm_master_t fsm  ) 

Restarts the master state machine.

Parameters:
fsm  Master state machine.

Definition at line 180 of file fsm_master.c.

int ec_fsm_master_action_process_sii ( ec_fsm_master_t fsm  ) 

Check for pending SII write requests and process one.

Returns:
non-zero, if an SII write request is processed.
Parameters:
fsm  Master state machine.

Definition at line 431 of file fsm_master.c.

int ec_fsm_master_action_process_sdo ( ec_fsm_master_t fsm  ) 

Check for pending SDO requests and process one.

Returns:
non-zero, if an SDO request is processed.
Parameters:
fsm  Master state machine.

Definition at line 469 of file fsm_master.c.

void ec_fsm_master_action_idle ( ec_fsm_master_t fsm  ) 

Master action: IDLE.

Does secondary work.

Parameters:
fsm  Master state machine.

Definition at line 523 of file fsm_master.c.

void ec_fsm_master_action_next_slave_state ( ec_fsm_master_t fsm  ) 

Master action: Get state of next slave.

Parameters:
fsm  Master state machine.

Definition at line 581 of file fsm_master.c.

void ec_fsm_master_action_configure ( ec_fsm_master_t fsm  ) 

Master action: Configure.

Parameters:
fsm  Master state machine.

Definition at line 609 of file fsm_master.c.

u64 ec_fsm_master_dc_offset32 ( ec_fsm_master_t fsm,
u64  system_time,
u64  old_offset,
unsigned long  jiffies_since_read 
)

Configure 32 bit time offset.

Returns:
New offset.
Parameters:
fsm  Master state machine.
system_time  System time register.
old_offset  Time offset register.
jiffies_since_read  Jiffies for correction.

Definition at line 1005 of file fsm_master.c.

u64 ec_fsm_master_dc_offset64 ( ec_fsm_master_t fsm,
u64  system_time,
u64  old_offset,
unsigned long  jiffies_since_read 
)

Configure 64 bit time offset.

Returns:
New offset.
Parameters:
fsm  Master state machine.
system_time  System time register.
old_offset  Time offset register.
jiffies_since_read  Jiffies for correction.

Definition at line 1047 of file fsm_master.c.


Generated on Mon Jun 20 09:31:30 2016 for IgH EtherCAT Master by  doxygen 1.5.6