Releases: Rickedb/OpenProtocolInterpreter
Releases · Rickedb/OpenProtocolInterpreter
6.1.0
Enhancements
- Project now targets the latest LTS version .NET 8
- Added some string optimizations using
StringBuilder
instead 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
MessageTemplates
are 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
SortedDictionary
for better performance
New Features
- Added
StandarizedRevision
which 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
revision
optional 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
Datafields
enum are now protected, since it belongs only to the mid itself, you should not use externally. - Removed inner
PowerMacsStatuses
enum fromMid0107
and now uses thePowerMacsStatus
enum - All enums format were updated to PascalCase and not SNAKE_CASE (however
-
characters are interpreted as_
) - Moved
OpenEndData
class outside ofMid0041
ToolType
enum changed accordingly with documentation,IPT
refers to code30
in place ofQSHIELD_C
- Converters and
IValueConverter<T>
was removed and converted to static functions atOpenProtocolConvert
or a protected virtual method at the unique mid that needs it PaddingOrientations
enum is no longer insideDataField
class 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
AutoSelect
enum - Updated
JobTighteningStatus
enum - Updated
ResultType
enum - Updated
SystemType
enum
Fixes
- Fixed
Mid1201
(#90) - Fixed
Mid1202
to consider header length instead o package length to avoid NUL (#94) - Use header length instead of package length to mids:
Mid0006
Mid0008
Mid0091
Mid0106
Mid0107
Mid0215
Mid0240
Mid0242
Mid0251
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:
IAcknowledge
IAcknowledgeable<TAckMid>
IAnswerableBy<TAnswerMid>
IAcceptableCommand
IDeclinableCommand
ISubscription
IUnsubscription
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>
generateMid0005
to the accepted midGetDeclinedCommand<TAcceptedMid>
generateMid0004
to the declined mid with informed errorAssertAndGetDeclineCommand<TDeclinedMid>
same as above, however it ensures it's a documented error that you informed, if not, anArgumentException
is 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
HeaderData
property fromMid
class was renamed toHeader
only.Header
class is not inside Mid class anymore, so you should change fromnew Mid.Header()
tonew Header()
- Fixed
Header
misconception ofUsedAs
, which is nowStationId
,SpindleId
,SequenceNumber
,NumberOfMessages
, MessageNumber
, with this, it's now possible to use Link Level Acknowledging mentioned in issue #88NoAckFlag
is now abool
, notint?
- Parsing
Header
changed accordingly with documentation:Revision
when empty, 0 or 1 is threated as revision 1 when parsing (Parse()
). (#7)Revision
when 0 is threated as empty when packed (Pack()
). (#44)NoAckFlag
when false is sent as empty, when true is sent as1
ASCII character.StationId
when parsing, 0 or empty is threated as 1. When packed, only null is threated as empty.SpindleId
when 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
Header
property, which setter is also exposed to be manipulated publicly.
Related Issues
4.2.0
4.1.0
4.0.0
Breaking changes
RevisionsByFields
is no longer a public property due to serialization issuesCalibrationUnit.LBF_LN
fixed toCalibrationUnit.LBF_IN
CalibrationUnit.NCM
changed from5
to8
TorqueValuesUnit.LBF_LN
fixed 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
SpeedOrPressStatusConverter
used 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
Mid0064
constructor to use long instead of int - Fixed
Mid0065
set method from properties TorqueStatus and AngleStatus #80 - Fixed
Mid0076
revision 1 and 2 constructor, by adding a revision parameter to select between revision 1 or 2 #79
Related Issues
3.6.1
3.6.0
Release Notes
3.6.0 adds new mids/revisions and fixes some issues in Mid0035
.
New Mids
New revisions
Fixes
- Fixed default last revision for
Mid0035
(#72)