------------------------------------------------------------------------------- $Id$ ------------------------------------------------------------------------------- Changes in version 1.4.0: * Realtime interface changes: - Replaced ec_slave_t with ec_slave_config_t, separating the slave objects from the requested bus configuration. Therefore, renamed ecrt_master_get_slave() to ecrt_master_slave_config(). - Replaced slave address string with alias and position values. See ecrt_master_slave_config(). - Removed ecrt_master_get_slave_by_pos(), because it is no longer necessary due to alias/position addressing. - Added ec_slave_config_state_t for the new method ecrt_slave_config_state(). - Process data memory for a domain can now be allocated externally. This offers the possibility to use a shared-memory region. Therefore, added the domain methods ecrt_domain_size() and ecrt_domain_external_memory(). - Replaced the process data pointers in the Pdo entry registration functions with a process data offset, that is now returned by ecrt_slave_config_reg_pdo_entry(). This was necessary for the external domain memory. An additional advantage is, that the returned offset value is directly usable. If the domain's process data is allocated internally, the start address can be retrieved with ecrt_domain_data(). - Replaced ecrt_slave_pdo_mapping/add/clear() with ecrt_slave_config_pdo() to add a Pdo to the mapping and ecrt_slave_config_pdo_entry() to add a Pdo entry to a Pdo configuration. ecrt_slave_config_mapping() is a convenience function for both, that uses the new data types ec_pdo_info_t and ec_pdo_entry_info_t. Mapped Pdo entries can now immediately be registered. - Renamed ec_bus_status_t, ec_master_status_t to ec_bus_state_t and ec_master_state_t, respectively. Renamed ecrt_master_get_status() to ecrt_master_state(), for consistency reasons. - Added ec_domain_state_t and ec_wc_state_t for a new output parameter of ecrt_domain_state(). The domain state object does now contain information, if the process data was exchanged completely. - Former "Pdo registration" meant Pdo entry registration in fact, therefore renamed ec_pdo_reg_t to ec_pdo_entry_reg_t and ecrt_domain_register_pdo() to ecrt_slave_config_reg_pdo_entry(). - Removed ecrt_domain_register_pdo_range(), because it's functionality can be reached by specifying an explicit Pdo mapping and registering those Pdo entries. - Added an Sdo access interface, working with Sdo requests. These can be scheduled for reading and writing during realtime operation. * Pdo configuration is now supported. * Current Pdo mapping/configuration is now read via CoE during bus scan, using direct Sdo access, independent of the dictionary. * Added 8139too driver for kernel 2.6.22, thanks to Erwin Burgstaller. * Added 8139too driver for kernel 2.6.23, thanks to Richard Hacker. * Added e1000 driver for kernel 2.6.22. * Added support for slaves that do not support the LRW datagram type. Separate domains have to be used for inputs and output. * Allow gaps in PDO mapping read from CoE. * Fixed bug in CoE code. * Improved handling of large EEPROM contents. * Renamed ec_master module parameters main and backup to main_devices and backup_devices to avoid warnings of some compilers. * List end evaluate CoE detail flags from general category, list 'Flags' from general category in slave info file. * Added MODPROBE_FLAGS variable in start script and sysconfig file. * Implemented missing datagram types. * Allow multiple sync manager categories in SII. ------------------------------------------------------------------------------- Changes in version 1.3.2: * New feature: Read dynamic PDO mapping from SDO dictionary. * Implemented SII writing workaround for some broken slaves. * Improved handling for spontaneous AL state changes. * Master takes mailbox sync manager configurations from EEPROM words 0x0018-0x001b, if no sync manager configurations are provided. * Calculate checksum when writing EEPROM or alias address. * Fixed source MAC address setting bug. * Removed config.kbuild and replaced Kbuild files by Kbuild.in files. ------------------------------------------------------------------------------- Changes in version 1.3.1: * Improved EoE handling: Avoided skipping of datagrams and release lock while processing. * Added some statistics to the datagram structure. * Master state machine clears all station addresses with a broadcast datagram before setting them. * Added --enable-eoe conditional. * Minor extensions of the master info file. * Improved handling of unexpected working counters. * Create network interfaces for EoE devices with alias as eoeXaY. * Fixed problems on big-endian systems. * Added documentation on how to set up an EoE network. ------------------------------------------------------------------------------- Changes in version 1.3.0: * Added Intel PRO/1000 Gigabit Ethernet driver (e1000). * Added testing version of Intel PRO/100 Ethernet driver (e100). * Added testing version of NVIDIA nForce Ethernet driver (forcedeth). * Removed "ec_eoeif_count" master module parameter. EoE handlers are created dynamically instead. * Added "main" and "backup" parameters to master module to hand over the MAC addresses of the devices to wait for. This made the ec_device_index parameter of the Ethernet drivers obsolete. The broadcast MAC address means, that the master accepts the first device offered by any Ethernet driver. * Changed format of sysconfig file and accordingly adjusted functionality of the init script to handle the above MAC address lists. * Realtime interface changes: - ecrt_master_run() became obsolete, because the master state machine is now run in process context. - Parameter changes in PDO registration functions ecrt_domain_register_pdo() and ecrt_register_pdo_range(): Replaced slave_address, vendor ID and product code arguments with a slave pointer, which has to be obtained with a prior call to ecrt_master_get_slave(). - ecrt_master_get_slave() got additional parameters to check for vendor ID and product code. - Removed addressing scheme "X:Y" for ecrt_master_get_slave(). - Added ecrt_master_get_slave_by_pos() to avoid the string handling of ecrt_master_get_slave(). - Added ecrt_master_get_status() to get status information about the bus. - Added functions to set up an alternative PDO mapping for a slave, i. e. ec_slave_pdo_mapping_clear(), ec_slave_pdo_mapping_add() and ec_slave_pdo_mapping(). * Device interface changes: - Replaced ecdev_register() and ecdev_unregister() with ecdev_offer() and ecdev_withdraw(), respectively. The device modules now offer all their devices to the master. The master then decides, which ones to register. - Replaced ecdev_link_state() with ecdev_set_link(); added ecdev_get_link(). * All EEPROM write operations from user space are now blocking until writing has finished. Appropriate error codes are returned. * Implemented setting of the "Secondary slave address" (alias) via sysfs. * Implemented SDO reading in operation mode via sysfs. * Removed annoying eeprom_write_enable file. EEPROM writing always enabled. * Slave configuration is now done exclusively from the master thread. Removed ec_master_sync_io(). Userspace threads are now waiting for events in the state machine. * Master state machine scheduled with timeout if idle, otherwise is executed as fast as possible (with schedule()). * Added dummy module for simulation purposes. * Limited infinite EEPROM reading, if 0xffff limiter word is missing. * Init script works now properly on non-SUSE distros (no rc.status dependency any more). * Removed EtherCAT line comments from 8139too drivers. ------------------------------------------------------------------------------- Changes in version 1.2.0: * Several fixes of bugs and stability issues. Master should now run fine with kernels 2.6.17 to 2.6.19. * Realtime interface changes: - Re-introduced ecrt_domain_queue() to allow datagram queuing apart from datagram processing. The queuing of a domain's datagrams is not done in ecrt_domain_process() any more! - Removed ecrt_master_deactivate(). Its functionality was moved into ecrt_master_release(). - Removed ecrt_master_prepare(). Its functionality was moved into ecrt_master_activate(). - Renamed ecdev_start() and ecdev_stop() to ecdev_open() and ecdev_close(). These two functions now take a pointer to ec_device_t as their arguments. - The data_ptr parameter of ecrt_domain_register_pdo(), ecrt_domain_register_pdo_list() and ecrt_domain_register_pdo_range() may not be NULL any more. - Removed ecrt_slave_pdo_size(). This function was deprecated long before. - Introduced ECRT_VERSION_MAGIC macro and ecrt_version_magic() function. * Device interface changes: - ec_isr_t was replaced by ec_pollfunc_t, the device driver has to supply a poll function to call its ISR. This was introduced because some network drivers' interrupt functions have different arguments. * State machines now try to re-send datagrams on datagram timeout. * New option -c of the lsec script, displays slave current consumptions and remaining current. * Added frame counter in master info file. ------------------------------------------------------------------------------- Changes in version 1.1.1: * State change FSM: Clearing of sync managers before PREOP. * Added modules_install make target. * Device modules for kernel 2.6.17. * SDO configurations available in Sysfs. * FMMU configurations cleared when going to INIT. * Slave-specific logs only at debug level 1 (for large buses). * Slave flags (error, online) available in Sysfs. * Acknowledging of spontaneous state changes in master FSMs. * ecrt_master_deactivate() deprecated. * Persistent slave lists. Slave structures are only regenerated on topology change in IDLE mode. * SDO reading via Sysfs. * Added ecrt_domain_register_pdo_range() * Fetching of SDO dictionary. * Better timing behaviour when starting up under high CPU load. * Applied Autotools. * Improved output of lsec. * SDO download state machine. ------------------------------------------------------------------------------- Changes in version 1.1: * Improved realtime interface. -------------------------------------------------------------------------------