Converts the ugly ASCII package that came from Open Protocol to an object
StringBuilder
instead of +=
concatenationMessageTemplates
are now registered as lazy fields, so we only access them when discovering the responsible message template/midSortedDictionary
for better performanceStandarizedRevision
which handles when revision is set to zero, returning as rev 1The main purpose of this version is to reorganize the project to the defaults of C# and the OpenProtocol itself
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.Datafields
enum are now protected, since it belongs only to the mid itself, you should not use externally.PowerMacsStatuses
enum from Mid0107
and now uses the PowerMacsStatus
enum-
characters are interpreted as _
)
OpenEndData
class outside of Mid0041
ToolType
enum changed accordingly with documentation, IPT
refers to code 30
in place of QSHIELD_C
IValueConverter<T>
was removed and converted to static functions at OpenProtocolConvert
or a protected virtual method at the unique mid that needs itPaddingOrientations
enum is no longer inside DataField
class and changed to PaddingOrientation
Mid0009
Mid0702
Mid0703
Mid2505
AutoSelect
enumJobTighteningStatus
enumResultType
enumSystemType
enumMid1201
(#90)Mid1202
to consider header length instead o package length to avoid NUL (#94)Mid0006
Mid0008
Mid0091
Mid0106
Mid0107
Mid0215
Mid0240
Mid0242
Mid0251
The main purpose of this version is to make it easier to know how does Mid replies work and make easier to use too.
IAcknowledge
IAcknowledgeable<TAckMid>
IAnswerableBy<TAnswerMid>
IAcceptableCommand
IDeclinableCommand
ISubscription
IUnsubscription
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 revision GetAcceptCommand<TAcceptedMid>
generate Mid0005
to the accepted mid GetDeclinedCommand<TAcceptedMid>
generate Mid0004
to the declined mid with informed errorAssertAndGetDeclineCommand<TDeclinedMid>
same as above, however it ensures it's a documented error that you informed, if not, an ArgumentException
is thrownErrors
:
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
=> 81HeaderData
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()
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 #88NoAckFlag
is now a bool
, not int?
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.Header
property, which setter is also exposed to be manipulated publicly.RevisionsByFields
is no longer a public property due to serialization issuesCalibrationUnit.LBF_LN
fixed to CalibrationUnit.LBF_IN
CalibrationUnit.NCM
changed from 5
to 8
TorqueValuesUnit.LBF_LN
fixed to TorqueValuesUnit.LBF_IN
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 2SpeedOrPressStatusConverter
used in Mid0101
(#81)3.6.2 fixes minor bugs that causes malfunction in Mids: 0064
, 0065
and 0076
Mid0064
constructor to use long instead of intMid0065
set method from properties TorqueStatus and AngleStatus #80Mid0076
revision 1 and 2 constructor, by adding a revision parameter to select between revision 1 or 2 #793.6.0 adds new mids/revisions and fixes some issues in Mid0035
.
Mid0701
(#63)Mid9997
Mid9998
(#75)Mid0002
, revisions 6 and 7Mid0061
, revision 8 (#66)Mid0065
, revisions 7 and 8 (#65)Mid0035
(#72)