/// <summary> /// Public Constructor to be used when creating this table. /// </summary> /// <param name="psem">The PSEM communications object for the current session.</param> /// <param name="table0">The table 0 object for the current device.</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 02/06/12 MSC 2.53.36 N/A Created public OpenWayMFGTable2417(CPSEM psem, CTable00 table0) : base(psem, 2417, TABLESIZE) { m_blnChannels = new bool[16]; m_uiChannels = 0; m_uiPhases = 0; }
/// <summary> /// ANSI Quantity Constructor - Base Class for all ANSI Quantities /// </summary> /// <param name="strDescription"> A user displayable description of the quantity instance</param> /// <param name="psem">PSEM Object</param> /// <param name="ANSIDevice">ANSIDevice Object</param> // Revision History // MM/DD/YY Who Version Issue# Description // -------- --- ------- ------ --------------------------------------------- // 09/28/06 KRC 7.35.00 N/A Created // internal ANSIQuantity(String strDescription, CPSEM psem, ANSIMeter ANSIDevice) : base(strDescription) { m_ANSIDevice = ANSIDevice; m_PSEM = psem; m_uiTOURates = m_ANSIDevice.NumberTOURates; }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The PSEM communications object for the current sessions</param> /// <param name="amiDevice">The current device object.</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 02/17/10 RCG 2.40.15 Created // 11/14/13 AF 3.50.03 Class re-architecture - replace CENTRON_AMI parameter // with CANSIDevice // public RFLANCommModule(CPSEM psem, CANSIDevice amiDevice) : base(psem, amiDevice) { m_Table2068 = null; m_Table2078 = null; m_Table2113 = null; m_Table2121 = null; }
/// <summary> /// Constructor /// </summary> /// <param name="PSEM">Protocol obj used to identify the meter</param> // Revision History // MM/DD/YY Who Version ID Number Description // -------- --- ------- -- ------ ---------------------------------------------------------- // 03/18/13 AF 2.80.08 TR 7578 Created // 01/09/14 DLG 3.50.23 TR 9993 Also related to TREQ 9996. Added argument to new parameter // for ICSTableReader when it's instantiated. // public ICS_Gateway(CPSEM PSEM) : base(PSEM) { m_EventDictionary = new ICS_Gateway_EventDictionary(); m_rmStrings = new ResourceManager(RESOURCE_FILE_PROJECT_STRINGS, this.GetType().Assembly); m_ICSTableReader = new ICSTableReader(PSEM, this); }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The PSEM communications object for the current session.</param> /// <param name="Table0">The table 0 object for the current device.</param> /// <param name="Table21">The table 21 object for the current device.</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 12/14/10 SCW 9.70.18 N/A Created for CENTRON II public MFGTable2053(CPSEM psem, CTable00 Table0, StdTable21 Table21) : base(psem, 2053, DetermineTableSize(Table0, Table21), TABLE_TIMEOUT) { m_Table0 = Table0; m_Table21 = Table21; m_DemandResetRegisterData = null; }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The current PSEM communications object</param> /// <param name="Table0"></param> /// <param name="Table2368"></param> // Revision History // MM/DD/YY Who Version Issue# Description // -------- --- ------- ------ ------------------------------------------- // 06/07/11 jrf 2.51.10 173353 Created // public OpenWayMFGTable2370(CPSEM psem, CTable00 Table0, OpenWayMFGTable2368 Table2368) : base(psem, 2370, GetTableSize(Table0, Table2368), TABLE_TIMEOUT) { m_iTimeFormat = Table0.TimeFormat; m_byPowerMonitorRecordsUsed = Table2368.PowerMonitorRecordsUsed; //Get the resource manager m_rmStrings = new ResourceManager(RESOURCE_FILE_PROJECT_STRINGS, this.GetType().Assembly); }
/// <summary> /// Constructor /// </summary> /// <param name="PSEM">Protocol obj used to identify the meter</param> /// Revision History /// MM/DD/YY who Version Issue# Description /// -------- --- ------- ------ --------------------------------------- /// 05/22/06 mrj 7.30.00 N/A Created /// public CENTRON_POLY(CPSEM PSEM) : base(PSEM) { //Use the Centron LIDs m_LID = new CentronPolyDefinedLIDs(); //Get the resource manager m_rmStrings = new ResourceManager(RESOURCE_FILE_PROJECT_STRINGS, this.GetType().Assembly); }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The PSEM object for the current session.</param> /// <param name="table00">The Table 0 object for the current device.</param> /// <param name="table91">The Table 91 object for the current device.</param> // Revision History // MM/DD/YY Who Version Issue# Description // -------- --- ------- ------ --------------------------------------------- // 02/14/07 RCG 8.00.12 Created public StdTable93(CPSEM psem, CTable00 table00, StdTable91 table91) : base(psem, 93, StdTable93.DetermineTableSize(table00, table91)) { m_Table00 = table00; m_Table91 = table91; // Determine the size of the WINDOW_RCD record m_uiWindowRcdSize = table00.STIMESize * 2 + 1; }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The PSEM communications object for the current session</param> /// <param name="amiDevice">The current device object.</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 02/17/10 RCG 2.40.15 Created // 11/14/13 AF 3.50.03 Class re-architecture - replace CENTRON_AMI parameter // with CANSIDevice // public PLANCommModule(CPSEM psem, CANSIDevice amiDevice) : base(psem, amiDevice) { m_Table2194 = null; m_PLANTable2210 = null; m_PLANTable2211 = null; m_PLANTable2212 = null; m_PLANTable2215 = null; }
/// <summary> /// Constructor /// </summary> /// <param name="psem">Protocol instance being used by the device</param> /// <param name="TableID">C12.19 table ID with the MFG bit included as ushort</param> /// <param name="Size">Size in bytes of this table</param> /// <param name="ExpirationTimeout">The amount of time (ms) before the table expires.</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ ------------------------------------------- // 05/16/08 RCG 1.50.26 N/A Created public AnsiTable(CPSEM psem, ushort TableID, uint Size, int ExpirationTimeout) { m_TableID = TableID; m_PSEM = psem; ChangeTableSize(Size); m_iTimeout = ExpirationTimeout; m_ExpirationTimer = new Timer(new TimerCallback(TableExpired), null, Timeout.Infinite, Timeout.Infinite); m_blnAllowAutomaticTableResizing = false; InitializeMembers(); }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The PSEM communications object</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 02/03/10 RCG 2.40.11 N/A Created public OpenWayMFGTable3043Header(CPSEM psem) : base(psem, 3043, SUBTABLE_OFFSET, SUBTABLE_SIZE) { m_strID = ""; m_strBuildDate = ""; m_bIsValidCoreDump = false; m_byFWVersion = 0; m_byFWRevision = 0; m_byFWBuild = 0; m_uiCoreDumpTime = 0; }
/// <summary> /// Creates a new device object /// </summary> /// <param name="psem">The current PSEM object</param> /// <param name="key">Signed authorization security key</param> // Revision History // MM/DD/YY Who Version Issue# Description // -------- --- ------- ------ ------------------------------------------- // 09/17/09 RCG 2.30.00 Created // 02/17/11 RCG 2.50.04 Adding Support for ITRD, ITRE, ITRF meters // 03/22/11 jrf 2.80.10 Adding support for creating new ITRJ device object. // 12/04/13 jrf 3.50.13 Moved logic to create device into CANSIDevice.CreateDevice(...). // 10/31/14 jrf 4.00.82 WR 542694 Added support for identifying Bridge meter with signed authorizaion. protected CENTRON_AMI CreateDevice(CPSEM psem, SignedAuthorizationKey key) { CENTRON_AMI CreatedDevice = CANSIDevice.CreateDevice(m_Comm, psem, key) as CENTRON_AMI; if (null == CreatedDevice) { throw new InvalidOperationException(TestResources.MeterTypeNotSupported); } return(CreatedDevice); }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The PSEM communications object for the current device.</param> /// <param name="amiDevice">The device object for the current device</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 02/17/10 RCG 2.40.15 Created // 11/14/13 AF 3.50.03 Class re-architecture - replace CENTRON_AMI parameter // with CANSIDevice // public CommModuleBase(CPSEM psem, CANSIDevice amiDevice) { m_PSEM = psem; m_AMIDevice = amiDevice; m_Table121 = null; m_Table122 = null; m_Table123 = null; m_Table126 = null; m_Table127 = null; }
/// <summary> /// Constructor. /// </summary> /// <param name="psem">The current PSEM communications object.</param> /// <param name="bytSize"></param> /// <param name="enumStatusFormat"></param> // Revision History // MM/DD/YY Who Version Issue# Description // -------- --- ------- ------ ------------------------------------------- // 02/05/10 jrf 2.40.12 Created // public OpenWayMFGTable2180(CPSEM psem, StatusFormat enumStatusFormat, byte bytSize) : base(psem, 2180, GetTableSize(enumStatusFormat, bytSize)) { //MissingBlocks if (StatusFormat.MissingBlocks == enumStatusFormat) { m_ausBlocksMissing = new ushort[bytSize]; } //Bitfield else if (StatusFormat.MissingBlocks == enumStatusFormat) { m_abytBlocksMissing = new byte[bytSize]; } }
/// <summary> /// Constructor, create the config blocks specific to the Poly. /// </summary> /// <param name="psem">The protocol instance to use</param> /// <example><code> /// Communication comm = new Communication(); /// comm.OpenPort("COM4:"); /// CPSEM PSEM = new CPSEM(comm); /// PSEM.Logon(""); /// PSEM.Security"(""); /// CTable2048_Poly Table2048 = new CTable2048_Poly( PSEM ); /// </code></example> /// // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 05/22/06 mrj 7.30.00 N/A Created // 01/15/07 RCG 8.00.06 Adding DisplayConfig public CTable2048_Poly(CPSEM psem) : base(psem) { m_ConstantsConfig = new ConstantsConfig(psem, m_2048Header.ConstantsOffset, ConstantsConfig.IMAGE_CONSTANTS_CONFIG_LENGTH); m_BillingSchedConfig = new BillingSchedConfig(psem, m_2048Header.BillingSchedOffset, BillingSchedConfig.IMAGE_BILLING_SCHED_CONFIG_LENGTH); m_DisplayConfig = new DisplayConfig_Shared(psem, m_2048Header.DisplayOffset); m_HistoryLogConfig = new CENTRON_POLY_HistoryLogConfig(psem, m_2048Header.HistoryLogOffset); // Initialize Firmware and/or device specific tables InitializeSpecialCases(); }
/// <summary> /// Default Constructor /// </summary> // Revison History: // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 06/01/06 RCG 7.40.00 N/A Created // 04/12/16 AF 4.50.244 674921 Added optional parameter for M2Gateway public AMIConfiguration(bool bIsM2Gateway = false) { #if (!WindowsCE) m_SerialPort = new SerialCommDesktop(); #else m_SerialPort = new SerialCommCE(); #endif m_PSEM = new CPSEM(m_SerialPort); if (bIsM2Gateway) { CreateInstanceM2Gateway(m_PSEM); } else { CreateInstance(m_PSEM); } }
/// <summary> /// Constructor, create the config blocks specific to the Sentinel. /// </summary> /// <param name="psem">The protocol instance to use</param> /// <param name="FW_Rev">Firmware rev of this meter</param> /// <example><code> /// Communication comm = new Communication(); /// comm.OpenPort("COM4:"); /// CPSEM PSEM = new CPSEM(comm); /// PSEM.Logon(""); /// PSEM.Security"(""); /// CTable2048_Sentinel Table2048 = new CTable2048_Sentinel( PSEM ); /// </code></example> /// /// Revision History /// MM/DD/YY who Version Issue# Description /// -------- --- ------- ------ --------------------------------------- /// 05/22/06 mrj 7.30.00 N/A Created /// public CTable2048_Sentinel(CPSEM psem, float FW_Rev) : base(psem) { m_ConstantsConfig = new ConstantsConfig(psem, m_2048Header.ConstantsOffset, ConstantsConfig.SENTINEL_CONSTANTS_CONFIG_LENGTH); m_BillingSchedConfig = new BillingSchedConfig(psem, m_2048Header.BillingSchedOffset, BillingSchedConfig.SENTINEL_BILLING_SCHED_CONFIG_LENGTH); m_DisplayConfig = new SENTINEL_DisplayConfig(psem, m_2048Header.DisplayOffset); m_HistoryLogConfig = new SENTINEL_HistoryLogConfig(psem, m_2048Header.HistoryLogOffset); if (SATURN_FIRMWARE_REV > FW_Rev) { // The default case in the base class handles Saturn and Image // meters m_MaxCalYears = PRE_SATURN_CALENDAR_YEARS; } // Initialize Firmware and/or device specific tables InitializeSpecialCases(); }
/// <summary> /// Constructor /// </summary> /// <param name="PSEM">Protocol obj used to identify the meter</param> /// Revision History /// MM/DD/YY who Version Issue# Description /// -------- --- ------- ------ --------------------------------------- /// 05/22/06 mrj 7.30.00 N/A Created /// public CENTRON2_MONO(CPSEM PSEM) : base(PSEM) { //Use the Centron LIDs m_LID = new CentronMonoDefinedLIDs(); }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The PSEM communications object for the current session</param> /// <param name="fltRegFWVer">register firmware version</param> /// <param name="uiRegFWBuild">register firmware build</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 05/20/11 MMD Created // 05/15/15 jrf 4.50.124 584991 Allowing automatic resizing of table. // 05/27/15 jrf 4.50.126 584991 Moving instantiation of AMIHW3TASKRCD[] // to ParseData() public OpenWayMFGTable2270(CPSEM psem, float fltRegFWVer, uint uiRegFWBuild) : base(psem, 2270, GetTableSize(fltRegFWVer, uiRegFWBuild), TABLE_TIMEOUT) { m_blnAllowAutomaticTableResizing = true; }
/// <summary> /// The Constructor. Used to access common FWDL methods and properites. Usually instantiated /// by classes that are implementing the IFirmwareDownload Interface. At this time it only /// applies to ICS Gateway devices. /// </summary> /// <param name="PSEM">The PSEM object to be used in the class.</param> /// <param name="ANSIDevice">The ANSIDevice to be used in the class.</param> /// <param name="DebugLogger">The DebugLogger to be used in the class.</param> // Revision History // MM/DD/YY Who Version Issue# Description // -------- --- ------- -------- ------------------------------------------- // 01/06/14 DLG 3.50.14 Created. // public CommonFirmwareDownload(CPSEM PSEM, CANSIDevice ANSIDevice, Logger DebugLogger) { m_PSEM = PSEM; m_ANSIDevice = ANSIDevice; m_Logger = DebugLogger; }
/// <summary> /// Logs on to the specified device. /// </summary> /// <returns>The response of the logon.</returns> // Revision History // MM/DD/YY Who Version Issue# Description // -------- --- ------- ------ ------------------------------------------- // 09/17/09 RCG 2.30.00 Created // 04/09/14 jrf 3.50.68 WR458134 Generating a FatalError event and aborting test if we // can't communicate with the ICS module. // 10/31/14 jrf 4.00.82 WR 542694 Added support for identifying Bridge meter with signed authorizaion. protected PSEMResponse LogonToDevice() { PSEMResponse Response = PSEMResponse.Ok; CPSEM PSEM = new CPSEM(m_Comm); Response = PSEM.Identify(); if (Response != PSEMResponse.Ok) { // The meter may have been left in a bad state issuing Identify again // may reset the state in the meter. Response = PSEM.Identify(); } if (Response == PSEMResponse.Ok) { Response = PSEM.Negotiate(CPSEM.DEFAULT_MAX_PACKET_LEGNTH, CPSEM.DEFAULT_MAX_NUMBER_OF_PACKETS, m_uiBaudRate); } if (Response == PSEMResponse.Ok) { Response = PSEM.Logon("", CPSEM.DEFAULT_HH_PRO_USER_ID); } if (Response == PSEMResponse.Ok) { m_AmiDevice = CreateDevice(PSEM, m_AuthorizationKey); if (m_AuthorizationKey != null && m_AuthorizationKey.IsValid && m_AmiDevice.SignedAuthorizationState != null && m_AmiDevice.SignedAuthorizationState.Value != FeatureState.Disabled) { // We should use signed authorization to log on to the meter. m_AmiDevice.Authenticate(m_AuthorizationKey); } else { m_AmiDevice.Security(GetPasswords()); } ICSCommModule ICSModule = (null != m_AmiDevice) ? m_AmiDevice.CommModule as ICSCommModule : null; bool ICSCommError = false; if (null != ICSModule) { try { if (0 == ICSModule.ICMFirmwareVersionMajor) { ICSCommError = true; } } catch { ICSCommError = true; } if (true == ICSCommError) { //Cannot communicate with ICS comm module so display error OnFatalError(new ItronErrorEventArgs(Resources.LOGON_FAILED_ICS_COMM_ERROR, null)); Abort(); } } } return(Response); }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The PSEM communications object for the current session</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 03/16/10 RCG 2.40.25 Created public OpenWayMFGTable2220(CPSEM psem) : base(psem, 2220, TABLE_SIZE, TABLE_TIMEOUT) { }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The current PSEM communications object</param> // Revision History // MM/DD/YY Who Version Issue# Description // -------- --- ------- ------ ------------------------------------------- // 04/25/11 MAH 2.50.30 Created // public OpenWayMFGTable2260ExtendedConfig(CPSEM psem) : base(psem, 2260, TABLE_OFFSET, TABLE_SIZE) { }
/// <summary> /// Constructor /// </summary> /// <param name="psem">PSEM object for communication with the meter.</param> /// Revision History /// MM/DD/YY who Version Issue# Description /// -------- --- ------- ------ --------------------------------------- /// 05/23/06 mrj 7.30.00 N/A Created /// public LIDRetriever(CPSEM psem) { m_PSEM = psem; m_DataReader = null; }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The PSEM communications object for the current session.</param> /// <param name="table11">The actual sources limiting table.</param> /// <param name="tableID">The Table ID Number</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 12/12/11 RCG 2.53.20 N/A Created public StdTable14(CPSEM psem, StdTable11 table11, ushort tableID) : base(psem, tableID, StdTable14.DetermineTableSize(table11)) { m_Table11 = table11; }
/// <summary> /// Constructor. /// </summary> /// <param name="psem">The psem communications object for the current session.</param> /// <param name="tableID">The Table ID number</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 12/12/11 RCG 2.53.20 N/A Created public StdTable11(CPSEM psem, ushort tableID) : base(psem, tableID, TABLE_SIZE) { }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The PSEM communications object for the current session.</param> /// <param name="Table11">The actual sources limiting table.</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 09/19/08 RCG 2.00.00 N/A Created for OpenWay // 12/12/11 RCG 2.53.20 Modified for Extended LP and IP support public StdTable14(CPSEM psem, StdTable11 Table11) : this(psem, Table11, 14) { }
/// <summary> /// Constructor /// </summary> /// <param name="psem">The current PSEM communications object</param> // Revision History // MM/DD/YY Who Version Issue# Description // -------- --- ------- ------ ------------------------------------------- // 02/03/10 AF 2.40.11 Created // public OpenWayMFGTable2260SR30Config(CPSEM psem) : base(psem, 2260, TABLE_OFFSET, TABLE_SIZE, TABLE_TIMEOUT) { }
/// <summary> /// Constructor. /// </summary> /// <param name="psem">The psem communications object for the current session.</param> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 09/19/08 RCG 2.00.00 N/A Created for OpenWay // 12/12/11 RCG 2.53.20 Modified for Extended LP and IP support public StdTable11(CPSEM psem) : this(psem, 11) { }
/// <summary> /// Method to determine if device is a bridge meter. Used to determine whether or not to /// instantiate this class. /// </summary> /// <param name="PSEM">Protocol obj used to identify the meter</param> ///<param name="securityError">An indication of whether a security error occurred while /// verifying a bridge meter.</param> /// <returns>Whether or not device is a bridge meter.</returns> // Revision History // MM/DD/YY who Version Issue# Description // -------- --- ------- ------ --------------------------------------- // 12/04/13 jrf 3.50.10 Created // 10/31/14 jrf 4.00.82 WR542694 Handling new method signature for IsBridgeMeter. public static bool IsBridgeMeter(CPSEM PSEM, out bool securityError) { return(BridgeDevice.IsBridgeMeter(PSEM, out securityError)); }