diff --git a/Common/.vs/config/applicationhost.config b/Common/.vs/config/applicationhost.config index a894c3cf..ecc20ba7 100644 --- a/Common/.vs/config/applicationhost.config +++ b/Common/.vs/config/applicationhost.config @@ -155,7 +155,7 @@ - + diff --git a/Common/Common.sln.DotSettings b/Common/Common.sln.DotSettings index f769b2c0..f349cffd 100644 --- a/Common/Common.sln.DotSettings +++ b/Common/Common.sln.DotSettings @@ -35,6 +35,7 @@ True True True + True True True True diff --git a/Common/Hardware/Interfaces/Protocols/TransmitProtocol/BaseTransmitProtocol.cs b/Common/Hardware/Interfaces/Protocols/TransmitProtocol/BaseTransmitProtocol.cs index 1f41ef00..55fd3c96 100644 --- a/Common/Hardware/Interfaces/Protocols/TransmitProtocol/BaseTransmitProtocol.cs +++ b/Common/Hardware/Interfaces/Protocols/TransmitProtocol/BaseTransmitProtocol.cs @@ -20,11 +20,11 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol public abstract void SetDefaultResponseTimeout(); - public abstract List DecodeDataForPhysicalLayer(Byte command, Byte[] payload, Boolean hideDateInLog = false); + public abstract List DecodeDataForPhysicalLayer(String ident, Byte command, Byte[] payload, Boolean hideDataInLog = false); - public abstract List DecodeDataForLogicLayer(List rawData); + public abstract List DecodeDataForLogicLayer(String ident, List rawData, Boolean hideDataInLog = false); - public abstract List DecodeDataForPhysicalLayerUI1236(Byte[] payload); + public abstract List DecodeDataForPhysicalLayerUI1236(String ident, Byte[] payload, Boolean hideDataInLog = false); } diff --git a/Common/Hardware/Interfaces/Protocols/TransmitProtocol/ITransmitProtocol.cs b/Common/Hardware/Interfaces/Protocols/TransmitProtocol/ITransmitProtocol.cs index 5c652b07..948d4912 100644 --- a/Common/Hardware/Interfaces/Protocols/TransmitProtocol/ITransmitProtocol.cs +++ b/Common/Hardware/Interfaces/Protocols/TransmitProtocol/ITransmitProtocol.cs @@ -23,16 +23,16 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol void SetDefaultResponseTimeout(); // ReSharper disable once InconsistentNaming UI1236 is a naming forced by the caller - List DecodeDataForPhysicalLayerUI1236(Byte[] payload); + List DecodeDataForPhysicalLayerUI1236(String ident, Byte[] payload, Boolean hideDataInLog = false); /// /// Send out data (including transport protocol specific data like CRC) to physical port (like UART or IrDA) /// - List DecodeDataForPhysicalLayer(Byte command , Byte[] payload, Boolean hideDateInLog = false); + List DecodeDataForPhysicalLayer(String ident, Byte command , Byte[] payload, Boolean hideDataInLog = false); /// /// Received data have to be checked and converted to request protocol /// - List DecodeDataForLogicLayer(List rawData); + List DecodeDataForLogicLayer(String ident, List rawData, Boolean hideDateInLog = false); } } diff --git a/Common/Hardware/Interfaces/Protocols/TransmitProtocol/IrdaTransmitProtocol.cs b/Common/Hardware/Interfaces/Protocols/TransmitProtocol/IrdaTransmitProtocol.cs index ca73f9e8..48da1942 100644 --- a/Common/Hardware/Interfaces/Protocols/TransmitProtocol/IrdaTransmitProtocol.cs +++ b/Common/Hardware/Interfaces/Protocols/TransmitProtocol/IrdaTransmitProtocol.cs @@ -90,9 +90,15 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol /// - Wakeup message detection reported to log-file, /// - Message error text changed. /// - public override List DecodeDataForLogicLayer(List irdaRecord) + /// + /// - Hide data in log introduced. + /// + public override List DecodeDataForLogicLayer(String ident, List irdaRecord, Boolean hideDataInLog = false) { - Logger.Info($"DecodeDataForPhysicalLayer Cordonel->PC({BitConverter.ToString(irdaRecord.ToArray())})"); + // avoid logging of passwords or other sensitive data + Logger.Info(hideDataInLog + ? $"{ident} DecodeDataForLogicalLayer Cordonel->PC(*****)" + : $"{ident} DecodeDataForLogicalLayer Cordonel->PC({BitConverter.ToString(irdaRecord.ToArray())})"); // check the record length and start of frame information if (irdaRecord.Count < IrdaProtocolFrameLength + irdaRecord[IrdaPayLoadLengthIndex] @@ -102,7 +108,7 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol || ((irdaRecord[IrdaMessageIndex] != IrdaMessageId) && irdaRecord[IrdaMessageIndex] != IrdaWakeupId))) { - var error = new ApplicationException("Reply from IrDA is invalid."); + var error = new ApplicationException($"{ident} Reply from IrDA is invalid."); Logger.Error(error.Message, error); return new List(); @@ -123,7 +129,7 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol if (receivedCrc != calculatedCrc) { - var error = new ApplicationException("Reply CRC failure. Decoding of transmit layer failed."); + var error = new ApplicationException($"{ident} Reply CRC failure. Decoding of transmit layer failed."); Logger.Error(error.Message, error); return new List(); } @@ -142,8 +148,8 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol /// /// - Hide data in log forwarded to DecodeDateForPhysicalLayer to hide passwords in log files. /// - public override List DecodeDataForPhysicalLayer(Byte requestProtocolCommand, Byte[] requestProtocolPayload, - Boolean hideDateInLog = false) + public override List DecodeDataForPhysicalLayer(String ident, Byte requestProtocolCommand, Byte[] requestProtocolPayload, + Boolean hideDataInLog = false) { var irdaCrcInputBuffer = new List { @@ -170,9 +176,9 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol irdaRecord.Add((Byte)(crcResult >> 8)); // avoid logging of passwords or other sensitive data - Logger.Info(hideDateInLog - ? "DecodeDataForPhysicalLayer PC->Cordonel(*******************)" - : $"DecodeDataForPhysicalLayer PC->Cordonel({BitConverter.ToString(irdaRecord.ToArray())})"); + Logger.Info(hideDataInLog + ? $"{ident} DecodeDataForPhysicalLayer PC->Cordonel(*****)" + : $"{ident} DecodeDataForPhysicalLayer PC->Cordonel({BitConverter.ToString(irdaRecord.ToArray())})"); return irdaRecord; } @@ -181,7 +187,8 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol /// /// - Initial /// - public override List DecodeDataForPhysicalLayerUI1236(Byte[] requestProtocolPayload) + public override List DecodeDataForPhysicalLayerUI1236(String ident, Byte[] requestProtocolPayload, + Boolean hideDataInLog = false) { var collection = new List { @@ -197,7 +204,10 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol byteList.AddRange(collection); byteList.Add((Byte)(crcResult & 0xFF)); byteList.Add((Byte)(crcResult >> 8)); - Logger.Info("DecodeDataForPhysicalLayerUI1236 PC->Cordonel(" + BitConverter.ToString(byteList.ToArray()) + ")"); + // avoid logging of passwords or other sensitive data + Logger.Info(hideDataInLog + ? $"{ident} DecodeDataForPhysicalLayerUI1236 PC->Cordonel(*****)" + : $"{ident} DecodeDataForPhysicalLayerUI1236 PC->Cordonel({BitConverter.ToString(byteList.ToArray())})"); return byteList; } } diff --git a/Common/Hardware/Interfaces/Protocols/TransmitProtocol/LedTransmitProtocol.cs b/Common/Hardware/Interfaces/Protocols/TransmitProtocol/LedTransmitProtocol.cs index 23672ee5..5ed21f63 100644 --- a/Common/Hardware/Interfaces/Protocols/TransmitProtocol/LedTransmitProtocol.cs +++ b/Common/Hardware/Interfaces/Protocols/TransmitProtocol/LedTransmitProtocol.cs @@ -37,17 +37,18 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol } /// - public override List DecodeDataForPhysicalLayer(Byte command, Byte[] payload, Boolean hideDateInLog = false) + public override List DecodeDataForPhysicalLayer(String ident, Byte command, Byte[] payload, Boolean hideDataInLog = false) { throw new ApplicationException("Streaming port cannot send data"); } /// - public override List DecodeDataForLogicLayer(List rawData) + public override List DecodeDataForLogicLayer(String ident, List rawData, Boolean hideDataInLog = false) { return rawData; } - public override List DecodeDataForPhysicalLayerUI1236(Byte[] payload) => throw new ApplicationException("Streaming port cannot send data"); + public override List DecodeDataForPhysicalLayerUI1236(String ident, Byte[] payload, Boolean hideDataInLog = false) + => throw new ApplicationException("Streaming port cannot send data"); } } diff --git a/Common/Hardware/Interfaces/Protocols/TransmitProtocol/UartTransmitProtocol.cs b/Common/Hardware/Interfaces/Protocols/TransmitProtocol/UartTransmitProtocol.cs index 3d01d3bf..5a527b6c 100644 --- a/Common/Hardware/Interfaces/Protocols/TransmitProtocol/UartTransmitProtocol.cs +++ b/Common/Hardware/Interfaces/Protocols/TransmitProtocol/UartTransmitProtocol.cs @@ -55,13 +55,13 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol _responseTimeoutMs, BaudRate, _receiveBufferFlushThreshold, UartDoubleSyncByte); } - public override List DecodeDataForLogicLayer(List uartRecord) + public override List DecodeDataForLogicLayer(String ident, List uartRecord, Boolean hideDataInLog = false) { // check the record length and start of frame information if (uartRecord.Count < uartRecord[UartLengthIndex] + UartSyncByteLength || UartSyncByte != uartRecord[UartSyncByteIndex]) { - var error = new ApplicationException("Reply from UART is invalid. Decoding of transmit layer failed."); + var error = new ApplicationException($"{ident} Reply from UART is invalid. Decoding of transmit layer failed."); Logger.Error(error.Message, error); return new List(); } @@ -77,7 +77,7 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol if(receivedCrc != calculatedCrc) { - var error = new ApplicationException("Reply CRC failure. Decoding of transmit layer failed."); + var error = new ApplicationException($"{ident} Reply CRC failure. Decoding of transmit layer failed."); Logger.Error(error.Message, error); return new List(); } @@ -111,7 +111,7 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol } /// - public override List DecodeDataForPhysicalLayer(Byte requestProtocolCommand, + public override List DecodeDataForPhysicalLayer(String ident, Byte requestProtocolCommand, Byte[] requestProtocolPayload, Boolean hideDataInLog = false) { var uartHeader = new List(); @@ -148,7 +148,8 @@ namespace Xylem.Common.Hardware.Interfaces.Protocols.TransmitProtocol /// /// - Initial /// - public override List DecodeDataForPhysicalLayerUI1236(Byte[] requestProtocolPayload) + public override List DecodeDataForPhysicalLayerUI1236(String ident, Byte[] requestProtocolPayload, + Boolean hideDataInLog = false) { var uartHeader = new List(); var uartPayload = requestProtocolPayload.ToList(); diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisConfigReader.cs b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisConfigReader.cs index ed4b73b0..edd4d422 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisConfigReader.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisConfigReader.cs @@ -173,6 +173,7 @@ case "enum8": return typeof(Enum8); case "uint64_t": return typeof(UInt64); case "uint96_t": return typeof(UInt96); + case "uint128_t": return typeof(UInt128); case "int8_t": return typeof(sbyte); case "int32_t": return typeof(Int32); case "int64_t": return typeof(Int64); diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs index 28a956bd..07e31eda 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/GenesisMeter.cs @@ -1313,7 +1313,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore //avoid overwriting of list if this already exits if (MeterAppListVersion.Any()) { - _logger.Warn("Trying to override meter dictionary. Skip read out FW"); + _logger.Warn($"Slot:{Slot} - Trying to override meter dictionary. Skip read out FW"); return; } @@ -1393,29 +1393,29 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore } //log application information to file - _logger.Info($"PCB ID: {PcbId}"); - _logger.Info($"Date time (UTC): {DateTimeOffset.UtcNow}"); + _logger.Info($"Slot:{Slot} - PCB ID: {PcbId}"); + _logger.Info($"Slot:{Slot} - Date time (UTC): {DateTimeOffset.UtcNow}"); if (CoreRevision != null) { - _logger.Info("System Core Revision: " + BuildFwVersionString(CoreRevision)); + _logger.Info($"Slot:{Slot} - System Core Revision: {BuildFwVersionString(CoreRevision)}"); } - _logger.Info("Region: " + Region); + _logger.Info($"Slot:{Slot} - Region: {Region}"); if (RadioFrequencyMhz != null) { - _logger.Info($"Radio frequency [MHz]: {RadioFrequencyMhz}"); + _logger.Info($"Slot:{Slot} - Radio frequency [MHz]: {RadioFrequencyMhz}"); } foreach (var fm in MeterAppListVersion.OrderBy(o => o.AppId)) { var versionString = fm.IsInstalled ? $"V: {fm.StrVersion} - CRC: 0x{fm.Crc:X4}" : "Not installed"; - _logger.Info($"AppId: 0x{fm.AppId:X2} - {versionString} - AppName: {fm.AppName}"); + _logger.Info($"Slot:{Slot} - AppId: 0x{fm.AppId:X2} - {versionString} - AppName: {fm.AppName}"); } - _logger.Info($"Meter size: {MeterSize}"); - _logger.Info($"Upgrade permission: {MetrologyUpgradePermission:X2}"); + _logger.Info($"Slot:{Slot} - Meter size: {MeterSize}"); + _logger.Info($"Slot:{Slot} - Upgrade permission: {MetrologyUpgradePermission:X2}"); //remove unused registers with invalid version var tempConfigRegisters = _configRegister.MeterRegisterDic.ToList(); @@ -1460,7 +1460,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore catch (Exception ex) { - _logger.Warn(ex, $"Not able to set minimum list of registers. check json file for {checkMinRegister} "); + _logger.Warn(ex, $"Slot:{Slot} - Not able to set minimum list of registers. check json file for {checkMinRegister} "); } } } @@ -1732,7 +1732,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore /// - PcbId handling improved, /// - Removed retries as these are handled by the protocol. /// - public String GetPcbId(Int32 expectedLength = 12) + public String GetPcbId() { if (RequestPort == null) @@ -1745,7 +1745,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore _logger.Info($"Slot:{Slot} - Old PCB identification was {PcbId}"); - var pcbIdRaw = ReadRegister(Register.Configexchange.PcbSerialNumber, expectedLength); + var pcbIdRaw = ReadRegister(Register.Configexchange.PcbSerialNumber); if (pcbIdRaw != null) { PcbId = Encoding.ASCII.GetString(pcbIdRaw).Split('\0')[0]; @@ -1834,16 +1834,18 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore { var regDef = _configRegister.GetRegisterDefinitionByName(reg); var data = RegisterConverter.ConvertFrom(value); - _logger.Info($"Slot:{Slot} - Write register({regDef.RegisterName}), " + - $"record({BitConverter.ToString(data.ToArray())})"); + var hideDataInLog = regDef.RegisterName.Contains("EncryptionKey") || regDef.RegisterName.Contains("Password"); + + var rawMsg = hideDataInLog ? "(*****)" : $"({BitConverter.ToString(data.ToArray())})"; + _logger.Info($"Slot:{Slot} - Write register({regDef.GetIdent()}), record({rawMsg})"); PreRegisterWrite(regDef, data); var command = data.Length > RegisterDefinition.ChunkSize ? Commands.MultipleWriteData : Commands.WriteData; - var responseRecord = RequestProtocol.CommandToMeter(command, regDef, data, - skipRetryErrorCode: skipRetryErrorCode); + var responseRecord = RequestProtocol.CommandToMeter(command, regDef, data, + hideDataInLog: hideDataInLog, skipRetryErrorCode: skipRetryErrorCode); if (!waitForResult && !checkRegister) { @@ -1871,7 +1873,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore } catch (Exception e) { - _logger.Error(e); + _logger.Error($"Slot:{Slot} - {e}"); } return false; @@ -1892,17 +1894,26 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore { var regDef = _configRegister.GetRegisterDefinitionByName(reg); _configRegister.Set(regDef, null); - _logger.Info($"Slot:{Slot} - Read register({regDef.RegisterName})"); + _logger.Info($"Slot:{Slot} - Read register({regDef.GetIdent()})"); - if (!expectedLength.HasValue || expectedLength.Value <= RegisterDefinition.ChunkSize) + var hideDataInLog = regDef.RegisterName.Contains("EncryptionKey"); + + // setup length based on data type + if (!expectedLength.HasValue) { - RequestProtocol?.CommandToMeter(Commands.ReadData, regDef, + expectedLength = RegisterConverter.SizeOf(regDef); + } + + var dataLengthPreset = expectedLength.Value; + if (expectedLength.Value <= RegisterDefinition.ChunkSize) + { + RequestProtocol?.CommandToMeter(Commands.ReadData, regDef, hideDataInLog: hideDataInLog, skipRetryErrorCode: skipRetryErrorCode); } else { - RequestProtocol?.CommandToMeter(Commands.MultipleReadData, regDef, expectedLength: expectedLength, - skipRetryErrorCode: skipRetryErrorCode); + RequestProtocol?.CommandToMeter(Commands.MultipleReadData, regDef, expectedLength: dataLengthPreset, + hideDataInLog: hideDataInLog, skipRetryErrorCode: skipRetryErrorCode); } RequestProtocolProcess(); @@ -1912,7 +1923,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore } catch (Exception e) { - _logger.Error(e); + _logger.Error($"Slot:{Slot} - {e}"); } return null; @@ -1962,10 +1973,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore /// - Initial /// // ReSharper disable once InconsistentNaming UI1236 is a naming forced by the caller - public Byte[] SendUI1236Command(Byte[] ui1236Frame, Boolean waitForResult = true, Boolean checkRegister = false, UInt16 skipRetryErrorCode = 4) + public Byte[] SendUI1236Command(Byte[] ui1236Frame, Boolean waitForResult = true, Boolean checkRegister = false, + UInt16 skipRetryErrorCode = 4) { - _logger.Info($"Slot:{Slot} - Sending Ui-1236 frame: {ui1236Frame} "); - var sendFifoUi1236 = RequestProtocol.AddRecordToSendFifoUI1236(ui1236Frame); + var requestIdent = $"Slot:{Slot} - Sending Ui-1236 frame"; + _logger.Info(requestIdent); + var sendFifoUi1236 = RequestProtocol.AddRecordToSendFifoUI1236(requestIdent, ui1236Frame); RequestProtocolProcess(); return sendFifoUi1236.ResponsePayload.ToArray(); } @@ -2051,16 +2064,6 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore public void WriteLog(String text) { _logger.Info($"Slot:{Slot} - {text}"); - //if (_enableRawDataLogging) - //{ - // if (_loggerRawData == null) - // { - // _loggerRawData = NLogHelper.CreateOrGetMultiLogger( - // StreamingPort.GetPortName(), "", "LedRawData", "TargetLedRawDataBase", "LedRawDataBase"); - - // } - // _loggerRawData.Info($"{text}"); - //} } /// @@ -2210,7 +2213,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore // Wait for storing Thread.Sleep(500); - //TODO enable this for R1.2.x + //TODO enable this for R1.2.x take the version of FW if (a.Key.AppName == "SENSUSRADIO" || a.Key.AppName == "NA2WALARMS") { done = true; @@ -2307,7 +2310,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore } catch (Exception ex) { - _logger.Error(ex, "Can't store at RegisterWatchService"); + _logger.Error($"Slot:{Slot} - {ex} - Can't store at RegisterWatchService"); } } @@ -2337,13 +2340,13 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore if (!result) { - _logger.Error(new Exception($"HTTP status not OK"), + _logger.Error(new Exception($"Slot:{Slot} - HTTP status not OK"), "Can't store at RegisterWatchService"); } } catch (Exception ex) { - _logger.Error(ex, "Can't store at RegisterWatchService"); + _logger.Error($"Slot:{Slot} - {ex} - Can't store at RegisterWatchService"); } } } @@ -2384,12 +2387,12 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Accepted) { - _logger.Error(new Exception($"HTTP status not OK({response.StatusCode})"), "can not store at RegisterWatchService"); + _logger.Error(new Exception($"Slot:{Slot} - HTTP status not OK({response.StatusCode})"), "can not store at RegisterWatchService"); } } catch (Exception ex) { - _logger.Error(ex, "can not store at RegisterWatchService"); + _logger.Error($"Slot:{Slot} - {ex} - can not store at RegisterWatchService"); } } } diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/configuration.json b/Common/Hardware/WaterMeter/Genesis/GenesisCore/configuration.json index d67b0e74..713f1f8b 100644 --- a/Common/Hardware/WaterMeter/Genesis/GenesisCore/configuration.json +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/configuration.json @@ -48,7 +48,7 @@ "description": "8 bit counts corresponding to alarms 4-7.", "version": { "first": 1, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -91,7 +91,7 @@ "description": "Any set bits manually clear the corresponding alarm.", "version": { "first": 111, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -115,7 +115,7 @@ "description": "8 bit counts corresponding to alarms 8-11.", "version": { "first": 26, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -139,7 +139,7 @@ "description": "8 bit counts corresponding to alarms 12-15.", "version": { "first": 26, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -163,7 +163,7 @@ "description": "8 bit counts corresponding to alarms 16-19.", "version": { "first": 26, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -187,7 +187,7 @@ "description": "8 bit counts corresponding to alarms 20-23.", "version": { "first": 26, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -211,7 +211,7 @@ "description": "8 bit counts corresponding to alarms 24-27.", "version": { "first": 26, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -235,7 +235,7 @@ "description": "8 bit counts corresponding to alarms 28-31.", "version": { "first": 26, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -283,7 +283,7 @@ "description": "Bit set of those alarms which are being monitored.", "version": { "first": 111, - "last": 156 + "last": 157 }, "values": { "default": 4294967295, @@ -336,7 +336,7 @@ "description": "Bit set of those alarms which will generate events.", "version": { "first": 111, - "last": 156 + "last": 157 }, "values": { "default": 4294967295, @@ -389,7 +389,7 @@ "description": "Bit set of those alarms which are displayed with IDs and the alarm icon.", "version": { "first": 111, - "last": 156 + "last": 157 }, "values": { "default": 4294967295, @@ -437,7 +437,7 @@ "description": "Alarms that have their display automatically cleared", "version": { "first": 111, - "last": 156 + "last": 157 }, "statictype": "static" } @@ -533,7 +533,7 @@ "description": "Flow rate above which broken pipe alarm is set in 1/256 l/h", "version": { "first": 133, - "last": 156 + "last": 157 }, "values": { "default": 639999, @@ -610,7 +610,7 @@ "description": "Time threshold for leak alarm in minutes", "version": { "first": 119, - "last": 156 + "last": 157 }, "values": { "default": 360, @@ -687,7 +687,7 @@ "description": "Number of measurements in reverse flow required to set reverse flow alarm", "version": { "first": 143, - "last": 156 + "last": 157 }, "values": { "default": 15, @@ -716,7 +716,7 @@ "description": "Timezone in which this application is set to run.", "version": { "first": 24, - "last": 156 + "last": 157 }, "values": { "default": 0, @@ -745,7 +745,7 @@ "description": "A name for the arrangement of applications on the meter", "version": { "first": 130, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -792,7 +792,7 @@ "description": "The number of times the meter has rebooted", "version": { "first": 111, - "last": 156 + "last": 157 }, "values": { "minimum": 0, @@ -868,7 +868,7 @@ "description": "Time threshold for broken pipe alarm in minutes", "version": { "first": 119, - "last": 156 + "last": 157 }, "values": { "default": 180, @@ -969,7 +969,7 @@ "description": "Flow rate above which leak alarm can be set in 1/256 l/h", "version": { "first": 133, - "last": 156 + "last": 157 }, "values": { "default": 6399, @@ -998,7 +998,7 @@ "description": "Charge in uAs available in manufacturing (read only)", "version": { "first": 84, - "last": 156 + "last": 157 }, "values": { "default": 181440000 @@ -1073,7 +1073,7 @@ "description": "High temperature alarm threshold in 0.1°C", "version": { "first": 111, - "last": 156 + "last": 157 }, "values": { "default": 500, @@ -1126,7 +1126,7 @@ "description": "Time threshold for high temperature alarm in seconds", "version": { "first": 111, - "last": 156 + "last": 157 }, "values": { "default": 600, @@ -1203,7 +1203,7 @@ "description": "Low temperature alarm threshold in 0.1°C", "version": { "first": 111, - "last": 156 + "last": 157 }, "values": { "default": 20, @@ -1256,7 +1256,7 @@ "description": "Time threshold for low temperature alarm in seconds", "version": { "first": 111, - "last": 156 + "last": 157 }, "values": { "default": 600, @@ -1333,7 +1333,7 @@ "description": "High pressure alarm threshold in Pa", "version": { "first": 122, - "last": 156 + "last": 157 }, "values": { "default": 1600000, @@ -1410,7 +1410,7 @@ "description": "Time threshold for high pressure alarm in seconds", "version": { "first": 119, - "last": 156 + "last": 157 }, "values": { "default": 600, @@ -1487,7 +1487,7 @@ "description": "Low pressure alarm threshold in Pa", "version": { "first": 122, - "last": 156 + "last": 157 }, "values": { "default": 30000, @@ -1564,7 +1564,7 @@ "description": "Time threshold for low pressure alarm in seconds", "version": { "first": 119, - "last": 156 + "last": 157 }, "values": { "default": 600, @@ -1612,7 +1612,7 @@ "description": "Store all configuration items in non-volatile memory.", "version": { "first": 131, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -1636,7 +1636,7 @@ "description": "Customer serial number string", "version": { "first": 139, - "last": 156 + "last": 157 }, "statictype": "static" } @@ -1660,7 +1660,7 @@ "description": "Internal backup of calendar seconds", "version": { "first": 145, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -1684,7 +1684,7 @@ "description": "Time meter was determined to have been installed. 0 means not installed", "version": { "first": 147, - "last": 156 + "last": 157 }, "statictype": "infrequentlyupdated" } @@ -1708,7 +1708,7 @@ "description": "Read to view the string used as a decimal point for this locale", "version": { "first": 151, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -1732,7 +1732,7 @@ "description": "Read to view the string used as a thousands separarator for this locale", "version": { "first": 151, - "last": 156 + "last": 157 }, "statictype": "dynamic" } @@ -1741,368 +1741,222 @@ }, "status": { "REBOOT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "REBOOT_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "LOW_BATTERY": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "LOW_BATTERY_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "VERY_LOW_BATTERY": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 }, "VERY_LOW_BATTERY_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 }, "CONFIG_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 6 }, "CONFIG_ERROR_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 7 }, "EMPTY_PIPE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 8 }, "EMPTY_PIPE_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 9 }, "MAGNETIC_TAMPER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 10 }, "MAGNETIC_TAMPER_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 11 }, "REVERSE_FLOW": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 12 }, "REVERSE_FLOW_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 13 }, "SUSPECT_LEAK": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 14 }, "SUSPECT_LEAK_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 15 }, "BROKEN_PIPE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 16 }, "BROKEN_PIPE_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 17 }, "LOW_PRESSURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 18 }, "LOW_PRESSURE_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 19 }, "HIGH_PRESSURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 20 }, "HIGH_PRESSURE_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 21 }, "LOW_TEMPERATURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 22 }, "LOW_TEMPERATURE_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 23 }, "HIGH_TEMPERATURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 24 }, "HIGH_TEMPERATURE_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 25 }, "RADIO_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 26 }, "RADIO_ERROR_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 27 }, "METROLOGY_PARAMS": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 28 }, "METROLOGY_PARAMS_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 29 }, "METROLOGY_MEASURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 30 }, "METROLOGY_MEASURE_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 31 }, "UNALLOCATED_6": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 32 }, "UNALLOCATED_6_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 33 }, "UNALLOCATED_7": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 34 }, "UNALLOCATED_7_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 35 }, "UNALLOCATED_8": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 36 }, "UNALLOCATED_8_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 37 }, "UNALLOCATED_9": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 38 }, "UNALLOCATED_9_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 39 }, "UNALLOCATED_10": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 40 }, "UNALLOCATED_10_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 41 }, "UNALLOCATED_11": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 42 }, "UNALLOCATED_11_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 43 }, "UNALLOCATED_12": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 44 }, "UNALLOCATED_12_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 45 }, "UNALLOCATED_13": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 46 }, "UNALLOCATED_13_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 47 }, "UNALLOCATED_14": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 48 }, "UNALLOCATED_14_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 49 }, "UNALLOCATED_15": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 50 }, "UNALLOCATED_15_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 51 }, "UNALLOCATED_16": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 52 }, "UNALLOCATED_16_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 53 }, "UNALLOCATED_17": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 54 }, "UNALLOCATED_17_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 55 }, "UNALLOCATED_18": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 56 }, "UNALLOCATED_18_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 57 }, "UNALLOCATED_19": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 58 }, "UNALLOCATED_19_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 59 }, "UNALLOCATED_20": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 60 }, "UNALLOCATED_20_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 61 }, "UNALLOCATED_21": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 62 }, "UNALLOCATED_21_STOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 63 }, "UNKNOWN_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 64 }, "LOCALE_UNDEFINED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 65 }, "NO_SUCH_ALARM": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 66 }, "OUT_OF_RANGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 67 }, "NOT_IMPLEMENTED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 68 }, "BAD_CONFIG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 69 }, "DID_NOT_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 70 }, "STORE_PENDING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 71 }, "STRING_TOO_LONG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 72 } } @@ -2453,18 +2307,12 @@ }, "status": { "BAD_CONFIG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "BAD_TEST": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "NO_RESULT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 } } @@ -2626,68 +2474,42 @@ }, "status": { "PAYLOAD_COUNT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "INVALID_SUBREASON": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "INVALID_BAUDRATE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "INVALID_BUFFERSIZE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "CRCFAILURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 }, "UNRECOGNISEDCMD": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 }, "FRAMING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 6 }, "OVERFLOW": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 7 }, "PACKETTIMEOUT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 8 }, "INVALIDESCAPE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 9 }, "UNKNOWN_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 10 }, "TRAINING_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 11 }, "NOBREAK": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 12 } } @@ -2696,7 +2518,7 @@ "id": 16, "version": { "first": 100, - "last": 516 + "last": 521 }, "registers": { "TxInterval": { @@ -2714,10 +2536,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The SensusRF transmission interval in seconds for the BUPs", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 15, @@ -2743,10 +2565,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The Open Metering transmission interval in seconds", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 3600, @@ -2772,10 +2594,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The Listen After Talk interval as number 'n'. After every 'n' BUPs follows a BUP-LAT", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 3, @@ -2801,10 +2623,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The Wake Up interval in seconds 's'. Every 's' seconds will the meter sniff for a WakeUp tone. 's' == 0 means active sending and no sniffing", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 3, @@ -2830,10 +2652,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The internal MBus state (Open Metering). A bit oriented value. Do not write if you do not know details", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 7, @@ -2859,10 +2681,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A number that shows the radio frequency used. Normally 433 or 868", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 433, @@ -2888,10 +2710,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A radio frequency calibration parameter", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -2917,10 +2739,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A parameter for controling the radio power", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -2946,10 +2768,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The internal System State of the Radio", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 1, @@ -2975,10 +2797,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The radio address used by the meter", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -3004,10 +2826,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The offset the between meter time and UTC", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -3033,10 +2855,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The number of bytes sent during meter lifetime", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -3062,10 +2884,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The number of bytes received during meter lifetime", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -3091,10 +2913,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The number of resets the application SensusRfRadio has performed over lifetime", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -3120,10 +2942,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An internal state (enum) regarding the firmwware update", "version": { "first": 100, - "last": 516 + "last": 521 }, "statictype": "static" } @@ -3144,10 +2966,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The flow value of the leakage (low flow) detection", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 25, @@ -3173,10 +2995,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The time value of the leakage (low flow) detection", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 360, @@ -3202,10 +3024,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The flow value of the broken pipe (high flow) detection", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 2500, @@ -3231,10 +3053,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The time value of the broken pipe (high flow) detection", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 180, @@ -3260,10 +3082,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The pressure value of the maximum (high) pressure alarm", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 160, @@ -3289,10 +3111,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The pressure value of the minimum (low) pressure alarm", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 3, @@ -3318,10 +3140,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The time value of the maximum (high) pressure alarm", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 600, @@ -3347,10 +3169,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The pressure value of the minimum (low) pressure alarm", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 600, @@ -3376,10 +3198,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The period in seconds with which the pressure is measured", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 60, @@ -3405,10 +3227,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An enum respresenting the unit of pressure (0 = no pressure sensor)", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -3434,10 +3256,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The gauge offset of the pressure sensor value in mBar", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -3463,10 +3285,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The temperature value of the maximum (high) temperature alarm", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 50, @@ -3492,10 +3314,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The temperature value of the minimum (low) temperature alarm", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 2, @@ -3521,10 +3343,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The time value of the maximum (high) temperature alarm", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 600, @@ -3550,10 +3372,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The time value of the minimum (low) temperature alarm", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 600, @@ -3579,10 +3401,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The period in seconds with which the temperature is measured (only 60 is valid)", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 60, @@ -3608,10 +3430,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An enum respresenting the unit of temperature (1= Celsius, 2= Fahrenheit)", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 1, @@ -3640,7 +3462,7 @@ "description": "An enumerator defining the currently active PulseWidth (0 ... 8 for non testmode values and 9 ... 15 for testmode)", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 4, @@ -3666,10 +3488,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A number representing the pulse weight multiplicator 1, 10, 100 or 1000", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 1, @@ -3695,10 +3517,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An enum (0 to 3) representing the pulse output mode (0= deactivated, ...)", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 1, @@ -3724,10 +3546,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A parameter regarding the non existing current output", "version": { "first": 100, - "last": 516 + "last": 521 }, "statictype": "infrequentlyupdated" } @@ -3748,10 +3570,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A parameter regarding the non existing current output", "version": { "first": 100, - "last": 516 + "last": 521 }, "statictype": "infrequentlyupdated" } @@ -3772,10 +3594,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A byte value representing a mask of currently active (1) main alarms. These are the flow and genreral alarms", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 207, @@ -3801,10 +3623,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A byte value representing a mask of currently active (1) extended alarms. These are the temperature and pressure related alarms", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 60, @@ -3830,10 +3652,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A number of days (0 = off) after which alarms are cleared from the alarm byte values when they are no longer active", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 29, @@ -3859,10 +3681,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A value in minutes that defines the time the meter will stay in testmode after that mode was started", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -3877,7 +3699,7 @@ "id": 44, "details": [ { - "type": "uint32_t", + "type": "uint128_t", "privilege": { "lvl1": "RW", "lvl2": "RW", @@ -3888,10 +3710,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The SensusRF encryption key (16 bytes) of the meter", "version": { "first": 100, - "last": 516 + "last": 521 }, "statictype": "static" } @@ -3912,10 +3734,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The SensusRF Authentification PINs (3 PINs of 4 byte each) of the meter", "version": { "first": 100, - "last": 516 + "last": 521 }, "statictype": "static" } @@ -3936,10 +3758,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The version of the complete Meter firmware package as represented by application FlexNetVersion", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -3965,10 +3787,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An array of 8 bytes of freely programmable SensusRF customer Text", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -3994,10 +3816,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An uint32_t value representing the meter's system DateTime when the radio had last time sent a telegram", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4023,10 +3845,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An uint32_t value representing the meter's system DateTime when the radio had detected first the low-battery status", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4052,10 +3874,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A copy of the LowBatDateTime", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4081,10 +3903,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A byte value representing the currently active volume unit used by radio", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 19, @@ -4110,10 +3932,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A byte value representing additional information regarding the unit derived from the volume unit when used for flow or alternate volume", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4139,10 +3961,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A byte value normaly never changed regarding general behavior of the firmware related to Over The Air updates", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 1, @@ -4168,10 +3990,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A complex structure of 84 bytes related to the Tfx mode of the meter respectively the volume channel", "version": { "first": 100, - "last": 516 + "last": 521 }, "statictype": "dynamic" } @@ -4192,10 +4014,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A structure of 4 uint16_t values used for the customer DEWA", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4221,10 +4043,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A 4 byte bit mask representing whether the individual data items are logged in the periodic logging (1) or not (0)", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 201335811, @@ -4250,10 +4072,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A number in seconds representing the time period for storing data records into the periodic logging file (memory)", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 60, @@ -4279,10 +4101,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A number derived automatically from the DataLogPeriod that determins averaging periods for min and max calculations", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 5, @@ -4308,10 +4130,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A 4 byte bit mask representing whether the individual data items are logged in the fixed date logging (1) or not (0)", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 201335811, @@ -4337,10 +4159,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The day of the month (0 = every day) on which at 00:00 the fixed date logging takes place", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 1, @@ -4366,10 +4188,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An uint32_t counter used originally for debugging during development. Meanwhile out of use", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4395,10 +4217,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An uint8_t value related to the power level used by the radio when an Irda module is present", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4424,10 +4246,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An uint16_t value used for adjusting the antenna impedance", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 4, @@ -4453,10 +4275,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An uint16_t value used for adjusting the antenna impedance if an Irda module is present", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 4, @@ -4482,10 +4304,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A parameter of type bool that signals the presence of an Irda module. The value is controlled by the meter", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4511,10 +4333,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "Write this value to '1' to tell the radio application to store all data into the file system of the meter", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4540,10 +4362,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "The number of seconds since the radio left the production (Set to 0 at the end of the production proccess)", "version": { "first": 100, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4569,10 +4391,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A value (counter) used only during development for release testing", "version": { "first": 412, - "last": 516 + "last": 521 }, "values": { "default": 4320000, @@ -4598,10 +4420,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "A counter used to control the radio activity which must not exceed certain regulatory limits", "version": { "first": 412, - "last": 516 + "last": 521 }, "values": { "default": 1000, @@ -4630,7 +4452,7 @@ "description": "Storage item for HistoricalErrorLimitCounters Reverse(1, hi) and Leak(0, lo)", "version": { "first": 437, - "last": 516 + "last": 521 }, "values": { "default": 16711935, @@ -4659,7 +4481,7 @@ "description": "Storage item for HistoricalErrorLimitCounters Magnet(3, hi) and Air(2, lo)", "version": { "first": 437, - "last": 516 + "last": 521 }, "values": { "default": 16711935, @@ -4688,7 +4510,7 @@ "description": "Storage item for HistoricalErrorLimitCounters PressureMin(5, hi) and PressureMax(4, lo)", "version": { "first": 437, - "last": 516 + "last": 521 }, "values": { "default": 16711935, @@ -4717,7 +4539,7 @@ "description": "Storage item for HistoricalErrorLimitCounters TempMin(7, hi) and TempMax(6, lo)", "version": { "first": 437, - "last": 516 + "last": 521 }, "values": { "default": 16711935, @@ -4743,10 +4565,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "MMC(is uint32_t type, minimum -18, maximum 127 ok?) An uint16_t value to add an offset to the measured pressure value from -1270 to +1270 mBar for field calibration purposes", "version": { "first": 483, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4772,10 +4594,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "a 6 bytes big complex structure for the Tfx settings of the secondary channel 1 (temperature)", "version": { "first": 482, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4801,10 +4623,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "a 6 bytes big complex structure for the Tfx settings of the secondary channel 2 (pressure)", "version": { "first": 482, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4830,10 +4652,10 @@ "lvl7": "RW", "lvl8": "RW" }, - "description": "Lorem ipsum", + "description": "An unit32_t value used to support/control the MB_MODE3_OMSv4B transmission uinque MCR", "version": { "first": 499, - "last": 516 + "last": 521 }, "values": { "default": 0, @@ -4847,28 +4669,28 @@ }, "status": { "UNKNOWN_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", + "action": "According to the source code no action assigned to this error code", + "description": "It appears to be not used", "id": 0 }, "BAD_CONFIG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", + "action": "Writing a new LOG or FDR content to Radio for forwarding to PeriodicLog", + "description": "A bit mask is written which is not valid (e.g. not all mandatory bits are equal to 1)", "id": 1 }, "NO_CHANGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", + "action": "Writing a new parameter value so several functions (e.g. Set HistoricalErrorLimitDays)", + "description": "The new value has no effect: New value == Old value)", "id": 2 }, "STORE_PENDING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", + "action": "Writing SENSUSRADIO_STORECONFIGURATION to 1 ...", + "description": "The initiated storing action is still ongoing and the file system is busy. The final status is pending", "id": 3 }, "DID_NOT_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", + "action": "Writing SENSUSRADIO_STORECONFIGURATION to 1 ...", + "description": "This is a final status. The initiated storing action failed. An alternate status would be 'OK'", "id": 4 } } @@ -4877,7 +4699,7 @@ "id": 4, "version": { "first": 3, - "last": 232 + "last": 233 }, "registers": { "Privilege": { @@ -4898,7 +4720,7 @@ "description": "Written to set the login level, followed by the password. Note, this can be read at any login level including 0.", "version": { "first": 3, - "last": 232 + "last": 233 }, "values": { "default": 0, @@ -4927,7 +4749,7 @@ "description": "Password for logging in, requires 3 consecutive writes", "version": { "first": 3, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -4951,7 +4773,7 @@ "description": "Remote file operations, use this to open a file on the meter, handle returned", "version": { "first": 20, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -4975,7 +4797,7 @@ "description": "Remote file operations, use this to close a file on the meter", "version": { "first": 20, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -4999,7 +4821,7 @@ "description": "Remote file operations, use this to read bytes from an open file", "version": { "first": 20, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -5023,7 +4845,7 @@ "description": "Remote file operations, use this to write bytes to an open file", "version": { "first": 20, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -5047,7 +4869,7 @@ "description": "Remote file operations, use this to seek within an open file", "version": { "first": 20, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -5071,7 +4893,7 @@ "description": "Remote file operations, use this to determine position within an open file", "version": { "first": 20, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -5095,7 +4917,7 @@ "description": "Remote file operations, use this to delete a file", "version": { "first": 20, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -5119,7 +4941,7 @@ "description": "Remote file operations, use this determine whether the current position in an open file is the end of the file", "version": { "first": 20, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -5143,7 +4965,7 @@ "description": "Returns a list of files in the filesystem that matches a string containing wildcards passed in", "version": { "first": 49, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -5167,7 +4989,7 @@ "description": "String containing the PCB serial number. Note, this can be read at any login level including 0", "version": { "first": 59, - "last": 232 + "last": 233 }, "statictype": "static" } @@ -5191,7 +5013,7 @@ "description": "Bitmask of login levels permitted to manipulate dangerous files", "version": { "first": 59, - "last": 232 + "last": 233 }, "statictype": "static" } @@ -5215,7 +5037,7 @@ "description": "Remote file operations, use this to flush write buffers to an open file", "version": { "first": 66, - "last": 232 + "last": 233 }, "statictype": "dynamic" } @@ -5224,98 +5046,60 @@ }, "status": { "LOCKED_OUT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "AUTHENTICATION_FAILURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "ACCESS_DENIED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "UNKNOWN_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "IN_USE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 }, "SIZES_DONT_MATCH": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 }, "CANT_READ_CONFIG_FILE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 6 }, "USER_NOT_KNOWN": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 7 }, "CANT_CREATE_CONFIG_FILE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 8 }, "STORE_DIDNT_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 9 }, "STORE_CORRUPT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 10 }, "EXPECTED_WRITE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 11 }, "EXPECTED_READ": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 12 }, "STOP_CYCLING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 13 }, "TOO_MANY_OPEN": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 14 }, "NEVER_OPENED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 15 }, "FILE_PROTECTED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 16 }, "PARTIAL_RECALL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 17 }, "DEFAULT_PASSWORD_USED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 18 } } @@ -5378,63 +5162,39 @@ }, "status": { "BAD_CONFIG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "NDEF_WRITE_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "NDEF_VERIFY_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "NDEF_UPDATE_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "RMA_WRITE_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 }, "RMA_VERIFY_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 }, "RMA_BAD_ENTRY": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 6 }, "INIT_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 7 }, "NDEF_CONFIG_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 8 }, "RMA_CONFIG_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 9 }, "NDEF_START_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 10 }, "RMA_START_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 11 } } @@ -5443,7 +5203,7 @@ "id": 0, "version": { "first": 141, - "last": 532 + "last": 533 }, "registers": { "TriggerUpgrade": { @@ -5464,7 +5224,7 @@ "description": "Writing TRUE to this register internally calls SysTriggerUpgrade() then returns the result.", "version": { "first": 141, - "last": 532 + "last": 533 }, "statictype": "dynamic" } @@ -5488,7 +5248,7 @@ "description": "Writing an application id number allows the version number of that application to be read back.", "version": { "first": 150, - "last": 532 + "last": 533 }, "statictype": "dynamic" } @@ -5512,7 +5272,7 @@ "description": "A string reporting the PCB serial number, this string must be set using production equipment.", "version": { "first": 169, - "last": 532 + "last": 533 }, "values": { "default": "" @@ -5539,7 +5299,7 @@ "description": "A string reported relating to the customer, this string can be written only once after manufacture. If subsequent changes are needed CUSTOMERSERIALNUMBER1 must be used.", "version": { "first": 170, - "last": 532 + "last": 533 }, "values": { "default": "" @@ -5566,7 +5326,7 @@ "description": "A string reported relating to the customer, this string can be written only once after manufacture. If subsequent changes are needed CUSTOMERSERIALNUMBER2 must be used.", "version": { "first": 170, - "last": 532 + "last": 533 }, "values": { "default": "" @@ -5593,7 +5353,7 @@ "description": "A string reported relating to the customer, this string can be written only once after manufacture. If subsequent changes are needed CUSTOMERSERIALNUMBER3 must be used.", "version": { "first": 170, - "last": 532 + "last": 533 }, "values": { "default": "" @@ -5620,7 +5380,7 @@ "description": "A string reported relating to the customer, this string can be written only once after manufacture. This is the last customer serial number change slot.", "version": { "first": 170, - "last": 532 + "last": 533 }, "values": { "default": "" @@ -5647,7 +5407,7 @@ "description": "The number of seconds since reboot.", "version": { "first": 176, - "last": 532 + "last": 533 }, "statictype": "dynamic" } @@ -5671,7 +5431,7 @@ "description": "The number of seconds since 01-Jan-2000.", "version": { "first": 176, - "last": 532 + "last": 533 }, "statictype": "dynamic" } @@ -5695,7 +5455,7 @@ "description": "A string reporting the product version string held in the system core binary.", "version": { "first": 196, - "last": 532 + "last": 533 }, "statictype": "static" } @@ -5719,7 +5479,7 @@ "description": "Writing a drive number returns the drive capacity in bytes, or 0 if the drive is not ready, or an error if the driver is not configured to be present.", "version": { "first": 233, - "last": 532 + "last": 533 }, "statictype": "dynamic" } @@ -5743,7 +5503,7 @@ "description": "Writing an application id number allows the exit error number of that application to be read back.", "version": { "first": 258, - "last": 532 + "last": 533 }, "statictype": "dynamic" } @@ -5767,7 +5527,7 @@ "description": "Reports the instruction set of the hosting microprocessor in b8-15 and allocated platform number in b0-7.", "version": { "first": 265, - "last": 532 + "last": 533 }, "statictype": "static" } @@ -5791,7 +5551,7 @@ "description": "Writing an application id number allows the CRC of that application to be read back.", "version": { "first": 279, - "last": 532 + "last": 533 }, "statictype": "dynamic" } @@ -5815,7 +5575,7 @@ "description": "Bitfield of permissions releated to firmware upgrade", "version": { "first": 470, - "last": 532 + "last": 533 }, "statictype": "static" } @@ -5839,7 +5599,7 @@ "description": "Writing an application id number allows the 32 bit CRC of that application to be read back.", "version": { "first": 529, - "last": 532 + "last": 533 }, "statictype": "dynamic" } @@ -5848,283 +5608,171 @@ }, "status": { "OK": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "ZERO_APPS": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "NO_MEMORY": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "NOT_IMPLEMENTED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "BLOCK_NOT_FOUND": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 }, "NO_SUCH_VAR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 }, "NO_CLIB": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 6 }, "KEY_FAILURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 7 }, "NO_SLOTS_FREE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 8 }, "VECTOR_OUT_OF_RANGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 9 }, "BAD_VECTOR_RELEASE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 10 }, "DRIVER_BUSY": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 11 }, "OUT_OF_RANGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 12 }, "CANT_CANCEL_TICK": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 13 }, "ID_OUT_OF_RANGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 14 }, "HANDLE_OUT_OF_RANGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 15 }, "INCAPABLE_HARDWARE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 16 }, "ALREADY_OPEN": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 17 }, "STRING_TOO_LONG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 18 }, "CORRUPT_CONFIGURATION": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 19 }, "TIMEOUT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 20 }, "NO_PRIVILEGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 21 }, "DEVICE_DORMANT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 22 }, "MEDIA_FAILURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 23 }, "BUFFER_OVERFLOW": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 24 }, "UPGRADE_SYNTAX_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 25 }, "UPGRADE_DEPENDENCY_NOT_MET": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 26 }, "UPGRADE_MISSING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 27 }, "UPGRADE_FRAGMENTED_BY_CLIB": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 28 }, "TRUNCATED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 29 }, "INVALID_HEADER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 30 }, "WONT_DELETE_CLIB": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 31 }, "BAD_REGISTER_VALUE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 32 }, "NO_CHANGE_MADE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 33 }, "NOT_ATOMIC": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 34 }, "CALENDAR_CHANGED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 35 }, "WORM_FIELD": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 36 }, "CONVERSION_UNSUPPORTED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 37 }, "CPU_PERMISSION_FAULT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 38 }, "CPU_SOFTWARE_FAULT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 39 }, "CPU_DECODE_FAULT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 40 }, "CPU_ADDRESS_ACCESS_FAULT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 41 }, "CPU_UNCAUGHT_FAULT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 42 }, "ACCURACY_LOST": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 43 }, "EXIT_FAILURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 44 }, "CANT_CANCEL_CALLBACK": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 45 }, "RECOVERED_SPACE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 46 }, "DRIVE_FULL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 47 }, "NO_FILE_HANDLES_AVAILABLE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 48 }, "EXCESSIVE_RESTARTS": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 49 }, "MPU_SETUP_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 50 }, "DEVICE_NOT_OPEN": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 51 }, "NO_RESPONSE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 52 }, "EXIT_WATCHDOG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 53 }, "WONT_DELETE_SPECIAL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 54 }, "WONT_UPGRADE_SPECIAL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 55 } } @@ -6133,7 +5781,7 @@ "id": 18, "version": { "first": 4, - "last": 112 + "last": 113 }, "registers": { "ILoopMaxFlowRate": { @@ -6173,7 +5821,7 @@ "description": "The flow rate that gives max output on the current loop", "version": { "first": 82, - "last": 112 + "last": 113 }, "statictype": "static" } @@ -6216,7 +5864,7 @@ "description": "Writing TRUE to this register stores the values of the other registers to the non-volatile memory", "version": { "first": 82, - "last": 112 + "last": 113 }, "statictype": "dynamic" } @@ -6288,7 +5936,7 @@ "description": "Volume represented by one pulse. Units of (2^-5)ml. If this is zero pulse output will not be enabled", "version": { "first": 102, - "last": 112 + "last": 113 }, "values": { "default": 32000, @@ -6365,7 +6013,7 @@ "description": "The way pulses are output on the two available channels. This is an enum of type pulse_mode_t.", "version": { "first": 98, - "last": 112 + "last": 113 }, "values": { "default": 0, @@ -6442,7 +6090,7 @@ "description": "The length of a pulse. This is an enum of type pulse_length_t.", "version": { "first": 82, - "last": 112 + "last": 113 }, "values": { "default": 4, @@ -6495,7 +6143,7 @@ "description": "The units of flow rate to display on the LCD. An enum of type displayflowunits_t", "version": { "first": 82, - "last": 112 + "last": 113 }, "values": { "default": 4, @@ -6548,7 +6196,7 @@ "description": "Position of the decimal point on the LCD for flow rate. An enum of type displayflowpoint_t", "version": { "first": 82, - "last": 112 + "last": 113 }, "values": { "default": 2, @@ -6596,7 +6244,7 @@ "description": "The update rate for the current loop", "version": { "first": 82, - "last": 112 + "last": 113 }, "statictype": "static" } @@ -6644,7 +6292,7 @@ "description": "Units for displaying temperature on the LCD. 0 – Celcius, 1 – Fahrenheit.", "version": { "first": 82, - "last": 112 + "last": 113 }, "values": { "default": 0, @@ -6697,7 +6345,7 @@ "description": "Units for displaying pressure on the LCD. 0 – Mpa, 1 – PSI.", "version": { "first": 82, - "last": 112 + "last": 113 }, "values": { "default": 0, @@ -6774,7 +6422,7 @@ "description": "Time between pressure measurements in milliseconds", "version": { "first": 82, - "last": 112 + "last": 113 }, "values": { "default": 60000, @@ -6875,7 +6523,7 @@ "description": "Value in Pa to subtract from measured value to correct for atmospheric pressure", "version": { "first": 82, - "last": 112 + "last": 113 }, "values": { "default": 0, @@ -6928,7 +6576,7 @@ "description": "Whether there is a pressure sensor present", "version": { "first": 71, - "last": 112 + "last": 113 }, "values": { "default": 0, @@ -6957,7 +6605,7 @@ "description": "Write TRUE to trigger a pressure measurement, Read to get the latest measured value in Pa", "version": { "first": 65, - "last": 112 + "last": 113 }, "statictype": "dynamic" } @@ -6981,7 +6629,7 @@ "description": "Returns the latest flow rate. Write 0 to change scaling to internal scaling, 1 to change to display scaling", "version": { "first": 92, - "last": 112 + "last": 113 }, "statictype": "dynamic" } @@ -7005,7 +6653,7 @@ "description": "Generate some artificial pulses, used for testing", "version": { "first": 97, - "last": 112 + "last": 113 }, "values": { "minimum": 0, @@ -7033,7 +6681,7 @@ "description": "Generate some artificial pulses, used for testing", "version": { "first": 97, - "last": 112 + "last": 113 }, "values": { "minimum": 0, @@ -7061,7 +6709,7 @@ "description": "Boolean value for whether pulse output is to space the pulses evenly (TRUE) or grouped (FALSE)", "version": { "first": 98, - "last": 112 + "last": 113 }, "values": { "default": 1, @@ -7090,7 +6738,7 @@ "description": "The number of bits of fractional resolution in a pulse event", "version": { "first": 98, - "last": 112 + "last": 113 }, "values": { "minimum": 0, @@ -7118,7 +6766,7 @@ "description": "Value in Pa to add to measured value after recalibration to correct for sensor drift over time", "version": { "first": 108, - "last": 112 + "last": 113 }, "statictype": "static" } @@ -7127,18 +6775,12 @@ }, "status": { "BAD_CONFIG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "DID_NOT_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "PENDING_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 } } @@ -7259,28 +6901,18 @@ }, "status": { "UNKNOWN_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "RESTARTED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "BLOCK_LISTING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "PENDING_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "DID_NOT_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 } } @@ -7415,68 +7047,42 @@ }, "status": { "FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "UNKNOWN_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "READ_ONLY_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "BUSY": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "STRING_TOO_LONG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 }, "FOPEN_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 }, "FSEEK_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 6 }, "FWRITE_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 7 }, "FCLOSE_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 8 }, "MALFORMED_FILENAME": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 9 }, "UNKNOWN_ACTION": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 10 }, "FILEREMOVE_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 11 }, "FREAD_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 12 } } @@ -7694,23 +7300,23 @@ }, "status": { "FOPEN": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", + "action": "Perform a FOPEN to any of the logging files logdata, fdrdata, evtdata ... ", + "description": "FOPEN action failed due to any reason (means fopen error)", "id": 0 }, "BAD_CONFIG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", + "action": "Handle the internal dual logging file access by SensusRfRadio and by PeriodicLogging", + "description": "Mutual Exclude file access failed due to a wrong internal status order", "id": 1 }, "STRING_TOO_LONG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", + "action": "Currently unused or not define action", + "description": "Currently not generated or returned", "id": 2 }, "FILES_IN_USE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", + "action": "Handle the internal dual logging file access by SensusRfRadio and by PeriodicLogging", + "description": "File access denied because the other party has currently access to the file(s)", "id": 3 } } @@ -8102,48 +7708,30 @@ }, "status": { "TABLE_FULL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "UNKNOWN_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "OUT_OF_RANGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "STOP_CYCLING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "TEMPERATURE_LIMIT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 }, "BATTERY_STATUS_CHANGED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 }, "BATTERY_CRITICAL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 6 }, "PENDING_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 7 }, "DID_NOT_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 8 } } @@ -8221,7 +7809,7 @@ "description": "The rate in Hz that each GP30 takes measurements", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 2, @@ -8346,7 +7934,7 @@ "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 20, @@ -8471,7 +8059,7 @@ "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 20, @@ -8596,7 +8184,7 @@ "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 20, @@ -8721,7 +8309,7 @@ "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 20, @@ -8846,7 +8434,7 @@ "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 20, @@ -8971,7 +8559,7 @@ "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 20, @@ -9096,7 +8684,7 @@ "description": "The hit number to consider as the first hit", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 6, @@ -9221,7 +8809,7 @@ "description": "Where to stop running the amplitude peak detection", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 19, @@ -9346,7 +8934,7 @@ "description": "The number of pulses to fire for a measurement", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 17, @@ -9471,7 +9059,7 @@ "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": -6, @@ -9596,7 +9184,7 @@ "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -9745,7 +9333,7 @@ "description": "The meter pipe size", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 1, @@ -9894,7 +9482,7 @@ "description": "The calibration factor for ultrasonic channel 1", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 15625, @@ -10043,7 +9631,7 @@ "description": "The calibration factor for ultrasonic channel 2", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 15625, @@ -10192,7 +9780,7 @@ "description": "The calibration factor for ultrasonic channel 3", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 15625, @@ -10341,7 +9929,7 @@ "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -10490,7 +10078,7 @@ "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -10639,7 +10227,7 @@ "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -10740,7 +10328,7 @@ "description": "The scaled volume value shown on the display. In the units and precision set by DisplayUnits and DisplayPow10 respectively. Decimal point is not represented in this value", "version": { "first": 47, - "last": 309 + "last": 311 }, "statictype": "dynamic" }, @@ -10840,7 +10428,7 @@ "description": "Write 1 to reset all accumulated volume to zero", "version": { "first": 268, - "last": 309 + "last": 311 }, "statictype": "dynamic" }, @@ -10945,7 +10533,7 @@ "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -11094,7 +10682,7 @@ "description": "The type of data output by the green LED", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -11195,7 +10783,7 @@ "description": "Write 1 to store calibration values to non-volatile storage. Read back for status", "version": { "first": 54, - "last": 309 + "last": 311 }, "statictype": "dynamic" }, @@ -11276,7 +10864,7 @@ "description": "The forward flow accumulator volume. The scale depends on the meter size", "version": { "first": 54, - "last": 309 + "last": 311 }, "statictype": "dynamic" }, @@ -11357,7 +10945,7 @@ "description": "The reverse flow accumulator volume. The scale depends on the meter size", "version": { "first": 54, - "last": 309 + "last": 311 }, "statictype": "dynamic" }, @@ -11462,7 +11050,7 @@ "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 200, @@ -11587,7 +11175,7 @@ "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 3932160, @@ -11712,7 +11300,7 @@ "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -11837,7 +11425,7 @@ "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 5000000, @@ -11962,7 +11550,7 @@ "description": "The fire buffer within the GP30 on channel 1 to be used", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 1, @@ -12087,7 +11675,7 @@ "description": "The fire buffer within the GP30 on channel 2 to be used", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 1, @@ -12212,7 +11800,7 @@ "description": "The fire buffer within the GP30 on channel 3 to be used", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 1, @@ -12322,17 +11910,17 @@ "privilege": { "lvl1": "NA", "lvl2": "NA", - "lvl3": "WO", + "lvl3": "RW", "lvl4": "NA", - "lvl5": "WO", - "lvl6": "WO", - "lvl7": "WO", - "lvl8": "WO" + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" }, "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", "version": { "first": 268, - "last": 309 + "last": 311 }, "statictype": "dynamic" }, @@ -12351,7 +11939,7 @@ "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", "version": { "first": 307, - "last": 309 + "last": 311 }, "statictype": "dynamic" }, @@ -12360,12 +11948,12 @@ "privilege": { "lvl1": "NA", "lvl2": "NA", - "lvl3": "WO", + "lvl3": "RW", "lvl4": "NA", - "lvl5": "WO", - "lvl6": "WO", - "lvl7": "WO", - "lvl8": "WO" + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" }, "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", "version": { @@ -12379,12 +11967,12 @@ "privilege": { "lvl1": "NA", "lvl2": "NA", - "lvl3": "WO", + "lvl3": "RW", "lvl4": "NA", - "lvl5": "WO", - "lvl6": "WO", - "lvl7": "WO", - "lvl8": "WO" + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" }, "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", "version": { @@ -12398,12 +11986,12 @@ "privilege": { "lvl1": "NA", "lvl2": "NA", - "lvl3": "WO", + "lvl3": "RW", "lvl4": "NA", - "lvl5": "WO", - "lvl6": "WO", - "lvl7": "WO", - "lvl8": "WO" + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" }, "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", "version": { @@ -12432,7 +12020,7 @@ "description": "Write 0 to put GenesisFlow in Active mode, otherwise put GenesisFlow in Idle mode. Idle mode displays just the number written to TriggerIdle. No measurements are performed. Read returns the number written", "version": { "first": 75, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -12557,7 +12145,7 @@ "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 309237, @@ -12682,7 +12270,7 @@ "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 24739011, @@ -12807,7 +12395,7 @@ "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 13743895, @@ -12932,7 +12520,7 @@ "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 20, @@ -13057,7 +12645,7 @@ "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 20, @@ -13182,7 +12770,7 @@ "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 20, @@ -13307,7 +12895,7 @@ "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 4, @@ -13432,7 +13020,7 @@ "description": "Minimum absolute first hit level value", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 20, @@ -13557,7 +13145,7 @@ "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 16, @@ -13682,7 +13270,7 @@ "description": "The period (in seconds) between first hit level updates", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 10, @@ -13807,7 +13395,7 @@ "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 30, @@ -13932,7 +13520,7 @@ "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -14057,7 +13645,7 @@ "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -14182,7 +13770,7 @@ "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -14306,7 +13894,7 @@ "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", "version": { "first": 205, - "last": 309 + "last": 311 }, "values": { "minimum": 0, @@ -14422,7 +14010,7 @@ "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", "version": { "first": 268, - "last": 309 + "last": 311 }, "statictype": "dynamic" }, @@ -14527,7 +14115,7 @@ "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -14652,7 +14240,7 @@ "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 0, @@ -14777,7 +14365,7 @@ "description": "Maximum amplitude for a valid signal in 2^-22mV units", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 2936012800, @@ -14902,7 +14490,7 @@ "description": "Minimum amplitude for a valid signal in 2^-22mV units", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 209715200, @@ -15027,7 +14615,7 @@ "description": "Number of hard errors to allow before declaring a fatal error", "version": { "first": 268, - "last": 309 + "last": 311 }, "values": { "default": 4, @@ -15128,7 +14716,7 @@ "description": "The timeout for an ultrasonic measurement (0 - 128us, 1 - 256us, 2 - 1024us, 3 - 4096us)", "version": { "first": 273, - "last": 309 + "last": 311 }, "values": { "default": 1, @@ -15229,7 +14817,7 @@ "description": "The maximum deviation of a valid delta tof from the recent mean. In 2^-38 seconds units", "version": { "first": 280, - "last": 309 + "last": 311 }, "values": { "default": 109951, @@ -15330,7 +14918,7 @@ "description": "The maximum range of temperatures between channels before one is rejected. In units of 2^-12 degrees celcius", "version": { "first": 289, - "last": 309 + "last": 311 }, "values": { "default": 8192, @@ -15431,7 +15019,7 @@ "description": "The maximum range of delta time of flight between channels before one is rejected. In 2^-38 seconds units", "version": { "first": 289, - "last": 309 + "last": 311 }, "values": { "default": 137438, @@ -15532,7 +15120,7 @@ "description": "Read for the current loaded lookup table CRC, write to set the expected CRC.", "version": { "first": 295, - "last": 309 + "last": 311 }, "statictype": "dynamic" } @@ -15556,7 +15144,150 @@ "description": "Whether to display leading zeros on row 2. If false leading zeros will be replaced with a space", "version": { "first": 302, - "last": 309 + "last": 311 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "InstallationCorrectionEnabled": { + "id": 62, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether the installation correction function is enabled or not", + "version": { + "first": null, + "last": null + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "InstallationDetectionThreshold": { + "id": 63, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The threshold in ml for deciding on the meter installation", + "version": { + "first": null, + "last": null + }, + "values": { + "default": 500, + "minimum": 0, + "maximum": 10000000 + }, + "statictype": "static" + } + ] + }, + "InstallationType": { + "id": 64, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The detected installation type, MS 16 bits is the type of installation, LS 16 bits is the proportion of correction to apply", + "version": { + "first": null, + "last": null + }, + "values": { + "minimum": 0, + "maximum": 163840 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "InstallationDetectionStatus": { + "id": 65, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Installation detection percentage complete, returns 100 if installation detection isn't running", + "version": { + "first": null, + "last": null + }, + "values": { + "minimum": 0, + "maximum": 100 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FractionalBars": { + "id": 66, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether to display bars above the fractional digits on the LCD (if supported)", + "version": { + "first": null, + "last": null }, "values": { "default": 0, @@ -15570,329 +15301,211 @@ }, "status": { "BAD_TEST": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "BAD_CONFIG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "DID_NOT_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "STORE_PENDING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "STORE_BUFFER_SIZE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 }, "STRING_TOO_LONG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 }, "BAD_DISPLAY_MODE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 6 }, "GLASS_TOO_LONG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 7 }, "SLOT_NOT_YOURS": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 8 }, "SUBLIST_TOO_LONG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 9 }, "NO_TEMP_SENSOR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 10 }, "UNDER_TEMP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 11 }, "LOW_TEMP_WARNING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 12 }, "HIGH_TEMP_WARNING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 13 }, "OVER_TEMP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 14 }, "MISMATCHING_LSB": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 15 }, "OUT_OF_RANGE_PWDIFF": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 16 }, "OUT_OF_RANGE_AMPLITUDE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 17 }, "OUT_OF_RANGE_TOF": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 18 }, "OUT_OF_RANGE_DTOF": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 19 }, "TOF_TIMEOUT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 20 }, "CAL_CHANGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 21 }, "OUT_OF_RANGE_INTERVAL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 22 }, "VALIDATE_FAIL": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 23 }, "OUT_OF_RANGE_TEMP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 24 }, "NOT_READY": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 25 }, "METROLOGY_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 26 }, "GP30_ID_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 27 }, "GP30_FLAG_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 28 }, "GP30_TIMEOUT_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 29 }, "GP30_REQUEST_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 30 }, "GP30_SEQ_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 31 }, "VALUE_SEALED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 32 }, "IN_TEST_MODE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 33 }, "UNKNOWN_STATE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 34 }, "DISPLAY_INIT_SUCCEEDED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 35 }, "DISPLAY_INIT_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 36 }, "GP30_INIT_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 37 }, "START_TIMER_SUCCEEDED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 38 }, "START_TIMER_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 39 }, "VOLUME_STORE_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 40 }, "EMPTY_PIPE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 41 }, "PARAMETER_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 42 }, "GP30_INTERNAL_ERROR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 43 }, "GLASS_TOO_SHORT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 44 }, "STORE_CAL_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 45 }, "STORE_CONF_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 46 }, "MODE_CHANGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 47 }, "BAD_POW10": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 48 }, "BAD_DECIMAL_SEPARATOR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 49 }, "BAD_UNITS": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 50 }, "BAD_ICONS": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 51 }, "BAD_THOUSAND_SEPARATOR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 52 }, "NEW_LOCALE_REJECTED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 53 }, "SET_ACCUMULATORS": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 54 }, "SEAL_OPENED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 55 }, "CALIBRATION_RECALL_INCOMPLETE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 56 }, "BAD_AMR_SETTINGS": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 57 }, "SUSPECT_CYCLE_SKIP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 58 }, "LOOKUP_FILE_LOADED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 59 }, "LOOKUP_FILE_METERSIZE_CHANGED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 60 }, "LOOKUP_FILE_FAILURE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 61 }, "LOOKUP_FILE_INVALID": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 62 }, "LOOKUP_CRC_MISMATCH": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 63 }, "LOOKUP_FILE_UNKNOWN_METERSIZE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 64 + }, + "INSTALLATION_HIGH_TIME_DIFF": { + "id": 65 + }, + "INSTALLATION_LOW_FLOW_IGNORE": { + "id": 66 + }, + "INSTALLATION_BAD_CHANNELS": { + "id": 67 + }, + "INSTALLATION_FIXED": { + "id": 68 } } }, @@ -16676,33 +16289,21 @@ }, "status": { "BAD_CONFIG": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "BAD_LENGTH": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "OUT_OF_RANGE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "PENDING_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "DID_NOT_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 }, "TOO_MANY_BYTES": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 } } @@ -16770,118 +16371,72 @@ }, "status": { "SENSOR_INVALID": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "UNKNOWN_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "ALARM_INVALID": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "UNIMPLEMENTED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, "UNCONFIGURED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 4 }, "CONFIG_INVALID": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 }, "NO_LATEST": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 6 }, "FIXED_TYPE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 7 }, "PREDEF_SET": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 8 }, "USERDEF_VOLUME_SET": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 9 }, "USERDEF_TEMPERATURE_SET": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 10 }, "USERDEF_PRESSURE_SET": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 11 }, "PREDEF_CLEAR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 12 }, "USERDEF_VOLUME_CLEAR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 13 }, "USERDEF_TEMPERATURE_CLEAR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 14 }, "USERDEF_PRESSURE_CLEAR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 15 }, "DID_NOT_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 16 }, "STORE_PENDING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 17 }, "PREDEF_BACKUP_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 18 }, "PREDEF_RESTORE_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 19 }, "USERDEF_BACKUP_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 20 }, "USERDEF_RESTORE_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 21 }, "USERDEF_UNSUPPORTED_TYPE_FOR_SENSOR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 22 } } @@ -16944,143 +16499,87 @@ }, "status": { "UNKNOWN_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 }, "NOT_MAIN_LOOP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 2 }, "LOG_INVALID": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 3 }, - "LOG_OPEN_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", - "id": 4 - }, + "LOG_OPEN_FAILED": { + "id": 4 + }, "LOG_CLOSE_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 5 }, "LOG_REMOVE_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 6 }, "LOG_FLUSH_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 7 }, "LOG_CLEAR_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 8 }, "LOG_BAD_REQUEST": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 9 }, "LOG_BAD_LIMIT": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 10 }, "LOG_BUSY": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 11 }, "QUERY_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 12 }, "QUERY_UNKNOWN_SENSOR": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 13 }, "QUERY_UNKNOWN_LOGFILE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 14 }, "QUERY_BAD_ARGS": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 15 }, "QUERY_NOT_ENOUGH_SPACE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 16 }, "QUERY_NO_RECORDS_FOUND": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 17 }, "QUERY_FILE_READ_PROBLEM": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 18 }, "SETTINGS_STORE_FAILED": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 19 }, "SETTINGS_BAD_SENSORID": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 20 }, "SETTINGS_BAD_PERIOD": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 21 }, "SETTINGS_BAD_CHECKSUM": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 22 }, "SETTINGS_BAD_TIMESTAMP": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 23 }, "FILING_BAD": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 24 }, "BAD_RECORD": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 25 }, "RANGE_SENSORID_BAD": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 26 }, "STORE_PENDING": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 27 }, "DID_NOT_STORE": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 28 } } @@ -17150,13 +16649,9 @@ }, "status": { "UNKNOWN_PARAMETER": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 0 }, "TOO_MANY_APPS": { - "action": "Lorem Ipsum", - "description": "Lorem Ipsum", "id": 1 } } diff --git a/Common/Hardware/WaterMeter/Genesis/GenesisCore/configuration_UInt128.json b/Common/Hardware/WaterMeter/Genesis/GenesisCore/configuration_UInt128.json new file mode 100644 index 00000000..713f1f8b --- /dev/null +++ b/Common/Hardware/WaterMeter/Genesis/GenesisCore/configuration_UInt128.json @@ -0,0 +1,16659 @@ +{ + "CUSTOMER": { + "id": 9, + "version": { + "first": 1, + "last": 156 + }, + "registers": { + "AlarmStatus0": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 0-3.", + "version": { + "first": 1, + "last": 156 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus1": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 4-7.", + "version": { + "first": 1, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "TriggerAlarmCancel": { + "id": 2, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Any set bits manually clear the corresponding alarm.", + "version": { + "first": 1, + "last": 110 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Any set bits manually clear the corresponding alarm.", + "version": { + "first": 111, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus2": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 8-11.", + "version": { + "first": 26, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus3": { + "id": 4, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 12-15.", + "version": { + "first": 26, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus4": { + "id": 5, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 16-19.", + "version": { + "first": 26, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus5": { + "id": 6, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 20-23.", + "version": { + "first": 26, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus6": { + "id": 7, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 24-27.", + "version": { + "first": 26, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmStatus7": { + "id": 8, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "8 bit counts corresponding to alarms 28-31.", + "version": { + "first": 26, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "AlarmEnableMask": { + "id": 9, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which are being monitored.", + "version": { + "first": 26, + "last": 110 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which are being monitored.", + "version": { + "first": 111, + "last": 157 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "AlarmBroadcastMask": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which will generate events.", + "version": { + "first": 26, + "last": 110 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which will generate events.", + "version": { + "first": 111, + "last": 157 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "AlarmVisualMask": { + "id": 11, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which are displayed with IDs and the alarm icon.", + "version": { + "first": 110, + "last": 110 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit set of those alarms which are displayed with IDs and the alarm icon.", + "version": { + "first": 111, + "last": 157 + }, + "values": { + "default": 4294967295, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "AlarmVisualAutoClearMask": { + "id": 12, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Alarms that have their display automatically cleared", + "version": { + "first": 110, + "last": 110 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Alarms that have their display automatically cleared", + "version": { + "first": 111, + "last": 157 + }, + "statictype": "static" + } + ] + }, + "ExcessFlowVolumeThreshold": { + "id": 13, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which broken pipe alarm is set in 1/256 l/h", + "version": { + "first": 61, + "last": 110 + }, + "values": { + "default": 639590, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which broken pipe alarm is set in 1/256 l/h", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 639590, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which broken pipe alarm is set in 1/256 l/h", + "version": { + "first": 119, + "last": 132 + }, + "values": { + "default": 639590, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which broken pipe alarm is set in 1/256 l/h", + "version": { + "first": 133, + "last": 157 + }, + "values": { + "default": 639999, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "LeakTimeThreshold": { + "id": 14, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for leak alarm in minutes", + "version": { + "first": 61, + "last": 110 + }, + "values": { + "default": 10080, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for leak alarm in minutes", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 10080, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for leak alarm in minutes", + "version": { + "first": 119, + "last": 157 + }, + "values": { + "default": 360, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + } + ] + }, + "ReverseFlowTimeThreshold": { + "id": 15, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of measurements in reverse flow required to set reverse flow alarm", + "version": { + "first": 61, + "last": 110 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of measurements in reverse flow required to set reverse flow alarm", + "version": { + "first": 111, + "last": 142 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of measurements in reverse flow required to set reverse flow alarm", + "version": { + "first": 143, + "last": 157 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "Locale": { + "id": 18, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Timezone in which this application is set to run.", + "version": { + "first": 24, + "last": 157 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "AppArrangement": { + "id": 19, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "A name for the arrangement of applications on the meter", + "version": { + "first": 130, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "RebootCount": { + "id": 20, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of times the meter has rebooted", + "version": { + "first": 73, + "last": 110 + }, + "values": { + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of times the meter has rebooted", + "version": { + "first": 111, + "last": 157 + }, + "values": { + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ExcessFlowTimeThreshold": { + "id": 21, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for broken pipe alarm in minutes", + "version": { + "first": 80, + "last": 110 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for broken pipe alarm in minutes", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for broken pipe alarm in minutes", + "version": { + "first": 119, + "last": 157 + }, + "values": { + "default": 180, + "minimum": 0, + "maximum": 69632 + }, + "statictype": "static" + } + ] + }, + "LeakFlowThreshold": { + "id": 22, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which leak alarm can be set in 1/256 l/h", + "version": { + "first": 80, + "last": 110 + }, + "values": { + "default": 12800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which leak alarm can be set in 1/256 l/h", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 12800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which leak alarm can be set in 1/256 l/h", + "version": { + "first": 119, + "last": 132 + }, + "values": { + "default": 5529, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Flow rate above which leak alarm can be set in 1/256 l/h", + "version": { + "first": 133, + "last": 157 + }, + "values": { + "default": 6399, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MfgCharge": { + "id": 23, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Charge in uAs available in manufacturing (read only)", + "version": { + "first": 84, + "last": 157 + }, + "values": { + "default": 181440000 + }, + "statictype": "static" + } + ] + }, + "TemperatureHighThreshold": { + "id": 24, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High temperature alarm threshold in 0.1°C", + "version": { + "first": 88, + "last": 100 + }, + "values": { + "default": 500, + "minimum": 0, + "maximum": 800 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High temperature alarm threshold in 0.1°C", + "version": { + "first": 101, + "last": 110 + }, + "values": { + "default": 500, + "minimum": 0, + "maximum": 800 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High temperature alarm threshold in 0.1°C", + "version": { + "first": 111, + "last": 157 + }, + "values": { + "default": 500, + "minimum": 0, + "maximum": 800 + }, + "statictype": "static" + } + ] + }, + "TemperatureHighDelay": { + "id": 25, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for high temperature alarm in seconds", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for high temperature alarm in seconds", + "version": { + "first": 111, + "last": 157 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + } + ] + }, + "TemperatureLowThreshold": { + "id": 26, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low temperature alarm threshold in 0.1°C", + "version": { + "first": 88, + "last": 100 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low temperature alarm threshold in 0.1°C", + "version": { + "first": 101, + "last": 110 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low temperature alarm threshold in 0.1°C", + "version": { + "first": 111, + "last": 157 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "TemperatureLowDelay": { + "id": 27, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for low temperature alarm in seconds", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for low temperature alarm in seconds", + "version": { + "first": 111, + "last": 157 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + } + ] + }, + "PressureHighThreshold": { + "id": 28, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High pressure alarm threshold in Pa", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 1600000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High pressure alarm threshold in Pa", + "version": { + "first": 111, + "last": 121 + }, + "values": { + "default": 1600000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "High pressure alarm threshold in Pa", + "version": { + "first": 122, + "last": 157 + }, + "values": { + "default": 1600000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + } + ] + }, + "PressureHighDelay": { + "id": 29, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for high pressure alarm in seconds", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 300, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for high pressure alarm in seconds", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 300, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for high pressure alarm in seconds", + "version": { + "first": 119, + "last": 157 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + } + ] + }, + "PressureLowThreshold": { + "id": 30, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low pressure alarm threshold in Pa", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 30000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low pressure alarm threshold in Pa", + "version": { + "first": 111, + "last": 121 + }, + "values": { + "default": 30000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Low pressure alarm threshold in Pa", + "version": { + "first": 122, + "last": 157 + }, + "values": { + "default": 30000, + "minimum": 0, + "maximum": 2550000 + }, + "statictype": "static" + } + ] + }, + "PressureLowDelay": { + "id": 31, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for low pressure alarm in seconds", + "version": { + "first": 88, + "last": 110 + }, + "values": { + "default": 300, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for low pressure alarm in seconds", + "version": { + "first": 111, + "last": 118 + }, + "values": { + "default": 300, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time threshold for low pressure alarm in seconds", + "version": { + "first": 119, + "last": 157 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 10800 + }, + "statictype": "static" + } + ] + }, + "StoreConfiguration": { + "id": 32, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Store all configuration items in non-volatile memory.", + "version": { + "first": 88, + "last": 130 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Store all configuration items in non-volatile memory.", + "version": { + "first": 131, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "SerialNumber": { + "id": 33, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Customer serial number string", + "version": { + "first": 139, + "last": 157 + }, + "statictype": "static" + } + ] + }, + "BackupCalendarSeconds": { + "id": 34, + "details": [ + { + "type": "time_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "NA", + "lvl8": "NA" + }, + "description": "Internal backup of calendar seconds", + "version": { + "first": 145, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "InstallationTime": { + "id": 35, + "details": [ + { + "type": "time_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time meter was determined to have been installed. 0 means not installed", + "version": { + "first": 147, + "last": 157 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "LocaleDecimalPoint": { + "id": 36, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Read to view the string used as a decimal point for this locale", + "version": { + "first": 151, + "last": 157 + }, + "statictype": "dynamic" + } + ] + }, + "LocaleThousandsSeparator": { + "id": 37, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Read to view the string used as a thousands separarator for this locale", + "version": { + "first": 151, + "last": 157 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "REBOOT": { + "id": 0 + }, + "REBOOT_STOP": { + "id": 1 + }, + "LOW_BATTERY": { + "id": 2 + }, + "LOW_BATTERY_STOP": { + "id": 3 + }, + "VERY_LOW_BATTERY": { + "id": 4 + }, + "VERY_LOW_BATTERY_STOP": { + "id": 5 + }, + "CONFIG_ERROR": { + "id": 6 + }, + "CONFIG_ERROR_STOP": { + "id": 7 + }, + "EMPTY_PIPE": { + "id": 8 + }, + "EMPTY_PIPE_STOP": { + "id": 9 + }, + "MAGNETIC_TAMPER": { + "id": 10 + }, + "MAGNETIC_TAMPER_STOP": { + "id": 11 + }, + "REVERSE_FLOW": { + "id": 12 + }, + "REVERSE_FLOW_STOP": { + "id": 13 + }, + "SUSPECT_LEAK": { + "id": 14 + }, + "SUSPECT_LEAK_STOP": { + "id": 15 + }, + "BROKEN_PIPE": { + "id": 16 + }, + "BROKEN_PIPE_STOP": { + "id": 17 + }, + "LOW_PRESSURE": { + "id": 18 + }, + "LOW_PRESSURE_STOP": { + "id": 19 + }, + "HIGH_PRESSURE": { + "id": 20 + }, + "HIGH_PRESSURE_STOP": { + "id": 21 + }, + "LOW_TEMPERATURE": { + "id": 22 + }, + "LOW_TEMPERATURE_STOP": { + "id": 23 + }, + "HIGH_TEMPERATURE": { + "id": 24 + }, + "HIGH_TEMPERATURE_STOP": { + "id": 25 + }, + "RADIO_ERROR": { + "id": 26 + }, + "RADIO_ERROR_STOP": { + "id": 27 + }, + "METROLOGY_PARAMS": { + "id": 28 + }, + "METROLOGY_PARAMS_STOP": { + "id": 29 + }, + "METROLOGY_MEASURE": { + "id": 30 + }, + "METROLOGY_MEASURE_STOP": { + "id": 31 + }, + "UNALLOCATED_6": { + "id": 32 + }, + "UNALLOCATED_6_STOP": { + "id": 33 + }, + "UNALLOCATED_7": { + "id": 34 + }, + "UNALLOCATED_7_STOP": { + "id": 35 + }, + "UNALLOCATED_8": { + "id": 36 + }, + "UNALLOCATED_8_STOP": { + "id": 37 + }, + "UNALLOCATED_9": { + "id": 38 + }, + "UNALLOCATED_9_STOP": { + "id": 39 + }, + "UNALLOCATED_10": { + "id": 40 + }, + "UNALLOCATED_10_STOP": { + "id": 41 + }, + "UNALLOCATED_11": { + "id": 42 + }, + "UNALLOCATED_11_STOP": { + "id": 43 + }, + "UNALLOCATED_12": { + "id": 44 + }, + "UNALLOCATED_12_STOP": { + "id": 45 + }, + "UNALLOCATED_13": { + "id": 46 + }, + "UNALLOCATED_13_STOP": { + "id": 47 + }, + "UNALLOCATED_14": { + "id": 48 + }, + "UNALLOCATED_14_STOP": { + "id": 49 + }, + "UNALLOCATED_15": { + "id": 50 + }, + "UNALLOCATED_15_STOP": { + "id": 51 + }, + "UNALLOCATED_16": { + "id": 52 + }, + "UNALLOCATED_16_STOP": { + "id": 53 + }, + "UNALLOCATED_17": { + "id": 54 + }, + "UNALLOCATED_17_STOP": { + "id": 55 + }, + "UNALLOCATED_18": { + "id": 56 + }, + "UNALLOCATED_18_STOP": { + "id": 57 + }, + "UNALLOCATED_19": { + "id": 58 + }, + "UNALLOCATED_19_STOP": { + "id": 59 + }, + "UNALLOCATED_20": { + "id": 60 + }, + "UNALLOCATED_20_STOP": { + "id": 61 + }, + "UNALLOCATED_21": { + "id": 62 + }, + "UNALLOCATED_21_STOP": { + "id": 63 + }, + "UNKNOWN_PARAMETER": { + "id": 64 + }, + "LOCALE_UNDEFINED": { + "id": 65 + }, + "NO_SUCH_ALARM": { + "id": 66 + }, + "OUT_OF_RANGE": { + "id": 67 + }, + "NOT_IMPLEMENTED": { + "id": 68 + }, + "BAD_CONFIG": { + "id": 69 + }, + "DID_NOT_STORE": { + "id": 70 + }, + "STORE_PENDING": { + "id": 71 + }, + "STRING_TOO_LONG": { + "id": 72 + } + } + }, + "FUNCTEST": { + "id": 10, + "version": { + "first": null, + "last": 1003 + }, + "registers": { + "GP30Test": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "LCDTest": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "Iloop": { + "id": 2, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "Pulse": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "Pressure": { + "id": 4, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "BatteryVoltage": { + "id": 5, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "SupplyVoltage": { + "id": 6, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "Temperature": { + "id": 7, + "details": [ + { + "type": "int16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "RFID": { + "id": 8, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "OpticalOutput": { + "id": 9, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "Radio": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "MultiTest": { + "id": 11, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "NFCUID": { + "id": 12, + "details": [ + { + "type": "uint64_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + }, + "CPUTest": { + "id": 13, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 1003 + }, + "statictype": null + } + ] + } + }, + "status": { + "BAD_CONFIG": { + "id": 0 + }, + "BAD_TEST": { + "id": 1 + }, + "NO_RESULT": { + "id": 2 + } + } + }, + "OPTICALPORT": { + "id": 5, + "version": { + "first": 1, + "last": 55 + }, + "registers": { + "BaudRateCapabilities": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Bitmask of supported rates on the given hardware.", + "version": { + "first": 2, + "last": 55 + }, + "statictype": "static" + } + ] + }, + "PacketSizeCapabilities": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Bitmask of supported packet sizes.", + "version": { + "first": 2, + "last": 55 + }, + "values": { + "default": 64 + }, + "statictype": "static" + } + ] + }, + "ProtocolVersion": { + "id": 2, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Version number as fixed point 16.16 format BCD.", + "version": { + "first": 2, + "last": 55 + }, + "statictype": "static" + } + ] + }, + "BaudRateSelected": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Baud rate in bits per second.", + "version": { + "first": 2, + "last": 55 + }, + "statictype": "dynamic" + } + ] + }, + "PacketSizeSelected": { + "id": 4, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Packet size in bytes.", + "version": { + "first": 2, + "last": 55 + }, + "statictype": "dynamic" + } + ] + }, + "ExternalUartControl": { + "id": 5, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "WO", + "lvl2": "WO", + "lvl3": "WO", + "lvl4": "WO", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Surrenders the UART to another application", + "version": { + "first": 49, + "last": 55 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "PAYLOAD_COUNT": { + "id": 0 + }, + "INVALID_SUBREASON": { + "id": 1 + }, + "INVALID_BAUDRATE": { + "id": 2 + }, + "INVALID_BUFFERSIZE": { + "id": 3 + }, + "CRCFAILURE": { + "id": 4 + }, + "UNRECOGNISEDCMD": { + "id": 5 + }, + "FRAMING": { + "id": 6 + }, + "OVERFLOW": { + "id": 7 + }, + "PACKETTIMEOUT": { + "id": 8 + }, + "INVALIDESCAPE": { + "id": 9 + }, + "UNKNOWN_PARAMETER": { + "id": 10 + }, + "TRAINING_FAILED": { + "id": 11 + }, + "NOBREAK": { + "id": 12 + } + } + }, + "SENSUSRADIO": { + "id": 16, + "version": { + "first": 100, + "last": 521 + }, + "registers": { + "TxInterval": { + "id": 0, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The SensusRF transmission interval in seconds for the BUPs", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 15, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "OmTxInterval": { + "id": 1, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The Open Metering transmission interval in seconds", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 3600, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "LatInterval": { + "id": 2, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The Listen After Talk interval as number 'n'. After every 'n' BUPs follows a BUP-LAT", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 3, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "WakeupInterval": { + "id": 3, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The Wake Up interval in seconds 's'. Every 's' seconds will the meter sniff for a WakeUp tone. 's' == 0 means active sending and no sniffing", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 3, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "MbusState": { + "id": 4, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The internal MBus state (Open Metering). A bit oriented value. Do not write if you do not know details", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 7, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FrequencyIndicator": { + "id": 5, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A number that shows the radio frequency used. Normally 433 or 868", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 433, + "minimum": 433, + "maximum": 868 + }, + "statictype": "static" + } + ] + }, + "FrequencyOffset": { + "id": 6, + "details": [ + { + "type": "int16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A radio frequency calibration parameter", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": -32768, + "maximum": 32767 + }, + "statictype": "static" + } + ] + }, + "PowerLevel": { + "id": 7, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A parameter for controling the radio power", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 127 + }, + "statictype": "static" + } + ] + }, + "SystemState": { + "id": 9, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The internal System State of the Radio", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "RadioAddress": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The radio address used by the meter", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "UtcTimeOffset": { + "id": 11, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The offset the between meter time and UTC", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": -32768, + "maximum": 32767 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "SentBytesCounter": { + "id": 12, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of bytes sent during meter lifetime", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + } + ] + }, + "ReceivedBytesCounter": { + "id": 13, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of bytes received during meter lifetime", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + } + ] + }, + "ResetCounter": { + "id": 14, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of resets the application SensusRfRadio has performed over lifetime", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BootLoaderState": { + "id": 15, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An internal state (enum) regarding the firmwware update", + "version": { + "first": 100, + "last": 521 + }, + "statictype": "static" + } + ] + }, + "LeakFlowThreshold": { + "id": 16, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The flow value of the leakage (low flow) detection", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 25, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "LeakFlowTimeThreshold": { + "id": 17, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time value of the leakage (low flow) detection", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 360, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BrokenPipeFlowThreshold": { + "id": 18, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The flow value of the broken pipe (high flow) detection", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 2500, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BrokenPipeFlowTimeThreshold": { + "id": 19, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time value of the broken pipe (high flow) detection", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 180, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureMaxThreshold": { + "id": 20, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The pressure value of the maximum (high) pressure alarm", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 160, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureMinThreshold": { + "id": 21, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The pressure value of the minimum (low) pressure alarm", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 3, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureLimitTimeMaxThreshold": { + "id": 22, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time value of the maximum (high) pressure alarm", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureLimitTimeMinThreshold": { + "id": 23, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The pressure value of the minimum (low) pressure alarm", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureMeasurePeriod": { + "id": 24, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period in seconds with which the pressure is measured", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 60, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureUnit": { + "id": 25, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An enum respresenting the unit of pressure (0 = no pressure sensor)", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureGaugeOffset": { + "id": 26, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The gauge offset of the pressure sensor value in mBar", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureMaxThreshold": { + "id": 27, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The temperature value of the maximum (high) temperature alarm", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 50, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureMinThreshold": { + "id": 28, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The temperature value of the minimum (low) temperature alarm", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureTimeMaxThreshold": { + "id": 29, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time value of the maximum (high) temperature alarm", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureTimeMinThreshold": { + "id": 30, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time value of the minimum (low) temperature alarm", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 600, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureMeasurePeriod": { + "id": 31, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period in seconds with which the temperature is measured (only 60 is valid)", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 60, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TemperatureUnit": { + "id": 32, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An enum respresenting the unit of temperature (1= Celsius, 2= Fahrenheit)", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PulseOutWidth": { + "id": 33, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An enumerator defining the currently active PulseWidth (0 ... 8 for non testmode values and 9 ... 15 for testmode)", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 15 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PulseOutDivisor": { + "id": 34, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A number representing the pulse weight multiplicator 1, 10, 100 or 1000", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 1000 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PulseOutMode": { + "id": 35, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An enum (0 to 3) representing the pulse output mode (0= deactivated, ...)", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 3 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "CurrentLoopMax": { + "id": 36, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A parameter regarding the non existing current output", + "version": { + "first": 100, + "last": 521 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "CurrentLoopSource": { + "id": 37, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A parameter regarding the non existing current output", + "version": { + "first": 100, + "last": 521 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "MainAlarmMask": { + "id": 38, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A byte value representing a mask of currently active (1) main alarms. These are the flow and genreral alarms", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 207, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ExtendedAlarmMask": { + "id": 39, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A byte value representing a mask of currently active (1) extended alarms. These are the temperature and pressure related alarms", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 60, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "HistoricalAlarmsDays": { + "id": 40, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A number of days (0 = off) after which alarms are cleared from the alarm byte values when they are no longer active", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 29, + "minimum": 0, + "maximum": 250 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TestModeTime": { + "id": 43, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value in minutes that defines the time the meter will stay in testmode after that mode was started", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + } + ] + }, + "EncryptionKey": { + "id": 44, + "details": [ + { + "type": "uint128_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The SensusRF encryption key (16 bytes) of the meter", + "version": { + "first": 100, + "last": 521 + }, + "statictype": "static" + } + ] + }, + "Authentification": { + "id": 45, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The SensusRF Authentification PINs (3 PINs of 4 byte each) of the meter", + "version": { + "first": 100, + "last": 521 + }, + "statictype": "static" + } + ] + }, + "UpgFWVersion": { + "id": 46, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The version of the complete Meter firmware package as represented by application FlexNetVersion", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "CustomerText": { + "id": 47, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An array of 8 bytes of freely programmable SensusRF customer Text", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "RadioLastReadTime": { + "id": 48, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An uint32_t value representing the meter's system DateTime when the radio had last time sent a telegram", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "LowBatDateTime": { + "id": 49, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An uint32_t value representing the meter's system DateTime when the radio had detected first the low-battery status", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "VeryLowBatDateTime": { + "id": 50, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A copy of the LowBatDateTime", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "Unit": { + "id": 51, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A byte value representing the currently active volume unit used by radio", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ExtendedUnitFlags": { + "id": 52, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A byte value representing additional information regarding the unit derived from the volume unit when used for flow or alternate volume", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "OTAControlFlags": { + "id": 53, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A byte value normaly never changed regarding general behavior of the firmware related to Over The Air updates", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "Tfx_Structure": { + "id": 54, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A complex structure of 84 bytes related to the Tfx mode of the meter respectively the volume channel", + "version": { + "first": 100, + "last": 521 + }, + "statictype": "dynamic" + } + ] + }, + "Dewa_Structure": { + "id": 55, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A structure of 4 uint16_t values used for the customer DEWA", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "DataLogContents": { + "id": 56, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A 4 byte bit mask representing whether the individual data items are logged in the periodic logging (1) or not (0)", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 201335811, + "minimum": 3, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "DataLogPeriod": { + "id": 57, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A number in seconds representing the time period for storing data records into the periodic logging file (memory)", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 60, + "minimum": 1, + "maximum": 1440 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "AverageFlowPeriod": { + "id": 58, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A number derived automatically from the DataLogPeriod that determins averaging periods for min and max calculations", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 5, + "minimum": 1, + "maximum": 60 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FixedDateReadingContents": { + "id": 59, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A 4 byte bit mask representing whether the individual data items are logged in the fixed date logging (1) or not (0)", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 201335811, + "minimum": 3, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FixedDateDayOfMonth": { + "id": 60, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The day of the month (0 = every day) on which at 00:00 the fixed date logging takes place", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 1, + "minimum": 1, + "maximum": 28 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "MetroRadioLifeTimeCounter": { + "id": 61, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An uint32_t counter used originally for debugging during development. Meanwhile out of use", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "PowerLevelOption": { + "id": 62, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An uint8_t value related to the power level used by the radio when an Irda module is present", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 127 + }, + "statictype": "static" + } + ] + }, + "ImpedanceCodeNew": { + "id": 63, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An uint16_t value used for adjusting the antenna impedance", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 32767 + }, + "statictype": "static" + } + ] + }, + "ImpedanceCodeOption": { + "id": 64, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An uint16_t value used for adjusting the antenna impedance if an Irda module is present", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 32767 + }, + "statictype": "static" + } + ] + }, + "IrDAModulePresent": { + "id": 65, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A parameter of type bool that signals the presence of an Irda module. The value is controlled by the meter", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + } + ] + }, + "StoreConfiguration": { + "id": 66, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write this value to '1' to tell the radio application to store all data into the file system of the meter", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + } + ] + }, + "LifeTimeSeconds": { + "id": 67, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of seconds since the radio left the production (Set to 0 at the end of the production proccess)", + "version": { + "first": 100, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "DutyCycleCredit": { + "id": 68, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value (counter) used only during development for release testing", + "version": { + "first": 412, + "last": 521 + }, + "values": { + "default": 4320000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "ActivityCredit": { + "id": 69, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A counter used to control the radio activity which must not exceed certain regulatory limits", + "version": { + "first": 412, + "last": 521 + }, + "values": { + "default": 1000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "PersistenceGroup1": { + "id": 70, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Storage item for HistoricalErrorLimitCounters Reverse(1, hi) and Leak(0, lo)", + "version": { + "first": 437, + "last": 521 + }, + "values": { + "default": 16711935, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PersistenceGroup2": { + "id": 71, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Storage item for HistoricalErrorLimitCounters Magnet(3, hi) and Air(2, lo)", + "version": { + "first": 437, + "last": 521 + }, + "values": { + "default": 16711935, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PersistenceGroup3": { + "id": 72, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Storage item for HistoricalErrorLimitCounters PressureMin(5, hi) and PressureMax(4, lo)", + "version": { + "first": 437, + "last": 521 + }, + "values": { + "default": 16711935, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PersistenceGroup4": { + "id": 73, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Storage item for HistoricalErrorLimitCounters TempMin(7, hi) and TempMax(6, lo)", + "version": { + "first": 437, + "last": 521 + }, + "values": { + "default": 16711935, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PressureCalibration": { + "id": 74, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "MMC(is uint32_t type, minimum -18, maximum 127 ok?) An uint16_t value to add an offset to the measured pressure value from -1270 to +1270 mBar for field calibration purposes", + "version": { + "first": 483, + "last": 521 + }, + "values": { + "default": 0, + "minimum": -128, + "maximum": 127 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TfxSecondaryChannelInfo_1": { + "id": 75, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "a 6 bytes big complex structure for the Tfx settings of the secondary channel 1 (temperature)", + "version": { + "first": 482, + "last": 521 + }, + "values": { + "default": 0, + "minimum": -128, + "maximum": 127 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "TfxSecondaryChannelInfo_2": { + "id": 76, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "a 6 bytes big complex structure for the Tfx settings of the secondary channel 2 (pressure)", + "version": { + "first": 482, + "last": 521 + }, + "values": { + "default": 0, + "minimum": -128, + "maximum": 127 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "OmsLastMessageCounter": { + "id": 77, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "An unit32_t value used to support/control the MB_MODE3_OMSv4B transmission uinque MCR", + "version": { + "first": 499, + "last": 521 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + } + }, + "status": { + "UNKNOWN_PARAMETER": { + "action": "According to the source code no action assigned to this error code", + "description": "It appears to be not used", + "id": 0 + }, + "BAD_CONFIG": { + "action": "Writing a new LOG or FDR content to Radio for forwarding to PeriodicLog", + "description": "A bit mask is written which is not valid (e.g. not all mandatory bits are equal to 1)", + "id": 1 + }, + "NO_CHANGE": { + "action": "Writing a new parameter value so several functions (e.g. Set HistoricalErrorLimitDays)", + "description": "The new value has no effect: New value == Old value)", + "id": 2 + }, + "STORE_PENDING": { + "action": "Writing SENSUSRADIO_STORECONFIGURATION to 1 ...", + "description": "The initiated storing action is still ongoing and the file system is busy. The final status is pending", + "id": 3 + }, + "DID_NOT_STORE": { + "action": "Writing SENSUSRADIO_STORECONFIGURATION to 1 ...", + "description": "This is a final status. The initiated storing action failed. An alternate status would be 'OK'", + "id": 4 + } + } + }, + "CONFIGEXCHANGE": { + "id": 4, + "version": { + "first": 3, + "last": 233 + }, + "registers": { + "Privilege": { + "id": 0, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Written to set the login level, followed by the password. Note, this can be read at any login level including 0.", + "version": { + "first": 3, + "last": 233 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 8 + }, + "statictype": "dynamic" + } + ] + }, + "Password": { + "id": 1, + "details": [ + { + "type": "uint96_t", + "privilege": { + "lvl1": "WO", + "lvl2": "WO", + "lvl3": "WO", + "lvl4": "WO", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Password for logging in, requires 3 consecutive writes", + "version": { + "first": 3, + "last": 233 + }, + "statictype": "dynamic" + } + ] + }, + "FOpen": { + "id": 2, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to open a file on the meter, handle returned", + "version": { + "first": 20, + "last": 233 + }, + "statictype": "dynamic" + } + ] + }, + "FClose": { + "id": 3, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to close a file on the meter", + "version": { + "first": 20, + "last": 233 + }, + "statictype": "dynamic" + } + ] + }, + "FRead": { + "id": 4, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to read bytes from an open file", + "version": { + "first": 20, + "last": 233 + }, + "statictype": "dynamic" + } + ] + }, + "FWrite": { + "id": 5, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to write bytes to an open file", + "version": { + "first": 20, + "last": 233 + }, + "statictype": "dynamic" + } + ] + }, + "FSeek": { + "id": 6, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to seek within an open file", + "version": { + "first": 20, + "last": 233 + }, + "statictype": "dynamic" + } + ] + }, + "FTell": { + "id": 7, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to determine position within an open file", + "version": { + "first": 20, + "last": 233 + }, + "statictype": "dynamic" + } + ] + }, + "Remove": { + "id": 8, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to delete a file", + "version": { + "first": 20, + "last": 233 + }, + "statictype": "dynamic" + } + ] + }, + "FEOF": { + "id": 9, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this determine whether the current position in an open file is the end of the file", + "version": { + "first": 20, + "last": 233 + }, + "statictype": "dynamic" + } + ] + }, + "Catalogue": { + "id": 10, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Returns a list of files in the filesystem that matches a string containing wildcards passed in", + "version": { + "first": 49, + "last": 233 + }, + "statictype": "dynamic" + } + ] + }, + "PCBSerialNumber": { + "id": 12, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "String containing the PCB serial number. Note, this can be read at any login level including 0", + "version": { + "first": 59, + "last": 233 + }, + "statictype": "static" + } + ] + }, + "ConfigAccessRights": { + "id": 13, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bitmask of login levels permitted to manipulate dangerous files", + "version": { + "first": 59, + "last": 233 + }, + "statictype": "static" + } + ] + }, + "FFlush": { + "id": 14, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Remote file operations, use this to flush write buffers to an open file", + "version": { + "first": 66, + "last": 233 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "LOCKED_OUT": { + "id": 0 + }, + "AUTHENTICATION_FAILURE": { + "id": 1 + }, + "ACCESS_DENIED": { + "id": 2 + }, + "UNKNOWN_PARAMETER": { + "id": 3 + }, + "IN_USE": { + "id": 4 + }, + "SIZES_DONT_MATCH": { + "id": 5 + }, + "CANT_READ_CONFIG_FILE": { + "id": 6 + }, + "USER_NOT_KNOWN": { + "id": 7 + }, + "CANT_CREATE_CONFIG_FILE": { + "id": 8 + }, + "STORE_DIDNT_STORE": { + "id": 9 + }, + "STORE_CORRUPT": { + "id": 10 + }, + "EXPECTED_WRITE": { + "id": 11 + }, + "EXPECTED_READ": { + "id": 12 + }, + "STOP_CYCLING": { + "id": 13 + }, + "TOO_MANY_OPEN": { + "id": 14 + }, + "NEVER_OPENED": { + "id": 15 + }, + "FILE_PROTECTED": { + "id": 16 + }, + "PARTIAL_RECALL": { + "id": 17 + }, + "DEFAULT_PASSWORD_USED": { + "id": 18 + } + } + }, + "NFC": { + "id": 21, + "version": { + "first": 1, + "last": 59 + }, + "registers": { + "EraseRMA": { + "id": 0, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RW" + }, + "description": "Writing TRUE to this register erases the RMA area", + "version": { + "first": 7, + "last": 59 + }, + "statictype": "dynamic" + } + ] + }, + "ForceUpdate": { + "id": 1, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write to this to force an update of some data. 0 - NDEF readings, 1 - NDEF details, 2 - RMA details", + "version": { + "first": 49, + "last": 59 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "BAD_CONFIG": { + "id": 0 + }, + "NDEF_WRITE_FAIL": { + "id": 1 + }, + "NDEF_VERIFY_FAIL": { + "id": 2 + }, + "NDEF_UPDATE_FAIL": { + "id": 3 + }, + "RMA_WRITE_FAIL": { + "id": 4 + }, + "RMA_VERIFY_FAIL": { + "id": 5 + }, + "RMA_BAD_ENTRY": { + "id": 6 + }, + "INIT_FAIL": { + "id": 7 + }, + "NDEF_CONFIG_FAIL": { + "id": 8 + }, + "RMA_CONFIG_FAIL": { + "id": 9 + }, + "NDEF_START_FAIL": { + "id": 10 + }, + "RMA_START_FAIL": { + "id": 11 + } + } + }, + "SYSTEM": { + "id": 0, + "version": { + "first": 141, + "last": 533 + }, + "registers": { + "TriggerUpgrade": { + "id": 0, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Writing TRUE to this register internally calls SysTriggerUpgrade() then returns the result.", + "version": { + "first": 141, + "last": 533 + }, + "statictype": "dynamic" + } + ] + }, + "CheckPresence": { + "id": 1, + "details": [ + { + "type": "RPC", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing an application id number allows the version number of that application to be read back.", + "version": { + "first": 150, + "last": 533 + }, + "statictype": "dynamic" + } + ] + }, + "PCBSerialNumber": { + "id": 2, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "A string reporting the PCB serial number, this string must be set using production equipment.", + "version": { + "first": 169, + "last": 533 + }, + "values": { + "default": "" + }, + "statictype": "static" + } + ] + }, + "CustomerSerialNumber0": { + "id": 3, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A string reported relating to the customer, this string can be written only once after manufacture. If subsequent changes are needed CUSTOMERSERIALNUMBER1 must be used.", + "version": { + "first": 170, + "last": 533 + }, + "values": { + "default": "" + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "CustomerSerialNumber1": { + "id": 4, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A string reported relating to the customer, this string can be written only once after manufacture. If subsequent changes are needed CUSTOMERSERIALNUMBER2 must be used.", + "version": { + "first": 170, + "last": 533 + }, + "values": { + "default": "" + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "CustomerSerialNumber2": { + "id": 5, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A string reported relating to the customer, this string can be written only once after manufacture. If subsequent changes are needed CUSTOMERSERIALNUMBER3 must be used.", + "version": { + "first": 170, + "last": 533 + }, + "values": { + "default": "" + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "CustomerSerialNumber3": { + "id": 6, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A string reported relating to the customer, this string can be written only once after manufacture. This is the last customer serial number change slot.", + "version": { + "first": 170, + "last": 533 + }, + "values": { + "default": "" + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "MonotonicSeconds": { + "id": 7, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The number of seconds since reboot.", + "version": { + "first": 176, + "last": 533 + }, + "statictype": "dynamic" + } + ] + }, + "CalendarSeconds": { + "id": 8, + "details": [ + { + "type": "time_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of seconds since 01-Jan-2000.", + "version": { + "first": 176, + "last": 533 + }, + "statictype": "dynamic" + } + ] + }, + "CoreRevision": { + "id": 9, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "A string reporting the product version string held in the system core binary.", + "version": { + "first": 196, + "last": 533 + }, + "statictype": "static" + } + ] + }, + "DriveCapacity": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing a drive number returns the drive capacity in bytes, or 0 if the drive is not ready, or an error if the driver is not configured to be present.", + "version": { + "first": 233, + "last": 533 + }, + "statictype": "dynamic" + } + ] + }, + "ExitReason": { + "id": 11, + "details": [ + { + "type": "status_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing an application id number allows the exit error number of that application to be read back.", + "version": { + "first": 258, + "last": 533 + }, + "statictype": "dynamic" + } + ] + }, + "CorePlatform": { + "id": 12, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Reports the instruction set of the hosting microprocessor in b8-15 and allocated platform number in b0-7.", + "version": { + "first": 265, + "last": 533 + }, + "statictype": "static" + } + ] + }, + "CRC": { + "id": 13, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing an application id number allows the CRC of that application to be read back.", + "version": { + "first": 279, + "last": 533 + }, + "statictype": "dynamic" + } + ] + }, + "UpgradePermissions": { + "id": 14, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bitfield of permissions releated to firmware upgrade", + "version": { + "first": 470, + "last": 533 + }, + "statictype": "static" + } + ] + }, + "CRC32": { + "id": 15, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing an application id number allows the 32 bit CRC of that application to be read back.", + "version": { + "first": 529, + "last": 533 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "OK": { + "id": 0 + }, + "ZERO_APPS": { + "id": 1 + }, + "NO_MEMORY": { + "id": 2 + }, + "NOT_IMPLEMENTED": { + "id": 3 + }, + "BLOCK_NOT_FOUND": { + "id": 4 + }, + "NO_SUCH_VAR": { + "id": 5 + }, + "NO_CLIB": { + "id": 6 + }, + "KEY_FAILURE": { + "id": 7 + }, + "NO_SLOTS_FREE": { + "id": 8 + }, + "VECTOR_OUT_OF_RANGE": { + "id": 9 + }, + "BAD_VECTOR_RELEASE": { + "id": 10 + }, + "DRIVER_BUSY": { + "id": 11 + }, + "OUT_OF_RANGE": { + "id": 12 + }, + "CANT_CANCEL_TICK": { + "id": 13 + }, + "ID_OUT_OF_RANGE": { + "id": 14 + }, + "HANDLE_OUT_OF_RANGE": { + "id": 15 + }, + "INCAPABLE_HARDWARE": { + "id": 16 + }, + "ALREADY_OPEN": { + "id": 17 + }, + "STRING_TOO_LONG": { + "id": 18 + }, + "CORRUPT_CONFIGURATION": { + "id": 19 + }, + "TIMEOUT": { + "id": 20 + }, + "NO_PRIVILEGE": { + "id": 21 + }, + "DEVICE_DORMANT": { + "id": 22 + }, + "MEDIA_FAILURE": { + "id": 23 + }, + "BUFFER_OVERFLOW": { + "id": 24 + }, + "UPGRADE_SYNTAX_ERROR": { + "id": 25 + }, + "UPGRADE_DEPENDENCY_NOT_MET": { + "id": 26 + }, + "UPGRADE_MISSING": { + "id": 27 + }, + "UPGRADE_FRAGMENTED_BY_CLIB": { + "id": 28 + }, + "TRUNCATED": { + "id": 29 + }, + "INVALID_HEADER": { + "id": 30 + }, + "WONT_DELETE_CLIB": { + "id": 31 + }, + "BAD_REGISTER_VALUE": { + "id": 32 + }, + "NO_CHANGE_MADE": { + "id": 33 + }, + "NOT_ATOMIC": { + "id": 34 + }, + "CALENDAR_CHANGED": { + "id": 35 + }, + "WORM_FIELD": { + "id": 36 + }, + "CONVERSION_UNSUPPORTED": { + "id": 37 + }, + "CPU_PERMISSION_FAULT": { + "id": 38 + }, + "CPU_SOFTWARE_FAULT": { + "id": 39 + }, + "CPU_DECODE_FAULT": { + "id": 40 + }, + "CPU_ADDRESS_ACCESS_FAULT": { + "id": 41 + }, + "CPU_UNCAUGHT_FAULT": { + "id": 42 + }, + "ACCURACY_LOST": { + "id": 43 + }, + "EXIT_FAILURE": { + "id": 44 + }, + "CANT_CANCEL_CALLBACK": { + "id": 45 + }, + "RECOVERED_SPACE": { + "id": 46 + }, + "DRIVE_FULL": { + "id": 47 + }, + "NO_FILE_HANDLES_AVAILABLE": { + "id": 48 + }, + "EXCESSIVE_RESTARTS": { + "id": 49 + }, + "MPU_SETUP_FAILED": { + "id": 50 + }, + "DEVICE_NOT_OPEN": { + "id": 51 + }, + "NO_RESPONSE": { + "id": 52 + }, + "EXIT_WATCHDOG": { + "id": 53 + }, + "WONT_DELETE_SPECIAL": { + "id": 54 + }, + "WONT_UPGRADE_SPECIAL": { + "id": 55 + } + } + }, + "METROLOGYASST": { + "id": 18, + "version": { + "first": 4, + "last": 113 + }, + "registers": { + "ILoopMaxFlowRate": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The flow rate that gives max output on the current loop", + "version": { + "first": 5, + "last": 36 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The flow rate that gives max output on the current loop", + "version": { + "first": 82, + "last": 113 + }, + "statictype": "static" + } + ] + }, + "StoreConfiguration": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing TRUE to this register stores the values of the other registers to the non-volatile memory", + "version": { + "first": 7, + "last": 81 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Writing TRUE to this register stores the values of the other registers to the non-volatile memory", + "version": { + "first": 82, + "last": 113 + }, + "statictype": "dynamic" + } + ] + }, + "PulseWeight": { + "id": 2, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Volume represented by one pulse in ml. If this is zero pulse output will not be enabled", + "version": { + "first": 7, + "last": 81 + }, + "values": { + "default": 1000, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Volume represented by one pulse in ml. If this is zero pulse output will not be enabled", + "version": { + "first": 82, + "last": 101 + }, + "values": { + "default": 1000, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Volume represented by one pulse. Units of (2^-5)ml. If this is zero pulse output will not be enabled", + "version": { + "first": 102, + "last": 113 + }, + "values": { + "default": 32000, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "PulseMode": { + "id": 3, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The way pulses are output on the two available channels. This is an enum of type pulse_mode_t.", + "version": { + "first": 7, + "last": 81 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The way pulses are output on the two available channels. This is an enum of type pulse_mode_t.", + "version": { + "first": 82, + "last": 97 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The way pulses are output on the two available channels. This is an enum of type pulse_mode_t.", + "version": { + "first": 98, + "last": 113 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 7 + }, + "statictype": "static" + } + ] + }, + "PulseLength": { + "id": 4, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The length of a pulse. This is an enum of type pulse_length_t.", + "version": { + "first": 7, + "last": 72 + }, + "values": { + "default": 5, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The length of a pulse. This is an enum of type pulse_length_t.", + "version": { + "first": 73, + "last": 81 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The length of a pulse. This is an enum of type pulse_length_t.", + "version": { + "first": 82, + "last": 113 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "FlowUnits": { + "id": 5, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of flow rate to display on the LCD. An enum of type displayflowunits_t", + "version": { + "first": 8, + "last": 81 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 8 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of flow rate to display on the LCD. An enum of type displayflowunits_t", + "version": { + "first": 82, + "last": 113 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 8 + }, + "statictype": "static" + } + ] + }, + "FlowPoint": { + "id": 6, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Position of the decimal point on the LCD for flow rate. An enum of type displayflowpoint_t", + "version": { + "first": 8, + "last": 81 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 4 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Position of the decimal point on the LCD for flow rate. An enum of type displayflowpoint_t", + "version": { + "first": 82, + "last": 113 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 4 + }, + "statictype": "static" + } + ] + }, + "ILoopRate": { + "id": 7, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The update rate for the current loop", + "version": { + "first": 9, + "last": 36 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The update rate for the current loop", + "version": { + "first": 82, + "last": 113 + }, + "statictype": "static" + } + ] + }, + "TemperatureUnits": { + "id": 8, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Units for displaying temperature on the LCD. 0 – Celcius, 1 – Fahrenheit.", + "version": { + "first": 13, + "last": 81 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Units for displaying temperature on the LCD. 0 – Celcius, 1 – Fahrenheit.", + "version": { + "first": 82, + "last": 113 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "PressureUnits": { + "id": 9, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Units for displaying pressure on the LCD. 0 – Mpa, 1 – PSI.", + "version": { + "first": 13, + "last": 81 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Units for displaying pressure on the LCD. 0 – Mpa, 1 – PSI.", + "version": { + "first": 82, + "last": 113 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "PressureRate": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time between pressure measurements in milliseconds", + "version": { + "first": 13, + "last": 71 + }, + "values": { + "default": 300000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time between pressure measurements in milliseconds", + "version": { + "first": 72, + "last": 81 + }, + "values": { + "default": 60000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time between pressure measurements in milliseconds", + "version": { + "first": 82, + "last": 113 + }, + "values": { + "default": 60000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "PressureOffset": { + "id": 11, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Value in Pa to subtract from measured value to correct for atmospheric pressure", + "version": { + "first": 13, + "last": 58 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Value in Pa to subtract from measured value to correct for atmospheric pressure", + "version": { + "first": 59, + "last": 79 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Value in Pa to subtract from measured value to correct for atmospheric pressure", + "version": { + "first": 80, + "last": 81 + }, + "values": { + "default": 0, + "minimum": -2000000, + "maximum": 2000000 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Value in Pa to subtract from measured value to correct for atmospheric pressure", + "version": { + "first": 82, + "last": 113 + }, + "values": { + "default": 0, + "minimum": -2000000, + "maximum": 2000000 + }, + "statictype": "static" + } + ] + }, + "PressurePresent": { + "id": 12, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether there is a pressure sensor present", + "version": { + "first": 63, + "last": 70 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether there is a pressure sensor present", + "version": { + "first": 71, + "last": 113 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "PressureMeasure": { + "id": 13, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write TRUE to trigger a pressure measurement, Read to get the latest measured value in Pa", + "version": { + "first": 65, + "last": 113 + }, + "statictype": "dynamic" + } + ] + }, + "LatestFlowRate": { + "id": 14, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Returns the latest flow rate. Write 0 to change scaling to internal scaling, 1 to change to display scaling", + "version": { + "first": 92, + "last": 113 + }, + "statictype": "dynamic" + } + ] + }, + "GenerateFwdPulses": { + "id": 15, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Generate some artificial pulses, used for testing", + "version": { + "first": 97, + "last": 113 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "dynamic" + } + ] + }, + "GenerateRevPulses": { + "id": 16, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Generate some artificial pulses, used for testing", + "version": { + "first": 97, + "last": 113 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "dynamic" + } + ] + }, + "PulseEvenDistribution": { + "id": 17, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Boolean value for whether pulse output is to space the pulses evenly (TRUE) or grouped (FALSE)", + "version": { + "first": 98, + "last": 113 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "PulseResolution": { + "id": 18, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The number of bits of fractional resolution in a pulse event", + "version": { + "first": 98, + "last": 113 + }, + "values": { + "minimum": 0, + "maximum": 7 + }, + "statictype": "dynamic" + } + ] + }, + "PressureCalibration": { + "id": 19, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Value in Pa to add to measured value after recalibration to correct for sensor drift over time", + "version": { + "first": 108, + "last": 113 + }, + "statictype": "static" + } + ] + } + }, + "status": { + "BAD_CONFIG": { + "id": 0 + }, + "DID_NOT_STORE": { + "id": 1 + }, + "PENDING_STORE": { + "id": 2 + } + } + }, + "LOGGER": { + "id": 8, + "version": { + "first": 1, + "last": 18 + }, + "registers": { + "Quota": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A quota in bytes for the log. The Logger does not apply any policy to how the quota is allocated, this is left as a restriction to be applied on a product by product basis.", + "version": { + "first": 1, + "last": 18 + }, + "values": { + "default": 4096, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "Drive": { + "id": 1, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The drive to write to.", + "version": { + "first": 1, + "last": 18 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "TriggerLogFlush": { + "id": 2, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Writing TRUE will force a log flush", + "version": { + "first": 7, + "last": 18 + }, + "statictype": "dynamic" + } + ] + }, + "StoreConfiguration": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 16, + "last": 18 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "UNKNOWN_PARAMETER": { + "id": 0 + }, + "RESTARTED": { + "id": 1 + }, + "BLOCK_LISTING": { + "id": 2 + }, + "PENDING_STORE": { + "id": 3 + }, + "DID_NOT_STORE": { + "id": 4 + } + } + }, + "TESTMANAGER": { + "id": 98, + "version": { + "first": null, + "last": 36 + }, + "registers": { + "OutputFile": { + "id": 0, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 36 + }, + "statictype": null + } + ] + }, + "TestNumber": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 36 + }, + "statictype": null + } + ] + }, + "TestStatus": { + "id": 2, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 36 + }, + "statictype": null + } + ] + }, + "TrapError": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 36 + }, + "statictype": null + } + ] + }, + "TestParameter": { + "id": 4, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem ipsum", + "version": { + "first": null, + "last": 36 + }, + "statictype": null + } + ] + } + }, + "status": { + "FAIL": { + "id": 0 + }, + "UNKNOWN_PARAMETER": { + "id": 1 + }, + "READ_ONLY_PARAMETER": { + "id": 2 + }, + "BUSY": { + "id": 3 + }, + "STRING_TOO_LONG": { + "id": 4 + }, + "FOPEN_FAIL": { + "id": 5 + }, + "FSEEK_FAIL": { + "id": 6 + }, + "FWRITE_FAIL": { + "id": 7 + }, + "FCLOSE_FAIL": { + "id": 8 + }, + "MALFORMED_FILENAME": { + "id": 9 + }, + "UNKNOWN_ACTION": { + "id": 10 + }, + "FILEREMOVE_FAIL": { + "id": 11 + }, + "FREAD_FAIL": { + "id": 12 + } + } + }, + "PERIODICLOG": { + "id": 17, + "version": { + "first": 1, + "last": 75 + }, + "registers": { + "DataLogContents": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit Mask of the items to store in LOG memory", + "version": { + "first": 10, + "last": 75 + }, + "values": { + "default": 201335811, + "minimum": 3, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "DataLogPeriod": { + "id": 1, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Storage Period of the LOG memory in minutes", + "version": { + "first": 10, + "last": 75 + }, + "values": { + "default": 60, + "minimum": 1, + "maximum": 1440 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "AverageFlowPeriod": { + "id": 2, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Averiging period for the Min/Max calculation of LOG&FDR memory", + "version": { + "first": 10, + "last": 75 + }, + "values": { + "default": 5, + "minimum": 1, + "maximum": 60 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FixedDateReadingContents": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bit Mask of the items to store in FDR memory", + "version": { + "first": 10, + "last": 75 + }, + "values": { + "default": 201335811, + "minimum": 3, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FixedDateDayOfMonth": { + "id": 4, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The day of month the FDR storage will take place at 00:00", + "version": { + "first": 10, + "last": 75 + }, + "values": { + "default": 1, + "minimum": 1, + "maximum": 28 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "PeriodicLogLifeTimeCounter": { + "id": 5, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A counter used for internal purposes", + "version": { + "first": 15, + "last": 75 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "dynamic" + } + ] + }, + "ResetCounter": { + "id": 6, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A counter to monitor the application resets", + "version": { + "first": 20, + "last": 75 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + } + }, + "status": { + "FOPEN": { + "action": "Perform a FOPEN to any of the logging files logdata, fdrdata, evtdata ... ", + "description": "FOPEN action failed due to any reason (means fopen error)", + "id": 0 + }, + "BAD_CONFIG": { + "action": "Handle the internal dual logging file access by SensusRfRadio and by PeriodicLogging", + "description": "Mutual Exclude file access failed due to a wrong internal status order", + "id": 1 + }, + "STRING_TOO_LONG": { + "action": "Currently unused or not define action", + "description": "Currently not generated or returned", + "id": 2 + }, + "FILES_IN_USE": { + "action": "Handle the internal dual logging file access by SensusRfRadio and by PeriodicLogging", + "description": "File access denied because the other party has currently access to the file(s)", + "id": 3 + } + } + }, + "POWERMON": { + "id": 1, + "version": { + "first": 17, + "last": 68 + }, + "registers": { + "BatteryVoltage": { + "id": 0, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Measured battery terminal voltage in 1mV units.", + "version": { + "first": 17, + "last": 68 + }, + "statictype": "dynamic" + } + ] + }, + "BatteryManufacturer": { + "id": 1, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "String describing the battery brand.", + "version": { + "first": 17, + "last": 68 + }, + "values": { + "default": "Tadiran" + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BatterySize": { + "id": 2, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "One of: 0 = battery absent; 1 = built in; 2 = other; 3 = AA; 4 = AAA; 5 = C; 6 = D; 255 = unknown", + "version": { + "first": 17, + "last": 68 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BatteryQuantity": { + "id": 4, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The number of installed batteries.", + "version": { + "first": 17, + "last": 59 + }, + "values": { + "default": 1 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of installed batteries.", + "version": { + "first": 60, + "last": 68 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "BatteryRatedVoltage": { + "id": 5, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Datasheet terminal voltage in 100mV units as manufactured.", + "version": { + "first": 17, + "last": 68 + }, + "values": { + "default": 36, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BatteryVoltageMinThreshold": { + "id": 7, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Datasheet terminal voltage in 100mV units below which the cell is considered empty.", + "version": { + "first": 17, + "last": 68 + }, + "values": { + "default": 28, + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "BatterySelection": { + "id": 8, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Chosen manufacturer from the internal lookup table of known batteries.", + "version": { + "first": 20, + "last": 68 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "TotalUsedCharge": { + "id": 9, + "details": [ + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Accumulated charge used in uAs.", + "version": { + "first": 24, + "last": 68 + }, + "statictype": "dynamic" + } + ] + }, + "TotalUsedSeconds": { + "id": 10, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Elapsed time since manufacture in seconds.", + "version": { + "first": 39, + "last": 68 + }, + "statictype": "dynamic" + } + ] + }, + "WarnFromClamp": { + "id": 11, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Time in seconds for which the projected end time cannot exceed.", + "version": { + "first": 39, + "last": 68 + }, + "values": { + "default": 473040000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "BatteryMilliAHrRating": { + "id": 12, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "Datasheet capacity in mAh units as manufactured.", + "version": { + "first": 45, + "last": 68 + }, + "values": { + "default": 19000, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "StoreConfiguration": { + "id": 13, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 61, + "last": 68 + }, + "statictype": "dynamic" + } + ] + }, + "CriticalRepeatLimit": { + "id": 14, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of 15 minute periods of consecutive low battery voltage required for the battery to be deemed critically low", + "version": { + "first": 66, + "last": 68 + }, + "values": { + "default": 96, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + } + }, + "status": { + "TABLE_FULL": { + "id": 0 + }, + "UNKNOWN_PARAMETER": { + "id": 1 + }, + "OUT_OF_RANGE": { + "id": 2 + }, + "STOP_CYCLING": { + "id": 3 + }, + "TEMPERATURE_LIMIT": { + "id": 4 + }, + "BATTERY_STATUS_CHANGED": { + "id": 5 + }, + "BATTERY_CRITICAL": { + "id": 6 + }, + "PENDING_STORE": { + "id": 7 + }, + "DID_NOT_STORE": { + "id": 8 + } + } + }, + "GENESISFLOW": { + "id": 15, + "version": { + "first": 7, + "last": 606 + }, + "registers": { + "SampleRate": { + "id": 0, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 7, + "last": 203 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 204, + "last": 267 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate in Hz that each GP30 takes measurements", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 2, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FirstHitLvlUp1": { + "id": 1, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 1, units of 0.88mV", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "FirstHitLvlUp2": { + "id": 2, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 2, units of 0.88mV", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "FirstHitLvlUp3": { + "id": 3, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the upstream direction for channel 3, units of 0.88mV", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "FirstHitLvlDown1": { + "id": 4, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 1, units of 0.88mV", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "FirstHitLvlDown2": { + "id": 5, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 2, units of 0.88mV", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "FirstHitLvlDown3": { + "id": 6, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The first hit level in the downstream direction for channel 3, units of 0.88mV", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 20, + "minimum": -128, + "maximum": 127 + }, + "statictype": "dynamic" + } + ] + }, + "StartHit": { + "id": 7, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The hit number to consider as the first hit", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The hit number to consider as the first hit", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The hit number to consider as the first hit", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The hit number to consider as the first hit", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The hit number to consider as the first hit", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 6, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "AmplitudePeakDetectEnd": { + "id": 8, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Where to stop running the amplitude peak detection", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Where to stop running the amplitude peak detection", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Where to stop running the amplitude peak detection", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Where to stop running the amplitude peak detection", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Where to stop running the amplitude peak detection", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 19, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "NumFirePulses": { + "id": 9, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of pulses to fire for a measurement", + "version": { + "first": 7, + "last": 267 + }, + "values": { + "default": 17, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of pulses to fire for a measurement", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 17, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of pulses to fire for a measurement", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 17, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of pulses to fire for a measurement", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 17, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of pulses to fire for a measurement", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 17, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "DisplayPow10": { + "id": 10, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", + "version": { + "first": 36, + "last": 267 + }, + "values": { + "default": -6, + "minimum": -128, + "maximum": 127 + }, + "statictype": "static" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": -6, + "minimum": -128, + "maximum": 127 + }, + "statictype": "static" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": -6, + "minimum": -128, + "maximum": 127 + }, + "statictype": "static" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": -6, + "minimum": -128, + "maximum": 127 + }, + "statictype": "static" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The weight of the lowest display digit as a power of 10. The accepted range of values depends on the LCD present and the DisplayUnits chosen", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": -6, + "minimum": -128, + "maximum": 127 + }, + "statictype": "static" + } + ] + }, + "DisplayUnits": { + "id": 11, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", + "version": { + "first": 36, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The units of volume to display. The accepted range of values depends on the LCD present and the DisplayPow10 chosen", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + } + ] + }, + "MeterSize": { + "id": 12, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 45, + "last": 237 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 9 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 238, + "last": 267 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 17 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 17 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 17 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 17 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The meter pipe size", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 17 + }, + "statictype": "static" + } + ] + }, + "CalFactor1": { + "id": 13, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 45, + "last": 204 + }, + "values": { + "default": 62500, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 201, + "last": 267 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 1", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "CalFactor2": { + "id": 14, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 45, + "last": 204 + }, + "values": { + "default": 62500, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 201, + "last": 267 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 2", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "CalFactor3": { + "id": 15, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 45, + "last": 204 + }, + "values": { + "default": 62500, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 201, + "last": 267 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration factor for ultrasonic channel 3", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 15625, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "ZeroOffset1": { + "id": 16, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in usual time of flight scaling (ie LS bit is 2^-38 seconds)", + "version": { + "first": 45, + "last": 132 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 133, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 1 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + } + ] + }, + "ZeroOffset2": { + "id": 17, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in usual time of flight scaling (ie LS bit is 2^-38 seconds)", + "version": { + "first": 45, + "last": 132 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 133, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 2 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + } + ] + }, + "ZeroOffset3": { + "id": 18, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in usual time of flight scaling (ie LS bit is 2^-38 seconds)", + "version": { + "first": 45, + "last": 132 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 133, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The delta time of flight expected on ultrasound channel 3 at zero flow. Value is in units 4 times smaller than usual time of flight scaling (ie LS bit is 2^-40 seconds)", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "static" + } + ] + }, + "ScaledBilling": { + "id": 19, + "details": [ + { + "type": "int64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The scaled volume value shown on the display. In the units and precision set by DisplayUnits and DisplayPow10 respectively. Decimal point is not represented in this value", + "version": { + "first": 47, + "last": 311 + }, + "statictype": "dynamic" + }, + { + "type": "int64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The scaled volume value shown on the display. In the units and precision set by DisplayUnits and DisplayPow10 respectively. Decimal point is not represented in this value", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "int64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The scaled volume value shown on the display. In the units and precision set by DisplayUnits and DisplayPow10 respectively. Decimal point is not represented in this value", + "version": { + "first": 500, + "last": 509 + }, + "statictype": "dynamic" + }, + { + "type": "int64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The scaled volume value shown on the display. In the units and precision set by DisplayUnits and DisplayPow10 respectively. Decimal point is not represented in this value", + "version": { + "first": 601, + "last": 606 + }, + "statictype": "dynamic" + } + ] + }, + "ResetAccumulators": { + "id": 20, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "WO", + "lvl2": "WO", + "lvl3": "WO", + "lvl4": "WO", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to reset all accumulated volume to zero", + "version": { + "first": 47, + "last": 267 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to reset all accumulated volume to zero", + "version": { + "first": 268, + "last": 311 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to reset all accumulated volume to zero", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to reset all accumulated volume to zero", + "version": { + "first": 500, + "last": 509 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to reset all accumulated volume to zero", + "version": { + "first": 601, + "last": 606 + }, + "statictype": "dynamic" + } + ] + }, + "ForwardArrow": { + "id": 21, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", + "version": { + "first": 47, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow direction. 0 - undecided, 1 - right, 2 - left", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 2 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "LedMode": { + "id": 22, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 47, + "last": 203 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 204, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The type of data output by the green LED", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 6 + }, + "statictype": "static" + } + ] + }, + "StoreCalibration": { + "id": 23, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store calibration values to non-volatile storage. Read back for status", + "version": { + "first": 54, + "last": 311 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store calibration values to non-volatile storage. Read back for status", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store calibration values to non-volatile storage. Read back for status", + "version": { + "first": 500, + "last": 509 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store calibration values to non-volatile storage. Read back for status", + "version": { + "first": 601, + "last": 606 + }, + "statictype": "dynamic" + } + ] + }, + "UnscaledFwd": { + "id": 24, + "details": [ + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 54, + "last": 311 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 500, + "last": 509 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The forward flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 601, + "last": 606 + }, + "statictype": "dynamic" + } + ] + }, + "UnscaledRev": { + "id": 25, + "details": [ + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The reverse flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 54, + "last": 311 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The reverse flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The reverse flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 500, + "last": 509 + }, + "statictype": "dynamic" + }, + { + "type": "uint64_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The reverse flow accumulator volume. The scale depends on the meter size", + "version": { + "first": 601, + "last": 606 + }, + "statictype": "dynamic" + } + ] + }, + "LowFlowThreshold": { + "id": 26, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", + "version": { + "first": 55, + "last": 267 + }, + "values": { + "default": 200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The volume that must pass in LowFlowMaxPeriod for it to be registered as real flow. Units of ml", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "LowFlowMaxPeriod": { + "id": 27, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", + "version": { + "first": 55, + "last": 267 + }, + "values": { + "default": 3932160, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 3932160, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 3932160, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 3932160, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time during which LowFlowThreshold volume must pass for it to be registered as real flow. Units of seconds << 16", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 3932160, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "UpdateThreshold": { + "id": 28, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", + "version": { + "first": 55, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The amount of flow in ml to accumulate before updating the main scaled accumulators.", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "ArrowThreshold": { + "id": 29, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", + "version": { + "first": 55, + "last": 267 + }, + "values": { + "default": 5000000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 5000000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 5000000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 5000000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The net volume in ml that must flow in one direction for the forward arrow to be set", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 5000000, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "FireBuffer1": { + "id": 30, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 1 to be used", + "version": { + "first": 64, + "last": 267 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 1 to be used", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 1 to be used", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 1 to be used", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 1 to be used", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FireBuffer2": { + "id": 31, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 2 to be used", + "version": { + "first": 64, + "last": 267 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 2 to be used", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 2 to be used", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 2 to be used", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 2 to be used", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FireBuffer3": { + "id": 32, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 3 to be used", + "version": { + "first": 64, + "last": 267 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 3 to be used", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 3 to be used", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 3 to be used", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The fire buffer within the GP30 on channel 3 to be used", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "TriggerActive": { + "id": 33, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "WO", + "lvl2": "WO", + "lvl3": "WO", + "lvl4": "WO", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 75, + "last": 267 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 268, + "last": 311 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 307, + "last": 311 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 500, + "last": 509 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Active mode. This is the normal measurement mode", + "version": { + "first": 601, + "last": 606 + }, + "statictype": "dynamic" + } + ] + }, + "TriggerIdle": { + "id": 34, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 0 to put GenesisFlow in Active mode, otherwise put GenesisFlow in Idle mode. Idle mode displays just the number written to TriggerIdle. No measurements are performed. Read returns the number written", + "version": { + "first": 75, + "last": 311 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 0 to put GenesisFlow in Active mode, otherwise put GenesisFlow in Idle mode. Idle mode displays just the number written to TriggerIdle. No measurements are performed. Read returns the number written", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 0 to put GenesisFlow in Active mode, otherwise put GenesisFlow in Idle mode. Idle mode displays just the number written to TriggerIdle. No measurements are performed. Read returns the number written", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 0 to put GenesisFlow in Active mode, otherwise put GenesisFlow in Idle mode. Idle mode displays just the number written to TriggerIdle. No measurements are performed. Read returns the number written", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "dynamic" + } + ] + }, + "MaxValidDeltaToF": { + "id": 35, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 87, + "last": 267 + }, + "values": { + "default": 247390, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 309237, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 309237, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 309237, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum delta time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 309237, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MaxValidToF": { + "id": 36, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 87, + "last": 267 + }, + "values": { + "default": 24739011, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 24739011, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 24739011, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 24739011, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum absolute time of flight, above this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 24739011, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MinValidToF": { + "id": 37, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 87, + "last": 267 + }, + "values": { + "default": 13743895, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 13743895, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 13743895, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 13743895, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The minimum absolute time of flight, below this the measurement is deemed bad. In 2^-38 seconds units", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 13743895, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "FirstHitPercent1": { + "id": 38, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 1", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FirstHitPercent2": { + "id": 39, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 2", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FirstHitPercent3": { + "id": 40, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The percentage of the measured amplitude to use for the first hit level for channel 3", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "FirstHitShift": { + "id": 41, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 4, + "minimum": 3, + "maximum": 8 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 4, + "minimum": 3, + "maximum": 8 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 4, + "minimum": 3, + "maximum": 8 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 4, + "minimum": 3, + "maximum": 8 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A value describing how long the amplitude is averaged over for calculating the first hit level. This is the amount each amplitude value is shifted down before being added to the moving average", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 4, + "minimum": 3, + "maximum": 8 + }, + "statictype": "static" + } + ] + }, + "FirstHitMinimum": { + "id": 42, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum absolute first hit level value", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum absolute first hit level value", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum absolute first hit level value", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum absolute first hit level value", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum absolute first hit level value", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 20, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "ToFErrorLimit": { + "id": 43, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", + "version": { + "first": 93, + "last": 267 + }, + "values": { + "default": 16, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 16, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 16, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 16, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of ToF errors to allow before resetting the first hit levels to FirstHitMinimum", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 16, + "minimum": 1, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "FirstHitUpdatePeriod": { + "id": 44, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period (in seconds) between first hit level updates", + "version": { + "first": 99, + "last": 267 + }, + "values": { + "default": 10, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period (in seconds) between first hit level updates", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 10, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period (in seconds) between first hit level updates", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 10, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period (in seconds) between first hit level updates", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 10, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The period (in seconds) between first hit level updates", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 10, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "PipeFillingDelay": { + "id": 45, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", + "version": { + "first": 119, + "last": 267 + }, + "values": { + "default": 30, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 30, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 30, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 30, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The time (in seconds) to maintain zero flow after leaving empty pipe", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 30, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "ToFTempOffset1": { + "id": 46, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", + "version": { + "first": 124, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 1. In units of 2^-38 seconds", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ToFTempOffset2": { + "id": 47, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", + "version": { + "first": 124, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 2. In units of 2^-38 seconds", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ToFTempOffset3": { + "id": 48, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", + "version": { + "first": 124, + "last": 267 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The calibration offset for the temperature measurement on channel 3. In units of 2^-38 seconds", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": -2147483648, + "maximum": 2147483647 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "ToFTempCalibrate": { + "id": 49, + "details": [ + { + "type": "int32_t", + "privilege": { + "lvl1": "WO", + "lvl2": "WO", + "lvl3": "WO", + "lvl4": "WO", + "lvl5": "WO", + "lvl6": "WO", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", + "version": { + "first": 124, + "last": 204 + }, + "values": { + "minimum": 0, + "maximum": 270336 + }, + "statictype": "dynamic" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", + "version": { + "first": 205, + "last": 311 + }, + "values": { + "minimum": 0, + "maximum": 286720 + }, + "statictype": "dynamic" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "minimum": 0, + "maximum": 286720 + }, + "statictype": "dynamic" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "minimum": 0, + "maximum": 286720 + }, + "statictype": "dynamic" + }, + { + "type": "int32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "WO", + "lvl8": "WO" + }, + "description": "Write the current temperature to this register to trigger a calibration step. In units of 2^-12 degrees celcius", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "minimum": 0, + "maximum": 286720 + }, + "statictype": "dynamic" + } + ] + }, + "StoreConfiguration": { + "id": 50, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 141, + "last": 267 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 268, + "last": 311 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 450, + "last": 463 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 500, + "last": 509 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 601, + "last": 606 + }, + "statictype": "dynamic" + } + ] + }, + "SealDisplay": { + "id": 51, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", + "version": { + "first": 161, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to stop various display related registers being changed. Read back 1 for 'sealed' 0 for 'unsealed'", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "TriggerTest": { + "id": 52, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", + "version": { + "first": 162, + "last": 267 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to put GenesisFlow in Test mode. This differs from normal measurement mode in that the volume is presented to 3 extra decimal places if possible. Read back 1 for Test mode, 0 otherwise", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "dynamic" + } + ] + }, + "MaxValidAmplitude": { + "id": 53, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Maximum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 168, + "last": 267 + }, + "values": { + "default": 2936012800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Maximum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 2936012800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Maximum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 2936012800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Maximum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 2936012800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Maximum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 2936012800, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MinValidAmplitude": { + "id": 54, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 168, + "last": 267 + }, + "values": { + "default": 209715200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 209715200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 209715200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 209715200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Minimum amplitude for a valid signal in 2^-22mV units", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 209715200, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "HardErrorLimit": { + "id": 55, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of hard errors to allow before declaring a fatal error", + "version": { + "first": 176, + "last": 267 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of hard errors to allow before declaring a fatal error", + "version": { + "first": 268, + "last": 311 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of hard errors to allow before declaring a fatal error", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of hard errors to allow before declaring a fatal error", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Number of hard errors to allow before declaring a fatal error", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 4, + "minimum": 0, + "maximum": 65535 + }, + "statictype": "static" + } + ] + }, + "Timeout": { + "id": 56, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The timeout for an ultrasonic measurement (0 - 128us, 1 - 256us, 2 - 1024us, 3 - 4096us)", + "version": { + "first": 273, + "last": 311 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The timeout for an ultrasonic measurement (0 - 128us, 1 - 256us, 2 - 1024us, 3 - 4096us)", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The timeout for an ultrasonic measurement (0 - 128us, 1 - 256us, 2 - 1024us, 3 - 4096us)", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The timeout for an ultrasonic measurement (0 - 128us, 1 - 256us, 2 - 1024us, 3 - 4096us)", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "MaxDeltaToFDeviation": { + "id": 57, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum deviation of a valid delta tof from the recent mean. In 2^-38 seconds units", + "version": { + "first": 280, + "last": 311 + }, + "values": { + "default": 109951, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum deviation of a valid delta tof from the recent mean. In 2^-38 seconds units", + "version": { + "first": 450, + "last": 463 + }, + "values": { + "default": 109951, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum deviation of a valid delta tof from the recent mean. In 2^-38 seconds units", + "version": { + "first": 500, + "last": 509 + }, + "values": { + "default": 109951, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum deviation of a valid delta tof from the recent mean. In 2^-38 seconds units", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 109951, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MaxTempRange": { + "id": 58, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of temperatures between channels before one is rejected. In units of 2^-12 degrees celcius", + "version": { + "first": 289, + "last": 311 + }, + "values": { + "default": 8192, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of temperatures between channels before one is rejected. In units of 2^-12 degrees celcius", + "version": { + "first": 451, + "last": 463 + }, + "values": { + "default": 8192, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of temperatures between channels before one is rejected. In units of 2^-12 degrees celcius", + "version": { + "first": 504, + "last": 509 + }, + "values": { + "default": 8192, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of temperatures between channels before one is rejected. In units of 2^-12 degrees celcius", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 8192, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "MaxDeltaToFRange": { + "id": 59, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of delta time of flight between channels before one is rejected. In 2^-38 seconds units", + "version": { + "first": 289, + "last": 311 + }, + "values": { + "default": 137438, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of delta time of flight between channels before one is rejected. In 2^-38 seconds units", + "version": { + "first": 451, + "last": 463 + }, + "values": { + "default": 137438, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of delta time of flight between channels before one is rejected. In 2^-38 seconds units", + "version": { + "first": 504, + "last": 509 + }, + "values": { + "default": 137438, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The maximum range of delta time of flight between channels before one is rejected. In 2^-38 seconds units", + "version": { + "first": 601, + "last": 606 + }, + "values": { + "default": 137438, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "LookupFileCrc": { + "id": 60, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Read for the current loaded lookup table CRC, write to set the expected CRC.", + "version": { + "first": 295, + "last": 311 + }, + "statictype": "dynamic" + } + ] + }, + "DisplayLeadingZeros": { + "id": 61, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether to display leading zeros on row 2. If false leading zeros will be replaced with a space", + "version": { + "first": 302, + "last": 311 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "InstallationCorrectionEnabled": { + "id": 62, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether the installation correction function is enabled or not", + "version": { + "first": null, + "last": null + }, + "values": { + "default": 1, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + }, + "InstallationDetectionThreshold": { + "id": 63, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The threshold in ml for deciding on the meter installation", + "version": { + "first": null, + "last": null + }, + "values": { + "default": 500, + "minimum": 0, + "maximum": 10000000 + }, + "statictype": "static" + } + ] + }, + "InstallationType": { + "id": 64, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The detected installation type, MS 16 bits is the type of installation, LS 16 bits is the proportion of correction to apply", + "version": { + "first": null, + "last": null + }, + "values": { + "minimum": 0, + "maximum": 163840 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "InstallationDetectionStatus": { + "id": 65, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Installation detection percentage complete, returns 100 if installation detection isn't running", + "version": { + "first": null, + "last": null + }, + "values": { + "minimum": 0, + "maximum": 100 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "FractionalBars": { + "id": 66, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RW", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether to display bars above the fractional digits on the LCD (if supported)", + "version": { + "first": null, + "last": null + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "static" + } + ] + } + }, + "status": { + "BAD_TEST": { + "id": 0 + }, + "BAD_CONFIG": { + "id": 1 + }, + "DID_NOT_STORE": { + "id": 2 + }, + "STORE_PENDING": { + "id": 3 + }, + "STORE_BUFFER_SIZE": { + "id": 4 + }, + "STRING_TOO_LONG": { + "id": 5 + }, + "BAD_DISPLAY_MODE": { + "id": 6 + }, + "GLASS_TOO_LONG": { + "id": 7 + }, + "SLOT_NOT_YOURS": { + "id": 8 + }, + "SUBLIST_TOO_LONG": { + "id": 9 + }, + "NO_TEMP_SENSOR": { + "id": 10 + }, + "UNDER_TEMP": { + "id": 11 + }, + "LOW_TEMP_WARNING": { + "id": 12 + }, + "HIGH_TEMP_WARNING": { + "id": 13 + }, + "OVER_TEMP": { + "id": 14 + }, + "MISMATCHING_LSB": { + "id": 15 + }, + "OUT_OF_RANGE_PWDIFF": { + "id": 16 + }, + "OUT_OF_RANGE_AMPLITUDE": { + "id": 17 + }, + "OUT_OF_RANGE_TOF": { + "id": 18 + }, + "OUT_OF_RANGE_DTOF": { + "id": 19 + }, + "TOF_TIMEOUT": { + "id": 20 + }, + "CAL_CHANGE": { + "id": 21 + }, + "OUT_OF_RANGE_INTERVAL": { + "id": 22 + }, + "VALIDATE_FAIL": { + "id": 23 + }, + "OUT_OF_RANGE_TEMP": { + "id": 24 + }, + "NOT_READY": { + "id": 25 + }, + "METROLOGY_ERROR": { + "id": 26 + }, + "GP30_ID_ERROR": { + "id": 27 + }, + "GP30_FLAG_ERROR": { + "id": 28 + }, + "GP30_TIMEOUT_ERROR": { + "id": 29 + }, + "GP30_REQUEST_ERROR": { + "id": 30 + }, + "GP30_SEQ_ERROR": { + "id": 31 + }, + "VALUE_SEALED": { + "id": 32 + }, + "IN_TEST_MODE": { + "id": 33 + }, + "UNKNOWN_STATE": { + "id": 34 + }, + "DISPLAY_INIT_SUCCEEDED": { + "id": 35 + }, + "DISPLAY_INIT_FAILED": { + "id": 36 + }, + "GP30_INIT_FAILED": { + "id": 37 + }, + "START_TIMER_SUCCEEDED": { + "id": 38 + }, + "START_TIMER_FAILED": { + "id": 39 + }, + "VOLUME_STORE_FAILED": { + "id": 40 + }, + "EMPTY_PIPE": { + "id": 41 + }, + "PARAMETER_ERROR": { + "id": 42 + }, + "GP30_INTERNAL_ERROR": { + "id": 43 + }, + "GLASS_TOO_SHORT": { + "id": 44 + }, + "STORE_CAL_FAILED": { + "id": 45 + }, + "STORE_CONF_FAILED": { + "id": 46 + }, + "MODE_CHANGE": { + "id": 47 + }, + "BAD_POW10": { + "id": 48 + }, + "BAD_DECIMAL_SEPARATOR": { + "id": 49 + }, + "BAD_UNITS": { + "id": 50 + }, + "BAD_ICONS": { + "id": 51 + }, + "BAD_THOUSAND_SEPARATOR": { + "id": 52 + }, + "NEW_LOCALE_REJECTED": { + "id": 53 + }, + "SET_ACCUMULATORS": { + "id": 54 + }, + "SEAL_OPENED": { + "id": 55 + }, + "CALIBRATION_RECALL_INCOMPLETE": { + "id": 56 + }, + "BAD_AMR_SETTINGS": { + "id": 57 + }, + "SUSPECT_CYCLE_SKIP": { + "id": 58 + }, + "LOOKUP_FILE_LOADED": { + "id": 59 + }, + "LOOKUP_FILE_METERSIZE_CHANGED": { + "id": 60 + }, + "LOOKUP_FILE_FAILURE": { + "id": 61 + }, + "LOOKUP_FILE_INVALID": { + "id": 62 + }, + "LOOKUP_CRC_MISMATCH": { + "id": 63 + }, + "LOOKUP_FILE_UNKNOWN_METERSIZE": { + "id": 64 + }, + "INSTALLATION_HIGH_TIME_DIFF": { + "id": 65 + }, + "INSTALLATION_LOW_FLOW_IGNORE": { + "id": 66 + }, + "INSTALLATION_BAD_CHANNELS": { + "id": 67 + }, + "INSTALLATION_FIXED": { + "id": 68 + } + } + }, + "IRDA": { + "id": 20, + "version": { + "first": 10, + "last": 209 + }, + "registers": { + "PulseReportRate": { + "id": 0, + "details": [ + { + "type": "enum8", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate at which pulse reports are sent to the IrDA pulse adapter", + "version": { + "first": 10, + "last": 97 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate at which pulse reports are sent to the IrDA pulse adapter", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "enum8", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The rate at which pulse reports are sent to the IrDA pulse adapter", + "version": { + "first": 161, + "last": 209 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "AdapterPresenceLimit": { + "id": 1, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of 15 minute periods we have to have received no valid IrDA messages to assume there is no adapter present", + "version": { + "first": 18, + "last": 28 + }, + "values": { + "default": 1, + "minimum": 1, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of 15 minute periods we have to have received no valid IrDA messages to assume there is no adapter present", + "version": { + "first": 29, + "last": 97 + }, + "values": { + "default": 3, + "minimum": 1, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of 15 minute periods we have to have received no valid IrDA messages to assume there is no adapter present", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 3, + "minimum": 1, + "maximum": 255 + }, + "statictype": "static" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of 15 minute periods we have to have received no valid IrDA messages to assume there is no adapter present", + "version": { + "first": 161, + "last": 209 + }, + "values": { + "default": 3, + "minimum": 1, + "maximum": 255 + }, + "statictype": "static" + } + ] + }, + "PulseSequence": { + "id": 2, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The present sequence number used in pulse reports", + "version": { + "first": 26, + "last": 97 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The present sequence number used in pulse reports", + "version": { + "first": 98, + "last": 114 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The present sequence number used in pulse reports", + "version": { + "first": 115, + "last": 136 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The present sequence number used in pulse reports", + "version": { + "first": 161, + "last": 209 + }, + "values": { + "minimum": 0, + "maximum": 255 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "StoreConfiguration": { + "id": 3, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 26, + "last": 97 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 98, + "last": 136 + }, + "statictype": "dynamic" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "NA", + "lvl4": "NA", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 161, + "last": 209 + }, + "statictype": "dynamic" + } + ] + }, + "AMRDigits": { + "id": 4, + "details": [ + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of digits to use for AMR", + "version": { + "first": 40, + "last": 53 + }, + "values": { + "default": 9, + "minimum": 0, + "maximum": 9 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of digits to use for AMR", + "version": { + "first": 53, + "last": 97 + }, + "values": { + "default": 9, + "minimum": 0, + "maximum": 9 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of digits to use for AMR", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 8, + "minimum": 0, + "maximum": 9 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The number of digits to use for AMR", + "version": { + "first": 161, + "last": 209 + }, + "values": { + "default": 8, + "minimum": 0, + "maximum": 9 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "AMROffset": { + "id": 5, + "details": [ + { + "type": "int8_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The offset of the AMR smallest digit from the right (always negative)", + "version": { + "first": 40, + "last": 97 + }, + "values": { + "default": 0, + "minimum": -9, + "maximum": 0 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The offset of the AMR smallest digit from the right (always negative)", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 0, + "minimum": -9, + "maximum": 0 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "int8_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "The offset of the AMR smallest digit from the right (always negative)", + "version": { + "first": 161, + "last": 209 + }, + "values": { + "default": 0, + "minimum": -9, + "maximum": 0 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "UI1203Fields": { + "id": 6, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A bitfield of the optional fields being used for UI-1203", + "version": { + "first": 40, + "last": 97 + }, + "values": { + "default": 268, + "minimum": 0, + "maximum": 268 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A bitfield of the optional fields being used for UI-1203", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 268, + "minimum": 0, + "maximum": 268 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A bitfield of the optional fields being used for UI-1203", + "version": { + "first": 161, + "last": 209 + }, + "values": { + "default": 268, + "minimum": 0, + "maximum": 268 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "MfgDate": { + "id": 7, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A timestamp of meter manufacture in seconds since 1/1/2000 00:00:00 UTC", + "version": { + "first": 43, + "last": 136 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + }, + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "A timestamp of meter manufacture in seconds since 1/1/2000 00:00:00 UTC", + "version": { + "first": 161, + "last": 209 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "static" + } + ] + }, + "DisplayAMRDigits": { + "id": 8, + "details": [ + { + "type": "bool_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether or not to display AMR digits on the screen", + "version": { + "first": 92, + "last": 97 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether or not to display AMR digits on the screen", + "version": { + "first": 98, + "last": 136 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "infrequentlyupdated" + }, + { + "type": "bool_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Whether or not to display AMR digits on the screen", + "version": { + "first": 161, + "last": 209 + }, + "values": { + "default": 0, + "minimum": 0, + "maximum": 1 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "AdapterID": { + "id": 9, + "details": [ + { + "type": "string", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The serial number of the current pulse adapter", + "version": { + "first": 193, + "last": 209 + }, + "statictype": "infrequentlyupdated" + } + ] + }, + "AdapterFwVersion": { + "id": 10, + "details": [ + { + "type": "uint16_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RO", + "lvl8": "RO" + }, + "description": "The firmware version of the current pulse adapter", + "version": { + "first": 193, + "last": 209 + }, + "statictype": "infrequentlyupdated" + } + ] + } + }, + "status": { + "BAD_CONFIG": { + "id": 0 + }, + "BAD_LENGTH": { + "id": 1 + }, + "OUT_OF_RANGE": { + "id": 2 + }, + "PENDING_STORE": { + "id": 3 + }, + "DID_NOT_STORE": { + "id": 4 + }, + "TOO_MANY_BYTES": { + "id": 5 + } + } + }, + "NA2WALARMS": { + "id": 23, + "version": { + "first": 41, + "last": 102 + }, + "registers": { + "StoreConfiguration": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Write 1 to store configuration values to non-volatile storage. Read back for status", + "version": { + "first": 41, + "last": 102 + }, + "statictype": "dynamic" + } + ] + }, + "PredefEnable": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Bitmask of enabled predefined alarms", + "version": { + "first": 41, + "last": 102 + }, + "values": { + "default": 561047, + "minimum": 0, + "maximum": 4294967295 + }, + "statictype": "infrequentlyupdated" + } + ] + } + }, + "status": { + "SENSOR_INVALID": { + "id": 0 + }, + "UNKNOWN_PARAMETER": { + "id": 1 + }, + "ALARM_INVALID": { + "id": 2 + }, + "UNIMPLEMENTED": { + "id": 3 + }, + "UNCONFIGURED": { + "id": 4 + }, + "CONFIG_INVALID": { + "id": 5 + }, + "NO_LATEST": { + "id": 6 + }, + "FIXED_TYPE": { + "id": 7 + }, + "PREDEF_SET": { + "id": 8 + }, + "USERDEF_VOLUME_SET": { + "id": 9 + }, + "USERDEF_TEMPERATURE_SET": { + "id": 10 + }, + "USERDEF_PRESSURE_SET": { + "id": 11 + }, + "PREDEF_CLEAR": { + "id": 12 + }, + "USERDEF_VOLUME_CLEAR": { + "id": 13 + }, + "USERDEF_TEMPERATURE_CLEAR": { + "id": 14 + }, + "USERDEF_PRESSURE_CLEAR": { + "id": 15 + }, + "DID_NOT_STORE": { + "id": 16 + }, + "STORE_PENDING": { + "id": 17 + }, + "PREDEF_BACKUP_FAILED": { + "id": 18 + }, + "PREDEF_RESTORE_FAILED": { + "id": 19 + }, + "USERDEF_BACKUP_FAILED": { + "id": 20 + }, + "USERDEF_RESTORE_FAILED": { + "id": 21 + }, + "USERDEF_UNSUPPORTED_TYPE_FOR_SENSOR": { + "id": 22 + } + } + }, + "NA2WLOGGER": { + "id": 22, + "version": { + "first": 1, + "last": 197 + }, + "registers": { + "StoreConfiguration": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "NA", + "lvl2": "NA", + "lvl3": "RW", + "lvl4": "NA", + "lvl5": "NA", + "lvl6": "NA", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Store all configuration items in non-volatile memory.", + "version": { + "first": 147, + "last": 197 + }, + "statictype": "dynamic" + } + ] + }, + "LimitLogSize": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RO", + "lvl2": "RO", + "lvl3": "RO", + "lvl4": "RO", + "lvl5": "RO", + "lvl6": "RO", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Override the maximum number of entries per log (0 keeps default)", + "version": { + "first": 147, + "last": 197 + }, + "statictype": "static" + } + ] + } + }, + "status": { + "UNKNOWN_PARAMETER": { + "id": 1 + }, + "NOT_MAIN_LOOP": { + "id": 2 + }, + "LOG_INVALID": { + "id": 3 + }, + "LOG_OPEN_FAILED": { + "id": 4 + }, + "LOG_CLOSE_FAILED": { + "id": 5 + }, + "LOG_REMOVE_FAILED": { + "id": 6 + }, + "LOG_FLUSH_FAILED": { + "id": 7 + }, + "LOG_CLEAR_FAILED": { + "id": 8 + }, + "LOG_BAD_REQUEST": { + "id": 9 + }, + "LOG_BAD_LIMIT": { + "id": 10 + }, + "LOG_BUSY": { + "id": 11 + }, + "QUERY_FAILED": { + "id": 12 + }, + "QUERY_UNKNOWN_SENSOR": { + "id": 13 + }, + "QUERY_UNKNOWN_LOGFILE": { + "id": 14 + }, + "QUERY_BAD_ARGS": { + "id": 15 + }, + "QUERY_NOT_ENOUGH_SPACE": { + "id": 16 + }, + "QUERY_NO_RECORDS_FOUND": { + "id": 17 + }, + "QUERY_FILE_READ_PROBLEM": { + "id": 18 + }, + "SETTINGS_STORE_FAILED": { + "id": 19 + }, + "SETTINGS_BAD_SENSORID": { + "id": 20 + }, + "SETTINGS_BAD_PERIOD": { + "id": 21 + }, + "SETTINGS_BAD_CHECKSUM": { + "id": 22 + }, + "SETTINGS_BAD_TIMESTAMP": { + "id": 23 + }, + "FILING_BAD": { + "id": 24 + }, + "BAD_RECORD": { + "id": 25 + }, + "RANGE_SENSORID_BAD": { + "id": 26 + }, + "STORE_PENDING": { + "id": 27 + }, + "DID_NOT_STORE": { + "id": 28 + } + } + }, + "FLEXNETVERSION": { + "id": 24, + "version": { + "first": 1, + "last": 9999 + } + }, + "FLEXNETSERIAL": { + "id": 26, + "version": { + "first": 1, + "last": 20 + }, + "registers": { + "UpgState": { + "id": 0, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem Ipsum", + "version": { + "first": 2, + "last": 20 + }, + "statictype": "dynamic" + } + ] + }, + "FwdlState": { + "id": 1, + "details": [ + { + "type": "uint32_t", + "privilege": { + "lvl1": "RW", + "lvl2": "RW", + "lvl3": "RW", + "lvl4": "RW", + "lvl5": "RW", + "lvl6": "RW", + "lvl7": "RW", + "lvl8": "RW" + }, + "description": "Lorem Ipsum", + "version": { + "first": 2, + "last": 20 + }, + "statictype": "dynamic" + } + ] + } + }, + "status": { + "UNKNOWN_PARAMETER": { + "id": 0 + }, + "TOO_MANY_APPS": { + "id": 1 + } + } + } +} diff --git a/Common/Hardware/WaterMeter/Genesis/Protocols/RequestProtocol/RequestProtocol.cs b/Common/Hardware/WaterMeter/Genesis/Protocols/RequestProtocol/RequestProtocol.cs index 52564664..479ec2b8 100644 --- a/Common/Hardware/WaterMeter/Genesis/Protocols/RequestProtocol/RequestProtocol.cs +++ b/Common/Hardware/WaterMeter/Genesis/Protocols/RequestProtocol/RequestProtocol.cs @@ -175,7 +175,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol /// public RequestAcknowledgeState ProcessRecordList() { - _logger.Trace($" Enry to ProcessRecordList, FIFO contains ({_recordsSendFifo.Count}) records"); + _logger.Trace($"{_ident} Entry to ProcessRecordList, FIFO contains ({_recordsSendFifo.Count}) records"); //The inter record send delay has to be hold before trying to communicate again const Int32 interRecordSendDelayMs = CommunicationConfig.InterRecordSendDelayMs; @@ -188,27 +188,28 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol { // Starting with record number 1 loopCounter++; - _logger.Trace($"Record({loopCounter}) - Dequeued from FIFO"); + _logger.Trace($"{_ident} Record({loopCounter}) - Dequeued from FIFO"); //pointer to new record _recordInProcess = internalRecord; - if (_recordInProcess == null) return RequestAcknowledgeState.CommandNotAssigned; + if (_recordInProcess == null) + return RequestAcknowledgeState.CommandNotAssigned; //mark record as answer outstanding _recordInProcess.Acknowledge = RequestAcknowledgeState.NotDecoded; do { - _logger.Trace($"Record({loopCounter}) - Processing"); + _logger.Trace($"{_ident} Record({loopCounter}) - Processing"); //log retries if (_recordInProcess.RetryCtr > 0) { _logger.Debug($"{_ident} Retry({_recordInProcess.RetryCtr})"); - _logger.Trace($"Record({loopCounter}) - Retry({_recordInProcess.RetryCtr})"); + _logger.Trace($"{_ident} Record({loopCounter}) - Retry({_recordInProcess.RetryCtr})"); } //log request protocol content _logger.Debug(_recordInProcess.HideDataInLog - ? $"{_ident} SentData(*********************************)" + ? $"{_ident} SentData(*****)" : $"{_ident} SentData({BitConverter.ToString(_recordInProcess.RequestProtocolData.ToArray())})"); //remind time for keep-session-active test to deny automatic logout of meter @@ -220,7 +221,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol CommunicationConfig.ResponseTimeoutMs * (_recordInProcess.RetryCtr + 1); //start initial communication or retry OnRecordReadyToSend?.Invoke(this, new ListBytePortDataEventArgs(_recordInProcess.EncodedRequestData)); - + //time reminder of request record var requestTimeUtc = DateTimeOffset.UtcNow; Int32 actualResponseWaitTimeMs; @@ -319,7 +320,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol //encode request protocol data with transmit protocol var transmit = GetTransmitProtocol(); - var dataEncodedWithTransmitProtocol = transmit.DecodeDataForPhysicalLayer(cmd, payload, hideDataInLog); + var dataEncodedWithTransmitProtocol = transmit.DecodeDataForPhysicalLayer(_ident, cmd, payload, hideDataInLog); //remind port specific response timeout var transmitPortSettings = transmit.GetTransmitPortSettings(); @@ -339,13 +340,14 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol /// /// - Initial /// + /// string for logging of slot /// Data package with all details like CRC, etc /// which is intend /// hiding data in log file to avoid spying of passwords /// error mask to skip retries /// the assembled record for the send FIFO // ReSharper disable once InconsistentNaming UI1236 is a naming forced by the caller - public RequestRecord AddRecordToSendFifoUI1236(Byte[] payload, RegisterDefinition register = null, + public RequestRecord AddRecordToSendFifoUI1236(String ident, Byte[] payload, RegisterDefinition register = null, Boolean hideDataInLog = false, UInt16 skipRetryErrorCode = CommunicationConfig.SkipRetryErrorCode) { const Byte maxValue = byte.MaxValue; @@ -355,9 +357,9 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol }; requestProtocolData.AddRange(payload); var transmitProtocol = GetTransmitProtocol(); - var encodedRequestData = transmitProtocol.DecodeDataForPhysicalLayerUI1236(payload); + var encodedRequestData = transmitProtocol.DecodeDataForPhysicalLayerUI1236(ident, payload, hideDataInLog); var transmitPortSettings = transmitProtocol.GetTransmitPortSettings(); - var sendFifoUi1236 = new RequestRecord(maxValue, requestProtocolData, encodedRequestData, + var sendFifoUi1236 = new RequestRecord(maxValue, requestProtocolData, encodedRequestData, transmitPortSettings.ResponseTimeoutMs, register, hideDataInLog, skipRetryErrorCode); _recordsSendFifo.Enqueue(sendFifoUi1236); return sendFifoUi1236; @@ -407,13 +409,18 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol /// - Wakeup message retries from 5 to 2, /// - Removed error base from error code decision as error base is only the AppId /// + /// + /// - HideDataInLog. + /// protected override void DecodeRecord(IPortDataEventArgs data) { - if (_recordInProcess == null) return; + if (_recordInProcess == null) + return; //new request has to be analyzed _recordInProcess.Acknowledge = RequestAcknowledgeState.NotDecoded; //the request response record covers the entire request protocol - var responseRecord = GetTransmitProtocol().DecodeDataForLogicLayer((List)data.GetData()); + var responseRecord = GetTransmitProtocol().DecodeDataForLogicLayer(_ident, (List)data.GetData(), + _recordInProcess.HideDataInLog); //on protocol decoding failure if (responseRecord.Count == 0) @@ -442,7 +449,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol { _recordInProcess.Acknowledge = RequestAcknowledgeState.WakeupMessage; //initiate a single retry on wakeup message response - if ( _recordInProcess.WakeupMessageRetryCtr < 2) + if (_recordInProcess.WakeupMessageRetryCtr < 2) { _recordInProcess.WakeupMessageRetryCtr++; _logger.Debug($"{_ident} Wakeup message({_recordInProcess.WakeupMessageRetryCtr}) received"); @@ -465,7 +472,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol //log request protocol content _logger.Debug(_recordInProcess.HideDataInLog - ? $"{_ident} DecodedRecord(*********************************)" + ? $"{_ident} DecodedRecord(*****)" : $"{_ident} DecodedRecord({BitConverter.ToString(responseRecord.ToArray())})"); //extract information command @@ -586,57 +593,32 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol /// /// - Default set. /// + /// + /// - MultipleReadData based on data size. + /// public RequestRecord CommandToMeter(Byte command, RegisterDefinition meterRegister = null, - Byte[] payload = null, Int32? expectedLength = null, Boolean hideDataInLog = false, + Byte[] payload = null, Int32 expectedLength = 4, Boolean hideDataInLog = false, UInt16 skipRetryErrorCode = CommunicationConfig.SkipRetryErrorCode) { if (command == Commands.MultipleReadData && meterRegister != null && meterRegister.DataType == typeof(String)) { var completeResponse = new List(); - //TODO THW check this including the recursive call CommandToMeter - while (true) + while (!completeResponse.Contains(0)) { - var cRecord = CommandToMeter(Commands.ReadData, meterRegister, payload, expectedLength, - hideDataInLog, skipRetryErrorCode); + var cRecord = CommandToMeter(Commands.ReadData, meterRegister, payload, 4, hideDataInLog, + skipRetryErrorCode); var rest = ProcessRecordList(); - if (rest == RequestAcknowledgeState.Ok && cRecord != null && cRecord.ResponsePayload != null) + if (rest == RequestAcknowledgeState.Ok && cRecord?.ResponsePayload != null) { completeResponse.AddRange(cRecord.ResponsePayload); if (cRecord.ResponsePayload.Contains(0)) { cRecord.ResponsePayload = completeResponse; - OnMeterRegisterUpdated?.Invoke(this, new RegisterUpdatedEventArgs(meterRegister, completeResponse.ToArray())); - if (expectedLength.HasValue && completeResponse.Count < expectedLength.Value) - { - _logger.Debug("Too Short. Payload contains zero"); - } + OnMeterRegisterUpdated?.Invoke(this, + new RegisterUpdatedEventArgs(meterRegister, completeResponse.ToArray())); return cRecord; } } - else - { - if (expectedLength.HasValue && completeResponse.Any() && completeResponse.Count < expectedLength.Value) - { - if (rest != RequestAcknowledgeState.Ok) - { - _logger.Debug($"Too Short.Request Acknowledge State is {rest}"); - } - else if (cRecord == null) - { - _logger.Debug("Too Short.Record is empty or null"); - } - else if (cRecord.ResponsePayload == null) - { - _logger.Debug("Too Short.ResponsePayload is empty or null"); - } - else - { - _logger.Debug("Too Short.Unkown reason"); - } - - } - return cRecord; - } } } //the minimum payload is one 4 byte chunk @@ -681,20 +663,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol if (command == Commands.MultipleReadData) { - //TODO THW create expected size out of meterRegister.DataType - if (!expectedLength.HasValue) - { - if ((meterRegister.DataType == typeof(UInt64) || meterRegister.DataType == typeof(Int64))) - { - expectedLength = 8; - } - else - { - expectedLength = 24; - } - } - - var numberOfChunks = (UInt16)(expectedLength.Value / chunkSize); + var numberOfChunks = (UInt16)(expectedLength / chunkSize); if (expectedLength % chunkSize != 0) numberOfChunks++; requestProtocol.Add((Byte)(numberOfChunks & 0xFF)); @@ -753,7 +722,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Protocols.RequestProtocol /// public Boolean ContainsRegisterIdent(String registerName) { - return _recordsSendFifo.Any(a => string.Equals(a.Register.GetIdent(), + return _recordsSendFifo.Any(a => string.Equals(a.Register.GetIdent(), registerName, StringComparison.CurrentCultureIgnoreCase)); } } diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt128.cs b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt128.cs new file mode 100644 index 00000000..e8498560 --- /dev/null +++ b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt128.cs @@ -0,0 +1,8 @@ +using System; + +namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes +{ + public struct UInt128 + { + } +} diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt96.cs b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt96.cs index 5f3eac02..4ce80bc7 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt96.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/DataTypes/UInt96.cs @@ -1,6 +1,8 @@ -namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes +using System; + +namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes { - public class UInt96 + public struct UInt96 { } } diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterConverter.cs b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterConverter.cs index 9e607a1f..d61fe56b 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/RegisterConverter.cs +++ b/Common/Hardware/WaterMeter/Genesis/Registers/RegisterConverter.cs @@ -12,31 +12,46 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers public static class RegisterConverter { /// - /// Convert single register from Genesis and return a message of the result. + /// Convert single register from Genesis and return a message of the result. The value input is a byte array + /// with the LSB at the index 0 and the MSB at the highest index. A string is sorted with the first character + /// at index 0, this does not need to be reversed as it is readable by default. /// The raw value is swapped byte-wise to get a human readable value with MSB at leftmost and LSB at rightmost. - /// The message contains the swapped raw value and the converted value. + /// The message contains the register name, the swapped raw value and on the converted value. /// - /// message with register name, swapped raw value and converted value to use for logging + /// + /// the raw byte array is always % 4 0 padded for unused elements, the LSB is + /// on index 0 (little endian, LSB first) + /// message with register name, swapped raw value and converted value /// /// - Initial. /// - public static String GetRegisterParameterInfo(MeterRegisters registersDefinitions, String registerName, - Byte[] registerValue) + /// + /// - Reworked. + /// + public static String GetRegisterContent(RegisterDefinition registerDefinition, Byte[] regRawByteArray) { String msg; var strValueResult = "?"; var strRawResult = "?"; try { - // build value for logging - var regDef = registersDefinitions.GetRegisterDefinitionByName(registerName); - var strValue = ConvertToText(registerValue, regDef.DataType); - // remove non printable char + // getting a result value as text of the data type e.g. UInt32 + var strValue = ConvertToText(regRawByteArray, registerDefinition.DataType); + // remove non printable char of the converted result strValueResult = Regex.Replace(strValue, @"\p{C}+", string.Empty); // inverse the raw value to get a readable byte order MSB left and LSB last right position - var tmpList = registerValue.ToList(); - tmpList.Reverse(); + var tmpList = regRawByteArray.ToList(); + + // reverse the list if it is not a string or the UInt96 or UInt128 which will be used as + // placeholder for a string + if (registerDefinition.DataType != typeof(String) && + registerDefinition.DataType != typeof(UInt96) && + registerDefinition.DataType != typeof(UInt128)) + { + tmpList.Reverse(); + } + strRawResult = BitConverter.ToString(tmpList.ToArray()); } @@ -46,7 +61,51 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers } finally { - msg = $"{registerName} - {strRawResult} - {strValueResult}"; + msg = $"{registerDefinition.GetIdent()} - {strRawResult} - {strValueResult}"; + } + + return msg; + } + /// + /// Convert single register from Genesis and return a message of the result. The value input is a byte array + /// with the LSB at the index 0 and the MSB at the highest index. A string is sorted with the first character + /// at index 0, this does not need to be reversed as it is readable by default. + /// The raw value is swapped byte-wise to get a human readable value with MSB at leftmost and LSB at rightmost. + /// The message contains the swapped raw value. + /// + /// + /// the raw byte array is always % 4 0 padded for unused elements, the LSB is + /// on index 0 (little endian, LSB first) + /// message with swapped raw value + /// + /// - Initial. + /// + public static String GetRegisterRawText(RegisterDefinition registerDefinition, Byte[] regRawByteArray) + { + String msg; + var strRawResult = "?"; + try + { + // inverse the raw value to get a readable byte order MSB left and LSB last right position + var tmpList = regRawByteArray.ToList(); + + // reverse the list if it is not a string or the UInt96 or UInt128 which will be used as + // placeholder for a string + if (registerDefinition.DataType != typeof(String) && + registerDefinition.DataType != typeof(UInt96) && + registerDefinition.DataType != typeof(UInt128)) + { + tmpList.Reverse(); + } + strRawResult = BitConverter.ToString(tmpList.ToArray()); + } + catch (Exception) + { + // nothing to do + } + finally + { + msg = $"{strRawResult}"; } return msg; @@ -150,10 +209,69 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers } /// - /// Giving types not generic and returns string + /// Get size of type /// - /// byte value for conversion - /// Type to cast from + /// + /// size in bytes + /// + /// - Init. + /// + public static Int32 SizeOf(RegisterDefinition registerDefinition) + { + var size = 4; + + if (registerDefinition.DataType == typeof(Boolean)) + { + size = sizeof(Boolean); + } + if (registerDefinition.DataType == typeof(Byte) || + registerDefinition.DataType == typeof(SByte) || + registerDefinition.DataType == typeof(Char) || + registerDefinition.DataType == typeof(Enum8) ) + { + size = sizeof(Byte); + } + else if (registerDefinition.DataType == typeof(Int16) || + registerDefinition.DataType == typeof(UInt16)) + { + size = sizeof(Int16); + } + else if (registerDefinition.DataType == typeof(Int32) || + registerDefinition.DataType == typeof(UInt32) || + registerDefinition.DataType == typeof(TimeT)) + { + size = sizeof(Int32); + } + + else if (registerDefinition.DataType == typeof(Int64) || + registerDefinition.DataType == typeof(UInt64)) + { + size = sizeof(Int64); + } + + else if (registerDefinition.DataType == typeof(UInt96)) + { + size = 3 * 4; + } + + else if (registerDefinition.DataType == typeof(UInt128)) + { + size = 4 * 4; + } + + else if (registerDefinition.DataType == typeof(String)) + { + size = 6 * 4; + } + + return size; + } + + /// + /// Build the result of the array as text. + /// + /// byte value for conversion + /// type of the result /// /// /// - Init. @@ -162,61 +280,62 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers /// - Used to calculate time in UTC based on 01. Jan 2000 /// and the given offset in seconds. /// - public static String ConvertToText(Byte[] value, Type type) + public static String ConvertToText(Byte[] rawByteArray, Type type) { try { if (type == typeof(Boolean)) { - return ConvertTo(value).ToString(); + return ConvertTo(rawByteArray).ToString(); } if (type == typeof(TimeT)) { - var teaTime = ConvertTo(value); + var teaTime = ConvertTo(rawByteArray); return teaTime.ToString(); } if (type == typeof(UInt16)) { - return ConvertTo(value).ToString(); + return ConvertTo(rawByteArray).ToString(); } - if (type == typeof(UInt32)) { - return ConvertTo(value).ToString(); + return ConvertTo(rawByteArray).ToString(); } - if (type == typeof(UInt64)) { - return ConvertTo(value).ToString(); + return ConvertTo(rawByteArray).ToString(); } - if (type == typeof(Int16)) { - return ConvertTo(value).ToString(); + return ConvertTo(rawByteArray).ToString(); } - if (type == typeof(Int32)) { - return ConvertTo(value).ToString(); + return ConvertTo(rawByteArray).ToString(); } - if (type == typeof(Int64)) { - return ConvertTo(value).ToString(); + return ConvertTo(rawByteArray).ToString(); } - if (type == typeof(Byte) || type == typeof(Enum8)) { - return ConvertTo(value).ToString(); + return ConvertTo(rawByteArray).ToString(); + } + if (type == typeof(UInt96)) + { + return ""; + } + if (type == typeof(UInt128)) + { + return ""; } - if (type == typeof(SByte)) { - return ConvertTo(value).ToString(); + return ConvertTo(rawByteArray).ToString(); } - return ConvertTo(value); + return ConvertTo(rawByteArray); } catch (Exception) { @@ -230,7 +349,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers /// convert form byte (meter) to data type /// /// Type to cast in - /// byte value for conversion + /// byte value for conversion /// converted value /// /// - Init. @@ -240,7 +359,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers /// and the given offset in seconds. /// - String removed from first zero in string until the end to avoid ghost signs! /// - public static T ConvertTo(Byte[] value) + public static T ConvertTo(Byte[] rawByteArray) { try { @@ -249,58 +368,65 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers if (type == typeof(Boolean)) { - convertedObj = BitConverter.ToBoolean(value, 0); + convertedObj = BitConverter.ToBoolean(rawByteArray, 0); } else if (type == typeof(UInt16)) { - convertedObj = BitConverter.ToUInt16(value, 0); + convertedObj = BitConverter.ToUInt16(rawByteArray, 0); } else if (type == typeof(UInt32)) { - convertedObj = BitConverter.ToUInt32(value, 0); + convertedObj = BitConverter.ToUInt32(rawByteArray, 0); } else if (type == typeof(UInt64)) { - convertedObj = BitConverter.ToUInt64(value, 0); + convertedObj = BitConverter.ToUInt64(rawByteArray, 0); + } + else if (type == typeof(UInt96)) + { + return default(T); + } + else if (type == typeof(UInt128)) + { + return default(T); } else if (type == typeof(Int16)) { - - convertedObj = BitConverter.ToInt16(value, 0); + convertedObj = BitConverter.ToInt16(rawByteArray, 0); } else if (type == typeof(Int32)) { - convertedObj = BitConverter.ToInt32(value, 0); + convertedObj = BitConverter.ToInt32(rawByteArray, 0); } else if (type == typeof(Int64)) { - convertedObj = BitConverter.ToInt64(value, 0); + convertedObj = BitConverter.ToInt64(rawByteArray, 0); } else if (type == typeof(Byte) || type == typeof(Enum8)) { - convertedObj = value[0]; + convertedObj = rawByteArray[0]; } else if (type == typeof(SByte)) { // set all others to 0 as only the LSB is of interest - for (var idx = 1; idx < value.Length; idx++) - value[idx] = 0; - convertedObj = Convert.ToSByte((SByte)value[0]); + for (var idx = 1; idx < rawByteArray.Length; idx++) + rawByteArray[idx] = 0; + convertedObj = Convert.ToSByte((SByte)rawByteArray[0]); } else if (type == typeof(Boolean)) { - convertedObj = Convert.ToBoolean(value[0]); + convertedObj = Convert.ToBoolean(rawByteArray[0]); } else if (type == typeof(String)) { // the value may contain zeros at the beginning of the value-record, these have to be removed var zeroPaddingCounter = 0; - while (value.Length > zeroPaddingCounter && value[zeroPaddingCounter] == 0) + while (rawByteArray.Length > zeroPaddingCounter && rawByteArray[zeroPaddingCounter] == 0) zeroPaddingCounter += 1; - var trimmedValue = new Byte[value.Length - zeroPaddingCounter]; + var trimmedValue = new Byte[rawByteArray.Length - zeroPaddingCounter]; Int32 i; - for (i = 0; i < value.Length - zeroPaddingCounter; i++) - trimmedValue[i] = value[i + zeroPaddingCounter]; + for (i = 0; i < rawByteArray.Length - zeroPaddingCounter; i++) + trimmedValue[i] = rawByteArray[i + zeroPaddingCounter]; // as a string is terminated with a zero all following elements after including the initial // zero have to be removed. This is caused due to the 4 byte chunks which will be sent. @@ -325,7 +451,7 @@ namespace Xylem.Common.Hardware.WaterMeter.Genesis.Registers else if (type == typeof(TimeT)) { // the value contains always the seconds since 01.Jan 2000 - var teaTime = new TimeT { SecondsSince2000 = ConvertTo(value) }; + var teaTime = new TimeT { SecondsSince2000 = ConvertTo(rawByteArray) }; return (T)Convert.ChangeType(teaTime, typeof(TimeT)); } else diff --git a/Common/Hardware/WaterMeter/Genesis/Registers/Registers.csproj b/Common/Hardware/WaterMeter/Genesis/Registers/Registers.csproj index 527a633a..039914d4 100644 --- a/Common/Hardware/WaterMeter/Genesis/Registers/Registers.csproj +++ b/Common/Hardware/WaterMeter/Genesis/Registers/Registers.csproj @@ -26,6 +26,7 @@ prompt 4 7.0 + true pdbonly @@ -35,6 +36,7 @@ prompt 4 7.0 + true true @@ -45,6 +47,7 @@ 7.0 prompt MinimumRecommendedRules.ruleset + true true @@ -55,6 +58,7 @@ 7.0 prompt MinimumRecommendedRules.ruleset + true bin\x64\Release\ @@ -65,6 +69,7 @@ 7.0 prompt MinimumRecommendedRules.ruleset + true true @@ -75,6 +80,7 @@ 7.0 prompt MinimumRecommendedRules.ruleset + true @@ -101,6 +107,7 @@ + diff --git a/Common/Hardware/WaterMeter/MagFlux/MagFluxCore/MagFluxMeter.cs b/Common/Hardware/WaterMeter/MagFlux/MagFluxCore/MagFluxMeter.cs index 44044412..fc783c4c 100644 --- a/Common/Hardware/WaterMeter/MagFlux/MagFluxCore/MagFluxMeter.cs +++ b/Common/Hardware/WaterMeter/MagFlux/MagFluxCore/MagFluxMeter.cs @@ -986,7 +986,7 @@ namespace Xylem.Common.Hardware.WaterMeter.MagFlux.MagFluxCore /// > - public String GetPcbId(Int32 expectedLength = 12) + public String GetPcbId() { if (!string.IsNullOrEmpty(PcbId) && !string.Equals("?", PcbId)) { diff --git a/Common/Hardware/WaterMeter/WaterMeterCore/IMeter.cs b/Common/Hardware/WaterMeter/WaterMeterCore/IMeter.cs index 1eb960ab..b34b1a08 100644 --- a/Common/Hardware/WaterMeter/WaterMeterCore/IMeter.cs +++ b/Common/Hardware/WaterMeter/WaterMeterCore/IMeter.cs @@ -100,9 +100,8 @@ namespace Xylem.Common.Hardware.WaterMeter.WaterMeterCore /// /// Read the PcbId from IMeter, if device has no readable PcbId simulate one /// - /// /// - String GetPcbId(Int32 expectedLength = 12); + String GetPcbId(); /// /// Open Com ports, try some communication, login diff --git a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache index 8865d283..82bc2c16 100644 --- a/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache +++ b/Common/Hardware/WaterMeter/WaterMeterCore/WaterMeterRegisters/obj/Debug/WaterMeterRegisters.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -89102b0142e574de38a9f47d370f3334e5e6c268 +bf6bb8fceb3db5a9977dadc407cf576684bf7127 diff --git a/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessConnect.cs b/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessConnect.cs index 9be883f8..2e20a3ae 100644 --- a/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessConnect.cs +++ b/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessConnect.cs @@ -80,7 +80,7 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions try { //var url = $"http://localhost:56011/api/FinalCheck/GetProgrammingParameters?PcbID={base.Meter.PcbId}"; - var url = $"{ServiceUrls.GenesisFinalCheckServiceUrl()}GetProgrammingParametersFixNa"; + var url = $"{ServiceUrls.GenesisFinalCheckServiceUrl()}GetProgrammingParameters?PcbID={base.Meter.PcbId}"; var csdRet = LocalWebRequest.GetRequest(url, 80000); diff --git a/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessShippingMode.cs b/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessShippingMode.cs index 126a3017..3c590842 100644 --- a/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessShippingMode.cs +++ b/Common/ProductionUiCordonel/ProductionProcesses/Actions/ProductionProcessShippingMode.cs @@ -226,6 +226,12 @@ namespace ProductionUiCordonel.ProductionProcesses.Actions } } + Meter.ResetAlarm(GenesisMeter.Alarm.ALL);//(true, new byte[] { 0x00, 0x00, 0x00, 0x01 }); + + Meter.SetLcdText(true, new Byte[] { 0x00, 0x00, 0x00, 0x01 }); + + Meter.ResetAlarm(GenesisMeter.Alarm.EMPTY_PIPE);//(true, new byte[] { 0x00, 0x00, 0x00, 0x01 }); + if (rebootSucceeded && hasDiffrences.HasValue && !hasDiffrences.Value) { currentProcessState = ProductionProcessState.Done; diff --git a/Common/TempFlansh/TempFlansh.csproj b/Common/TempFlansh/TempFlansh.csproj index 390ff00b..2bfaa8dc 100644 --- a/Common/TempFlansh/TempFlansh.csproj +++ b/Common/TempFlansh/TempFlansh.csproj @@ -83,7 +83,14 @@ true - true + false + + + false + + + + @@ -138,7 +145,6 @@ Settings.settings True - diff --git a/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache b/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache index dd8c285d..8dda2975 100644 --- a/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache +++ b/Common/Tools/Tools.JsonToXlsHelper/obj/Debug/Tools.JsonToXlsHelper.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -338bdd8d71c148c9df0972f903098eb23eacf0c9 +247396738e2c5d26ac00f9df05c0cc5c61d7f33a diff --git a/Common/Ui/GenesisToolBox/FrmLowLevelTools.cs b/Common/Ui/GenesisToolBox/FrmLowLevelTools.cs index e7dffaf8..e4a48cc2 100644 --- a/Common/Ui/GenesisToolBox/FrmLowLevelTools.cs +++ b/Common/Ui/GenesisToolBox/FrmLowLevelTools.cs @@ -1,4 +1,7 @@ -using System; +using Logic.ProductionToProductMapper.Cordonel; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; using System.Collections.Generic; using System.Drawing; using System.Globalization; @@ -9,15 +12,13 @@ using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; -using Logic.ProductionToProductMapper.Cordonel; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisCore; using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisFile; using Xylem.Common.Hardware.WaterMeter.Genesis.GenesisStatus; using Xylem.Common.Hardware.WaterMeter.Genesis.Registers; using Xylem.Common.Hardware.WaterMeter.Genesis.Registers.DataTypes; using Xylem.Common.Hardware.WaterMeter.WaterMeterCore; +using Xylem.Common.Logic.SoftwareAccessHelper; using Xylem.Common.Utils.ProcessExec.EventArguments; using String = System.String; @@ -223,7 +224,10 @@ namespace Xylem.Common.Ui.GenesisToolBox private void SetControlsLowLevelOpIsFinished() { if (_currentGenesis != null) + { _currentGenesis.RequestProtocol.AdditionalRetryTimeoutMs = 0; + } + SetCordonelAccessEnabled(); } @@ -507,7 +511,10 @@ namespace Xylem.Common.Ui.GenesisToolBox private void LogInstalledMeterFw() { if (_currentGenesis == null) + { return; + } + LogText(StrSeparator); LogText($"PCB ID: {_currentGenesis.PcbId}"); LogText($"Core Version: {GenesisMeter.BuildFwVersionString(_currentGenesis.CoreRevision)}"); @@ -545,7 +552,10 @@ namespace Xylem.Common.Ui.GenesisToolBox private void LogPcAndCordonelTime() { if (_currentGenesis == null) + { return; + } + _currentGenesis.ReLogin(); var dt = DateTime.UtcNow; @@ -591,8 +601,9 @@ namespace Xylem.Common.Ui.GenesisToolBox _frmHistory.rtbHistory.Invoke(new Action(() => { _frmHistory.rtbHistory.Clear(); })); } else + { _frmHistory?.rtbHistory.Clear(); - + } } /// @@ -648,7 +659,10 @@ namespace Xylem.Common.Ui.GenesisToolBox private void InfoWindowColoredText(String txtHistory, Color color) { if (_frmHistory?.rtbHistory == null) + { return; + } + Invoke(new Action(() => { _frmHistory.rtbHistory.SuspendLayout(); @@ -721,7 +735,7 @@ namespace Xylem.Common.Ui.GenesisToolBox return fileNames; } - + /// /// Read engineering log files from meter and analyzes the contents. /// @@ -731,20 +745,29 @@ namespace Xylem.Common.Ui.GenesisToolBox private void ReadLogFiles(String logFileName = null) { if (_currentGenesis == null) + { return; + } + if (_meterFile == null) + { _meterFile = new MeterFile(_currentGenesis); + } var statusMap = new Dictionary(); if (File.Exists("Status.json")) { var dict = JsonConvert.DeserializeObject>(File.ReadAllText("Status.json")); if (dict != null) + { foreach (var item in dict) { if (item.Value.First != null) + { statusMap.Add(int.Parse(item.Value.First.Values().First().ToString()), item.Key); + } } + } } Task.Factory.StartNew(() => @@ -814,7 +837,9 @@ namespace Xylem.Common.Ui.GenesisToolBox ctr += (5 + extraDataSize); //exit if index for next run is out of range if (ctr + 5 >= data.Count) + { break; + } } } else @@ -831,7 +856,7 @@ namespace Xylem.Common.Ui.GenesisToolBox }); } - /// + /// /// List all meter log files covered by the log index file /// /// @@ -877,7 +902,9 @@ namespace Xylem.Common.Ui.GenesisToolBox private void AnalyzeMeterFiles(List meterFiles) { if (meterFiles.Count == 0) + { return; + } LogText("Analyzing meter files"); foreach (var fileName in meterFiles) @@ -889,7 +916,10 @@ namespace Xylem.Common.Ui.GenesisToolBox ? $@"File name: {fileName}, File size: {fileSize} byte" : $@"File name: {fileName} Unable to access file"); if (success) + { continue; + } + _currentGenesis.Logout(); _currentGenesis.ReLogin(); } @@ -1027,7 +1057,9 @@ namespace Xylem.Common.Ui.GenesisToolBox private void btnClearDisplay_Click(Object sender, EventArgs e) { if (_currentGenesis == null) + { return; + } SetActualProcessAndLog(@"Set display of meter to normal operation"); @@ -1055,7 +1087,9 @@ namespace Xylem.Common.Ui.GenesisToolBox private void btnFixBattery_Click(Object sender, EventArgs e) { if (_currentGenesis == null) + { return; + } //reset timer _startTime = DateTimeOffset.UtcNow; @@ -1102,7 +1136,9 @@ namespace Xylem.Common.Ui.GenesisToolBox private void btnStoreConfiguration_Click(Object sender, EventArgs e) { if (_currentGenesis == null) + { return; + } //reset timer _startTime = DateTimeOffset.UtcNow; @@ -1181,9 +1217,14 @@ namespace Xylem.Common.Ui.GenesisToolBox { if (_currentGenesis == null) + { return; + } + if (_meterFile == null) + { _meterFile = new MeterFile(_currentGenesis); + } //reset timer _startTime = DateTimeOffset.UtcNow; @@ -1211,7 +1252,10 @@ namespace Xylem.Common.Ui.GenesisToolBox var fs = new FileStream(saveConfigFile.FileName, FileMode.OpenOrCreate); var bw = new BinaryWriter(fs); foreach (var t in rawData) + { bw.Write(t); + } + fs.Close(); } })); @@ -1234,7 +1278,9 @@ namespace Xylem.Common.Ui.GenesisToolBox private void btnSetDateTime_Click(Object sender, EventArgs e) { if (_currentGenesis == null) + { return; + } var msg = @"Set actual PC date and time in UTC"; LogText(msg); @@ -1280,9 +1326,14 @@ namespace Xylem.Common.Ui.GenesisToolBox private void btnReadLogFiles_Click(Object sender, EventArgs e) { if (_currentGenesis == null) + { return; + } + if (_meterFile == null) + { _meterFile = new MeterFile(_currentGenesis); + } //reset timer _startTime = DateTimeOffset.UtcNow; @@ -1306,15 +1357,21 @@ namespace Xylem.Common.Ui.GenesisToolBox private void btnReadLogFilesBattery_Click(Object sender, EventArgs e) { if (_currentGenesis == null) + { return; + } + if (_meterFile == null) + { _meterFile = new MeterFile(_currentGenesis); + } //reset timer _startTime = DateTimeOffset.UtcNow; LowLevelActionControl(true); + var msg = @"Collect all information"; LogText(msg); lblOverall.Text = msg; @@ -1345,13 +1402,37 @@ namespace Xylem.Common.Ui.GenesisToolBox sbMSG.AppendLine($"Remaining life time in years {genesisStatus.RemainingLifeTimeYears:F2}"); sbMSG.AppendLine($"Totally drained battery load in % {genesisStatus.DrainedBatteryLoadPercent:F2}"); - MessageBox.Show(sbMSG.ToString(), $"Battery for {_currentGenesis.PcbId} has remaining life " + - $"time of {genesisStatus.RemainingLifeTimeYears:F2} years"); - LogText(sbMSG.ToString(), filename); } ReadLogFiles(filename); + + + var resp = LocalWebRequest.GetRequest($"http://10.49.40.25/MeterProcessState/api/FinalCheck/GetKitronProductionResults?PcbID={_currentGenesis.PcbId}", 8000); + LogText(resp, filename); + var sbRegister = new StringBuilder(); + + var Ledmode = RegisterConverter.ConvertTo(_currentGenesis.ReadRegister("GENESISFLOW_LedMode")); + var SampleRate = RegisterConverter.ConvertTo(_currentGenesis.ReadRegister("GENESISFLOW_SampleRate")); + sbRegister.AppendLine($"LedMode is {Ledmode}"); + + + sbRegister.AppendLine($"SampelRate is {SampleRate}"); + + if (Ledmode != 0) + { + _currentGenesis.WriteRegister("GENESISFLOW_LedMode", 0); + sbRegister.AppendLine($"Change Led mode to Customermode (0)"); + } + + + if (SampleRate != 2) + { + _currentGenesis.WriteRegister("GENESISFLOW_SampleRate", 2); + sbRegister.AppendLine($"Change SampleRate mode to Customermode (2)"); + } + + } @@ -1364,9 +1445,14 @@ namespace Xylem.Common.Ui.GenesisToolBox private void btnListFileDetails_Click(Object sender, EventArgs e) { if (_currentGenesis == null) + { return; + } + if (_meterFile == null) + { _meterFile = new MeterFile(_currentGenesis); + } //reset timer _startTime = DateTimeOffset.UtcNow; @@ -1407,9 +1493,14 @@ namespace Xylem.Common.Ui.GenesisToolBox private void btnTidyFile_Click(Object sender, EventArgs e) { if (_currentGenesis == null) + { return; + } + if (_meterFile == null) + { _meterFile = new MeterFile(_currentGenesis); + } //reset timer _startTime = DateTimeOffset.UtcNow; @@ -1463,7 +1554,9 @@ namespace Xylem.Common.Ui.GenesisToolBox foreach (var fileToKeep in filesToKeep) { if (meterFile.Contains(fileToKeep)) + { fileEraseCandidates.Remove(meterFile); + } } } // check if something to clean @@ -1486,7 +1579,10 @@ namespace Xylem.Common.Ui.GenesisToolBox : $@"File {fileToErase} erasure failed"); if (success) + { continue; + } + _currentGenesis.Logout(); _currentGenesis.ReLogin(); } @@ -1516,9 +1612,14 @@ namespace Xylem.Common.Ui.GenesisToolBox private void btnEraseFile_Click(Object sender, EventArgs e) { if (_currentGenesis == null) + { return; + } + if (_meterFile == null) + { _meterFile = new MeterFile(_currentGenesis); + } //reset timer _startTime = DateTimeOffset.UtcNow; @@ -1576,7 +1677,9 @@ namespace Xylem.Common.Ui.GenesisToolBox private void btnPulseModeOff_Click(Object sender, EventArgs e) { if (_currentGenesis == null) + { return; + } //reset timer _startTime = DateTimeOffset.UtcNow; diff --git a/Common/Ui/GenesisToolBox/GenesisToolBox.csproj b/Common/Ui/GenesisToolBox/GenesisToolBox.csproj index 842a90c9..15bc130b 100644 --- a/Common/Ui/GenesisToolBox/GenesisToolBox.csproj +++ b/Common/Ui/GenesisToolBox/GenesisToolBox.csproj @@ -41,7 +41,7 @@ 4 false 7.0 - false + true bin\Debug\Xylem.Common.Ui.GenesisToolBox.xml 0003;1591; @@ -55,6 +55,7 @@ 4 false 7.0 + true true @@ -66,6 +67,7 @@ MinimumRecommendedRules.ruleset true 7.0 + true true @@ -77,6 +79,7 @@ prompt MinimumRecommendedRules.ruleset false + true 14673934DFE995F28E9579F4A18DBDA05F7C1AFE @@ -129,6 +132,7 @@ prompt MinimumRecommendedRules.ruleset false + true true @@ -140,6 +144,7 @@ prompt MinimumRecommendedRules.ruleset true + true true @@ -151,6 +156,7 @@ prompt MinimumRecommendedRules.ruleset false + true diff --git a/Common/Ui/GenesisToolBox/Infrastructure/Software.cs b/Common/Ui/GenesisToolBox/Infrastructure/Software.cs index 672eb953..0d00e312 100644 --- a/Common/Ui/GenesisToolBox/Infrastructure/Software.cs +++ b/Common/Ui/GenesisToolBox/Infrastructure/Software.cs @@ -59,6 +59,11 @@ { UserName = $"{model.FirstName} {model.LastName}"; } + + if (string.IsNullOrWhiteSpace(UserName)) + { + UserName = "Options"; + } } /// @@ -99,6 +104,11 @@ } } + if (string.IsNullOrWhiteSpace(UserName)) + { + UserName = "Options"; + } + return HasUser; } diff --git a/Common/Ui/GenesisToolBox/frmRegisterStore.cs b/Common/Ui/GenesisToolBox/frmRegisterStore.cs index 027ce8e6..e01b0379 100644 --- a/Common/Ui/GenesisToolBox/frmRegisterStore.cs +++ b/Common/Ui/GenesisToolBox/frmRegisterStore.cs @@ -41,7 +41,10 @@ namespace Xylem.Common.Ui.GenesisToolBox private MeterBatch _meterBatch = new MeterBatch(); private readonly ILogger logger = NLogHelper.CreateOrGetLogger("GenesisFwLogger"); - public Boolean IsBusy { get; private set; } + public Boolean IsBusy + { + get; private set; + } public FrmRegisterStore() { @@ -220,14 +223,15 @@ namespace Xylem.Common.Ui.GenesisToolBox registerGridView.Sort(registerGridView.Columns["isChecked"], ListSortDirection.Descending); registerGridView.Columns["RawValueFile"].Visible = false; - + registerGridView.Sort(registerGridView.Columns["Name"], + ListSortDirection.Ascending); var btnHistory = new DataGridViewButtonColumn(); btnHistory.Name = "btnHistory"; btnHistory.DataPropertyName = "btnHistoryText"; - this.registerGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { btnHistory }); + registerGridView.Columns.AddRange(new DataGridViewColumn[] { btnHistory }); //foreach (DataGridViewRow row in registerGridView.Rows) @@ -270,14 +274,20 @@ namespace Xylem.Common.Ui.GenesisToolBox Console.WriteLine(value); - Task.Factory.StartNew(() => { read(); }).ContinueWith(delegate { SetBusy(false); }); + Task.Factory.StartNew(() => { read(); }).ContinueWith(delegate + { + SetBusy(false); + }); } private void btnStore_Click(Object sender, EventArgs e) { SetBusy(true, "Store to file"); - Task.Factory.StartNew(() => { store(); }).ContinueWith(delegate { SetBusy(false); }); + Task.Factory.StartNew(() => { store(); }).ContinueWith(delegate + { + SetBusy(false); + }); } private void btnFileToMeter_Click(Object sender, EventArgs e) @@ -293,7 +303,10 @@ namespace Xylem.Common.Ui.GenesisToolBox var filename = openFileDialog.FileName; - Task.Factory.StartNew(() => { load(filename); }).ContinueWith(delegate { SetBusy(false); }); + Task.Factory.StartNew(() => { load(filename); }).ContinueWith(delegate + { + SetBusy(false); + }); } } @@ -304,7 +317,10 @@ namespace Xylem.Common.Ui.GenesisToolBox { SetBusy(true, "writing register to meter"); - Task.Factory.StartNew(() => { WriteRegister(e); }).ContinueWith(delegate { SetBusy(false); }); + Task.Factory.StartNew(() => { WriteRegister(e); }).ContinueWith(delegate + { + SetBusy(false); + }); } } @@ -329,11 +345,14 @@ namespace Xylem.Common.Ui.GenesisToolBox array[i] = Convert.ToByte(arr[i], 16); } - array = array.Reverse().ToArray(); // currentGenesis.WriteRegister(Register.Genesisflow.LedMode, (Byte)Ledmode.FlowTestAndCalibData, checkRegister: true); - var regdef = - (String)registerGridView.Rows[e.RowIndex].Cells[0].Value; - _currentGenesis.WriteRegister(regdef, array, checkRegister: true); + var reg = (String)registerGridView.Rows[e.RowIndex].Cells[0].Value; + var meterRegisters = _currentGenesis.GetConfigRegistersDefinitions(); + var regDef = meterRegisters.GetRegisterDefinitionByName(reg); + + if (regDef.DataType != typeof(String)) + array = array.Reverse().ToArray(); + _currentGenesis.WriteRegister(reg, array, checkRegister: true); //_currentGenesis.Logout(); //var funkadresse = new List(); @@ -384,7 +403,7 @@ namespace Xylem.Common.Ui.GenesisToolBox { _meterBatch = new MeterBatch(); - var configfile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), nameof(Xylem.Common.Hardware.WaterMeter.Genesis), ProgramConfig.SerialConfigFileName); + var configfile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), nameof(Hardware.WaterMeter.Genesis), ProgramConfig.SerialConfigFileName); if (!File.Exists(configfile)) { @@ -432,7 +451,7 @@ namespace Xylem.Common.Ui.GenesisToolBox { Logger.Value.Error(ex, $"Slot #{slotNR} failed: {ex.Message}"); } - _currentGenesis.Login("B507CC0978D6"); + _currentGenesis.Login(); _currentPcbId = _currentGenesis.PcbId; @@ -472,7 +491,7 @@ namespace Xylem.Common.Ui.GenesisToolBox { foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { ((DataRow)rowItem)["isChecked"] = false; } @@ -484,7 +503,7 @@ namespace Xylem.Common.Ui.GenesisToolBox case "All": foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { ((DataRow)rowItem)["isChecked"] = true; } @@ -494,7 +513,7 @@ namespace Xylem.Common.Ui.GenesisToolBox case "Ampl. Test": foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { if (preSetAmplTest.Any(p => p.Equals(((DataRow)rowItem)["Name"].ToString()))) { @@ -512,7 +531,7 @@ namespace Xylem.Common.Ui.GenesisToolBox case "Temp. Calibration": foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { if (preSetTempCal.Any(p => p.Equals(((DataRow)rowItem)["Name"].ToString()))) { @@ -530,7 +549,7 @@ namespace Xylem.Common.Ui.GenesisToolBox case "Zero Flow": foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { if (preSetZeroFlow.Any(p => p.Equals(((DataRow)rowItem)["Name"].ToString()))) { @@ -548,7 +567,7 @@ namespace Xylem.Common.Ui.GenesisToolBox case "Flow Calibration": foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { if (preSetFlowCalibration.Any(p => p.Equals(((DataRow)rowItem)["Name"].ToString()))) { @@ -565,7 +584,7 @@ namespace Xylem.Common.Ui.GenesisToolBox case "All Meteorological": foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { if (preSetAllMeteorological.Any(p => p.Equals(((DataRow)rowItem)["Name"].ToString()))) { @@ -583,7 +602,7 @@ namespace Xylem.Common.Ui.GenesisToolBox case "None": foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { ((DataRow)rowItem)["isChecked"] = false; } @@ -633,11 +652,13 @@ namespace Xylem.Common.Ui.GenesisToolBox private void read() { regsToStore = new regStore() - { PcbId = _currentPcbId, created = DateTimeOffset.Now, keyValues = new List() }; + { + PcbId = _currentPcbId, created = DateTimeOffset.Now, keyValues = new List() + }; var total = 0; foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { if ((Boolean)((DataRow)rowItem)["isChecked"]) { @@ -649,7 +670,7 @@ namespace Xylem.Common.Ui.GenesisToolBox var done = 0; foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { if ((Boolean)((DataRow)rowItem)["isChecked"]) { @@ -658,7 +679,6 @@ namespace Xylem.Common.Ui.GenesisToolBox var meterRegisters = _currentGenesis.GetConfigRegistersDefinitions(); var regDef = meterRegisters.GetRegisterDefinitionByName(reg); - //var regDef = _currentGenesis.GetRegisterDefinitionByName(reg); SetProgreess($"Read Register {regDef.RegisterName}", total, done + 1); if (regDef.RegisterDetail != null && ( regDef.RegisterDetail.Privilege.Lvl8 == Access.RO || @@ -667,25 +687,14 @@ namespace Xylem.Common.Ui.GenesisToolBox try { Byte[] rawRegister; - if (regDef.DataType == typeof(String) || regDef.DataType == typeof(Int64) || - regDef.DataType == typeof(UInt64)) - { - rawRegister = _currentGenesis.ReadRegister(reg, 8); - } - else - { - rawRegister = _currentGenesis.ReadRegister(reg); - } + rawRegister = _currentGenesis.ReadRegister(reg); - var tmpList = rawRegister.ToList(); - tmpList.Reverse(); - if (rawRegister != null) + //var temp = RegisterConverter.GetRegisterContent(regDef, rawRegister); + ((DataRow)rowItem)["RawValue"] = RegisterConverter.GetRegisterRawText(regDef, rawRegister); + regsToStore.keyValues.Add(new regDefValue { - ((DataRow)rowItem)["RawValue"] = BitConverter.ToString(tmpList.ToArray()); - regsToStore.keyValues.Add(new regDefValue() - { def = regDef, value = BitConverter.ToString(rawRegister) }); - - } + def = regDef, value = BitConverter.ToString(rawRegister) + }); try { @@ -732,14 +741,14 @@ namespace Xylem.Common.Ui.GenesisToolBox SetProgreess($"Read File {filename}"); var text = File.ReadAllText(filename); - var loadedRegStore = Newtonsoft.Json.JsonConvert.DeserializeObject(text); + var loadedRegStore = JsonConvert.DeserializeObject(text); var done = 1; foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { SetProgreess($"Read file", loadedRegStore.keyValues.Count, done); @@ -747,7 +756,6 @@ namespace Xylem.Common.Ui.GenesisToolBox var reg = ((DataRow)rowItem)["Name"].ToString(); var meterRegisters = _currentGenesis.GetConfigRegistersDefinitions(); var regDef = meterRegisters.GetRegisterDefinitionByName(reg); - //var regDef = _currentGenesis.GetRegisterDefinitionByName(reg); var keyValue = loadedRegStore.keyValues.FirstOrDefault(f => f.def.RegisterName.Equals(regDef.RegisterName)); @@ -759,23 +767,14 @@ namespace Xylem.Common.Ui.GenesisToolBox regDef.RegisterDetail.Privilege.Lvl8 == Access.RW) { Byte[] rawRegister; - if (regDef.DataType == typeof(String) || regDef.DataType == typeof(Int64) || - regDef.DataType == typeof(UInt64)) - { - rawRegister = _currentGenesis.ReadRegister(reg, 12); - } - else - { - rawRegister = _currentGenesis.ReadRegister(reg); - } + rawRegister = _currentGenesis.ReadRegister(reg); - var tmpList = rawRegister.ToList(); - tmpList.Reverse(); - - if (rawRegister != null) + //var temp = RegisterConverter.GetRegisterContent(regDef, rawRegister); + ((DataRow)rowItem)["RawValue"] = RegisterConverter.GetRegisterRawText(regDef, rawRegister); + regsToStore.keyValues.Add(new regDefValue { - ((DataRow)rowItem)["RawValue"] = BitConverter.ToString(tmpList.ToArray()); - } + def = regDef, value = BitConverter.ToString(rawRegister) + }); try { @@ -842,14 +841,14 @@ namespace Xylem.Common.Ui.GenesisToolBox SetProgreess($"Read File {filename}"); var text = File.ReadAllText(filename); - var loadedRegStore = Newtonsoft.Json.JsonConvert.DeserializeObject(text); + var loadedRegStore = JsonConvert.DeserializeObject(text); var done = 1; foreach (var rowItem in _dataTable.Rows) { - if (rowItem is System.Data.DataRow) + if (rowItem is DataRow) { SetProgreess($"Compare file", loadedRegStore.keyValues.Count, done); @@ -1072,7 +1071,7 @@ namespace Xylem.Common.Ui.GenesisToolBox { if (_currentGenesis != null) { - _currentGenesis.ResetAlarm(GenesisMeter.Alarm.EMPTY_PIPE); + _currentGenesis.ResetAlarm(Alarm.EMPTY_PIPE); } } @@ -1081,7 +1080,7 @@ namespace Xylem.Common.Ui.GenesisToolBox if (_currentGenesis != null) { MessageBox.Show( - $@"Check alarm EMPTY_PIPE = {_currentGenesis.HasAlarms(GenesisMeter.Alarm.EMPTY_PIPE)}"); + $@"Check alarm EMPTY_PIPE = {_currentGenesis.HasAlarms(Alarm.EMPTY_PIPE)}"); } } @@ -1092,7 +1091,7 @@ namespace Xylem.Common.Ui.GenesisToolBox var sb = new StringBuilder(); sb.AppendLine($"PCBID: {_currentGenesis.PcbId}"); sb.AppendLine($"Date: {DateTimeOffset.UtcNow}"); - sb.AppendLine($"System Core Revision: {GenesisMeter.BuildFwVersionString(_currentGenesis.CoreRevision)}"); + sb.AppendLine($"System Core Revision: {BuildFwVersionString(_currentGenesis.CoreRevision)}"); foreach (var fm in _currentGenesis.MeterAppListVersion.OrderBy(o => o.AppId)) { var versionString = fm.IsInstalled @@ -1599,9 +1598,19 @@ namespace Xylem.Common.Ui.GenesisToolBox } } + private String _preSelectReminder = "None"; private void lblState_Click(Object sender, EventArgs e) { - selectPreset("All"); + if (_preSelectReminder.Contains("None")) + { + _preSelectReminder = "All"; + selectPreset("All"); + } + else + { + _preSelectReminder = "None"; + selectPreset("None"); + } } private void button1_Click_3(Object sender, EventArgs e) @@ -1915,7 +1924,7 @@ namespace Xylem.Common.Ui.GenesisToolBox { getPcbId(slotNR); - var str = Logic.SoftwareAccessHelper.LocalWebRequest.GetRequest($"{ServiceUrls.GenesisFinalCheckServiceUrl()}GetPossibleRadioLengths?CheckPcbId={_currentPcbId}", 15000); + var str = LocalWebRequest.GetRequest($"{ServiceUrls.GenesisFinalCheckServiceUrl()}GetPossibleRadioLengths?CheckPcbId={_currentPcbId}", 15000); MessageBox.Show(str); }).ContinueWith(delegate { diff --git a/Common/Ui/IrdaFunctionalTestApp/Program.cs b/Common/Ui/IrdaFunctionalTestApp/Program.cs index 2553c5bd..877d156e 100644 --- a/Common/Ui/IrdaFunctionalTestApp/Program.cs +++ b/Common/Ui/IrdaFunctionalTestApp/Program.cs @@ -43,7 +43,7 @@ namespace Xylem.Common.Ui.IrdaFunctionalTestApp Byte command = 0x09; Byte []payload = {0x0D, 0x0F, 0x00, 0x00, 0x00, 0x00 }; - var txBuffer = transmit.DecodeDataForPhysicalLayer(command, payload); + var txBuffer = transmit.DecodeDataForPhysicalLayer(Ident, command, payload); _irdaComPort.Open(); diff --git a/ServiceFwUpdate/ServiceFwUpdate.sln.DotSettings b/ServiceFwUpdate/ServiceFwUpdate.sln.DotSettings index bb6e07ac..85f77d86 100644 --- a/ServiceFwUpdate/ServiceFwUpdate.sln.DotSettings +++ b/ServiceFwUpdate/ServiceFwUpdate.sln.DotSettings @@ -17,6 +17,7 @@ True True True + True True True True