Releases: Rickedb/OpenProtocolInterpreter
Releases · Rickedb/OpenProtocolInterpreter
6.1.1
Enhancements
- Generating .Net 10 packages
- Optimizations by avoiding Linq usage
- Added decimal conversion for exponential string values
Fixes
- Fixed a bug when configuring messages templates that would throw
InvalidOperationException - Fixed folder names that conflicts between upper and lower case (only noticed on Linux environment due to case sensitive)
Related Issues
Related PRs
Contributors
6.1.0
Enhancements
- Project now targets the latest LTS version .NET 8
- Added some string optimizations using
StringBuilderinstead of+=concatenation - Few syntax sugar improvements for using Enum instead of converting it to an int every time when accessing datafields
- Some syntax "sugaring" for creating datafields list
MessageTemplatesare now registered as lazy fields, so we only access them when discovering the responsible message template/mid- Quick lookup mid X message template dictionary changed to
SortedDictionaryfor better performance
New Features
- Added
StandarizedRevisionwhich handles when revision is set to zero, returning as rev 1
New Mids/New Revisions
- Communication
- Mid0004
- Rev 2
- Mid0004
- Parameter Set
- Mid0019
- Rev 2
- Mid2506 🆕
- Mid0019
- Job
- Mid0033
- Rev 5
- Mid0140
- Rev 4
- Mid0033
- Tightening
- Mid0061
- Rev 9
- Rev 10
- Rev 11
- Mid0064
- Rev 10
- Mid0065
- Rev 9
- Rev 10
- Rev 11
- Mid0066
- Rev 2
- Mid0902 🆕
- Mid0061
- Multi Spindle
- Mid0101
- Rev 6
- Mid0104 🆕
- Mid0101
- Result
- Mid1201
- Rev 2
- Rev 3
- Mid1202
- Rev 2
- Mid1201
- Tool
- Mid0704 🆕
Related issues
Related pull requests
6.0.0
The main purpose of this version is to reorganize the project to the defaults of C# and the OpenProtocol itself
Breaking changes
- Default revision is always Revision 1, using the last revision is not normal and it would cause many breaking changes as well
revisionoptional parameter of MIDs constructors is no longer optional since the default is always 1, if a revision is desired you should pass it as parameterValidate()method that existed in some Mids were removed.- Constructors that fill properties are no longer available, it will only define header parameters, all the datafield must be set directly.
- All
Datafieldsenum are now protected, since it belongs only to the mid itself, you should not use externally. - Removed inner
PowerMacsStatusesenum fromMid0107and now uses thePowerMacsStatusenum - All enums format were updated to PascalCase and not SNAKE_CASE (however
-characters are interpreted as_) - Moved
OpenEndDataclass outside ofMid0041 ToolTypeenum changed accordingly with documentation,IPTrefers to code30in place ofQSHIELD_C- Converters and
IValueConverter<T>was removed and converted to static functions atOpenProtocolConvertor a protected virtual method at the unique mid that needs it PaddingOrientationsenum is no longer insideDataFieldclass and changed toPaddingOrientation
Improvements
- Project now targets .net standard 2.0 and the latest LTS version .NET 6
- Enforce padding to specified size if truncated
- Revision by field are now null safe
New Features
- Added
Mid0009 - Added
Mid0702 - Added
Mid0703 - Added
Mid2505 - Added PIDs' enums in categories
- Updated
AutoSelectenum - Updated
JobTighteningStatusenum - Updated
ResultTypeenum - Updated
SystemTypeenum
Fixes
- Fixed
Mid1201(#90) - Fixed
Mid1202to consider header length instead o package length to avoid NUL (#94) - Use header length instead of package length to mids:
Mid0006Mid0008Mid0091Mid0106Mid0107Mid0215Mid0240Mid0242Mid0251
Related issues
Related pull requests
5.1.0
The main purpose of this version is to make it easier to know how does Mid replies work and make easier to use too.
Improvements
- Interface segregation to represent types of mid:
IAcknowledgeIAcknowledgeable<TAckMid>IAnswerableBy<TAnswerMid>IAcceptableCommandIDeclinableCommandISubscriptionIUnsubscription
New Features
- Along with interfaces, added easy-use extensions:
GetAcknowledge<TAckMid>()to get the acknowledge for the mid instance instead of finding yourself which is the ack midGetReply<TAnswerMid>()to generate the respective reply mid of the instance instead of finding yourself which one is the reply mid. (for replies that have additional params, a raw instance will be generate with the same revision but you'll have too set other parameters by yourself)GetReply<TAnswerMid>(int revision)same as above, however you can inform the informed revisionGetAcceptCommand<TAcceptedMid>generateMid0005to the accepted midGetDeclinedCommand<TAcceptedMid>generateMid0004to the declined mid with informed errorAssertAndGetDeclineCommand<TDeclinedMid>same as above, however it ensures it's a documented error that you informed, if not, anArgumentExceptionis thrown
- Added new
Errors:WRONG_TOOL_TYPE_TO_PSET_DOWNLOAD_CONNECTED=> 26TOOL_IS_INACCESSIBLE=> 27JOB_ABORTION_IS_IN_PROGRESS=> 28,TOOL_DOES_NOT_EXIST=> 29OTHER_MASTER_CLIENT_ALREADY_CONNECTED=> 35LOCK_TYPE_NOT_SUPPORTED=> 36PAIRING_FAILED=> 61PAIRING_DENIED=> 62PAIRING_OR_PAIRING_ABORTION_ATTEMPT_ON_WRONG_TOOLTYPE=> 63PAIRING_ABORTION_DENIED=> 64PAIRING_ABORTION_FAILED=> 65PAIRING_DISCONNECTION_FAILED=> 66PAIRING_IN_PROGRESS_OR_ALREADY_DONE=> 67PAIRING_DENIED_NO_PROGRAM_CONTROL=> 68UNSUPPORTED_EXTRA_DATA_REVISION=> 69SUBSCRIBED_MID_UNSUPPORTED=> 73SUBSCRIBED_MID_REVISION_UNSUPPORTED=> 74REQUESTED_MID_UNSUPPORTED=> 75REQUESTED_MID_REVISION_UNSUPPORTED=> 76REQUESTED_ON_SPECIFIC_DATA_NOT_SUPPORTED=> 77SUBSCRIPTION_ON_SPECIFIC_DATA_NOT_SUPPORTED=> 78AUDI_EMERGENCY_STATUS_SUBSCRIPTION_EXISTS=> 80AUDI_EMERGENCY_STATUS_SUBSCRIPTION_DOESNT_EXISTS=> 81
Related pull requests
5.0.0
Breaking changes
HeaderDataproperty fromMidclass was renamed toHeaderonly.Headerclass is not inside Mid class anymore, so you should change fromnew Mid.Header()tonew Header()- Fixed
Headermisconception ofUsedAs, which is nowStationId,SpindleId,SequenceNumber,NumberOfMessages, MessageNumber, with this, it's now possible to use Link Level Acknowledging mentioned in issue #88NoAckFlagis now abool, notint?- Parsing
Headerchanged accordingly with documentation:Revisionwhen empty, 0 or 1 is threated as revision 1 when parsing (Parse()). (#7)Revisionwhen 0 is threated as empty when packed (Pack()). (#44)NoAckFlagwhen false is sent as empty, when true is sent as1ASCII character.StationIdwhen parsing, 0 or empty is threated as 1. When packed, only null is threated as empty.SpindleIdwhen parsing, 0 or empty is threated as 1. When packed, only null is threated as empty.
New features
- Every mid now has constructor to set up
Headerproperty, which setter is also exposed to be manipulated publicly.
Related Issues
4.2.0
4.1.0
4.0.0
Breaking changes
RevisionsByFieldsis no longer a public property due to serialization issuesCalibrationUnit.LBF_LNfixed toCalibrationUnit.LBF_INCalibrationUnit.NCMchanged from5to8TorqueValuesUnit.LBF_LNfixed toTorqueValuesUnit.LBF_IN
New revisions
Mid0001, revisions 6 and 7Mid0012, revision 5Mid0013, revisions 3 to 5Mid0032, revision 4Mid0040, revision 6 and 7Mid0041, revision 6 and 7Mid0042, revision 2Mid0043, revision 2Mid0045, revision 2Mid0071, revision 3Mid0074, revision 2Mid0140, revisions 2 and 3 (pending unit tests)Mid1201, revision 2
Fixes
- Fixed
SpeedOrPressStatusConverterused inMid0101(#81)
Related Issues
3.6.2
Release Notes
3.6.2 fixes minor bugs that causes malfunction in Mids: 0064, 0065 and 0076
Fixes
- Fixed
Mid0064constructor to use long instead of int - Fixed
Mid0065set method from properties TorqueStatus and AngleStatus #80 - Fixed
Mid0076revision 1 and 2 constructor, by adding a revision parameter to select between revision 1 or 2 #79