tbf/GenesisCordonelInterface/bin/Debug/Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.xml

698 lines
41 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0"?>
<doc>
<assembly>
<name>Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol</name>
</assembly>
<members>
<member name="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands">
<summary>
Commands that the genesis meter support over the request protocol.
Functional Specification Breeze Core and Applications Revision:3.03(12748DOC11 - functional spec ICOE472.pdf)
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.Nop">
<summary>
9.2.5
Command 0x00 (NOP)
This command will do nothing, and will have no response.
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.QueryCaps">
<summary>
9.2.6
Command 0x01 (Query capabilities)
This command will be used by the external computer to discover the protocol parameters that may be varied.
These can then be compared with the external computers capabilities and the best match selected.
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.QueryCapsReply">
<summary>
response on <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.QueryCaps"/>
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.SetCaps">
<summary>
9.2.7
Command 0x03 (Set capabilities)
Used to finalize the baud rate and packet settings after negotiation.
The reply will be sent at the currently selected baud rate and packet length,
after which the settings will take effect
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.SetCapsReply">
<summary>
response on <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.SetCaps"/>
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.Train">
<summary>
9.2.8
Command 0x05 (Train)
This command will perform target driven data training, that is, where the target is in control of the data flow.
See also command 0x11.
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.TrainReply">
<summary>
response on <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.Train"/>
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.RepeatLast">
<summary>
9.2.9
Command 0x07 (Repeat last)
Used by the external computer to request the last response to be resent, for example if it was found to be corrupted.
Note that the response 0x08 will never be sent, the reply to command 0x07 will be a verbatim resend of the last response.
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.RepeatLastReply">
<summary>
response on <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.RepeatLast"/>
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.ReadData">
<summary>
9.2.10
Command 0x09 (Read data)
This command makes reads of any random selection of configuration registers, up to the maximum packet size negotiated.
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.ReadDataReply">
<summary>
response on <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.ReadData"/>
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.WriteData">
<summary>
9.2.11
Command 0x0B (Write data)
This command makes writes to any random selection of configuration registers, up to the maximum packet size negotiated.
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.WriteDataReply">
<summary>
response on <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.WriteData"/>
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleReadData">
<summary>
9.2.12
Command 0x0D (Multiple read data)
This command makes reads of one register multiple times, which will be more efficient than performing successive reads using command 0x09.
This command will be available from protocol version 0.40, for earlier protocol versions command 0x09 should be used.
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleReadDataReply">
<summary>
response on <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleReadData"/>
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleWriteData">
<summary>
9.2.13
Command 0x0F (Multiple write data)
This command makes writes to one register multiple times, which will be more efficient than performing successive reads using command 0x0B.
This command will be available from protocol version 0.40, for earlier protocol versions command 0x0B should be used.
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleWriteDataReply">
<summary>
response on <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleWriteData"/>
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.SetLevel">
<summary>
9.2.14
Command 0x11 (Set level)
This command will perform external driven data training, that is, where the external computer is in control of the data flow.
This command will be available from protocol version 0.42, for earlier protocol versions command 0x05 should be used.
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.SetLevelReply">
<summary>
response on <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.SetLevel"/>
</summary>
</member>
<member name="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.ConfigExErrors">
<summary>
Config Exchange error codes.
</summary>
</member>
<member name="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.HighLevelErrors">
<summary>
Transport errors for request protocol
</summary>
</member>
<member name="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.LowLevelErrors">
<summary>
List of constance for error codes from genesis meter
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.LowLevelErrors.NoError">
<summary>
everything is fine
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.LowLevelErrors.SerialPortClosed">
<summary>
Port is not open
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.LowLevelErrors.SerialPortWriteFailure">
<summary>
fails to write to serial port
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.LowLevelErrors.SerialPortReadFailure">
<summary>
fails to read from serial port
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.LowLevelErrors.MaxDataLength">
<summary>
Command is to long
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.LowLevelErrors.Exception">
<summary>
deeper exception, check out log if this happen
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.LowLevelErrors.CrcCalcError">
<summary>
wrong CRC
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.LowLevelErrors.Unknown">
<summary>
something strange
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.LowLevelErrors.Timeout">
<summary>
Timeout occur
</summary>
</member>
<member name="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.RequestAcknowledgeState">
<summary>
Acknowledge feedback from meter after communication
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.RequestAcknowledgeState.CommandNotAssigned">
<summary>
Acknowledge code for unassigned command
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.RequestAcknowledgeState.Unsent">
<summary>
Will be used initially as the record is not sent
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.RequestAcknowledgeState.NoResponse">
<summary>
Response missing
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.RequestAcknowledgeState.CommandError">
<summary>
Response command not match the required command
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.RequestAcknowledgeState.AuthorizationRequired">
<summary>
Lost connection (logged out from meter), a re-authorization is required
to access this command and/or register
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.RequestAcknowledgeState.MeterError">
<summary>
Meter error received, a retry may be useful
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.RequestAcknowledgeState.DecodingError">
<summary>
The response record couldn't be decoded
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.RequestAcknowledgeState.WakeupMessage">
<summary>
The meter sent a wakeup message instead of the required data
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.RequestAcknowledgeState.Ok">
<summary>
Valid meter response record
</summary>
</member>
<member name="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException">
<summary>
Holds all errors can occur on the request protocol
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.Command">
<summary>
Exception occurred on this command
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.ReceivedData">
<summary>
Exception occurred while receiving this data
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.ConfigExErrorCode">
<summary>
Error is interpreted and has a define error code
if its not null is Genesis.Protocols.Request.Const.ConfigExErrors
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.HighLevelErrorCode">
<summary>
Error is interpreted and has a define error code
if its not null is Genesis.Protocols.Request.Const.HighLevelError
</summary>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.#ctor(System.String)">
<summary>
Ctor with only message
</summary>
<param name="message">error message</param>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.#ctor(System.String,System.Object)">
<summary>
Ctor with message and <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.Command"/>
</summary>
<param name="message">error message</param>
<param name="command"><see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.Command"/></param>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.#ctor(System.String,System.Object,System.Object)">
<summary>
Ctor with message, <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.Command"/> and <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.ReceivedData"/>
</summary>
<param name="message">error message</param>
<param name="command"><see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.Command"/></param>
<param name="receivedData"><see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Exceptions.RequestProtocolException.ReceivedData"/> </param>
</member>
<member name="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord">
<summary>
Holds request commands with detail parameters to see processing state
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseCommand">
<summary>
Indicates the base command <see cref="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands" />
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.Register">
<summary>
the register the command refers to.
needed to set Register dictionary to link response with dictionary key
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.Acknowledge">
<summary>
Command acknowledged
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.RetryCtr">
<summary>
Retry counter
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.WakeupMessageRetryCtr">
<summary>
Wakeup-message retry counter
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseErrorBase">
<summary>
indicates error base on <see cref="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord"/>
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseErrorReason">
<summary>
indicates error reason on <see cref="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord"/>
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseErrorCode">
<summary>
Combined error code of base and reason
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseErrorPosition">
<summary>
Chunk position of error on multiple read/write access
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.RequestProtocolData">
<summary>
Data containing the request protocol
</summary>
</member>
<member name="P:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.EncodedRequestData">
<summary>
Encoded with transmit protocol, ready to stream to port as is
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponsePayload">
<summary>
Extracted payload of response
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseTimeoutMs">
<summary>
Extracted payload of response
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.HideDataInLog">
<summary>
avoid logging for e.g. password
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.SkipRetryErrorCode">
<summary>
error mask to skip retries for functional errors <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseErrorCode"/>
</summary>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.#ctor(System.Byte,System.Collections.Generic.List{System.Byte},System.Collections.Generic.List{System.Byte},System.Int32,Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterDefinition,System.Boolean,System.UInt16)">
<summary>
Ctor for an base command <see cref="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands" />
</summary>
<param name="command"><see cref="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands" /> as an byte</param>
<param name="requestProtocolData">Request protocol data for logging</param>
<param name="encodedRequestData"> Ready to send data encoded with transmit protocol retries</param>
<param name="responseTimeoutMs">Timeout for response</param>
<param name="register"><see cref="T:Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterDefinition"/> to do command with</param>
<param name="hideDataInLog">hiding data in log file to avoid spying of passwords</param>
<param name="skipRetryErrorCode">error mask to skip retries <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseErrorCode"/></param>
</member>
<member name="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.EventArguments.AuthorizationRequiredEventArgs">
<inheritdoc />
<summary>
if session is gone and a re authorization is necessary
</summary>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.EventArguments.AuthorizationRequiredEventArgs.#ctor(Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord)">
<inheritdoc />
<summary>
Ctor
</summary>
<param name="command">this command will be resend after authorization</param>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.EventArguments.AuthorizationRequiredEventArgs.Command">
<summary>
Command to resend
</summary>
</member>
<member name="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol">
<summary>
a bidirectional protocol support read and write genesis meter registers
needed for
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol._recordsSendFifo">
<summary>
FIFO of records to be send next
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol._recordInProcess">
<summary>
This is the actual record in the send loop
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.LastCommTime">
<summary>
Last communication time for session refresh
</summary>
</member>
<member name="E:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.OnRecordReadyToSend">
<inheritdoc />
</member>
<member name="E:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.OnRecordIsDecoded">
<inheritdoc />
</member>
<member name="E:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.OnAuthorizationGrant">
<summary>
Occurs when a meter Response for write password is good
</summary>
</member>
<member name="E:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.OnMeterRegisterUpdated">
<summary>
Event after a register entries changed
</summary>
</member>
<member name="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.AdditionalRetryTimeoutMs">
<summary>
User adjustable additional retry timeout. This is 0 ms for standard operation.
</summary>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.#ctor(System.String)">
<inheritdoc />
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.ProcessRecordList">
<summary>
Process all records needed to be sent, this routine has to be called
to kick-off the communication of all RequestRecords saved to the send
FIFO <see cref="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.AddRecordToSendFifo(System.Byte,System.Byte[],Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterDefinition,System.Boolean,System.UInt16)"/>
</summary>
<remarks date="2018-Dec-07" author="T.Wiedebusch">
- Initial
</remarks>
<remarks date="2018-Dec-09" author="T.Wiedebusch">
- Logging of raw RequestProtocol at time of sending,
- Logging of retries.
</remarks>
<remarks date="2018-Dec-12" author="T.Wiedebusch">
- Added timeout from transmit protocol.
</remarks>
<remarks date="2019-Jan-02" author="Drabesch">
- Added reorder FIFO to bring login at first position
</remarks>
<remarks date="2019-Apr-11" author="T.Wiedebusch">
- Hide data in logging for e.g. passwords
</remarks>
<remarks date="2019-Jun-06" author="T.Wiedebusch">
- Retry counter reset if authorization required and this record will be put back into FIFO,
- Retry delay corrected for all errors.
</remarks>
<remarks date="2019-Jun-12" author="T.Wiedebusch">
- Dynamic retry delay: ResponseTimeoutMs * Retry counter.
</remarks>
<remarks date="2019-Jun-28" author="T.Wiedebusch">
- Skip retries on specific error mask to speed up communication on functional errors
or informational feed backs (e.g FW not installed 0x0004)
<see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseErrorCode"/>
</remarks>
<remarks date="2019-Aug-29" author="T.Wiedebusch">
- User adjustable additional retry timeout.
</remarks>
<remarks date="2020-Jan-17/18" author="T.Wiedebusch">
- Response timeout message output,
- Initialize acknowledge code before communication to NoResponse.
</remarks>
<remarks date="2020-Jan-22" author="T.Wiedebusch">
- Response timeout deviated from system time.
</remarks>
<remarks date="2021-Feb-02" author="T.Wiedebusch">
- Avoid enqueue of _recordInProcess if retry counter is 0.
</remarks>
<remarks date="2022-Nov-04" author="T.Wiedebusch">
- Additional DEBUG information included about FIFO and loops.
</remarks>
<remarks date="2022-Nov-07" author="T.Wiedebusch">
- Command not assigned response for recordInProcess == null.
</remarks>
<remarks date="2024-Apr-22" author="T.Wiedebusch">
- Initial request acknowledge state changed from NotDecoded to NoResponse.
</remarks>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.AddRecordToSendFifo(System.Byte,System.Byte[],Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterDefinition,System.Boolean,System.UInt16)">
<summary>
Assemble record with transmit protocol and put it to record-send-FIFO,
backup the ready-to-send, which is the dataEncodedWithTransmitProtocol,
to the RequestRecord object for sending including the retry capability.
</summary>
<param name="payload">Data package with all details like CRC, etc</param>
<param name="cmd">Command identifier <see cref="T:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands" /></param>
<param name="register"><see cref="T:Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterDefinition" /> which is intend</param>
<param name="hideDataInLog">hiding data in log file to avoid spying of passwords</param>
<param name="skipRetryErrorCode">error mask to skip retries</param>
<returns>the assembled record for the send FIFO</returns>
<remarks date="2018-Dec-08" author="T.Wiedebusch">
- Initial
</remarks>
<remarks date="2018-Dec-09" author="T.Wiedebusch">
- Logging of raw data (RequestProtocol) moved to ProcessRecordList.
</remarks>
<remarks date="2018-Dec-12" author="T.Wiedebusch">
- Added timeout from transmit protocol.
</remarks>
<remarks date="2019-Apr-11" author="T.Wiedebusch">
- Hide data in logging for e.g. passwords
</remarks>
<remarks date="2019-Jun-28" author="T.Wiedebusch">
- Skip retries on specific error mask to speed up communication on functional errors
or informational feed backs (e.g FW not installed 0x0004)
<see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseErrorCode"/>
</remarks>
<remarks date="2020-Jan-18" author="T.Wiedebusch">
- Initial skip retry error code set to 0x0004 (e.g FW not installed 0x0004).
</remarks>
<remarks date="2023-Mai-16" author="T.Wiedebusch">
- Hide data in log forwarded to DecodeDateForPhysicalLayer to hide passwords in log files.
</remarks>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.AddRecordToSendFifoUI1236(System.String,System.Byte[],Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterDefinition,System.Boolean,System.UInt16)">
<summary>
Record dispatcher to send FIFO of UI1236 command
</summary>
<remarks date="2022-Aug-24" author="R.Drabesch">
- Initial
</remarks>
<param name="ident">string for logging of slot</param>
<param name="payload">Data package with all details like CRC, etc</param>
<param name="register"><see cref="T:Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterDefinition" /> which is intend</param>
<param name="hideDataInLog">hiding data in log file to avoid spying of passwords</param>
<param name="skipRetryErrorCode">error mask to skip retries</param>
<returns>the assembled record for the send FIFO</returns>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.DecodeRecord(Xylem.Common.Hardware.Interfaces.Ports.PortCore.EventArguments.IPortDataEventArgs)">
<summary>
Called after successful response.
Decode and check record, handle Errors and dispatch result.
Invokes <see cref="E:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.OnRecordIsDecoded" />if somebody is listening
</summary>
<remarks date="2018-Mar-15" author="R.Drahbesch">
- Initial
</remarks>
<remarks date="2018-Dec-08" author="T.Wiedebusch">
- First part reworked to extract the response protocol information
</remarks>
<remarks date="2019-Apr-11" author="T.Wiedebusch">
- Hide data in logging for e.g. passwords
</remarks>
<remarks date="2019-Jun-28" author="T.Wiedebusch">
- Error code extraction changed for <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.SkipRetryErrorCode"/>
</remarks>
<remarks date="2019-Dec-12/16" author="T.Wiedebusch">
- Wakeup-message will avoid further timeout (during FW update this is in the range
of 15000ms).
- Allow one additional retry on decoding error, which is often the wakeup-message.
</remarks>
<remarks date="2019-Jan-17" author="T.Wiedebusch">
- Send time reminder for timeout time calculation as output in log-file,
- OnRecordIsDecoded?.Invoke moved before return to assure that the Acknowledge status is set.
</remarks>
<remarks date="2019-Jan-22" author="T.Wiedebusch">
- Avoid activation of wakeup retry if record is meanwhile acknowledged.
</remarks>
<remarks date="2022-Jul-19" author="T.Wiedebusch">
- Wakeup message handling changed,
- Multiple replies on wakeup message allowed.
</remarks>
<remarks date="2022-Oct-02" author="T.Wiedebusch">
- On wakeup message 5 retires are allowed to avoid an infinite loop.
</remarks>
<remarks date="2022-Oct-04" author="T.Wiedebusch">
- On wakeup message exit this routine.
</remarks>
<remarks date="2023-Feb-13" author="T.Wiedebusch">
- Early exit on _recordInProcess == null,
- Wakeup message retries from 5 to 2,
- Removed error base from error code decision as error base is only the AppId
</remarks>
<remarks date="2023-Sep-01" author="T.Wiedebusch">
- HideDataInLog.
</remarks>
<remarks date="2024-Jan-24" author="T.Wiedebusch">
- Ignore wakeup if message already acknowledged (avoid to set
"_recordInProcess.Acknowledge = RequestAcknowledgeState.NotDecoded"),
- Avoid to overwrite "_recordInProcess.Acknowledge = RequestAcknowledgeState.Acknowledge" with
"RequestAcknowledgeState.WakeupMessage".
</remarks>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.CommandToMeter(System.Byte,Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterDefinition,System.Byte[],System.Nullable{System.Int32},System.Boolean,System.UInt16)">
<summary>
Method to send basic Commands to Meter. Creates an integer of 4 bytes for the payload.
Supported Commands are: <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.ReadData" />,<see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleReadData" />,
<see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.WriteData" />, <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleWriteData" /> and <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.QueryCaps" />.
Calculate CRCs and Command length and check if command is valid.
Use <see cref="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.AddRecordToSendFifo(System.Byte,System.Byte[],Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterDefinition,System.Boolean,System.UInt16)" /> to push data to Port/Meter.
</summary>
<param name="command">
Supported <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.ReadData" />,<see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleReadData" />,
<see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.WriteData" />, <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleWriteData" /> and <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.QueryCaps" />.
</param>
<param name="meterRegister">Register to Read or Write, null for <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.QueryCaps" /></param>
<param name="payload">
Data to push into the <see cref="T:Xylem.Common.Hardware.WaterMeter.Genesis.Registers.RegisterDefinition" />.
must be null on Read Commands ( <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.ReadData" />,<see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleReadData" />)
and not null on WriteData (<see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.WriteData" /> and <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.Consts.Commands.MultipleWriteData" />)
</param>
<param name="expectedLength"></param>
<param name="hideDataInLog">hiding data in log file to avoid spying of passwords</param>
<param name="skipRetryErrorCode">mask to skip reties on error</param>
<returns>an new command just send to port/meter </returns>
<remarks date="2018-Mar-15" author="R.Drahbesch">
- Initial
</remarks>
<remarks date="2018-Dec-08" author="T.Wiedebusch">
- Reworked to zero pad payload with chunks of 4 bytes, the caller needn't take care of the size
</remarks>
<remarks date="2018-Dec-09" author="T.Wiedebusch">
- Corrected payload content in request protocol
</remarks>
<remarks date="2019-Apr-11" author="T.Wiedebusch">
- Hide data in logging for e.g. passwords
</remarks>
<remarks date="2019-Jun-28" author="T.Wiedebusch">
- Skip retries on specific error mask to speed up communication on functional errors
or informational feed backs (e.g FW not installed 0x0004)
<see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestRecord.ResponseErrorCode"/>
</remarks>
<remarks date="2019-Aug-28" author="R.Drabesch">
- Multiple read for string split to simple reads.
</remarks>
<remarks date="2019-Jan-18" author="T.Wiedebusch">
- Default <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig.CommunicationConfig.SkipRetryErrorCode"/> set.
</remarks>
<remarks date="2023-Sep-06" author="T.Wiedebusch">
- MultipleReadData based on data size.
</remarks>
<remarks date="2023-Nov-24" author="T.Wiedebusch">
- Exit multiple read date if retries exceeded.
</remarks>
<remarks date="2024-Apr-11" author="T.Wiedebusch">
- Exit multiple read date if retries exceeded increased to <see cref="F:Xylem.Common.Hardware.WaterMeter.Genesis.GenesisConfig.CommunicationConfig.MaxRequestRetries"/>.
</remarks>
<remarks date="2024-Apr-11 Version 2" author="T.Wiedebusch">
- Rewound to version from 06.09.2023 14:44:33 before Commit 8c9d7704.
</remarks>
<remarks date="2024-Apr-15" author="T.Wiedebusch">
- Removed useless too short comments as every string is going to be delimited by a 0 and usually won't match
to a 4 byte chunk.
</remarks>
<remarks date="2026-Jan-06" author="T.Wiedebusch">
- Removed redundant 'return cRecord'.
</remarks>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.CheckErrorCode">
<summary>
Analyzes the error code
</summary>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.ReorderRecordList(System.String)">
<summary>
Reorders the record list so that first entry is the defined topRegister
</summary>
<param name="topRegister"></param>
</member>
<member name="M:Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol.RequestProtocol.ContainsRegisterIdent(System.String)">
<summary>
Checks the active register to access
</summary>
<param name="registerName"></param>
<returns></returns>
</member>
</members>
</doc>