)>}]
شركة التطبيقات المتكاملة لتصميم وبرمجة البرمجيات الخاصة ش.ش.و.
Integrated Applications Programming Company
Home » Code Library » EmsVoipPstnUser (Ia.Ftn.Cl.Models.Huawei)

Public general use code classes and xml files that we've compiled and used over the years:

Huawei's EMS VOIP PSTN User Entity Framework class for Fixed Telecommunications Network (FTN) entity model.

    1: using System;
    2: using System.ComponentModel.DataAnnotations;
    3: using System.ComponentModel.DataAnnotations.Schema;
    4: using System.Linq;
    5: using System.Threading;
    6: using System.Threading.Tasks;
    7:  
    8: namespace Ia.Ftn.Cl.Models.Huawei
    9: {
   10:     ////////////////////////////////////////////////////////////////////////////
   11:  
   12:     /// <summary publish="true">
   13:     /// Huawei's EMS VOIP PSTN User Entity Framework class for Fixed Telecommunications Network (FTN) entity model.
   14:     /// </summary>
   15:     /// 
   16:     /// <remarks> 
   17:     /// Copyright © 2017-2021 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   18:     ///
   19:     /// This library is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
   20:     /// the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
   21:     ///
   22:     /// This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
   23:     /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
   24:     /// 
   25:     /// You should have received a copy of the GNU General Public License along with this library. If not, see http://www.gnu.org/licenses.
   26:     /// 
   27:     /// Copyright notice: This notice may not be removed or altered from any source distribution.
   28:     /// </remarks> 
   29:     public class EmsVoipPstnUser : IEquatable<EmsVoipPstnUser>
   30:     {
   31:         /*
   32:          * iManager_NCE_V200R014C60_TL1_NBI_User_Guide_13.pdf
   33:          * 
   34:          * 14.19.1 Querying a VoIP PSTN User (LST-VOIPPSTNUSER)
   35:          * Usage Note: This command is used to query the service data of a VoIP PSTN user. Run this command when you need to query the service data of a VoIP PSTN user configured in the system.
   36:          * Command Format LST-VOIPPSTNUSER::(((DID=Device-ID|DEV=Device-name),FN=Frame-num,SN=Slotnum,PN=Port-num)|(MGID=MediaGateway-ID|MGNAME=MediaGateway-Name,TID=Terminal-ID)| DN=Telephone-Number|ALIAS=Port-alias):{ctag}::[SHOWOPTION=CidTransWhen CidFormat MGNAME OverloadPRI ImpedanceProfile SendVoiceGain RecvVoiceGain RevPolarityMode PortRunState PortTestState PortLineState PortLoopState ServiceRunState ServiceAdminState ActualSendVoiceGain ActualRecvVoiceGain AGCEnable AGCEnableLevel SNSEnable SNSEnableLevel NlpMode LineLockEnable DspInputGain DspOutputGain ClipReversePole DEFAULTCLI USERGROUPID ADJUSTFACTOR DSPPROFILE]; 
   37:          */
   38:  
   39:         /// <summary/>
   40:         public EmsVoipPstnUser() { }
   41:  
   42:         /// <summary/>
   43:         [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
   44:         public string Id { get; set; }
   45:  
   46:         /// <summary>
   47:         /// Last ResultCode of device
   48:         /// </summary>
   49:         public long ResultCode { get; set; }
   50:  
   51:         /// <summary>
   52:         /// Operational state ID of the device
   53:         /// </summary>
   54:         public int StateId { get; set; }
   55:  
   56:         /// <summary> 
   57:         /// DID INTEGER - Indicates the device ID. 
   58:         /// </summary>
   59:         public int DID { get; set; }
   60:  
   61:         /// <summary> 
   62:         /// FN INTEGER 0-255 Indicates the subrack ID. 
   63:         /// </summary>
   64:         public int FN { get; set; }
   65:  
   66:         /// <summary> 
   67:         /// SN INTEGER 0-35 Indicates the slot ID. 
   68:         /// </summary>
   69:         public int SN { get; set; }
   70:  
   71:         /// <summary> 
   72:         /// PN INTEGER 0-63 Indicates the port ID. 
   73:         /// </summary>
   74:         public int PN { get; set; }
   75:  
   76:         /// <summary> 
   77:         /// MGID INTEGER 0-16777215 Indicates MG ID. 
   78:         /// </summary>
   79:         public int MGID { get; set; }
   80:  
   81:         /// <summary> 
   82:         /// MGNAME OCTET STRING SIZE (32) Indicates the MG name. 
   83:         /// </summary>
   84:         public string MGNAME { get; set; }
   85:  
   86:         /// <summary> 
   87:         /// TID INTEGER 0-9999 Indicates the terminal ID
   88:         /// </summary>
   89:         public int TID { get; set; }
   90:  
   91:         /// <summary> 
   92:         /// DN OCTET STRING SIZE (64) l UA5000(PVM): When the SIP protocol is used, the DN value is a character string consisting of no more than 32 characters. When the H. 248 protocol is used, the DN value is a numeral consisting of no more than 16 digits. l Other devices: When the SIP protocol is used, the DN value is a character string consisting of no more than 64 characters. When the H. 248 protocol is used, the DN value is a numeral consisting of no more than 16 digits. Indicates the telephone number. 
   93:         /// </summary>
   94:         public string DN { get; set; }
   95:  
   96:         /// <summary> 
   97:         /// LayeredConf OCTET STRING l Not Layered l Layered Specifies whether to enable the layered configuration. NOTE This parameter is not applicable to the MDU.
   98:         /// </summary>
   99:         public string LayeredConf { get; set; }
  100:  
  101:         /// <summary> 
  102:         /// HighLevelWidth INTEGER 20-500 Indicates the width of the high level. Unit: ms.
  103:         /// </summary>
  104:         public int HighLevelWidth { get; set; }
  105:  
  106:         /// <summary> 
  107:         /// LowerLevelWidth INTEGER 20-500 Indicates the width of the low level. Unit: ms. 
  108:         /// </summary>
  109:         public int LowerLevelWidth { get; set; }
  110:  
  111:         /// <summary> 
  112:         /// Voltage OCTET STRING See Table D-20. Indicates the effective value of level. Unit: Vrms. 
  113:         /// </summary>
  114:         public string Voltage { get; set; }
  115:  
  116:         /// <summary> 
  117:         /// KCType OCTET STRING 16KC 12KC Indicates the KC accounting mode. 
  118:         /// </summary>
  119:         public string KCType { get; set; }
  120:  
  121:         /// <summary> 
  122:         /// VoiceGain OCTET STRING See Table D-19. Indicates the voice gain. Unit: dB.
  123:         /// </summary>
  124:         public string VoiceGain { get; set; }
  125:  
  126:         /// <summary> 
  127:         /// LimitPulseDial OCTET STRING l Disable l Enable l DTMF-Pulse-both l DTMF-only l Pulse-only Specifies the dialing mode. The meanings of the options are as follows: l Disable: The dialing mode is not restricted. l Enable: The dialing mode is restricted. l DTMF-Pulse-both: The pulse dialing and the DTMF dialing are permitted. l DTMF-only: Only the DTMF dialing is permitted. l Pulse-only: Only the pulse dialing is permitted. The UA5000PVMR15, MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support the following options: DTMF-Pulse-both, DTMF-only and Pulseonly. The UA5000PVMR13 supports the following options: Disable and Enable.
  128:         /// </summary>
  129:         public string LimitPulseDial { get; set; }
  130:  
  131:         /// <summary> 
  132:         /// RevPolarity OCTET STRING l Disable l Enable Specifies whether to enable the polarity reversal. The UA5000 (PVM), MA5616, MA5620E, and MA5620G support this parameter.
  133:         /// </summary>
  134:         public string RevPolarity { get; set; }
  135:  
  136:         /// <summary> 
  137:         /// RevPoleLevel INTEGER l UA5000 (PVM): 20-2560 l MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616: 20-1270 Indicates the level width of the reversed polarity pulse. Unit: ms.
  138:         /// </summary>
  139:         public int RevPoleLevel { get; set; }
  140:  
  141:         /// <summary> 
  142:         /// RevPolePulse OCTET STRING l Disable l Enable Specifies whether to enable the reversed polarity pulse.
  143:         /// </summary>
  144:         public string RevPolePulse { get; set; }
  145:  
  146:         /// <summary> 
  147:         /// PSTAT OCTET STRING l Idle l Fault l Testing l Lock l Busy l Localloopback l Remoteloopback Indicates the port status. The UA5000 (PVM) supports this parameter, and the MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 do not support this parameter.
  148:         /// </summary>
  149:         public string PSTAT { get; set; }
  150:  
  151:         /// <summary> 
  152:         /// ConfigStatus OCTET STRING l VoIP Configured l Narrowband Voice ConfigStatus l Not Configured Indicates the configuration status.
  153:         /// </summary>
  154:         public string ConfigStatus { get; set; }
  155:  
  156:         /// <summary> 
  157:         /// ServiceStatus OCTET STRING l Local Terminate l ServiceRemote Terminate l ServiceAuto Terminate l ServiceEnable Service Indicates the service status. The UA5000 (PVM) supports this parameter, and the MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 do not support this parameter.
  158:         /// </summary>
  159:         public string ServiceStatus { get; set; }
  160:  
  161:         /// <summary> 
  162:         /// ServiceType OCTET STRING l Instant Service l Internal SPC l V5 SPC l V5-PRE l Leased Line l IP SPC Indicates the service type. The UA5000 (PVM) supports this parameter, and the MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 do not support this parameter.
  163:         /// </summary>
  164:         public string ServiceType { get; set; }
  165:  
  166:         /// <summary> 
  167:         /// ALIAS OCTET STRING SIZE (32) Indicates the port alias.
  168:         /// </summary>
  169:         public string ALIAS { get; set; }
  170:  
  171:         /// <summary> 
  172:         /// UserType OCTET STRING (20) l DEL user l Loop Calling PBX l Earth Calling PBX l PayPhone Indicates the user type.
  173:         /// </summary>
  174:         public string UserType { get; set; }
  175:  
  176:         /// <summary> 
  177:         /// Impedance OCTET STRING (100) l Bureau machine in China l User Machine in China l 600ohm Interface l Interface of russian l (220+820||115nf) l (220+820||120nf) l 900ohm Interface l Interface of Brazil l BT0 l HK_BT3 l HK_BT5 l BT1 l BT2 l BT3 l Commonly used in Europe l Private definition Indicates the impedance of the port. The complete specifications are as follows: l 1: Bureau machine in China(200+680|| 100nf) l 2: User Machine in China(200+560|| 100nf) l 3: 600ohm Interface l 4: Interface of russian(150+510|| 47nf) l 5: (220+820||115nf) l 6: (220+820||120nf) l 7: 900ohm Interface l 8: Interface of Brazil(800||50nf) l 9: BT0(Zin=300+1000|| 220nf,Zload=370+62 0||310nf) l 10: HK_BT3(Zin=370+6 20|| 310nf,Zload=600) l 11: HK_BT5(Zin=270+2 64||357nf+1434|| 265nf,Zload=600) l 12: BT1(BT0 without AGC) l 13: BT2 l 14: BT3 l 15: Commonly used in Europe (Zin= 270+750|| 150nf) l 255: Private definition Default: 600ohm Interface.
  178:         /// </summary>
  179:         public string Impedance { get; set; }
  180:  
  181:         /// <summary> 
  182:         /// Current OCTET STRING (32) UA5000 (PVM): l 25mA steady current l 16mA steady current l 32mA steady current l 40mA steady current l 35mA 2*200ohm l 35mA 2*250ohm l 35mA 2*400ohm l 47mA 2*200ohm l 47mA 2*250ohm l 47mA 2*400ohm l 20mA 2*200ohm l 20mA 2*250ohm l 20mA 2*400ohm l 30mA 2*200ohm l 30mA 2*250ohm l 30mA 2*400ohm l 40mA 2*200ohm l 40mA 2*250ohm l 40mA 2*400ohm MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616: l 16mA l 20mA l 25mA l 30mA l 35mA l 40mA l 45mA Indicates the current of the port.
  183:         /// </summary>
  184:         public string Current { get; set; }
  185:  
  186:         /// <summary> 
  187:         /// DCTime INTEGER 0-100 Indicates the power outage duration of the terminal. Unit: 10 ms.
  188:         /// </summary>
  189:         public int DCTime { get; set; }
  190:  
  191:         /// <summary> 
  192:         /// PITime INTEGER 0-20 Indicates the duration of waiting to collect digits. Unit: 10 ms. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 do not support this parameter. 
  193:         /// </summary>
  194:         public int PITime { get; set; }
  195:  
  196:         /// <summary> 
  197:         /// FSKDelayInterval INTEGER 0-100 Indicates the delay in issuing the calling number. Unit: 10 ms.
  198:         /// </summary>
  199:         public int FSKDelayInterval { get; set; }
  200:  
  201:         /// <summary> 
  202:         /// ActualVoiceGain OCTET STRING (32) l high l low l [3~0] l [3~-3.5] l [3~-7] l [3~-12] l [3~-8.5] l [0~0] l [0~-3.5] l [0~-7] l [0~-12] l [0~-8.5] l [-3~0] l [-3~-3.5] l [-3~-7] l [-3~-12] l [-3~-8.5] l [3~-3] l [3~-6] l [3~-9] l [0~-3] l [0~-6] l [0~-9] l [-3~-3] l [-3~-6] l [-3~-9] l [-4~-9] l [-2.5~-7.5] l [-1~-6] l [1.5~-3.5] l [4~-1] l Auto Voice Gain[-1~-4~-6~9] Indicates the actual voice gain. l The UA5000 (PVM) supports this parameter, and the MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 do not support this parameter. l The expression [A~B] indicates a pair of values instead of a value range. A indicates the receive voice gain, and B indicates the transmit voice gain with dB as its unit. For example, values [3~0] indicate that the receive voice gain is 3 dB, and the transmit voice gain is 0 dB.
  203:         /// </summary>
  204:         public string ActualVoiceGain { get; set; }
  205:  
  206:         /// <summary> 
  207:         /// CidTransWhen OCTET STRING AfterRing BeforeRing Indicates the time when the calling number is issued.
  208:         /// </summary>
  209:         public string CidTransWhen { get; set; }
  210:  
  211:         /// <summary> 
  212:         /// CidFormat OCTET STRING l SDMF l MDMF l DTMF l R15(RUSSIA) l ETSI Indicates the format for issuing the calling number. The UA5000PVM V200R013C03 supports the value R15(RUSSIA). The MA5600T, MA5603T, and MA5606T V800R062 support the values R15(RUSSIA) and ETSI. The meanings of the options are as follows: l SDMF: Indicates the caller identification display in the FSK format. l MDMF: Indicates the caller identification display in the FSK format. l DTMF: Indicates the caller identification display in the DTMF format. l R15(RUSSIA): Indicates the caller identification display of telephones in Russia. l ETSI: Indicates the caller identification display for BT that complies with the ETSI standard.
  213:         /// </summary>
  214:         public string CidFormat { get; set; }
  215:  
  216:         /// <summary> 
  217:         /// OverloadPRI OCTET STRING l cat1 l cat2 l cat3 Indicates the overload priority. This parameter is displayed only when the entered SHOWOPTION contains the OverloadPRI parameter. By default, this parameter is not displayed.
  218:         /// </summary>
  219:         public string OverloadPRI { get; set; }
  220:  
  221:         /// <summary> 
  222:         /// ImpedanceProfile OCTET STRING SIZE (32) Indicates the name of the impedance attenuation profile. The UA5000 (PVM) supports this parameter, and the MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 do not support this parameter.
  223:         /// </summary>
  224:         public string ImpedanceProfile { get; set; }
  225:  
  226:         /// <summary> 
  227:         /// SendVoiceGain OCTET STRING 5/4.5/4/3.5/3/2.5/2/1.5/1/0.5/0/-0 . 5/-1/-1.5/-2/-2.5/-3/-3.5/-4/-4.5/5/-5.5/-6/Auto Voice Gain Indicates the transmit voice gain. Unit: dB. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  228:         /// </summary>
  229:         public string SendVoiceGain { get; set; }
  230:  
  231:         /// <summary> 
  232:         /// RecvVoiceGain OCTET STRING 0/-0.5/-1/-1.5/-2/-2.5/-3/-3.5/-4/4.5/-5/-5.5/-6/-6.5/-7/-7.5/-8/-8.5 /-9/-9.5/-10/-10.5/-11/-11.5/-12/ Auto Voice Gain Indicates the receive voice gain. Unit: dB. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  233:         /// </summary>
  234:         public string RecvVoiceGain { get; set; }
  235:  
  236:         /// <summary> 
  237:         /// RevPolarityMode OCTET STRING l Hard l Soft Indicates the polarity reversal mode. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  238:         /// </summary>
  239:         public string RevPolarityMode { get; set; }
  240:  
  241:         /// <summary> 
  242:         /// PortRunState OCTET STRING l Normal l Fault l Deactive l Low Power Indicates the running status of the port. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  243:         /// </summary>
  244:         public string PortRunState { get; set; }
  245:  
  246:         /// <summary> 
  247:         /// PortTestState OCTET STRING l Not Test l Testing Indicates the testing status of the port. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  248:         /// </summary>
  249:         public string PortTestState { get; set; }
  250:  
  251:         /// <summary> 
  252:         /// PortLineState OCTET STRING Normal On Earth Indicates the line status of the port. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  253:         /// </summary>
  254:         public string PortLineState { get; set; }
  255:  
  256:         /// <summary> 
  257:         /// PortLoopState OCTET STRING l Not Loopback l Local Loopback l Remote Loopback Indicates the loopback status of the port. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  258:         /// </summary>
  259:         public string PortLoopState { get; set; }
  260:  
  261:         /// <summary> 
  262:         /// ServiceRunState OCTET STRING l Fault l Idle l Off-hook l Lock l Ring Indicates the running status of the ongoing service of the port. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  263:         /// </summary>
  264:         public string ServiceRunState { get; set; }
  265:  
  266:         /// <summary> 
  267:         /// ServiceAdminState OCTET STRING l Local Terminate Service l Peer Terminate Service l Enable Service Indicates the management status of the ongoing service of the port. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  268:         /// </summary>
  269:         public string ServiceAdminState { get; set; }
  270:  
  271:         /// <summary> 
  272:         /// ActualSendVoiceGain OCTET STRING 5/4.5/4/3.5/3/2.5/2/1.5/1/0.5/0/-0 . 5/-1/-1.5/-2/-2.5/-3/-3.5/-4/-4.5/5/-5.5/-6/Auto Voice Gain Indicates the actual transmit voice gain. Unit: dB. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  273:         /// </summary>
  274:         public string ActualSendVoiceGain { get; set; }
  275:  
  276:         /// <summary> 
  277:         /// ActualRecvVo iceGain OCTET STRING 0/-0.5/-1/-1.5/-2/-2.5/-3/-3.5/-4/4.5/-5/-5.5/-6/-6.5/-7/-7.5/-8/-8.5 /-9/-9.5/-10/-10.5/-11/-11.5/-12/ Auto Voice Gain Indicates the actual receive voice gain. Unit: dB. The MA5600T, MA5603T, MA5606T, MA5620E, MA5620G, MA5610, and MA5616 support this parameter, and the UA5000 (PVM) does not support this parameter.
  278:         /// </summary>
  279:         public string ActualRecvVo { get; set; }
  280:  
  281:         /// <summary> 
  282:         /// AGCEnable OCTET STRING l Disable l Enable Specifies whether to support the automatic gain control (AGC). The UA5000PVM V200R13C03 and MA5600T, MA5603T, and MA5606T V800R62 support this parameter. Default: Disable.
  283:         /// </summary>
  284:         public string AGCEnable { get; set; }
  285:  
  286:         /// <summary> 
  287:         /// AGCEnableLevel INTEGER -24 to -9 Indicates the target value of AGC. The UA5000PVM V200R13C03 and MA5600T, MA5603T, and MA5606T V800R62 support this parameter. Unit: dBm0. Default: -22. 
  288:         /// </summary>
  289:         public int AGCEnableLevel { get; set; }
  290:  
  291:         /// <summary> 
  292:         /// SNSEnable OCTET STRING l Disable l Enable Specifies whether to support the spectral noise suppression (SNS). The UA5000PVM V200R13C03 and MA5600T, MA5603T, and MA5606T V800R62 support this parameter. Default: Disable. 
  293:         /// </summary>
  294:         public string SNSEnable { get; set; }
  295:  
  296:         /// <summary> 
  297:         /// SNSEnableLevel INTEGER 6-20 Indicates the SNS suppression. The UA5000PVM V200R13C03 and MA5600T, MA5603T, and MA5606T V800R62 support this parameter. Unit: dB. Default: 12.
  298:         /// </summary>
  299:         public int SNSEnableLevel { get; set; }
  300:  
  301:         /// <summary> 
  302:         /// NlpMode OCTET STRING Normal Mode Ecgain Mode Increased Mode Reduced Mode Close DtmfEchoCancel NOTE The V800R011C00 and later versions of MA5600T, MA5603T, and MA5603U support the DTMF echo cancellation mode. Indicates the Nlp mode. The following devices and later versions support this parameter: l MA5620E: MA5600 V800R305C01B057 l MA5620G: MA5600 V800R305C02B031 l MA5606T l MA5600 V800R005C23B090 l MA5600 V800R005C63B090 l MA5600T: MA5600 V800R005C33B090 l MA5610: MA5610 V800R306C01B000 l MA5616: MA5616 V800R306C01B000 l MA5603T l MA5603U
  303:         /// </summary>
  304:         public string NlpMode { get; set; }
  305:  
  306:         /// <summary> 
  307:         /// LineLockEnable OCTET STRING l Enable l Disable Specifies whether to enable port locking. The MA5600T, MA5603T, and MA5606T V800R62 support this parameter. Default: Enable.
  308:         /// </summary>
  309:         public string LineLockEnable { get; set; }
  310:  
  311:         /// <summary> 
  312:         /// DspInputGain OCTET STRING -10 db to +5 db Indicates the input gain of the digital signal processor (DSP). NOTE The following device types and corresponding device versions support this parameter: l MA5600T: MA5600 V800R006C32 and later versions l MA5603T: MA5600 V800R006C32 and later versions l MA5606T: MA5600 V800R006C22 and later versions l MA5610: MA5610 V800R306C000 and later versions l MA5616: MA5616 V800R306C000 and later versions l MA5620E: MA5620E V800R307C00B001 and later versions l MA5620G: MA5620G V800R307C00B001 and later versions l MA5652G: MA5652 V800R306C01B050 and later versions l MA5620 l MA5612
  313:         /// </summary>
  314:         public string DspInputGain { get; set; }
  315:  
  316:         /// <summary> 
  317:         /// DspOutputGain OCTET STRING -10db to +10db Indicates the output gain of the DSP. NOTE The following device types and corresponding device versions support this parameter in the response: l MA5600T: MA5600 V800R006C32 and later versions l MA5603T: MA5600 V800R006C32 and later versions l MA5606T: MA5600 V800R006C22 and later versions l MA5610: MA5610 V800R306C000 and later versions l MA5616: MA5616 V800R306C000 and later versions l MA5620E: MA5620E V800R307C00B001 and later versions l MA5620G: MA5620G V800R307C00B001 and later versions l MA5652G: MA5652 V800R306C01B050 and later versions l MA5620 l MA5612
  318:         /// </summary>
  319:         public string DspOutputGain { get; set; }
  320:  
  321:         /// <summary> 
  322:         /// ClipReversePole OCTET STRING l Enable l Disable Default: Disable Specifies whether to enable the polarity reversal. Devices that support this parameter are as follows: l MA5620E: MA5600 V800R305C01B112 l MA5620G: MA5600 V800R305C02B051
  323:         /// </summary>
  324:         public string ClipReversePole { get; set; }
  325:  
  326:         /// <summary> 
  327:         /// DEFAULTCLI OCTET STRING SIZE (64) Indicates the default outgoing calling number. Ensure that the number exists on the device. NOTE The following versions support this parameter: l MA5600T: MA5600 V800R011C00 and later versions l MA5603T: MA5603 V800R011C00 and later versions
  328:         /// </summary>
  329:         public string DEFAULTCLI { get; set; }
  330:  
  331:         /// <summary> 
  332:         /// USERGROUPID INTEGER 0-65535 Indicates the SIP user group ID. Ensure that the user group exists on the device and it contains MGID. NOTE The following versions support this parameter: l MA5600T: MA5600 V800R011C00 and later versions l MA5603T: MA5603 V800R011C00 and later versions
  333:         /// </summary>
  334:         public int USERGROUPID { get; set; }
  335:  
  336:         /// <summary> 
  337:         /// ADJUSTFACTOR INTEGER 0-100 Indicates the adjustive speed of the DC output voltage. l MA5600T: MA5600V800R010C 00 and later versions l MA5603T: MA5600 V800R010C00 and later versions l MA5608T: MA5600 V800R012C00 and later versions
  338:         /// </summary>
  339:         public int ADJUSTFACTOR { get; set; }
  340:  
  341:         /// <summary> 
  342:         /// DSPPROFILE OCTET STRING SIZE (32) Indicates the name of the DSP profile.
  343:         /// </summary>
  344:         public string DSPPROFILE { get; set; }
  345:  
  346:         /// <summary/>
  347:         public DateTime Created { get; set; }
  348:  
  349:         /// <summary/>
  350:         public DateTime Updated { get; set; }
  351:  
  352:         /// <summary/>
  353:         [ForeignKey("EmsOnt_Id")]
  354:         public virtual Ia.Ftn.Cl.Models.Huawei.EmsOnt EmsOnt { get; set; }
  355:  
  356:         ////////////////////////////////////////////////////////////////////////////
  357:  
  358:         /// <summary>
  359:         ///
  360:         /// </summary>
  361:         [NotMapped]
  362:         public string ResultCodeString
  363:         {
  364:             get
  365:             {
  366:                 return this.ResultCode.ToString();
  367:             }
  368:         }
  369:  
  370:         ////////////////////////////////////////////////////////////////////////////
  371:  
  372:         /// <summary>
  373:         ///
  374:         /// </summary>
  375:         [NotMapped]
  376:         public string State
  377:         {
  378:             get
  379:             {
  380:                 return Ia.Ftn.Cl.Models.Data.Huawei.Ems.BellcoreStateFromId(this.StateId);
  381:             }
  382:         }
  383:  
  384:         /// <summary/>
  385:         [NotMapped]
  386:         public bool IsMsan
  387:         {
  388:             get
  389:             {
  390:                 return Ia.Ftn.Cl.Models.Business.NumberFormatConverter.IsMatchToImpuAid(this.DN);
  391:             }
  392:         }
  393:  
  394:         ////////////////////////////////////////////////////////////////////////////
  395:  
  396:         /// <summary>
  397:         ///
  398:         /// </summary>
  399:         public static bool operator ==(Ia.Ftn.Cl.Models.Huawei.EmsVoipPstnUser a, Ia.Ftn.Cl.Models.Huawei.EmsVoipPstnUser b)
  400:         {
  401:             bool areEqual;
  402:  
  403:             if (ReferenceEquals(a, b)) areEqual = true;
  404:             else if (a is null) areEqual = false;
  405:             else if (b is null) areEqual = false;
  406:             else
  407:             {
  408:                 if (a.ResultCode != b.ResultCode) areEqual = false;
  409:                 else if (a.StateId != b.StateId) areEqual = false;
  410:                 else if (a.DID != b.DID) areEqual = false;
  411:                 else if (a.FN != b.FN) areEqual = false;
  412:                 else if (a.SN != b.SN) areEqual = false;
  413:                 else if (a.PN != b.PN) areEqual = false;
  414:                 else if (a.MGID != b.MGID) areEqual = false;
  415:                 else if (a.MGNAME != b.MGNAME) areEqual = false;
  416:                 else if (a.TID != b.TID) areEqual = false;
  417:                 else if (a.DN != b.DN) areEqual = false;
  418:                 else if (a.LayeredConf != b.LayeredConf) areEqual = false;
  419:                 else if (a.HighLevelWidth != b.HighLevelWidth) areEqual = false;
  420:                 else if (a.LowerLevelWidth != b.LowerLevelWidth) areEqual = false;
  421:                 else if (a.Voltage != b.Voltage) areEqual = false;
  422:                 else if (a.KCType != b.KCType) areEqual = false;
  423:                 else if (a.VoiceGain != b.VoiceGain) areEqual = false;
  424:                 else if (a.LimitPulseDial != b.LimitPulseDial) areEqual = false;
  425:                 else if (a.RevPolarity != b.RevPolarity) areEqual = false;
  426:                 else if (a.RevPoleLevel != b.RevPoleLevel) areEqual = false;
  427:                 else if (a.RevPolePulse != b.RevPolePulse) areEqual = false;
  428:                 else if (a.PSTAT != b.PSTAT) areEqual = false;
  429:                 else if (a.ConfigStatus != b.ConfigStatus) areEqual = false;
  430:                 else if (a.ServiceStatus != b.ServiceStatus) areEqual = false;
  431:                 else if (a.ServiceType != b.ServiceType) areEqual = false;
  432:                 else if (a.ALIAS != b.ALIAS) areEqual = false;
  433:                 else if (a.UserType != b.UserType) areEqual = false;
  434:                 else if (a.Impedance != b.Impedance) areEqual = false;
  435:                 else if (a.Current != b.Current) areEqual = false;
  436:                 else if (a.DCTime != b.DCTime) areEqual = false;
  437:                 else if (a.PITime != b.PITime) areEqual = false;
  438:                 else if (a.FSKDelayInterval != b.FSKDelayInterval) areEqual = false;
  439:                 else if (a.ActualVoiceGain != b.ActualVoiceGain) areEqual = false;
  440:                 else if (a.CidTransWhen != b.CidTransWhen) areEqual = false;
  441:                 else if (a.CidFormat != b.CidFormat) areEqual = false;
  442:                 else if (a.OverloadPRI != b.OverloadPRI) areEqual = false;
  443:                 else if (a.ImpedanceProfile != b.ImpedanceProfile) areEqual = false;
  444:                 else if (a.SendVoiceGain != b.SendVoiceGain) areEqual = false;
  445:                 else if (a.RecvVoiceGain != b.RecvVoiceGain) areEqual = false;
  446:                 else if (a.RevPolarityMode != b.RevPolarityMode) areEqual = false;
  447:                 else if (a.PortRunState != b.PortRunState) areEqual = false;
  448:                 else if (a.PortTestState != b.PortTestState) areEqual = false;
  449:                 else if (a.PortLineState != b.PortLineState) areEqual = false;
  450:                 else if (a.PortLoopState != b.PortLoopState) areEqual = false;
  451:                 else if (a.ServiceRunState != b.ServiceRunState) areEqual = false;
  452:                 else if (a.ServiceAdminState != b.ServiceAdminState) areEqual = false;
  453:                 else if (a.ActualSendVoiceGain != b.ActualSendVoiceGain) areEqual = false;
  454:                 else if (a.ActualRecvVo != b.ActualRecvVo) areEqual = false;
  455:                 else if (a.AGCEnable != b.AGCEnable) areEqual = false;
  456:                 else if (a.AGCEnableLevel != b.AGCEnableLevel) areEqual = false;
  457:                 else if (a.SNSEnable != b.SNSEnable) areEqual = false;
  458:                 else if (a.SNSEnableLevel != b.SNSEnableLevel) areEqual = false;
  459:                 else if (a.NlpMode != b.NlpMode) areEqual = false;
  460:                 else if (a.LineLockEnable != b.LineLockEnable) areEqual = false;
  461:                 else if (a.DspInputGain != b.DspInputGain) areEqual = false;
  462:                 else if (a.DspOutputGain != b.DspOutputGain) areEqual = false;
  463:                 else if (a.ClipReversePole != b.ClipReversePole) areEqual = false;
  464:                 else if (a.DEFAULTCLI != b.DEFAULTCLI) areEqual = false;
  465:                 else if (a.USERGROUPID != b.USERGROUPID) areEqual = false;
  466:                 else if (a.ADJUSTFACTOR != b.ADJUSTFACTOR) areEqual = false;
  467:                 else if (a.DSPPROFILE != b.DSPPROFILE) areEqual = false;
  468:                 else areEqual = true;
  469:             }
  470:  
  471:             return areEqual;
  472:         }
  473:  
  474:         ////////////////////////////////////////////////////////////////////////////
  475:  
  476:         /// <summary>
  477:         ///
  478:         /// </summary>
  479:         public static bool operator !=(Ia.Ftn.Cl.Models.Huawei.EmsVoipPstnUser a, Ia.Ftn.Cl.Models.Huawei.EmsVoipPstnUser b)
  480:         {
  481:             return !(a == b);
  482:         }
  483:  
  484:         ////////////////////////////////////////////////////////////////////////////
  485:  
  486:         /// <summary>
  487:         ///
  488:         /// </summary>
  489:         public bool Equals(EmsVoipPstnUser voipPstnUser)
  490:         {
  491:             // below: this will not check the Id, Created, Updated fields
  492:             bool areEqual;
  493:  
  494:             if (voipPstnUser is null) areEqual = false;
  495:             else if (ReferenceEquals(this, voipPstnUser)) areEqual = true;
  496:             else
  497:             {
  498:                 if (this.ResultCode != voipPstnUser.ResultCode) areEqual = false;
  499:                 else if (this.StateId != voipPstnUser.StateId) areEqual = false;
  500:                 else if (this.DID != voipPstnUser.DID) areEqual = false;
  501:                 else if (this.FN != voipPstnUser.FN) areEqual = false;
  502:                 else if (this.SN != voipPstnUser.SN) areEqual = false;
  503:                 else if (this.PN != voipPstnUser.PN) areEqual = false;
  504:                 else if (this.MGID != voipPstnUser.MGID) areEqual = false;
  505:                 else if (this.MGNAME != voipPstnUser.MGNAME) areEqual = false;
  506:                 else if (this.TID != voipPstnUser.TID) areEqual = false;
  507:                 else if (this.DN != voipPstnUser.DN) areEqual = false;
  508:                 else if (this.LayeredConf != voipPstnUser.LayeredConf) areEqual = false;
  509:                 else if (this.HighLevelWidth != voipPstnUser.HighLevelWidth) areEqual = false;
  510:                 else if (this.LowerLevelWidth != voipPstnUser.LowerLevelWidth) areEqual = false;
  511:                 else if (this.Voltage != voipPstnUser.Voltage) areEqual = false;
  512:                 else if (this.KCType != voipPstnUser.KCType) areEqual = false;
  513:                 else if (this.VoiceGain != voipPstnUser.VoiceGain) areEqual = false;
  514:                 else if (this.LimitPulseDial != voipPstnUser.LimitPulseDial) areEqual = false;
  515:                 else if (this.RevPolarity != voipPstnUser.RevPolarity) areEqual = false;
  516:                 else if (this.RevPoleLevel != voipPstnUser.RevPoleLevel) areEqual = false;
  517:                 else if (this.RevPolePulse != voipPstnUser.RevPolePulse) areEqual = false;
  518:                 else if (this.PSTAT != voipPstnUser.PSTAT) areEqual = false;
  519:                 else if (this.ConfigStatus != voipPstnUser.ConfigStatus) areEqual = false;
  520:                 else if (this.ServiceStatus != voipPstnUser.ServiceStatus) areEqual = false;
  521:                 else if (this.ServiceType != voipPstnUser.ServiceType) areEqual = false;
  522:                 else if (this.ALIAS != voipPstnUser.ALIAS) areEqual = false;
  523:                 else if (this.UserType != voipPstnUser.UserType) areEqual = false;
  524:                 else if (this.Impedance != voipPstnUser.Impedance) areEqual = false;
  525:                 else if (this.Current != voipPstnUser.Current) areEqual = false;
  526:                 else if (this.DCTime != voipPstnUser.DCTime) areEqual = false;
  527:                 else if (this.PITime != voipPstnUser.PITime) areEqual = false;
  528:                 else if (this.FSKDelayInterval != voipPstnUser.FSKDelayInterval) areEqual = false;
  529:                 else if (this.ActualVoiceGain != voipPstnUser.ActualVoiceGain) areEqual = false;
  530:                 else if (this.CidTransWhen != voipPstnUser.CidTransWhen) areEqual = false;
  531:                 else if (this.CidFormat != voipPstnUser.CidFormat) areEqual = false;
  532:                 else if (this.OverloadPRI != voipPstnUser.OverloadPRI) areEqual = false;
  533:                 else if (this.ImpedanceProfile != voipPstnUser.ImpedanceProfile) areEqual = false;
  534:                 else if (this.SendVoiceGain != voipPstnUser.SendVoiceGain) areEqual = false;
  535:                 else if (this.RecvVoiceGain != voipPstnUser.RecvVoiceGain) areEqual = false;
  536:                 else if (this.RevPolarityMode != voipPstnUser.RevPolarityMode) areEqual = false;
  537:                 else if (this.PortRunState != voipPstnUser.PortRunState) areEqual = false;
  538:                 else if (this.PortTestState != voipPstnUser.PortTestState) areEqual = false;
  539:                 else if (this.PortLineState != voipPstnUser.PortLineState) areEqual = false;
  540:                 else if (this.PortLoopState != voipPstnUser.PortLoopState) areEqual = false;
  541:                 else if (this.ServiceRunState != voipPstnUser.ServiceRunState) areEqual = false;
  542:                 else if (this.ServiceAdminState != voipPstnUser.ServiceAdminState) areEqual = false;
  543:                 else if (this.ActualSendVoiceGain != voipPstnUser.ActualSendVoiceGain) areEqual = false;
  544:                 else if (this.ActualRecvVo != voipPstnUser.ActualRecvVo) areEqual = false;
  545:                 else if (this.AGCEnable != voipPstnUser.AGCEnable) areEqual = false;
  546:                 else if (this.AGCEnableLevel != voipPstnUser.AGCEnableLevel) areEqual = false;
  547:                 else if (this.SNSEnable != voipPstnUser.SNSEnable) areEqual = false;
  548:                 else if (this.SNSEnableLevel != voipPstnUser.SNSEnableLevel) areEqual = false;
  549:                 else if (this.NlpMode != voipPstnUser.NlpMode) areEqual = false;
  550:                 else if (this.LineLockEnable != voipPstnUser.LineLockEnable) areEqual = false;
  551:                 else if (this.DspInputGain != voipPstnUser.DspInputGain) areEqual = false;
  552:                 else if (this.DspOutputGain != voipPstnUser.DspOutputGain) areEqual = false;
  553:                 else if (this.ClipReversePole != voipPstnUser.ClipReversePole) areEqual = false;
  554:                 else if (this.DEFAULTCLI != voipPstnUser.DEFAULTCLI) areEqual = false;
  555:                 else if (this.USERGROUPID != voipPstnUser.USERGROUPID) areEqual = false;
  556:                 else if (this.ADJUSTFACTOR != voipPstnUser.ADJUSTFACTOR) areEqual = false;
  557:                 else if (this.DSPPROFILE != voipPstnUser.DSPPROFILE) areEqual = false;
  558:                 else if (this.EmsOnt.Id != voipPstnUser.EmsOnt.Id) areEqual = false;
  559:                 else areEqual = true;
  560:             }
  561:  
  562:             return areEqual;
  563:         }
  564:  
  565:         ////////////////////////////////////////////////////////////////////////////
  566:  
  567:         /// <summary>
  568:         ///
  569:         /// </summary>
  570:         public override bool Equals(object obj)
  571:         {
  572:             bool areEqual;
  573:  
  574:             if (obj is null) areEqual = false;
  575:             else if (ReferenceEquals(this, obj)) areEqual = true;
  576:             else
  577:             {
  578:                 areEqual = obj.GetType() == GetType() && Equals((EmsVoipPstnUser)obj);
  579:             }
  580:  
  581:             return areEqual;
  582:         }
  583:  
  584:         ////////////////////////////////////////////////////////////////////////////
  585:  
  586:         /// <summary>
  587:         ///
  588:         /// </summary>
  589:         public override int GetHashCode()
  590:         {
  591:             unchecked
  592:             {
  593:                 int hashCode;
  594:  
  595:                 hashCode = ResultCode.GetHashCode();
  596:                 hashCode = (hashCode * 397) ^ StateId.GetHashCode();
  597:                 hashCode = (hashCode * 397) ^ DID.GetHashCode();
  598:                 hashCode = (hashCode * 397) ^ FN.GetHashCode();
  599:                 hashCode = (hashCode * 397) ^ SN.GetHashCode();
  600:                 hashCode = (hashCode * 397) ^ PN.GetHashCode();
  601:                 hashCode = (hashCode * 397) ^ MGID.GetHashCode();
  602:                 hashCode = (hashCode * 397) ^ MGNAME.GetHashCode();
  603:                 hashCode = (hashCode * 397) ^ TID.GetHashCode();
  604:                 hashCode = (hashCode * 397) ^ DN.GetHashCode();
  605:                 hashCode = (hashCode * 397) ^ LayeredConf.GetHashCode();
  606:                 hashCode = (hashCode * 397) ^ HighLevelWidth.GetHashCode();
  607:                 hashCode = (hashCode * 397) ^ LowerLevelWidth.GetHashCode();
  608:                 hashCode = (hashCode * 397) ^ Voltage.GetHashCode();
  609:                 hashCode = (hashCode * 397) ^ KCType.GetHashCode();
  610:                 hashCode = (hashCode * 397) ^ VoiceGain.GetHashCode();
  611:                 hashCode = (hashCode * 397) ^ LimitPulseDial.GetHashCode();
  612:                 hashCode = (hashCode * 397) ^ RevPolarity.GetHashCode();
  613:                 hashCode = (hashCode * 397) ^ RevPoleLevel.GetHashCode();
  614:                 hashCode = (hashCode * 397) ^ RevPolePulse.GetHashCode();
  615:                 hashCode = (hashCode * 397) ^ PSTAT.GetHashCode();
  616:                 hashCode = (hashCode * 397) ^ ConfigStatus.GetHashCode();
  617:                 hashCode = (hashCode * 397) ^ ServiceStatus.GetHashCode();
  618:                 hashCode = (hashCode * 397) ^ ServiceType.GetHashCode();
  619:                 hashCode = (hashCode * 397) ^ ALIAS.GetHashCode();
  620:                 hashCode = (hashCode * 397) ^ UserType.GetHashCode();
  621:                 hashCode = (hashCode * 397) ^ Impedance.GetHashCode();
  622:                 hashCode = (hashCode * 397) ^ Current.GetHashCode();
  623:                 hashCode = (hashCode * 397) ^ DCTime.GetHashCode();
  624:                 hashCode = (hashCode * 397) ^ PITime.GetHashCode();
  625:                 hashCode = (hashCode * 397) ^ FSKDelayInterval.GetHashCode();
  626:                 hashCode = (hashCode * 397) ^ ActualVoiceGain.GetHashCode();
  627:                 hashCode = (hashCode * 397) ^ CidTransWhen.GetHashCode();
  628:                 hashCode = (hashCode * 397) ^ CidFormat.GetHashCode();
  629:                 hashCode = (hashCode * 397) ^ OverloadPRI.GetHashCode();
  630:                 hashCode = (hashCode * 397) ^ ImpedanceProfile.GetHashCode();
  631:                 hashCode = (hashCode * 397) ^ SendVoiceGain.GetHashCode();
  632:                 hashCode = (hashCode * 397) ^ RecvVoiceGain.GetHashCode();
  633:                 hashCode = (hashCode * 397) ^ RevPolarityMode.GetHashCode();
  634:                 hashCode = (hashCode * 397) ^ PortRunState.GetHashCode();
  635:                 hashCode = (hashCode * 397) ^ PortTestState.GetHashCode();
  636:                 hashCode = (hashCode * 397) ^ PortLineState.GetHashCode();
  637:                 hashCode = (hashCode * 397) ^ PortLoopState.GetHashCode();
  638:                 hashCode = (hashCode * 397) ^ ServiceRunState.GetHashCode();
  639:                 hashCode = (hashCode * 397) ^ ServiceAdminState.GetHashCode();
  640:                 hashCode = (hashCode * 397) ^ ActualSendVoiceGain.GetHashCode();
  641:                 hashCode = (hashCode * 397) ^ ActualRecvVo.GetHashCode();
  642:                 hashCode = (hashCode * 397) ^ AGCEnable.GetHashCode();
  643:                 hashCode = (hashCode * 397) ^ AGCEnableLevel.GetHashCode();
  644:                 hashCode = (hashCode * 397) ^ SNSEnable.GetHashCode();
  645:                 hashCode = (hashCode * 397) ^ SNSEnableLevel.GetHashCode();
  646:                 hashCode = (hashCode * 397) ^ NlpMode.GetHashCode();
  647:                 hashCode = (hashCode * 397) ^ LineLockEnable.GetHashCode();
  648:                 hashCode = (hashCode * 397) ^ DspInputGain.GetHashCode();
  649:                 hashCode = (hashCode * 397) ^ DspOutputGain.GetHashCode();
  650:                 hashCode = (hashCode * 397) ^ ClipReversePole.GetHashCode();
  651:                 hashCode = (hashCode * 397) ^ DEFAULTCLI.GetHashCode();
  652:                 hashCode = (hashCode * 397) ^ USERGROUPID.GetHashCode();
  653:                 hashCode = (hashCode * 397) ^ ADJUSTFACTOR.GetHashCode();
  654:                 hashCode = (hashCode * 397) ^ DSPPROFILE.GetHashCode();
  655:  
  656:                 if (EmsOnt != null) hashCode = (hashCode * 397) ^ EmsOnt.Id.GetHashCode();
  657:  
  658:                 return hashCode;
  659:             }
  660:         }
  661:  
  662:         ////////////////////////////////////////////////////////////////////////////
  663:  
  664:         /// <summary>
  665:         ///
  666:         /// </summary>
  667:         public bool Update(Ia.Ftn.Cl.Models.Huawei.EmsVoipPstnUser updatedItem)
  668:         {
  669:             // below: this will not update Id, Created
  670:             bool updated;
  671:  
  672:             updated = false;
  673:  
  674:             if (this.ResultCode != updatedItem.ResultCode) { this.ResultCode = updatedItem.ResultCode; updated = true; }
  675:             if (this.StateId != updatedItem.StateId) { this.StateId = updatedItem.StateId; updated = true; }
  676:             if (this.DID != updatedItem.DID) { this.DID = updatedItem.DID; updated = true; }
  677:             if (this.FN != updatedItem.FN) { this.FN = updatedItem.FN; updated = true; }
  678:             if (this.SN != updatedItem.SN) { this.SN = updatedItem.SN; updated = true; }
  679:             if (this.PN != updatedItem.PN) { this.PN = updatedItem.PN; updated = true; }
  680:             if (this.MGID != updatedItem.MGID) { this.MGID = updatedItem.MGID; updated = true; }
  681:             if (this.MGNAME != updatedItem.MGNAME) { this.MGNAME = updatedItem.MGNAME; updated = true; }
  682:             if (this.TID != updatedItem.TID) { this.TID = updatedItem.TID; updated = true; }
  683:             if (this.DN != updatedItem.DN) { this.DN = updatedItem.DN; updated = true; }
  684:             if (this.LayeredConf != updatedItem.LayeredConf) { this.LayeredConf = updatedItem.LayeredConf; updated = true; }
  685:             if (this.HighLevelWidth != updatedItem.HighLevelWidth) { this.HighLevelWidth = updatedItem.HighLevelWidth; updated = true; }
  686:             if (this.LowerLevelWidth != updatedItem.LowerLevelWidth) { this.LowerLevelWidth = updatedItem.LowerLevelWidth; updated = true; }
  687:             if (this.Voltage != updatedItem.Voltage) { this.Voltage = updatedItem.Voltage; updated = true; }
  688:             if (this.KCType != updatedItem.KCType) { this.KCType = updatedItem.KCType; updated = true; }
  689:             if (this.VoiceGain != updatedItem.VoiceGain) { this.VoiceGain = updatedItem.VoiceGain; updated = true; }
  690:             if (this.LimitPulseDial != updatedItem.LimitPulseDial) { this.LimitPulseDial = updatedItem.LimitPulseDial; updated = true; }
  691:             if (this.RevPolarity != updatedItem.RevPolarity) { this.RevPolarity = updatedItem.RevPolarity; updated = true; }
  692:             if (this.RevPoleLevel != updatedItem.RevPoleLevel) { this.RevPoleLevel = updatedItem.RevPoleLevel; updated = true; }
  693:             if (this.RevPolePulse != updatedItem.RevPolePulse) { this.RevPolePulse = updatedItem.RevPolePulse; updated = true; }
  694:             if (this.PSTAT != updatedItem.PSTAT) { this.PSTAT = updatedItem.PSTAT; updated = true; }
  695:             if (this.ConfigStatus != updatedItem.ConfigStatus) { this.ConfigStatus = updatedItem.ConfigStatus; updated = true; }
  696:             if (this.ServiceStatus != updatedItem.ServiceStatus) { this.ServiceStatus = updatedItem.ServiceStatus; updated = true; }
  697:             if (this.ServiceType != updatedItem.ServiceType) { this.ServiceType = updatedItem.ServiceType; updated = true; }
  698:             if (this.ALIAS != updatedItem.ALIAS) { this.ALIAS = updatedItem.ALIAS; updated = true; }
  699:             if (this.UserType != updatedItem.UserType) { this.UserType = updatedItem.UserType; updated = true; }
  700:             if (this.Impedance != updatedItem.Impedance) { this.Impedance = updatedItem.Impedance; updated = true; }
  701:             if (this.Current != updatedItem.Current) { this.Current = updatedItem.Current; updated = true; }
  702:             if (this.DCTime != updatedItem.DCTime) { this.DCTime = updatedItem.DCTime; updated = true; }
  703:             if (this.PITime != updatedItem.PITime) { this.PITime = updatedItem.PITime; updated = true; }
  704:             if (this.FSKDelayInterval != updatedItem.FSKDelayInterval) { this.FSKDelayInterval = updatedItem.FSKDelayInterval; updated = true; }
  705:             if (this.ActualVoiceGain != updatedItem.ActualVoiceGain) { this.ActualVoiceGain = updatedItem.ActualVoiceGain; updated = true; }
  706:             if (this.CidTransWhen != updatedItem.CidTransWhen) { this.CidTransWhen = updatedItem.CidTransWhen; updated = true; }
  707:             if (this.CidFormat != updatedItem.CidFormat) { this.CidFormat = updatedItem.CidFormat; updated = true; }
  708:             if (this.OverloadPRI != updatedItem.OverloadPRI) { this.OverloadPRI = updatedItem.OverloadPRI; updated = true; }
  709:             if (this.ImpedanceProfile != updatedItem.ImpedanceProfile) { this.ImpedanceProfile = updatedItem.ImpedanceProfile; updated = true; }
  710:             if (this.SendVoiceGain != updatedItem.SendVoiceGain) { this.SendVoiceGain = updatedItem.SendVoiceGain; updated = true; }
  711:             if (this.RecvVoiceGain != updatedItem.RecvVoiceGain) { this.RecvVoiceGain = updatedItem.RecvVoiceGain; updated = true; }
  712:             if (this.RevPolarityMode != updatedItem.RevPolarityMode) { this.RevPolarityMode = updatedItem.RevPolarityMode; updated = true; }
  713:             if (this.PortRunState != updatedItem.PortRunState) { this.PortRunState = updatedItem.PortRunState; updated = true; }
  714:             if (this.PortTestState != updatedItem.PortTestState) { this.PortTestState = updatedItem.PortTestState; updated = true; }
  715:             if (this.PortLineState != updatedItem.PortLineState) { this.PortLineState = updatedItem.PortLineState; updated = true; }
  716:             if (this.PortLoopState != updatedItem.PortLoopState) { this.PortLoopState = updatedItem.PortLoopState; updated = true; }
  717:             if (this.ServiceRunState != updatedItem.ServiceRunState) { this.ServiceRunState = updatedItem.ServiceRunState; updated = true; }
  718:             if (this.ServiceAdminState != updatedItem.ServiceAdminState) { this.ServiceAdminState = updatedItem.ServiceAdminState; updated = true; }
  719:             if (this.ActualSendVoiceGain != updatedItem.ActualSendVoiceGain) { this.ActualSendVoiceGain = updatedItem.ActualSendVoiceGain; updated = true; }
  720:             if (this.ActualRecvVo != updatedItem.ActualRecvVo) { this.ActualRecvVo = updatedItem.ActualRecvVo; updated = true; }
  721:             if (this.AGCEnable != updatedItem.AGCEnable) { this.AGCEnable = updatedItem.AGCEnable; updated = true; }
  722:             if (this.AGCEnableLevel != updatedItem.AGCEnableLevel) { this.AGCEnableLevel = updatedItem.AGCEnableLevel; updated = true; }
  723:             if (this.SNSEnable != updatedItem.SNSEnable) { this.SNSEnable = updatedItem.SNSEnable; updated = true; }
  724:             if (this.SNSEnableLevel != updatedItem.SNSEnableLevel) { this.SNSEnableLevel = updatedItem.SNSEnableLevel; updated = true; }
  725:             if (this.NlpMode != updatedItem.NlpMode) { this.NlpMode = updatedItem.NlpMode; updated = true; }
  726:             if (this.LineLockEnable != updatedItem.LineLockEnable) { this.LineLockEnable = updatedItem.LineLockEnable; updated = true; }
  727:             if (this.DspInputGain != updatedItem.DspInputGain) { this.DspInputGain = updatedItem.DspInputGain; updated = true; }
  728:             if (this.DspOutputGain != updatedItem.DspOutputGain) { this.DspOutputGain = updatedItem.DspOutputGain; updated = true; }
  729:             if (this.ClipReversePole != updatedItem.ClipReversePole) { this.ClipReversePole = updatedItem.ClipReversePole; updated = true; }
  730:             if (this.DEFAULTCLI != updatedItem.DEFAULTCLI) { this.DEFAULTCLI = updatedItem.DEFAULTCLI; updated = true; }
  731:             if (this.USERGROUPID != updatedItem.USERGROUPID) { this.USERGROUPID = updatedItem.USERGROUPID; updated = true; }
  732:             if (this.ADJUSTFACTOR != updatedItem.ADJUSTFACTOR) { this.ADJUSTFACTOR = updatedItem.ADJUSTFACTOR; updated = true; }
  733:             if (this.DSPPROFILE != updatedItem.DSPPROFILE) { this.DSPPROFILE = updatedItem.DSPPROFILE; updated = true; }
  734:             if (this.EmsOnt != updatedItem.EmsOnt) { this.EmsOnt = updatedItem.EmsOnt; updated = true; }
  735:  
  736:             if (updated) this.Updated = DateTime.UtcNow.AddHours(3);
  737:  
  738:             return updated;
  739:         }
  740:  
  741:         ////////////////////////////////////////////////////////////////////////////
  742:         ////////////////////////////////////////////////////////////////////////////
  743:  
  744:         /// <summary>
  745:         ///
  746:         /// </summary>
  747:         public string ToSimpleTextString()
  748:         {
  749:             return Ia.Ftn.Cl.Models.Data.Huawei.VoipPstnUser.ToSimpleTextString(this);
  750:         }
  751:  
  752:         ////////////////////////////////////////////////////////////////////////////
  753:  
  754:         /// <summary>
  755:         ///
  756:         /// </summary>
  757:         public string ToSimpleDidFnSnPnTextString()
  758:         {
  759:             return Ia.Ftn.Cl.Models.Data.Huawei.VoipPstnUser.ToSimpleDidFnSnPnTextString(this);
  760:         }
  761:  
  762:         ////////////////////////////////////////////////////////////////////////////
  763:         ////////////////////////////////////////////////////////////////////////////
  764:     }
  765:  
  766:     ////////////////////////////////////////////////////////////////////////////
  767:     ////////////////////////////////////////////////////////////////////////////
  768: }