OpenProtocolInterpreter Versions Save

Converts the ugly ASCII package that came from Open Protocol to an object

6.1.0

5 months ago

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
  • Parameter Set
    • Mid0019
      • Rev 2
    • Mid2506 :new:
  • Job
    • Mid0033
      • Rev 5
    • Mid0140
      • Rev 4
  • Tightening
    • Mid0061
      • Rev 9
      • Rev 10
      • Rev 11
    • Mid0064
      • Rev 10
    • Mid0065
      • Rev 9
      • Rev 10
      • Rev 11
    • Mid0066
      • Rev 2
    • Mid0902 :new:
  • Multi Spindle
    • Mid0101
      • Rev 6
    • Mid0104 :new:
  • Result
    • Mid1201
      • Rev 2
      • Rev 3
    • Mid1202
      • Rev 2
  • Tool
    • Mid0704 :new:
  • #106
  • #108
  • #109

6.0.0

1 year ago

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 parameter
  • Validate() 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 from Mid0107 and now uses the PowerMacsStatus enum
  • All enums format were updated to PascalCase and not SNAKE_CASE (however - characters are interpreted as _)
  • Moved OpenEndData class outside of Mid0041
  • ToolType enum changed accordingly with documentation, IPT refers to code 30 in place of QSHIELD_C
  • Converters and IValueConverter<T> was removed and converted to static functions at OpenProtocolConvert or a protected virtual method at the unique mid that needs it
  • PaddingOrientations enum is no longer inside DataField class and changed to PaddingOrientation

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
  • #90
  • #94
  • #100
  • #98
  • #99
  • #102

5.1.0

1 year ago

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 mid
    • GetReply<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 revision
    • GetAcceptCommand<TAcceptedMid> generate Mid0005 to the accepted mid
    • GetDeclinedCommand<TAcceptedMid> generate Mid0004 to the declined mid with informed error
    • AssertAndGetDeclineCommand<TDeclinedMid> same as above, however it ensures it's a documented error that you informed, if not, an ArgumentException is thrown
  • Added new Errors:
    • WRONG_TOOL_TYPE_TO_PSET_DOWNLOAD_CONNECTED => 26
    • TOOL_IS_INACCESSIBLE => 27
    • JOB_ABORTION_IS_IN_PROGRESS => 28,
    • TOOL_DOES_NOT_EXIST => 29
    • OTHER_MASTER_CLIENT_ALREADY_CONNECTED => 35
    • LOCK_TYPE_NOT_SUPPORTED => 36
    • PAIRING_FAILED => 61
    • PAIRING_DENIED => 62
    • PAIRING_OR_PAIRING_ABORTION_ATTEMPT_ON_WRONG_TOOLTYPE => 63
    • PAIRING_ABORTION_DENIED => 64
    • PAIRING_ABORTION_FAILED => 65
    • PAIRING_DISCONNECTION_FAILED => 66
    • PAIRING_IN_PROGRESS_OR_ALREADY_DONE => 67
    • PAIRING_DENIED_NO_PROGRAM_CONTROL => 68
    • UNSUPPORTED_EXTRA_DATA_REVISION => 69
    • SUBSCRIBED_MID_UNSUPPORTED => 73
    • SUBSCRIBED_MID_REVISION_UNSUPPORTED => 74
    • REQUESTED_MID_UNSUPPORTED => 75
    • REQUESTED_MID_REVISION_UNSUPPORTED => 76
    • REQUESTED_ON_SPECIFIC_DATA_NOT_SUPPORTED => 77
    • SUBSCRIPTION_ON_SPECIFIC_DATA_NOT_SUPPORTED => 78
    • AUDI_EMERGENCY_STATUS_SUBSCRIPTION_EXISTS => 80
    • AUDI_EMERGENCY_STATUS_SUBSCRIPTION_DOESNT_EXISTS => 81
  • #97

5.0.0

1 year ago

Breaking changes

  • HeaderData property from Mid class was renamed to Header only.
  • Header class is not inside Mid class anymore, so you should change from new Mid.Header() to new Header()
  • Fixed Header misconception of UsedAs, which is now StationId, SpindleId, SequenceNumber, NumberOfMessages,
  • MessageNumber, with this, it's now possible to use Link Level Acknowledging mentioned in issue #88
  • NoAckFlag is now a bool, not int?
  • 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 as 1 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.
  • #7
  • #44
  • #88

4.2.0

2 years ago

Release Notes

Adds new mids and fixes a minor bug

New Mids

  • Mid0066

Fixes

  • Fixed Mid0052 adding NUL character as part of VinNumber

4.1.0

2 years ago

New Features

  • Add NUL character to the end of package extension method for string and bytes method.

4.0.0

2 years ago

Breaking changes

  • RevisionsByFields is no longer a public property due to serialization issues
  • CalibrationUnit.LBF_LN fixed to CalibrationUnit.LBF_IN
  • CalibrationUnit.NCM changed from 5 to 8
  • TorqueValuesUnit.LBF_LN fixed to TorqueValuesUnit.LBF_IN

New revisions

  • Mid0001, revisions 6 and 7
  • Mid0012, revision 5
  • Mid0013, revisions 3 to 5
  • Mid0032, revision 4
  • Mid0040, revision 6 and 7
  • Mid0041, revision 6 and 7
  • Mid0042, revision 2
  • Mid0043, revision 2
  • Mid0045, revision 2
  • Mid0071, revision 3
  • Mid0074, revision 2
  • Mid0140, revisions 2 and 3 (pending unit tests)
  • Mid1201, revision 2

Fixes

  • Fixed SpeedOrPressStatusConverter used in Mid0101 (#81)
  • #81

3.6.2

2 years ago

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
  • #79
  • #80

3.6.1

2 years ago

Release Notes

3.6.1 fixes minor bugs that causes malfunction in Mid0245

Fixes

  • Fixed Mid0245 references and set default value for User Data (#77)
  • #77

3.6.0

2 years ago

Release Notes

3.6.0 adds new mids/revisions and fixes some issues in Mid0035.

New Mids

  • Mid0701 (#63)
  • Mid9997
  • Mid9998 (#75)

New revisions

  • Mid0002, revisions 6 and 7
  • Mid0061, revision 8 (#66)
  • Mid0065, revisions 7 and 8 (#65)

Fixes

  • Fixed default last revision for Mid0035 (#72)
  • #63
  • #65
  • #66
  • #72
  • #75
  • #76