# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [2.2.11] - 2026-03-31

### Fixed

- Resolved an issue where a parameter could be missing when a subindex was absent in one of the modules. ([#21](https://github.com/synapticon/ecatmod/issues/21))

## [2.2.10] - 2026-01-13

### Added

- Added 'bits' as a special-case unit symbol in 'unitValueToSymbol', alongside existing 'rpm' handling. (1171917932)

## [2.2.9] - 2025-09-01

### Changed

- Fix CHANGELOG.md errors.

## [2.2.8] - 2025-09-01

### Changed

- 'convertEsiForIncompatibleEtherCATMasters' now removes 'Property' tags from the ESI file. (1681669572)

## [2.2.7] - 2025-07-31

## Added

- Add workaround for incompatible masters. (1681669572)

### Changed

- Removed a console log.

## [2.2.6] - 2024-11-19

### Added

- Add colors to VSCode workspace.

### Changed

- Changed 'nextAvailableObjectIndexInRange' function so it can include parameter 0x2007 for padding purposes. (1534099662)

## [2.2.5] - 2024-11-08

### Changed

- Skip index 0x2007 when using nextAvailableObjectIndexInRange function. (1526063706)

## [2.2.4] - 2024-04-04

### Fixed

- The default size of the SM has been fixed to update when the PDOs change, and the corresponding SMs are assigned to the new PDOs. (1167152585)

## [2.2.3] - 2023-05-30

### Added

- Get products code from devices.

### Changed

- Rename getParameterData to getParameter.

## [2.2.2] - 2023-05-26

### Added

- Get all parameter data function.

## [2.2.1] - 2023-05-13

### Added

- Index and subindex values to parameter data.

## [2.2.0] - 2023-05-12

### Added

- Get parameter data.

## [2.1.1] - 2023-01-23

### Fixed

- Add xmlns to EtherCATInfo. (1019977450)

## [2.1.0] - 2022-12-07

### Added

- Generate source code for ENUM types. (1000609505)
- Add 'FSoE MDP Drive Connection Specific Area' and 'Device Area'. (982188050)
- Add PDO insertable entries function to Descriptions in order to support adding PDO entries to Device from its Modules. (978877192)
- Add Object and SubItem rename and remove functions in order to sync changes from Module to its Devices. (989740981)
- Add update PDO entries subindexes functions in order to sync reorder changes from Module to Devices. (944731030)

### Changed

- Rename 'Profile Specific Area' to 'Profile Specific Area 402'.
- Prepend UTF-8 BOM and remove \r\n from ESI. (1000614756)

## [2.0.6] - 2022-11-09

### Added

- Support for EnumInfoType.

## [2.0.5] - 2022-10-24

### Fixed

- Fix typo in function name: isObjectSubitemTypeFloating -> isObjectSubItemTypeFloating.

## [2.0.4] - 2022-10-24

### Added

- Functions to check if object or subitem type is floating point.

### Changed

- Move get module idents function to Device.

## [2.0.3] - 2022-09-16

### Fixed

- Add encoding to the ESI XML file header. (963537448)

## [2.0.2] - 2022-08-19

### Fixed

- Fix: replace self-closing tags.

## [2.0.1] - 2022-08-09

### Fixed

- Change Device and Identity object (0x1018) revision numbers on update.
- Replace self-closing tags, e.g. `<Info/>` to `<Info></Info>`.

## [2.0.0] - 2022-07-15

### Added

- Multi-device support. (841974217)
- Support for REAL32 data types. (347613939)
- Add revision number to semantic version function. (869013608)
- Add "ARRAY OF <type>" to base data type check. (927188825)

### Changed

- Replace the XML formatter to conform to ETG.2000. (885806481)
- Replace default string with default data for new objects. (659426231)
- Improve the "is array" data type check.
- Conditionally add description and options to new objects.
- Don't add empty comment on init object from profile object description. (927727585)

### Fixed

- Remove non-printable ASCII characters from hex binary to visible string conversion output.
- Extend Jsonix context - replace boolean handler.

## [1.9.18] - 2021-05-19

### Fixed

- Compile Jsonix in Webpack (Angular 8+).

## [1.9.17] - 2021-05-19

### Changed

- Switch to the original Jsonix library.

## [1.9.16] - 2021-02-25

### Fixed

- NaN elements outputed by hexBinaryOfLength function when the length argument is smaller than the number of elements in hexBinary.

## [1.9.15] - 2021-02-24

### Added

- Modules element to Descriptions.

### Changed

- Updated XSD to 1.15 (ETG.2000 1.0.11) and generated mappings.

### Fixed

- EtherCATInfo.js formatting.
- Importing FSoE ESIs.

## [1.9.14] - 2020-10-07

### Added

- Functions to check if objects and subitems are mapped as Rx or Tx PDOs.

## [1.9.13] - 2020-05-19

### Added

- Dependency license-checker and script to generate licenses csv.

## [1.9.12] - 2020-03-19

### Fixed

- Jsonix sourceIsEvt is undefined when used in OBLAC Drives.
- eslint errors.

## [1.9.11] - 2020-03-05

### Added

- Get and set description property.

### Fixed

- For ARRAY types use "SubIndex 000" instead of "Number of entries".
- Next highest subindex value.

## [1.9.10] - 2019-04-26

### Changed

- Add `isOctetString` function that checks whether a given type name is `OCTET_STRING(##)`.

## [1.9.9] - 2019-04-12

### Fixed

- Install missing dependency: util.

## [1.9.8] - 2019-02-21

### Fixed

- Issue with newer version of Webkit and amdefine in Jsonix: define cannot be used indirect.

## [1.9.7] - 2019-01-22

### Fixed

- Assign documentation while importing profile objects.

## [1.9.6] - 2019-01-21

### Fixed

- Improve the regexp match and replace pattern to work with both serializers in ESI to XML function.

## [1.9.5] - 2019-01-21

### Fixed

- Improve the regexp match and replace pattern to work with both serializers in ESI to XML function.

## [1.9.4] - 2019-01-18

### Fixed

- Have the same ESI to XML serialization behavior in browsers and NodeJS.

## [1.9.3] - 2019-01-18

### Added

- Specs for documentation functions in DictionaryType.

## [1.9.2] - 2019-01-16

### Changed

- Use the same XML pretty library that oblac-edt uses.

## [1.9.1] - 2019-01-16

### Changed

- Add support for both old and new documentation formats.

## [1.9.0] - 2018-12-18

### Changed

- Use <Xml> element instead of <Property> for object documentation

### Added

- Assign profile documentation to objects on import
- Include <Xml> elements contained in ESI file

### Fixed

- Adopt previous subItemType flags when syncing PDO to dictionary object

## [1.8.7] - 2018-10-09

### Added

- Add revolutions per minute (rpm) to Profile Specific Unit type area

## [1.8.6] - 2018-09-28

### Fixed

- Fix stringToHexBinary function for boolean values

## [1.8.5] - 2018-05-31

### Fixed

- Add min and max properties to BYTE base data type

## [1.8.4] - 2018-05-30

### Added

- Add ObjectType.Xml

## [1.8.3] - 2018-05-23

### Fixed

- Fix function name typo in SpecHelper.js
- Fix undefined before the last closing element in ESI file

## [1.8.2] - 2018-05-06

### Fixed

- Fix import VISIBLE_STRING error

### Changed

- Update ecatcia version to v1.1.6

## [1.8.1] - 2018-04-25

### Changed

- Add new line to the end of file when doing marshal ESI to XML

## [1.8.0] - 2018-04-15

### Changed

- Makes ecatmod browser compatible by removing unmarshalEsiFile function

## [1.7.6] - 2018-04-14

### Fixed

- Remove empty <DataType> in padding PDO entries

## [1.7.5] - 2018-03-22

### Changed

- Change name of added/imported SubItem with subIndex=0 to SubIndex 000

## [1.7.4] - 2018-03-13

### Changed

- Use lowercase for rpm unit symbol

## [1.7.3] - 2018-03-13

### Added

- Return RPM for Revolution numerator and min denominator symbol

## [1.7.2] - 2018-03-01

### Fixed

- Ensure that base data type is defined before getting min and max values

## [1.7.1] - 2018-02-28

### Fixed

- npm ERR! Could not install from "node_modules/ecatmod/jsonix-master/nodejs/scripts" as it does not contain a package.json file.

## [1.7.0] - 2018-02-28

### Fixed

- Fix [highsource/jsonix#171](https://github.com/highsource/jsonix/issues/171) when ecatmod is used in OBLAC Drives
- Fix eslint warnings

## [1.6.10] - 2018-02-27

### Added

- Add DataTypeType.Properties

[unreleased]: https://github.com/synapticon/ecatmod/compare/v2.2.11...HEAD
[2.2.11]: https://github.com/synapticon/ecatmod/compare/v2.2.10...v2.2.11
[2.2.10]: https://github.com/synapticon/ecatmod/compare/v2.2.9...v2.2.10
[2.2.9]: https://github.com/synapticon/ecatmod/compare/v2.2.8...v2.2.9
[2.2.8]: https://github.com/synapticon/ecatmod/compare/v2.2.7...v2.2.8
[2.2.7]: https://github.com/synapticon/ecatmod/compare/v2.2.6...v2.2.7
[2.2.6]: https://github.com/synapticon/ecatmod/compare/v2.2.5...v2.2.6
[2.2.5]: https://github.com/synapticon/ecatmod/compare/v2.2.4...v2.2.5
[2.2.4]: https://github.com/synapticon/ecatmod/compare/v2.2.3...v2.2.4
[2.2.3]: https://github.com/synapticon/ecatmod/compare/v2.2.2...v2.2.3
[2.2.2]: https://github.com/synapticon/ecatmod/compare/v2.2.1...v2.2.2
[2.2.1]: https://github.com/synapticon/ecatmod/compare/v2.2.0...v2.2.1
[2.2.0]: https://github.com/synapticon/ecatmod/compare/v2.1.1...v2.2.0
[2.1.1]: https://github.com/synapticon/ecatmod/compare/v2.1.0...v2.1.1
[2.1.0]: https://github.com/synapticon/ecatmod/compare/v2.0.6...v2.1.0
[2.0.6]: https://github.com/synapticon/ecatmod/compare/v2.0.5...v2.0.6
[2.0.5]: https://github.com/synapticon/ecatmod/compare/v2.0.4...v2.0.5
[2.0.4]: https://github.com/synapticon/ecatmod/compare/v2.0.3...v2.0.4
[2.0.3]: https://github.com/synapticon/ecatmod/compare/v2.0.2...v2.0.3
[2.0.2]: https://github.com/synapticon/ecatmod/compare/v2.0.1...v2.0.2
[2.0.1]: https://github.com/synapticon/ecatmod/compare/v2.0.0...v2.0.1
[2.0.0]: https://github.com/synapticon/ecatmod/compare/v1.9.18...v2.0.0
[1.9.18]: https://github.com/synapticon/ecatmod/compare/v1.9.17...v1.9.18
[1.9.17]: https://github.com/synapticon/ecatmod/compare/v1.9.16...v1.9.17
[1.9.16]: https://github.com/synapticon/ecatmod/compare/v1.9.15...v1.9.16
[1.9.15]: https://github.com/synapticon/ecatmod/compare/v1.9.14...v1.9.15
[1.9.14]: https://github.com/synapticon/ecatmod/compare/v1.9.13...v1.9.14
[1.9.13]: https://github.com/synapticon/ecatmod/compare/v1.9.12...v1.9.13
[1.9.12]: https://github.com/synapticon/ecatmod/compare/v1.9.11...v1.9.12
[1.9.11]: https://github.com/synapticon/ecatmod/compare/v1.9.10...v1.9.11
[1.9.10]: https://github.com/synapticon/ecatmod/compare/v1.9.9...v1.9.10
[1.9.9]: https://github.com/synapticon/ecatmod/compare/v1.9.8...v1.9.9
[1.9.8]: https://github.com/synapticon/ecatmod/compare/v1.9.7...v1.9.8
[1.9.7]: https://github.com/synapticon/ecatmod/compare/v1.9.6...v1.9.7
[1.9.6]: https://github.com/synapticon/ecatmod/compare/v1.9.5...v1.9.6
[1.9.5]: https://github.com/synapticon/ecatmod/compare/v1.9.4...v1.9.5
[1.9.4]: https://github.com/synapticon/ecatmod/compare/v1.9.3...v1.9.4
[1.9.3]: https://github.com/synapticon/ecatmod/compare/v1.9.2...v1.9.3
[1.9.2]: https://github.com/synapticon/ecatmod/compare/v1.9.1...v1.9.2
[1.9.1]: https://github.com/synapticon/ecatmod/compare/v1.9.0...v1.9.1
[1.9.0]: https://github.com/synapticon/ecatmod/compare/v1.8.7...v1.9.0
[1.8.7]: https://github.com/synapticon/ecatmod/compare/v1.8.6...v1.8.7
[1.8.6]: https://github.com/synapticon/ecatmod/compare/v1.8.5...v1.8.6
[1.8.5]: https://github.com/synapticon/ecatmod/compare/v1.8.4...v1.8.5
[1.8.4]: https://github.com/synapticon/ecatmod/compare/v1.8.3...v1.8.4
[1.8.3]: https://github.com/synapticon/ecatmod/compare/v1.8.2...v1.8.3
[1.8.2]: https://github.com/synapticon/ecatmod/compare/v1.8.1...v1.8.2
[1.8.1]: https://github.com/synapticon/ecatmod/compare/v1.8.0...v1.8.1
[1.8.0]: https://github.com/synapticon/ecatmod/compare/v1.7.6...v1.8.0
[1.7.6]: https://github.com/synapticon/ecatmod/compare/v1.7.5...v1.7.6
[1.7.5]: https://github.com/synapticon/ecatmod/compare/v1.7.4...v1.7.5
[1.7.4]: https://github.com/synapticon/ecatmod/compare/v1.7.3...v1.7.4
[1.7.3]: https://github.com/synapticon/ecatmod/compare/v1.7.2...v1.7.3
[1.7.2]: https://github.com/synapticon/ecatmod/compare/v1.7.1...v1.7.2
[1.7.1]: https://github.com/synapticon/ecatmod/compare/v1.7.0...v1.7.1
[1.7.0]: https://github.com/synapticon/ecatmod/compare/v1.6.10...v1.7.0
[1.6.10]: https://github.com/synapticon/ecatmod/tree/v1.6.10
