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

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

AGCF Users (ASBR) support class for Huawei's Fixed Telecommunications Network (FTN) data model.

    1: using Microsoft.EntityFrameworkCore;
    2: using System;
    3: using System.Collections.Generic;
    4: using System.Data;
    5: using System.Linq;
    6: using System.Text;
    7:  
    8: namespace Ia.Ftn.Cl.Models.Data.Huawei
    9: {
   10:     ////////////////////////////////////////////////////////////////////////////
   11:  
   12:     /// <summary publish="true">
   13:     /// AGCF Users (ASBR) support class for Huawei's Fixed Telecommunications Network (FTN) data model.
   14:     /// </summary>
   15:     /// 
   16:     /// <remarks> 
   17:     /// Copyright © 2019-2020 Jasem Y. Al-Shamlan (info@ia.com.kw), Integrated Applications - Kuwait. All Rights Reserved.
   18:     /// </remarks> 
   19:     public class Asbr
   20:     {
   21:         /// <summary/>
   22:         public Asbr() { }
   23:  
   24:         ////////////////////////////////////////////////////////////////////////////
   25:  
   26:         /// <summary>
   27:         ///
   28:         /// </summary>
   29:         public static bool Update(Ia.Ftn.Cl.Models.Business.Huawei.SoftX.Response response, out Ia.Cl.Models.Result result)
   30:         {
   31:             bool isUpdated;
   32:             int readItemCount, existingItemCount, insertedItemCount, updatedItemCount, deletedItemCount;
   33:             string id, mgwId, eid, queryImpuSipDomain, queryCommand;
   34:             Ia.Ftn.Cl.Models.Huawei.Asbr asbr, newAsbr;
   35:             Ia.Ftn.Cl.Models.Huawei.Mgw mgw;
   36:  
   37:             isUpdated = false;
   38:             readItemCount = existingItemCount = insertedItemCount = updatedItemCount = deletedItemCount = 0;
   39:             result = new Ia.Cl.Models.Result();
   40:  
   41:             queryCommand = response.CommandString;
   42:  
   43:             // LST ASBR: PUI="sip:+96525449809@ims.moc.kw";
   44:             queryImpuSipDomain = Ia.Cl.Models.Default.Match(queryCommand, @"PUI=""(.+?)""");
   45:  
   46:             readItemCount = response.Count;
   47:  
   48:             if (response.QueryDictionary.ContainsKey("EID"))
   49:             {
   50:                 eid = response.QueryDictionary["EID"];
   51:  
   52:                 mgwId = Ia.Ftn.Cl.Models.Business.Huawei.Mgw.MgwId(response.NetworkElement, eid);
   53:  
   54:                 using (var db = new Ia.Ftn.Cl.Db())
   55:                 {
   56:                     mgw = (from m in db.Mgws where m.Id == mgwId select m).SingleOrDefault();
   57:  
   58:                     if (mgw != null)
   59:                     {
   60:                         id = Ia.Ftn.Cl.Models.Business.Huawei.Asbr.AsbrId(response.NetworkElement, queryImpuSipDomain);
   61:  
   62:                         asbr = (from a in db.Asbrs where /*a.Mgw.Id == mgwId &&*/ a.Id == id select a).SingleOrDefault();
   63:  
   64:                         if (response.Count >= 1)
   65:                         {
   66:                             newAsbr = new Ia.Ftn.Cl.Models.Huawei.Asbr()
   67:                             {
   68:                                 Id = id,
   69:                                 PUI = queryImpuSipDomain,
   70:                                 NetworkElement = response.NetworkElement,
   71:                                 PRI = response.QueryDictionary.ContainsKey("PRI") ? response.QueryDictionary["PRI"] : string.Empty,
   72:                                 REGTP = response.QueryDictionary.ContainsKey("REGTP") ? response.QueryDictionary["REGTP"] : string.Empty,
   73:                                 DID = response.QueryDictionary.ContainsKey("DID") ? response.QueryDictionary["DID"] : string.Empty,
   74:                                 DIDG = response.QueryDictionary.ContainsKey("DIDG") ? response.QueryDictionary["DIDG"] : string.Empty,
   75:                                 TET = response.QueryDictionary.ContainsKey("TET") ? response.QueryDictionary["TET"] : string.Empty,
   76:                                 MN = response.QueryDictionary.ContainsKey("MN") ? int.Parse(response.QueryDictionary["MN"]) : 0,
   77:                                 MGWID = response.QueryDictionary.ContainsKey("MGWID") ? Ia.Ftn.Cl.Models.Business.Huawei.SoftX.SpecialIntegerParameterHandling("MGWID", response.QueryDictionary["MGWID"]) : 0,
   78:                                 TEN = response.QueryDictionary.ContainsKey("TEN") ? response.QueryDictionary["TEN"] : string.Empty,
   79:                                 EDESC = response.QueryDictionary.ContainsKey("EDESC") ? response.QueryDictionary["EDESC"] : string.Empty,
   80:                                 EID = response.QueryDictionary.ContainsKey("EID") ? response.QueryDictionary["EID"] : string.Empty,
   81:                                 RGN = response.QueryDictionary.ContainsKey("RGN") ? response.QueryDictionary["RGN"] : string.Empty,
   82:                                 TID = response.QueryDictionary.ContainsKey("TID") ? response.QueryDictionary["TID"] : string.Empty,
   83:                                 LKS = response.QueryDictionary.ContainsKey("LKS") ? response.QueryDictionary["LKS"] : string.Empty,
   84:                                 IID = response.QueryDictionary.ContainsKey("IID") ? int.Parse(response.QueryDictionary["IID"]) : 0,
   85:                                 SGIAD = response.QueryDictionary.ContainsKey("SGIAD") ? int.Parse(response.QueryDictionary["SGIAD"]) : 0,
   86:                                 ISDN = response.QueryDictionary.ContainsKey("ISDN") ? response.QueryDictionary["ISDN"] : string.Empty,
   87:                                 ISA = response.QueryDictionary.ContainsKey("ISA") ? response.QueryDictionary["ISA"] : string.Empty,
   88:                                 TRUNKGP = response.QueryDictionary.ContainsKey("TRUNKGP") ? response.QueryDictionary["TRUNKGP"] : string.Empty,
   89:                                 V5IID = response.QueryDictionary.ContainsKey("V5IID") ? response.QueryDictionary["V5IID"] : string.Empty,
   90:                                 L3ADDR = response.QueryDictionary.ContainsKey("L3ADDR") ? int.Parse(response.QueryDictionary["L3ADDR"]) : 0,
   91:                                 B1NO = response.QueryDictionary.ContainsKey("B1NO") ? int.Parse(response.QueryDictionary["B1NO"]) : 0,
   92:                                 B2NO = response.QueryDictionary.ContainsKey("B2NO") ? int.Parse(response.QueryDictionary["B2NO"]) : 0,
   93:                                 ISDNDS = response.QueryDictionary.ContainsKey("ISDNDS") ? response.QueryDictionary["ISDNDS"] : string.Empty,
   94:                                 PLF = response.QueryDictionary.ContainsKey("PLF") ? bool.Parse(response.QueryDictionary["PLF"]) : false,
   95:                                 TS = response.QueryDictionary.ContainsKey("TS") ? Ia.Ftn.Cl.Models.Business.Huawei.SoftX.SpecialBooleanParameterHandling("TS", response.QueryDictionary["TS"]) : false,
   96:                                 DT = response.QueryDictionary.ContainsKey("DT") ? response.QueryDictionary["DT"] : string.Empty,
   97:                                 HNID = response.QueryDictionary.ContainsKey("HNID") ? response.QueryDictionary["HNID"] : string.Empty,
   98:                                 NETID = response.QueryDictionary.ContainsKey("NETID") ? response.QueryDictionary["NETID"] : string.Empty,
   99:                                 NETINFO = response.QueryDictionary.ContainsKey("NETINFO") ? response.QueryDictionary["NETINFO"] : string.Empty,
  100:                                 PHNCON = response.QueryDictionary.ContainsKey("PHNCON") ? response.QueryDictionary["PHNCON"] : string.Empty,
  101:                                 DIGMAP = response.QueryDictionary.ContainsKey("DIGMAP") ? response.QueryDictionary["DIGMAP"] : string.Empty,
  102:                                 GLOBDMAPIDX = response.QueryDictionary.ContainsKey("GLOBDMAPIDX") ? response.QueryDictionary["GLOBDMAPIDX"] : string.Empty,
  103:                                 PWD = response.QueryDictionary.ContainsKey("PWD") ? response.QueryDictionary["PWD"] : string.Empty,
  104:                                 SGN = response.QueryDictionary.ContainsKey("SGN") ? response.QueryDictionary["SGN"] : string.Empty,
  105:                                 SOCGN = response.QueryDictionary.ContainsKey("SOCGN") ? response.QueryDictionary["SOCGN"] : string.Empty,
  106:                                 EMGCN = response.QueryDictionary.ContainsKey("EMGCN") ? response.QueryDictionary["EMGCN"] : string.Empty,
  107:                                 DP = response.QueryDictionary.ContainsKey("DP") ? response.QueryDictionary["DP"] : string.Empty,
  108:                                 DR = response.QueryDictionary.ContainsKey("DR") ? response.QueryDictionary["DR"] : string.Empty,
  109:                                 CONF = response.QueryDictionary.ContainsKey("CONF") ? response.QueryDictionary["CONF"] : string.Empty,
  110:                                 CLIPMD = response.QueryDictionary.ContainsKey("CLIPMD") ? response.QueryDictionary["CLIPMD"] : string.Empty,
  111:                                 IFMIMN = response.QueryDictionary.ContainsKey("IFMIMN") ? int.Parse(response.QueryDictionary["IFMIMN"]) : 0,
  112:                                 CODEC = response.QueryDictionary.ContainsKey("CODEC") ? response.QueryDictionary["CODEC"] : string.Empty,
  113:                                 CGP = response.QueryDictionary.ContainsKey("CGP") ? response.QueryDictionary["CGP"] : string.Empty,
  114:                                 Mgw = (from m in db.Mgws where m.Id == mgwId select m).SingleOrDefault()
  115:                             };
  116:  
  117:                             if (asbr == null)
  118:                             {
  119:                                 newAsbr.Created = newAsbr.Updated = DateTime.UtcNow.AddHours(3);
  120:  
  121:                                 db.Asbrs.Add(newAsbr);
  122:  
  123:                                 insertedItemCount++;
  124:                             }
  125:                             else
  126:                             {
  127:                                 existingItemCount = 1;
  128:  
  129:                                 if (asbr.Update(newAsbr))
  130:                                 {
  131:                                     db.Asbrs.Attach(asbr);
  132:                                     db.Entry(asbr).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
  133:  
  134:                                     updatedItemCount++;
  135:                                 }
  136:                             }
  137:                         }
  138:                         else
  139:                         {
  140:                             // below: remove since reading was empty
  141:  
  142:                             if (asbr != null)
  143:                             {
  144:                                 existingItemCount = 1;
  145:  
  146:                                 asbr = (from a in db.Asbrs where a.Id == id select a).SingleOrDefault();
  147:  
  148:                                 db.Asbrs.Remove(asbr);
  149:  
  150:                                 deletedItemCount++;
  151:                             }
  152:                         }
  153:  
  154:                         db.SaveChanges();
  155:                     }
  156:                     else
  157:                     {
  158:                         result.AddWarning("Mgw is null for Asbr.Pui: " + queryImpuSipDomain);
  159:                     }
  160:                 }
  161:             }
  162:             else if (response.ReturnCode == Ia.Ftn.Cl.Models.Client.Huawei.SoftX.ResultCode.TheUserDoesNotExist)
  163:             {
  164:                 // handle a non existing number with an unknown MGW
  165:  
  166:                 using (var db = new Ia.Ftn.Cl.Db())
  167:                 {
  168:                     id = Ia.Ftn.Cl.Models.Business.Huawei.Asbr.AsbrId(response.NetworkElement, queryImpuSipDomain);
  169:  
  170:                     asbr = (from a in db.Asbrs where a.Id == id select a).SingleOrDefault();
  171:  
  172:                     if (asbr != null)
  173:                     {
  174:                         existingItemCount = 1;
  175:  
  176:                         asbr = (from a in db.Asbrs where a.Id == id select a).SingleOrDefault();
  177:  
  178:                         db.Asbrs.Remove(asbr);
  179:  
  180:                         deletedItemCount++;
  181:                     }
  182:                     else
  183:                     {
  184:                         //result.AddWarning("Asbr is null for Asbr.Pui: " + queryImpuSipDomain);
  185:                     }
  186:  
  187:                     db.SaveChanges();
  188:                 }
  189:             }
  190:             else
  191:             {
  192:                 result.AddWarning("Mgw EquipmentId (Eid) does not exist for Asbr.Pui: " + queryImpuSipDomain);
  193:             }
  194:  
  195:             if (insertedItemCount != 0 || updatedItemCount != 0 || deletedItemCount != 0) isUpdated = true;
  196:             else isUpdated = false;
  197:  
  198:             result.AddSuccess("(" + readItemCount + "/" + existingItemCount + "/" + insertedItemCount + "," + updatedItemCount + "," + deletedItemCount + ")");
  199:  
  200:             return isUpdated;
  201:         }
  202:  
  203:         ////////////////////////////////////////////////////////////////////////////
  204:  
  205:         /// <summary>
  206:         ///
  207:         /// </summary>
  208:         public static List<Ia.Ftn.Cl.Models.Huawei.Asbr> List()
  209:         {
  210:             List<Ia.Ftn.Cl.Models.Huawei.Asbr> list;
  211:  
  212:             using (var db = new Ia.Ftn.Cl.Db())
  213:             {
  214:                 list = (from s in db.Asbrs select s).ToList();
  215:             }
  216:  
  217:             return list;
  218:         }
  219:  
  220:         ////////////////////////////////////////////////////////////////////////////
  221:  
  222:         /// <summary>
  223:         ///
  224:         /// </summary>
  225:         public static List<string> PuiList()
  226:         {
  227:             List<string> list;
  228:  
  229:             using (var db = new Ia.Ftn.Cl.Db())
  230:             {
  231:                 list = (from a in db.Asbrs select a.PUI).ToList();
  232:             }
  233:  
  234:             return list;
  235:         }
  236:  
  237:         ////////////////////////////////////////////////////////////////////////////
  238:  
  239:         /// <summary>
  240:         ///
  241:         /// </summary>
  242:         public static List<string> ServiceList()
  243:         {
  244:             List<string> list, serviceList;
  245:  
  246:             using (var db = new Ia.Ftn.Cl.Db())
  247:             {
  248:                 list = (from a in db.Asbrs select a.PUI).Distinct().ToList();
  249:  
  250:                 serviceList = new List<string>(list.Count);
  251:  
  252:                 foreach (var pui in list)
  253:                 {
  254:                     serviceList.Add(Ia.Ftn.Cl.Models.Business.NumberFormatConverter.Service(pui));
  255:                 }
  256:             }
  257:  
  258:             return serviceList;
  259:         }
  260:  
  261:         ////////////////////////////////////////////////////////////////////////////
  262:  
  263:         /// <summary>
  264:         ///
  265:         /// </summary>
  266:         public static List<string> ServiceNotWithinSoftXDomainList()
  267:         {
  268:             var list = new List<string>();
  269:  
  270:             var softXDomainList = Ia.Ftn.Cl.Models.Data.Service.SoftXDomainList;
  271:  
  272:             var serviceList = Ia.Ftn.Cl.Models.Data.Huawei.Asbr.ServiceList();
  273:  
  274:             foreach (var s in serviceList)
  275:             {
  276:                 if (!softXDomainList.Any(u => s.StartsWith(u.ToString()))) list.Add(s);
  277:             }
  278:  
  279:             list.Sort();
  280:  
  281:             return list;
  282:         }
  283:  
  284:         ////////////////////////////////////////////////////////////////////////////
  285:  
  286:         /// <summary>
  287:         /// 
  288:         /// </summary>
  289:         public static List<Ia.Ftn.Cl.Models.Huawei.Asbr> List(List<string> serviceList)
  290:         {
  291:             List<Ia.Ftn.Cl.Models.Huawei.Asbr> list;
  292:  
  293:             using (var db = new Ia.Ftn.Cl.Db())
  294:             {
  295:                 list = (from s in db.Asbrs
  296:                             //where serviceList.Contains(s.USRNUM)
  297:                         select s).ToList();
  298:             }
  299:  
  300:             return list;
  301:         }
  302:  
  303:         ////////////////////////////////////////////////////////////////////////////
  304:  
  305:         /// <summary>
  306:         ///
  307:         /// </summary>
  308:         public static Dictionary<string, Ia.Ftn.Cl.Models.Business.Default.SwitchRoute> PstnServiceToSwitchRouteDictionary()
  309:         {
  310:             Dictionary<string, Ia.Ftn.Cl.Models.Business.Default.SwitchRoute> dictionary;
  311:  
  312:             dictionary = new Dictionary<string, Ia.Ftn.Cl.Models.Business.Default.SwitchRoute>();
  313:  
  314:             using (var db = new Ia.Ftn.Cl.Db())
  315:             {
  316:                 var list = (from s in db.Asbrs select new { s.Id /*.USRNUM, s.RNIDX2*/ }).ToList();
  317:  
  318:                 foreach (var l in list)
  319:                 {
  320:                     //dictionary[l.USRNUM] = Ia.Ftn.Cl.Model.Business.Huawei.Asbr.RnidxRouteToSwitchRoute(l.RNIDX2);
  321:                 }
  322:             }
  323:  
  324:             return dictionary;
  325:         }
  326:  
  327:         ////////////////////////////////////////////////////////////////////////////
  328:  
  329:         /// <summary>
  330:         ///
  331:         /// </summary>
  332:         public static List<Ia.Ftn.Cl.Models.Business.ServiceAccessIpOntCreated> ServiceOntWithinAllowedToBeProvisionedOrMigratedHuaweiSwitchNokiaAccessOltList()
  333:         {
  334:             int serviceType;
  335:             string service, serviceId;
  336:             List<int> oltIdList;
  337:             List<Ia.Ftn.Cl.Models.Business.ServiceAccessIpOntCreated> tempList, serviceOntList;
  338:  
  339:             serviceType = Ia.Ftn.Cl.Models.Business.Service.ServiceType.ImsService;
  340:  
  341:             //oltIdList = Ia.Ftn.Cl.Model.Data.Service.AllowedToBeProvisionedOltIdList.Intersect(Ia.Ftn.Cl.Model.Data.NetworkDesignDocument.HuaweiSwitchNokiaAccessOltIdList).ToList();
  342:             oltIdList = Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.HuaweiRouterNokiaAccessOltIdList;
  343:  
  344:             var ontIpToOntForOltIdListDictionary = Ia.Ftn.Cl.Models.Data.NetworkDesignDocument.OntIpToOntForOltIdListDictionary(oltIdList);
  345:  
  346:             using (var db = new Ia.Ftn.Cl.Db())
  347:             {
  348:                 tempList = (from a in db.Asbrs
  349:                             join m in db.Mgws on a.Mgw.Id equals m.Id
  350:                             //where o.EmsOnt.Access != null && oltIdList.Contains(o.EmsOnt.Access.Olt) may use a special like ontIpRangeList?
  351:                             select new Ia.Ftn.Cl.Models.Business.ServiceAccessIpOntCreated { Service = a.PUI, Ip = a.Mgw.RA1, CreatedDateTime = a.Created }).AsNoTracking().ToList();
  352:             }
  353:  
  354:             if (tempList != null && tempList.Count > 0)
  355:             {
  356:                 serviceOntList = new List<Ia.Ftn.Cl.Models.Business.ServiceAccessIpOntCreated>(tempList.Count);
  357:  
  358:                 foreach (var so in tempList)
  359:                 {
  360:                     service = Ia.Ftn.Cl.Models.Business.NumberFormatConverter.Service(so.Service); // so.Service here is o.PUI
  361:  
  362:                     serviceId = Ia.Ftn.Cl.Models.Business.Service.ServiceToServiceId(service, serviceType);
  363:  
  364:                     var nddOnt = ontIpToOntForOltIdListDictionary.ContainsKey(so.Ip) ? ontIpToOntForOltIdListDictionary[so.Ip] : null;
  365:  
  366:                     if (nddOnt != null)
  367:                     {
  368:                         serviceOntList.Add(new Ia.Ftn.Cl.Models.Business.ServiceAccessIpOntCreated
  369:                         {
  370:                             ServiceId = serviceId,
  371:                             Service = service,
  372:                             Ont = nddOnt,
  373:                             AccessId = nddOnt.Access.Id,
  374:                             CreatedDateTime = so.CreatedDateTime
  375:                         });
  376:                     }
  377:                 }
  378:             }
  379:             else
  380:             {
  381:                 serviceOntList = new List<Ia.Ftn.Cl.Models.Business.ServiceAccessIpOntCreated>();
  382:             }
  383:  
  384:             return serviceOntList;
  385:         }
  386:  
  387:         ////////////////////////////////////////////////////////////////////////////
  388:  
  389:         /// <summary>
  390:         ///
  391:         /// </summary>
  392:         public static int NextVacantTidForOnt(Ia.Ftn.Cl.Models.Business.NetworkDesignDocument.Ont nddOnt, Ia.Ftn.Cl.Models.Ont ont)
  393:         {
  394:             int tid;
  395:             List<int> list;
  396:  
  397:             var eid = Ia.Ftn.Cl.Models.Business.Huawei.SoftX.IpToEid(nddOnt.Ip);
  398:  
  399:             list = UsedTidListForEid(eid);
  400:  
  401:             if (list.Count == 0) tid = 1; // this means the box is empty, and we should create at 1
  402:             else
  403:             {
  404:                 list = Ia.Cl.Models.Default.ExcludedNumberListFromNumberListWithinRange(list, Ia.Ftn.Cl.Models.Business.Nokia.Ont.PossibleNumberOfTdForOntFamilyType((Ia.Ftn.Cl.Models.Business.Nokia.Ont.FamilyType)ont.FamilyTypeId));
  405:  
  406:                 if (list.Count > 0) tid = list[0];
  407:                 else tid = Ia.Ftn.Cl.Models.Business.Default.PortUndefinedOrInvalidOrUnknown; // something went wrong
  408:             }
  409:  
  410:             return tid;
  411:         }
  412:  
  413:         ////////////////////////////////////////////////////////////////////////////
  414:  
  415:         /// <summary>
  416:         ///
  417:         /// </summary>
  418:         private static List<int> UsedTidListForEid(string eid)
  419:         {
  420:             List<int> list;
  421:  
  422:             using (var db = new Ia.Ftn.Cl.Db())
  423:             {
  424:                 var tidList = (from asb in db.Asbrs where asb.EID == eid orderby asb.TID ascending select asb.TID).ToList<string>();
  425:  
  426:                 list = tidList.Select(int.Parse).ToList();
  427:             }
  428:  
  429:             return list;
  430:         }
  431:  
  432:         ////////////////////////////////////////////////////////////////////////////
  433:         ////////////////////////////////////////////////////////////////////////////
  434:  
  435:         /// <summary>
  436:         ///
  437:         /// </summary>
  438:         public static string ToSimpleTextString(Ia.Ftn.Cl.Models.Huawei.Asbr asbr)
  439:         {
  440:             StringBuilder sb;
  441:  
  442:             sb = new StringBuilder();
  443:  
  444:             sb.AppendLine("PUI: " + asbr.PUI);
  445:             sb.AppendLine("PRI: " + asbr.PRI);
  446:             sb.AppendLine("RGN: " + asbr.RGN);
  447:             sb.AppendLine("MN: " + asbr.MN);
  448:             sb.AppendLine("MGWID: " + asbr.MGWID);
  449:             sb.AppendLine("TEN: " + asbr.TEN);
  450:             sb.AppendLine("EDESC: " + asbr.EDESC);
  451:             sb.AppendLine("EID: " + asbr.EID);
  452:             sb.AppendLine("TID: " + asbr.TID);
  453:             //sb.AppendLine("ENDTID: " + asbr.ENDTID);
  454:             sb.AppendLine("V5IID: " + asbr.V5IID);
  455:             sb.AppendLine("LKS: " + asbr.LKS);
  456:             sb.AppendLine("IID: " + asbr.IID);
  457:             sb.AppendLine("SGIAD: " + asbr.SGIAD);
  458:             sb.AppendLine("TRUNKGP: " + asbr.TRUNKGP);
  459:             sb.AppendLine("L3ADDR: " + asbr.L3ADDR);
  460:             //sb.AppendLine("EL3ADDR: " + asbr.EL3ADDR);
  461:             //sb.AppendLine("STARTR: " + asbr.STARTR);
  462:             //sb.AppendLine("MRR: " + asbr.MRR);
  463:  
  464:             return sb.ToString();
  465:         }
  466:  
  467:         ////////////////////////////////////////////////////////////////////////////
  468:         ////////////////////////////////////////////////////////////////////////////
  469:     }
  470:  
  471:     ////////////////////////////////////////////////////////////////////////////
  472:     ////////////////////////////////////////////////////////////////////////////
  473: }