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

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

Huawei's Board support class of Fixed Telecommunications Network (FTN) business model.

    1: using System;
    2: using System.Collections.Generic;
    3:  
    4: namespace Ia.Ftn.Cl.Models.Business.Huawei
    5: {
    6:     ////////////////////////////////////////////////////////////////////////////
    7:  
    8:     /// <summary publish="true">
    9:     /// Huawei's Board support class of Fixed Telecommunications Network (FTN) business model.
   10:     /// </summary>
   11:     /// 
   12:     /// <remarks> 
   13:     /// Copyright © 2016-2021 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   14:     /// </remarks> 
   15:     public class Board
   16:     {
   17:         private static int sequentialEmsDevDevQueueOriginalCount;
   18:         private static Queue<Ia.Ftn.Cl.Models.Huawei.EmsBoard> sequentialEmsBoardQueue = new Queue<Ia.Ftn.Cl.Models.Huawei.EmsBoard>();
   19:  
   20:         ////////////////////////////////////////////////////////////////////////////
   21:  
   22:         /// <summary>
   23:         ///
   24:         /// </summary>
   25:         public class MduDevBoard
   26:         {
   27:             /// <summary/>
   28:             public int Did;
   29:  
   30:             /// <summary/>
   31:             public string Type;
   32:  
   33:             /// <summary/>
   34:             public string Version;
   35:  
   36:             /// <summary/>
   37:             public Ia.Ftn.Cl.Models.Business.Huawei.Dev.Type EmsDevType;
   38:  
   39:             /// <summary/>
   40:             public string EmsDevIp;
   41:  
   42:             /// <summary/>
   43:             public int Fn;
   44:  
   45:             /// <summary/>
   46:             public int Sn;
   47:  
   48:             /// <summary/>
   49:             public int TelPortCount;
   50:  
   51:             /// <summary/>
   52:             public int EthernetPortCount;
   53:  
   54:             ////////////////////////////////////////////////////////////////////////////
   55:  
   56:             /// <summary>
   57:             ///
   58:             /// </summary>
   59:             public MduDevBoard(int did, string boardBt, string boardBname, string boardBver, Ia.Ftn.Cl.Models.Business.Huawei.Dev.Type emsDevType, string emsDevIp, int fn, int sn)
   60:             {
   61:                 TelPortAndEthernetPortCountFromBoardNameAndVersion(boardBname, boardBver, out string version, out int telPorts, out int ethernetPorts);
   62:  
   63:                 this.Did = did;
   64:                 this.Type = boardBt;
   65:                 this.Version = version;
   66:                 this.EmsDevType = emsDevType;
   67:                 this.EmsDevIp = emsDevIp;
   68:                 this.Fn = fn;
   69:                 this.Sn = sn;
   70:                 this.TelPortCount = telPorts;
   71:                 this.EthernetPortCount = ethernetPorts;
   72:             }
   73:  
   74:             ////////////////////////////////////////////////////////////////////////////
   75:  
   76:             /// <summary>
   77:             ///
   78:             /// </summary>
   79:             private void TelPortAndEthernetPortCountFromBoardNameAndVersion(string boardBname, string boardBver, out string boardVersion, out int telPorts, out int ethernetPort)
   80:             {
   81:                 // select distinct BNAME,count(0) from EmsBoards where BT = 'PSTN' or BT = 'ETH' group by BNAME
   82:  
   83:                 /*
   84: select top 10 * from EmsOnts eo
   85: left outer join EmsPorts ep on ep.Id = eo.EmsPort_Id
   86: left outer join EmsBoards eb on eb.Id = ep.EmsBoard_Id
   87: where eb.BNAME like '%H801ASPB%'
   88: or eb.BNAME like '%H801ASPB%'
   89: or eb.BNAME like '%H801GICD%'
   90: or eb.BNAME like '%H801SCUB%'
   91: or eb.BNAME like '%H801X2CS%'
   92: or eb.BNAME like '%H802OPGD%'
   93: or eb.BNAME like '%H802SCUN%'
   94:                  */
   95:  
   96:                 /*
   97: BNAME    (No column name)
   98: H801ASPB    2160
   99: H801GICD    138
  100: H801SCUB    276
  101: H801X2CS    94
  102: H802OPGD    4
  103: H802SCUN    94
  104: H831EIUD    2077
  105: H838ASPB    375
  106: H838ASRB    719
  107: H848ASNB    1104
  108: HS22EPGD    552
  109:                 */
  110:  
  111:                 if (boardBname == "H848ASNB")
  112:                 {
  113:                     boardVersion = "H848ASNB";
  114:                     telPorts = 16;
  115:                     ethernetPort = 0;
  116:                 }
  117:                 else if (boardBname == "H838ASRB")
  118:                 {
  119:                     boardVersion = "H838ASRB";
  120:                     telPorts = 32;
  121:                     ethernetPort = 0;
  122:                 }
  123:                 else if (boardBname == "H838ASPB")
  124:                 {
  125:                     boardVersion = "H838ASPB";
  126:                     telPorts = 64;
  127:                     ethernetPort = 0;
  128:                 }
  129:                 else if (boardBname == "HS22EPGD")
  130:                 {
  131:                     boardVersion = "HS22EPGD";
  132:                     telPorts = 0;
  133:                     ethernetPort = 8;
  134:                 }
  135:                 else if (boardBname == "H831EIUD")
  136:                 {
  137:                     boardVersion = "H831EIUD";
  138:                     telPorts = 0;
  139:                     ethernetPort = 4;
  140:                 }
  141:                 else
  142:                 {
  143:                     throw new Exception("Unknown board version: board.Bver: " + boardBver) { };
  144:                 }
  145:             }
  146:  
  147:             ////////////////////////////////////////////////////////////////////////////
  148:         }
  149:  
  150:         /// <summary/>
  151:         public Board() { }
  152:  
  153:         ////////////////////////////////////////////////////////////////////////////
  154:  
  155:         /// <summary>
  156:         ///
  157:         /// </summary>
  158:         public static string BoardId(int devId, int fn, int sn)
  159:         {
  160:             /*
  161:              * Id: OLT_01 Id-Frame-Slot-Port-OnuID
  162:              * FN    SN   PN   ONTID
  163:              * 
  164:              * Dev: did
  165:              * Board: FN SN
  166:              * Port: FN SN PN
  167:              * Ont: FN SN PN ONTID
  168:              * 
  169:              * /// FN INTEGER 0-255 Indicates the subrack ID of the OLT. 
  170:              * /// SN INTEGER 0-35 Indicates the slot ID of the OLT. 
  171:              * /// PN INTEGER 0-63 Indicates the port ID of the OLT. 
  172:              * /// ONTID INTEGER 0-255 NOTE If the UNI port is of 10G GPON, the value range is 0-255; if the UNI port is of 1G GPON, the value range is 0-127. Indicates the ONT ID. 
  173:              */
  174:  
  175:             string id;
  176:  
  177:             if (devId > 0 && fn >= 0 && fn <= 255 && sn >= 0 && sn <= 35)
  178:             {
  179:                 id = devId.ToString() + fn.ToString().PadLeft(3, '0') + sn.ToString().PadLeft(2, '0');
  180:             }
  181:             else
  182:             {
  183:                 throw new System.ArgumentOutOfRangeException("fn, sn", "fn or sn is out of range");
  184:             }
  185:  
  186:             return id;
  187:         }
  188:  
  189:         ////////////////////////////////////////////////////////////////////////////
  190:  
  191:         /// <summary>
  192:         ///
  193:         /// </summary>
  194:         public static Ia.Ftn.Cl.Models.Huawei.EmsBoard SequentialEmsBoardListItem(out int sequentialEmsBoardQueueCount, out string progressCounterString)
  195:         {
  196:             Ia.Ftn.Cl.Models.Huawei.EmsBoard item;
  197:             List<Ia.Ftn.Cl.Models.Huawei.EmsBoard> list;
  198:  
  199:             if (sequentialEmsBoardQueue.Count == 0)
  200:             {
  201:                 list = Ia.Ftn.Cl.Models.Data.Huawei.Board.List();
  202:  
  203:                 sequentialEmsBoardQueue = new Queue<Ia.Ftn.Cl.Models.Huawei.EmsBoard>(list.Shuffle());
  204:  
  205:                 sequentialEmsDevDevQueueOriginalCount = sequentialEmsBoardQueue.Count;
  206:             }
  207:  
  208:             if (sequentialEmsBoardQueue.Count > 0) item = sequentialEmsBoardQueue.Dequeue();
  209:             else item = null;
  210:  
  211:             progressCounterString = "(" + sequentialEmsBoardQueue.Count + "/" + sequentialEmsDevDevQueueOriginalCount + ")";
  212:  
  213:             sequentialEmsBoardQueueCount = sequentialEmsBoardQueue.Count;
  214:  
  215:             return item;
  216:         }
  217:  
  218:         ////////////////////////////////////////////////////////////////////////////
  219:         ////////////////////////////////////////////////////////////////////////////
  220:     }
  221:  
  222:     ////////////////////////////////////////////////////////////////////////////
  223:     ////////////////////////////////////////////////////////////////////////////
  224: }