Home | History | Annotate | Download | only in ver2_ulp_components
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.location.cts.asn1.supl2.ver2_ulp_components;
     18 
     19 /*
     20  */
     21 
     22 
     23 //
     24 //
     25 import android.location.cts.asn1.base.Asn1Choice;
     26 import android.location.cts.asn1.base.Asn1Integer;
     27 import android.location.cts.asn1.base.Asn1Null;
     28 import android.location.cts.asn1.base.Asn1Object;
     29 import android.location.cts.asn1.base.Asn1Sequence;
     30 import android.location.cts.asn1.base.Asn1Tag;
     31 import android.location.cts.asn1.base.BitStream;
     32 import android.location.cts.asn1.base.BitStreamReader;
     33 import android.location.cts.asn1.base.ChoiceComponent;
     34 import android.location.cts.asn1.base.SequenceComponent;
     35 import android.location.cts.asn1.supl2.ulp_components.CellParametersID;
     36 import android.location.cts.asn1.supl2.ulp_components.PrimaryCPICH_Info;
     37 import com.google.common.collect.ImmutableList;
     38 import java.nio.ByteBuffer;
     39 import java.util.Collection;
     40 import java.util.HashMap;
     41 import java.util.Map;
     42 import javax.annotation.Nullable;
     43 
     44 
     45 /**
     46 */
     47 public  class UTRAN_GANSSReferenceTime extends Asn1Sequence {
     48   //
     49 
     50   private static final Asn1Tag TAG_UTRAN_GANSSReferenceTime
     51       = Asn1Tag.fromClassAndNumber(-1, -1);
     52 
     53   public UTRAN_GANSSReferenceTime() {
     54     super();
     55   }
     56 
     57   @Override
     58   @Nullable
     59   protected Asn1Tag getTag() {
     60     return TAG_UTRAN_GANSSReferenceTime;
     61   }
     62 
     63   @Override
     64   protected boolean isTagImplicit() {
     65     return true;
     66   }
     67 
     68   public static Collection<Asn1Tag> getPossibleFirstTags() {
     69     if (TAG_UTRAN_GANSSReferenceTime != null) {
     70       return ImmutableList.of(TAG_UTRAN_GANSSReferenceTime);
     71     } else {
     72       return Asn1Sequence.getPossibleFirstTags();
     73     }
     74   }
     75 
     76   /**
     77    * Creates a new UTRAN_GANSSReferenceTime from encoded stream.
     78    */
     79   public static UTRAN_GANSSReferenceTime fromPerUnaligned(byte[] encodedBytes) {
     80     UTRAN_GANSSReferenceTime result = new UTRAN_GANSSReferenceTime();
     81     result.decodePerUnaligned(new BitStreamReader(encodedBytes));
     82     return result;
     83   }
     84 
     85   /**
     86    * Creates a new UTRAN_GANSSReferenceTime from encoded stream.
     87    */
     88   public static UTRAN_GANSSReferenceTime fromPerAligned(byte[] encodedBytes) {
     89     UTRAN_GANSSReferenceTime result = new UTRAN_GANSSReferenceTime();
     90     result.decodePerAligned(new BitStreamReader(encodedBytes));
     91     return result;
     92   }
     93 
     94 
     95 
     96   @Override protected boolean isExtensible() {
     97     return true;
     98   }
     99 
    100   @Override public boolean containsExtensionValues() {
    101     for (SequenceComponent extensionComponent : getExtensionComponents()) {
    102       if (extensionComponent.isExplicitlySet()) return true;
    103     }
    104     return false;
    105   }
    106 
    107 
    108   private UTRAN_GANSSReferenceTime.ganssTODType ganssTOD_;
    109   public UTRAN_GANSSReferenceTime.ganssTODType getGanssTOD() {
    110     return ganssTOD_;
    111   }
    112   /**
    113    * @throws ClassCastException if value is not a UTRAN_GANSSReferenceTime.ganssTODType
    114    */
    115   public void setGanssTOD(Asn1Object value) {
    116     this.ganssTOD_ = (UTRAN_GANSSReferenceTime.ganssTODType) value;
    117   }
    118   public UTRAN_GANSSReferenceTime.ganssTODType setGanssTODToNewInstance() {
    119     ganssTOD_ = new UTRAN_GANSSReferenceTime.ganssTODType();
    120     return ganssTOD_;
    121   }
    122 
    123   private UTRAN_GANSSReferenceTime.utran_GANSSTimingOfCellType utran_GANSSTimingOfCell_;
    124   public UTRAN_GANSSReferenceTime.utran_GANSSTimingOfCellType getUtran_GANSSTimingOfCell() {
    125     return utran_GANSSTimingOfCell_;
    126   }
    127   /**
    128    * @throws ClassCastException if value is not a UTRAN_GANSSReferenceTime.utran_GANSSTimingOfCellType
    129    */
    130   public void setUtran_GANSSTimingOfCell(Asn1Object value) {
    131     this.utran_GANSSTimingOfCell_ = (UTRAN_GANSSReferenceTime.utran_GANSSTimingOfCellType) value;
    132   }
    133   public UTRAN_GANSSReferenceTime.utran_GANSSTimingOfCellType setUtran_GANSSTimingOfCellToNewInstance() {
    134     utran_GANSSTimingOfCell_ = new UTRAN_GANSSReferenceTime.utran_GANSSTimingOfCellType();
    135     return utran_GANSSTimingOfCell_;
    136   }
    137 
    138   private UTRAN_GANSSReferenceTime.modeSpecificInfoType modeSpecificInfo_;
    139   public UTRAN_GANSSReferenceTime.modeSpecificInfoType getModeSpecificInfo() {
    140     return modeSpecificInfo_;
    141   }
    142   /**
    143    * @throws ClassCastException if value is not a UTRAN_GANSSReferenceTime.modeSpecificInfoType
    144    */
    145   public void setModeSpecificInfo(Asn1Object value) {
    146     this.modeSpecificInfo_ = (UTRAN_GANSSReferenceTime.modeSpecificInfoType) value;
    147   }
    148   public UTRAN_GANSSReferenceTime.modeSpecificInfoType setModeSpecificInfoToNewInstance() {
    149     modeSpecificInfo_ = new UTRAN_GANSSReferenceTime.modeSpecificInfoType();
    150     return modeSpecificInfo_;
    151   }
    152 
    153   private UTRAN_GANSSReferenceTime.sfnType sfn_;
    154   public UTRAN_GANSSReferenceTime.sfnType getSfn() {
    155     return sfn_;
    156   }
    157   /**
    158    * @throws ClassCastException if value is not a UTRAN_GANSSReferenceTime.sfnType
    159    */
    160   public void setSfn(Asn1Object value) {
    161     this.sfn_ = (UTRAN_GANSSReferenceTime.sfnType) value;
    162   }
    163   public UTRAN_GANSSReferenceTime.sfnType setSfnToNewInstance() {
    164     sfn_ = new UTRAN_GANSSReferenceTime.sfnType();
    165     return sfn_;
    166   }
    167 
    168   private UTRAN_GANSSReferenceTime.ganss_TODUncertaintyType ganss_TODUncertainty_;
    169   public UTRAN_GANSSReferenceTime.ganss_TODUncertaintyType getGanss_TODUncertainty() {
    170     return ganss_TODUncertainty_;
    171   }
    172   /**
    173    * @throws ClassCastException if value is not a UTRAN_GANSSReferenceTime.ganss_TODUncertaintyType
    174    */
    175   public void setGanss_TODUncertainty(Asn1Object value) {
    176     this.ganss_TODUncertainty_ = (UTRAN_GANSSReferenceTime.ganss_TODUncertaintyType) value;
    177   }
    178   public UTRAN_GANSSReferenceTime.ganss_TODUncertaintyType setGanss_TODUncertaintyToNewInstance() {
    179     ganss_TODUncertainty_ = new UTRAN_GANSSReferenceTime.ganss_TODUncertaintyType();
    180     return ganss_TODUncertainty_;
    181   }
    182 
    183 
    184 
    185 
    186 
    187 
    188   @Override public Iterable<? extends SequenceComponent> getComponents() {
    189     ImmutableList.Builder<SequenceComponent> builder = ImmutableList.builder();
    190 
    191     builder.add(new SequenceComponent() {
    192           Asn1Tag tag = Asn1Tag.fromClassAndNumber(2, 0);
    193 
    194           @Override public boolean isExplicitlySet() {
    195             return getGanssTOD() != null;
    196           }
    197 
    198           @Override public boolean hasDefaultValue() {
    199             return false;
    200           }
    201 
    202           @Override public boolean isOptional() {
    203             return false;
    204           }
    205 
    206           @Override public Asn1Object getComponentValue() {
    207             return getGanssTOD();
    208           }
    209 
    210           @Override public void setToNewInstance() {
    211             setGanssTODToNewInstance();
    212           }
    213 
    214           @Override public Collection<Asn1Tag> getPossibleFirstTags() {
    215             return tag == null ? UTRAN_GANSSReferenceTime.ganssTODType.getPossibleFirstTags() : ImmutableList.of(tag);
    216           }
    217 
    218           @Override
    219           public Asn1Tag getTag() {
    220             return tag;
    221           }
    222 
    223           @Override
    224           public boolean isImplicitTagging() {
    225             return true;
    226           }
    227 
    228           @Override public String toIndentedString(String indent) {
    229                 return "ganssTOD : "
    230                     + getGanssTOD().toIndentedString(indent);
    231               }
    232         });
    233 
    234     builder.add(new SequenceComponent() {
    235           Asn1Tag tag = Asn1Tag.fromClassAndNumber(2, 1);
    236 
    237           @Override public boolean isExplicitlySet() {
    238             return getUtran_GANSSTimingOfCell() != null;
    239           }
    240 
    241           @Override public boolean hasDefaultValue() {
    242             return false;
    243           }
    244 
    245           @Override public boolean isOptional() {
    246             return true;
    247           }
    248 
    249           @Override public Asn1Object getComponentValue() {
    250             return getUtran_GANSSTimingOfCell();
    251           }
    252 
    253           @Override public void setToNewInstance() {
    254             setUtran_GANSSTimingOfCellToNewInstance();
    255           }
    256 
    257           @Override public Collection<Asn1Tag> getPossibleFirstTags() {
    258             return tag == null ? UTRAN_GANSSReferenceTime.utran_GANSSTimingOfCellType.getPossibleFirstTags() : ImmutableList.of(tag);
    259           }
    260 
    261           @Override
    262           public Asn1Tag getTag() {
    263             return tag;
    264           }
    265 
    266           @Override
    267           public boolean isImplicitTagging() {
    268             return true;
    269           }
    270 
    271           @Override public String toIndentedString(String indent) {
    272                 return "utran_GANSSTimingOfCell : "
    273                     + getUtran_GANSSTimingOfCell().toIndentedString(indent);
    274               }
    275         });
    276 
    277     builder.add(new SequenceComponent() {
    278           Asn1Tag tag = Asn1Tag.fromClassAndNumber(2, 2);
    279 
    280           @Override public boolean isExplicitlySet() {
    281             return getModeSpecificInfo() != null;
    282           }
    283 
    284           @Override public boolean hasDefaultValue() {
    285             return false;
    286           }
    287 
    288           @Override public boolean isOptional() {
    289             return true;
    290           }
    291 
    292           @Override public Asn1Object getComponentValue() {
    293             return getModeSpecificInfo();
    294           }
    295 
    296           @Override public void setToNewInstance() {
    297             setModeSpecificInfoToNewInstance();
    298           }
    299 
    300           @Override public Collection<Asn1Tag> getPossibleFirstTags() {
    301             return tag == null ? UTRAN_GANSSReferenceTime.modeSpecificInfoType.getPossibleFirstTags() : ImmutableList.of(tag);
    302           }
    303 
    304           @Override
    305           public Asn1Tag getTag() {
    306             return tag;
    307           }
    308 
    309           @Override
    310           public boolean isImplicitTagging() {
    311             return true;
    312           }
    313 
    314           @Override public String toIndentedString(String indent) {
    315                 return "modeSpecificInfo : "
    316                     + getModeSpecificInfo().toIndentedString(indent);
    317               }
    318         });
    319 
    320     builder.add(new SequenceComponent() {
    321           Asn1Tag tag = Asn1Tag.fromClassAndNumber(2, 3);
    322 
    323           @Override public boolean isExplicitlySet() {
    324             return getSfn() != null;
    325           }
    326 
    327           @Override public boolean hasDefaultValue() {
    328             return false;
    329           }
    330 
    331           @Override public boolean isOptional() {
    332             return false;
    333           }
    334 
    335           @Override public Asn1Object getComponentValue() {
    336             return getSfn();
    337           }
    338 
    339           @Override public void setToNewInstance() {
    340             setSfnToNewInstance();
    341           }
    342 
    343           @Override public Collection<Asn1Tag> getPossibleFirstTags() {
    344             return tag == null ? UTRAN_GANSSReferenceTime.sfnType.getPossibleFirstTags() : ImmutableList.of(tag);
    345           }
    346 
    347           @Override
    348           public Asn1Tag getTag() {
    349             return tag;
    350           }
    351 
    352           @Override
    353           public boolean isImplicitTagging() {
    354             return true;
    355           }
    356 
    357           @Override public String toIndentedString(String indent) {
    358                 return "sfn : "
    359                     + getSfn().toIndentedString(indent);
    360               }
    361         });
    362 
    363     builder.add(new SequenceComponent() {
    364           Asn1Tag tag = Asn1Tag.fromClassAndNumber(2, 4);
    365 
    366           @Override public boolean isExplicitlySet() {
    367             return getGanss_TODUncertainty() != null;
    368           }
    369 
    370           @Override public boolean hasDefaultValue() {
    371             return false;
    372           }
    373 
    374           @Override public boolean isOptional() {
    375             return true;
    376           }
    377 
    378           @Override public Asn1Object getComponentValue() {
    379             return getGanss_TODUncertainty();
    380           }
    381 
    382           @Override public void setToNewInstance() {
    383             setGanss_TODUncertaintyToNewInstance();
    384           }
    385 
    386           @Override public Collection<Asn1Tag> getPossibleFirstTags() {
    387             return tag == null ? UTRAN_GANSSReferenceTime.ganss_TODUncertaintyType.getPossibleFirstTags() : ImmutableList.of(tag);
    388           }
    389 
    390           @Override
    391           public Asn1Tag getTag() {
    392             return tag;
    393           }
    394 
    395           @Override
    396           public boolean isImplicitTagging() {
    397             return true;
    398           }
    399 
    400           @Override public String toIndentedString(String indent) {
    401                 return "ganss_TODUncertainty : "
    402                     + getGanss_TODUncertainty().toIndentedString(indent);
    403               }
    404         });
    405 
    406     return builder.build();
    407   }
    408 
    409   @Override public Iterable<? extends SequenceComponent>
    410                                                     getExtensionComponents() {
    411     ImmutableList.Builder<SequenceComponent> builder = ImmutableList.builder();
    412 
    413       return builder.build();
    414     }
    415 
    416 
    417 /*
    418  */
    419 
    420 
    421 //
    422 
    423 /**
    424  */
    425 public static class ganssTODType extends Asn1Integer {
    426   //
    427 
    428   private static final Asn1Tag TAG_ganssTODType
    429       = Asn1Tag.fromClassAndNumber(-1, -1);
    430 
    431   public ganssTODType() {
    432     super();
    433     setValueRange("0", "86399");
    434 
    435   }
    436 
    437   @Override
    438   @Nullable
    439   protected Asn1Tag getTag() {
    440     return TAG_ganssTODType;
    441   }
    442 
    443   @Override
    444   protected boolean isTagImplicit() {
    445     return true;
    446   }
    447 
    448   public static Collection<Asn1Tag> getPossibleFirstTags() {
    449     if (TAG_ganssTODType != null) {
    450       return ImmutableList.of(TAG_ganssTODType);
    451     } else {
    452       return Asn1Integer.getPossibleFirstTags();
    453     }
    454   }
    455 
    456   /**
    457    * Creates a new ganssTODType from encoded stream.
    458    */
    459   public static ganssTODType fromPerUnaligned(byte[] encodedBytes) {
    460     ganssTODType result = new ganssTODType();
    461     result.decodePerUnaligned(new BitStreamReader(encodedBytes));
    462     return result;
    463   }
    464 
    465   /**
    466    * Creates a new ganssTODType from encoded stream.
    467    */
    468   public static ganssTODType fromPerAligned(byte[] encodedBytes) {
    469     ganssTODType result = new ganssTODType();
    470     result.decodePerAligned(new BitStreamReader(encodedBytes));
    471     return result;
    472   }
    473 
    474   @Override public Iterable<BitStream> encodePerUnaligned() {
    475     return super.encodePerUnaligned();
    476   }
    477 
    478   @Override public Iterable<BitStream> encodePerAligned() {
    479     return super.encodePerAligned();
    480   }
    481 
    482   @Override public void decodePerUnaligned(BitStreamReader reader) {
    483     super.decodePerUnaligned(reader);
    484   }
    485 
    486   @Override public void decodePerAligned(BitStreamReader reader) {
    487     super.decodePerAligned(reader);
    488   }
    489 
    490   @Override public String toString() {
    491     return toIndentedString("");
    492   }
    493 
    494   public String toIndentedString(String indent) {
    495     return "ganssTODType = " + getInteger() + ";\n";
    496   }
    497 }
    498 
    499 
    500 /*
    501  */
    502 
    503 
    504 //
    505 
    506 /**
    507  */
    508 public static class utran_GANSSTimingOfCellType extends Asn1Integer {
    509   //
    510 
    511   private static final Asn1Tag TAG_utran_GANSSTimingOfCellType
    512       = Asn1Tag.fromClassAndNumber(-1, -1);
    513 
    514   public utran_GANSSTimingOfCellType() {
    515     super();
    516     setValueRange("0", "3999999");
    517 
    518   }
    519 
    520   @Override
    521   @Nullable
    522   protected Asn1Tag getTag() {
    523     return TAG_utran_GANSSTimingOfCellType;
    524   }
    525 
    526   @Override
    527   protected boolean isTagImplicit() {
    528     return true;
    529   }
    530 
    531   public static Collection<Asn1Tag> getPossibleFirstTags() {
    532     if (TAG_utran_GANSSTimingOfCellType != null) {
    533       return ImmutableList.of(TAG_utran_GANSSTimingOfCellType);
    534     } else {
    535       return Asn1Integer.getPossibleFirstTags();
    536     }
    537   }
    538 
    539   /**
    540    * Creates a new utran_GANSSTimingOfCellType from encoded stream.
    541    */
    542   public static utran_GANSSTimingOfCellType fromPerUnaligned(byte[] encodedBytes) {
    543     utran_GANSSTimingOfCellType result = new utran_GANSSTimingOfCellType();
    544     result.decodePerUnaligned(new BitStreamReader(encodedBytes));
    545     return result;
    546   }
    547 
    548   /**
    549    * Creates a new utran_GANSSTimingOfCellType from encoded stream.
    550    */
    551   public static utran_GANSSTimingOfCellType fromPerAligned(byte[] encodedBytes) {
    552     utran_GANSSTimingOfCellType result = new utran_GANSSTimingOfCellType();
    553     result.decodePerAligned(new BitStreamReader(encodedBytes));
    554     return result;
    555   }
    556 
    557   @Override public Iterable<BitStream> encodePerUnaligned() {
    558     return super.encodePerUnaligned();
    559   }
    560 
    561   @Override public Iterable<BitStream> encodePerAligned() {
    562     return super.encodePerAligned();
    563   }
    564 
    565   @Override public void decodePerUnaligned(BitStreamReader reader) {
    566     super.decodePerUnaligned(reader);
    567   }
    568 
    569   @Override public void decodePerAligned(BitStreamReader reader) {
    570     super.decodePerAligned(reader);
    571   }
    572 
    573   @Override public String toString() {
    574     return toIndentedString("");
    575   }
    576 
    577   public String toIndentedString(String indent) {
    578     return "utran_GANSSTimingOfCellType = " + getInteger() + ";\n";
    579   }
    580 }
    581 
    582 
    583 /*
    584  */
    585 
    586 
    587 //
    588 
    589 /**
    590  */
    591 public static class modeSpecificInfoType extends Asn1Choice {
    592   //
    593 
    594   private static final Asn1Tag TAG_modeSpecificInfoType
    595       = Asn1Tag.fromClassAndNumber(-1, -1);
    596 
    597   private static final Map<Asn1Tag, Select> tagToSelection = new HashMap<>();
    598 
    599   private boolean extension;
    600   private ChoiceComponent selection;
    601   private Asn1Object element;
    602 
    603   static {
    604     for (Select select : Select.values()) {
    605       for (Asn1Tag tag : select.getPossibleFirstTags()) {
    606         Select select0;
    607         if ((select0 = tagToSelection.put(tag, select)) != null) {
    608           throw new IllegalStateException(
    609             "modeSpecificInfoType: " + tag + " maps to both " + select0 + " and " + select);
    610         }
    611       }
    612     }
    613   }
    614 
    615   public modeSpecificInfoType() {
    616     super();
    617   }
    618 
    619   @Override
    620   @Nullable
    621   protected Asn1Tag getTag() {
    622     return TAG_modeSpecificInfoType;
    623   }
    624 
    625   @Override
    626   protected boolean isTagImplicit() {
    627     return true;
    628   }
    629 
    630   public static Collection<Asn1Tag> getPossibleFirstTags() {
    631     if (TAG_modeSpecificInfoType != null) {
    632       return ImmutableList.of(TAG_modeSpecificInfoType);
    633     } else {
    634       return tagToSelection.keySet();
    635     }
    636   }
    637 
    638   /**
    639    * Creates a new modeSpecificInfoType from encoded stream.
    640    */
    641   public static modeSpecificInfoType fromPerUnaligned(byte[] encodedBytes) {
    642     modeSpecificInfoType result = new modeSpecificInfoType();
    643     result.decodePerUnaligned(new BitStreamReader(encodedBytes));
    644     return result;
    645   }
    646 
    647   /**
    648    * Creates a new modeSpecificInfoType from encoded stream.
    649    */
    650   public static modeSpecificInfoType fromPerAligned(byte[] encodedBytes) {
    651     modeSpecificInfoType result = new modeSpecificInfoType();
    652     result.decodePerAligned(new BitStreamReader(encodedBytes));
    653     return result;
    654   }
    655 
    656 
    657 
    658   @Override protected boolean hasExtensionValue() {
    659     return extension;
    660   }
    661 
    662   @Override protected Integer getSelectionOrdinal() {
    663     return selection.ordinal();
    664   }
    665 
    666   @Nullable
    667   @Override
    668   protected ChoiceComponent getSelectedComponent() {
    669     return selection;
    670   }
    671 
    672   @Override protected int getOptionCount() {
    673     if (hasExtensionValue()) {
    674       return Extend.values().length;
    675     }
    676     return Select.values().length;
    677   }
    678 
    679   protected Asn1Object createAndSetValue(boolean isExtensionValue,
    680                                          int ordinal) {
    681     extension = isExtensionValue;
    682     if (isExtensionValue) {
    683       selection = Extend.values()[ordinal];
    684     } else {
    685       selection = Select.values()[ordinal];
    686     }
    687     element = selection.createElement();
    688     return element;
    689   }
    690 
    691   @Override protected ChoiceComponent createAndSetValue(Asn1Tag tag) {
    692     Select select = tagToSelection.get(tag);
    693     if (select == null) {
    694       throw new IllegalArgumentException("Unknown selection tag: " + tag);
    695     }
    696     element = select.createElement();
    697     selection = select;
    698     extension = false;
    699     return select;
    700   }
    701 
    702   @Override protected boolean isExtensible() {
    703     return false;
    704   }
    705 
    706   @Override protected Asn1Object getValue() {
    707     return element;
    708   }
    709 
    710 
    711   private static enum Select implements ChoiceComponent {
    712 
    713     $Fdd(Asn1Tag.fromClassAndNumber(2, 0),
    714         true) {
    715       @Override
    716       public Asn1Object createElement() {
    717         return new modeSpecificInfoType.fddType();
    718       }
    719 
    720       @Override
    721       Collection<Asn1Tag> getPossibleFirstTags() {
    722         return tag == null ? modeSpecificInfoType.fddType.getPossibleFirstTags() : ImmutableList.of(tag);
    723       }
    724 
    725       @Override
    726       String elementIndentedString(Asn1Object element, String indent) {
    727         return toString() + " : " + element.toIndentedString(indent);
    728       }
    729     },
    730 
    731     $Tdd(Asn1Tag.fromClassAndNumber(2, 1),
    732         true) {
    733       @Override
    734       public Asn1Object createElement() {
    735         return new modeSpecificInfoType.tddType();
    736       }
    737 
    738       @Override
    739       Collection<Asn1Tag> getPossibleFirstTags() {
    740         return tag == null ? modeSpecificInfoType.tddType.getPossibleFirstTags() : ImmutableList.of(tag);
    741       }
    742 
    743       @Override
    744       String elementIndentedString(Asn1Object element, String indent) {
    745         return toString() + " : " + element.toIndentedString(indent);
    746       }
    747     },
    748 
    749     ;
    750 
    751     @Nullable final Asn1Tag tag;
    752     final boolean isImplicitTagging;
    753 
    754     Select(@Nullable Asn1Tag tag, boolean isImplicitTagging) {
    755       this.tag = tag;
    756       this.isImplicitTagging = isImplicitTagging;
    757     }
    758 
    759     @Override
    760     public Asn1Object createElement() {
    761       throw new IllegalStateException("Select template error");
    762     }
    763 
    764     @Override
    765     @Nullable
    766     public Asn1Tag getTag() {
    767       return tag;
    768     }
    769 
    770     @Override
    771     public boolean isImplicitTagging() {
    772       return isImplicitTagging;
    773     }
    774 
    775     abstract Collection<Asn1Tag> getPossibleFirstTags();
    776 
    777     abstract String elementIndentedString(Asn1Object element, String indent);
    778   }
    779 
    780 /*
    781  */
    782 
    783 
    784 //
    785 
    786 /**
    787 */
    788 public static class fddType extends Asn1Sequence {
    789   //
    790 
    791   private static final Asn1Tag TAG_fddType
    792       = Asn1Tag.fromClassAndNumber(-1, -1);
    793 
    794   public fddType() {
    795     super();
    796   }
    797 
    798   @Override
    799   @Nullable
    800   protected Asn1Tag getTag() {
    801     return TAG_fddType;
    802   }
    803 
    804   @Override
    805   protected boolean isTagImplicit() {
    806     return true;
    807   }
    808 
    809   public static Collection<Asn1Tag> getPossibleFirstTags() {
    810     if (TAG_fddType != null) {
    811       return ImmutableList.of(TAG_fddType);
    812     } else {
    813       return Asn1Sequence.getPossibleFirstTags();
    814     }
    815   }
    816 
    817   /**
    818    * Creates a new fddType from encoded stream.
    819    */
    820   public static fddType fromPerUnaligned(byte[] encodedBytes) {
    821     fddType result = new fddType();
    822     result.decodePerUnaligned(new BitStreamReader(encodedBytes));
    823     return result;
    824   }
    825 
    826   /**
    827    * Creates a new fddType from encoded stream.
    828    */
    829   public static fddType fromPerAligned(byte[] encodedBytes) {
    830     fddType result = new fddType();
    831     result.decodePerAligned(new BitStreamReader(encodedBytes));
    832     return result;
    833   }
    834 
    835 
    836 
    837   @Override protected boolean isExtensible() {
    838     return false;
    839   }
    840 
    841   @Override public boolean containsExtensionValues() {
    842     for (SequenceComponent extensionComponent : getExtensionComponents()) {
    843       if (extensionComponent.isExplicitlySet()) return true;
    844     }
    845     return false;
    846   }
    847 
    848 
    849   private PrimaryCPICH_Info referenceIdentity_;
    850   public PrimaryCPICH_Info getReferenceIdentity() {
    851     return referenceIdentity_;
    852   }
    853   /**
    854    * @throws ClassCastException if value is not a PrimaryCPICH_Info
    855    */
    856   public void setReferenceIdentity(Asn1Object value) {
    857     this.referenceIdentity_ = (PrimaryCPICH_Info) value;
    858   }
    859   public PrimaryCPICH_Info setReferenceIdentityToNewInstance() {
    860     referenceIdentity_ = new PrimaryCPICH_Info();
    861     return referenceIdentity_;
    862   }
    863 
    864 
    865 
    866 
    867 
    868 
    869   @Override public Iterable<? extends SequenceComponent> getComponents() {
    870     ImmutableList.Builder<SequenceComponent> builder = ImmutableList.builder();
    871 
    872     builder.add(new SequenceComponent() {
    873           Asn1Tag tag = Asn1Tag.fromClassAndNumber(2, 0);
    874 
    875           @Override public boolean isExplicitlySet() {
    876             return getReferenceIdentity() != null;
    877           }
    878 
    879           @Override public boolean hasDefaultValue() {
    880             return false;
    881           }
    882 
    883           @Override public boolean isOptional() {
    884             return false;
    885           }
    886 
    887           @Override public Asn1Object getComponentValue() {
    888             return getReferenceIdentity();
    889           }
    890 
    891           @Override public void setToNewInstance() {
    892             setReferenceIdentityToNewInstance();
    893           }
    894 
    895           @Override public Collection<Asn1Tag> getPossibleFirstTags() {
    896             return tag == null ? PrimaryCPICH_Info.getPossibleFirstTags() : ImmutableList.of(tag);
    897           }
    898 
    899           @Override
    900           public Asn1Tag getTag() {
    901             return tag;
    902           }
    903 
    904           @Override
    905           public boolean isImplicitTagging() {
    906             return true;
    907           }
    908 
    909           @Override public String toIndentedString(String indent) {
    910                 return "referenceIdentity : "
    911                     + getReferenceIdentity().toIndentedString(indent);
    912               }
    913         });
    914 
    915     return builder.build();
    916   }
    917 
    918   @Override public Iterable<? extends SequenceComponent>
    919                                                     getExtensionComponents() {
    920     ImmutableList.Builder<SequenceComponent> builder = ImmutableList.builder();
    921 
    922       return builder.build();
    923     }
    924 
    925 
    926 
    927 
    928 
    929 
    930 
    931   @Override public Iterable<BitStream> encodePerUnaligned() {
    932     return super.encodePerUnaligned();
    933   }
    934 
    935   @Override public Iterable<BitStream> encodePerAligned() {
    936     return super.encodePerAligned();
    937   }
    938 
    939   @Override public void decodePerUnaligned(BitStreamReader reader) {
    940     super.decodePerUnaligned(reader);
    941   }
    942 
    943   @Override public void decodePerAligned(BitStreamReader reader) {
    944     super.decodePerAligned(reader);
    945   }
    946 
    947   @Override public String toString() {
    948     return toIndentedString("");
    949   }
    950 
    951   public String toIndentedString(String indent) {
    952     StringBuilder builder = new StringBuilder();
    953     builder.append("fddType = {\n");
    954     final String internalIndent = indent + "  ";
    955     for (SequenceComponent component : getComponents()) {
    956       if (component.isExplicitlySet()) {
    957         builder.append(internalIndent)
    958             .append(component.toIndentedString(internalIndent));
    959       }
    960     }
    961     if (isExtensible()) {
    962       builder.append(internalIndent).append("...\n");
    963       for (SequenceComponent component : getExtensionComponents()) {
    964         if (component.isExplicitlySet()) {
    965           builder.append(internalIndent)
    966               .append(component.toIndentedString(internalIndent));
    967         }
    968       }
    969     }
    970     builder.append(indent).append("};\n");
    971     return builder.toString();
    972   }
    973 }
    974 
    975 
    976   public boolean isFdd() {
    977     return !hasExtensionValue() && Select.$Fdd == selection;
    978   }
    979 
    980   /**
    981    * @throws {@code IllegalStateException} if {@code !isFdd}.
    982    */
    983   @SuppressWarnings("unchecked")
    984   public modeSpecificInfoType.fddType getFdd() {
    985     if (!isFdd()) {
    986       throw new IllegalStateException("modeSpecificInfoType value not a Fdd");
    987     }
    988     return (modeSpecificInfoType.fddType) element;
    989   }
    990 
    991   public void setFdd(modeSpecificInfoType.fddType selected) {
    992     selection = Select.$Fdd;
    993     extension = false;
    994     element = selected;
    995   }
    996 
    997   public modeSpecificInfoType.fddType setFddToNewInstance() {
    998       modeSpecificInfoType.fddType element = new modeSpecificInfoType.fddType();
    999       setFdd(element);
   1000       return element;
   1001   }
   1002 
   1003 /*
   1004  */
   1005 
   1006 
   1007 //
   1008 
   1009 /**
   1010 */
   1011 public static class tddType extends Asn1Sequence {
   1012   //
   1013 
   1014   private static final Asn1Tag TAG_tddType
   1015       = Asn1Tag.fromClassAndNumber(-1, -1);
   1016 
   1017   public tddType() {
   1018     super();
   1019   }
   1020 
   1021   @Override
   1022   @Nullable
   1023   protected Asn1Tag getTag() {
   1024     return TAG_tddType;
   1025   }
   1026 
   1027   @Override
   1028   protected boolean isTagImplicit() {
   1029     return true;
   1030   }
   1031 
   1032   public static Collection<Asn1Tag> getPossibleFirstTags() {
   1033     if (TAG_tddType != null) {
   1034       return ImmutableList.of(TAG_tddType);
   1035     } else {
   1036       return Asn1Sequence.getPossibleFirstTags();
   1037     }
   1038   }
   1039 
   1040   /**
   1041    * Creates a new tddType from encoded stream.
   1042    */
   1043   public static tddType fromPerUnaligned(byte[] encodedBytes) {
   1044     tddType result = new tddType();
   1045     result.decodePerUnaligned(new BitStreamReader(encodedBytes));
   1046     return result;
   1047   }
   1048 
   1049   /**
   1050    * Creates a new tddType from encoded stream.
   1051    */
   1052   public static tddType fromPerAligned(byte[] encodedBytes) {
   1053     tddType result = new tddType();
   1054     result.decodePerAligned(new BitStreamReader(encodedBytes));
   1055     return result;
   1056   }
   1057 
   1058 
   1059 
   1060   @Override protected boolean isExtensible() {
   1061     return false;
   1062   }
   1063 
   1064   @Override public boolean containsExtensionValues() {
   1065     for (SequenceComponent extensionComponent : getExtensionComponents()) {
   1066       if (extensionComponent.isExplicitlySet()) return true;
   1067     }
   1068     return false;
   1069   }
   1070 
   1071 
   1072   private CellParametersID referenceIdentity_;
   1073   public CellParametersID getReferenceIdentity() {
   1074     return referenceIdentity_;
   1075   }
   1076   /**
   1077    * @throws ClassCastException if value is not a CellParametersID
   1078    */
   1079   public void setReferenceIdentity(Asn1Object value) {
   1080     this.referenceIdentity_ = (CellParametersID) value;
   1081   }
   1082   public CellParametersID setReferenceIdentityToNewInstance() {
   1083     referenceIdentity_ = new CellParametersID();
   1084     return referenceIdentity_;
   1085   }
   1086 
   1087 
   1088 
   1089 
   1090 
   1091 
   1092   @Override public Iterable<? extends SequenceComponent> getComponents() {
   1093     ImmutableList.Builder<SequenceComponent> builder = ImmutableList.builder();
   1094 
   1095     builder.add(new SequenceComponent() {
   1096           Asn1Tag tag = Asn1Tag.fromClassAndNumber(2, 0);
   1097 
   1098           @Override public boolean isExplicitlySet() {
   1099             return getReferenceIdentity() != null;
   1100           }
   1101 
   1102           @Override public boolean hasDefaultValue() {
   1103             return false;
   1104           }
   1105 
   1106           @Override public boolean isOptional() {
   1107             return false;
   1108           }
   1109 
   1110           @Override public Asn1Object getComponentValue() {
   1111             return getReferenceIdentity();
   1112           }
   1113 
   1114           @Override public void setToNewInstance() {
   1115             setReferenceIdentityToNewInstance();
   1116           }
   1117 
   1118           @Override public Collection<Asn1Tag> getPossibleFirstTags() {
   1119             return tag == null ? CellParametersID.getPossibleFirstTags() : ImmutableList.of(tag);
   1120           }
   1121 
   1122           @Override
   1123           public Asn1Tag getTag() {
   1124             return tag;
   1125           }
   1126 
   1127           @Override
   1128           public boolean isImplicitTagging() {
   1129             return true;
   1130           }
   1131 
   1132           @Override public String toIndentedString(String indent) {
   1133                 return "referenceIdentity : "
   1134                     + getReferenceIdentity().toIndentedString(indent);
   1135               }
   1136         });
   1137 
   1138     return builder.build();
   1139   }
   1140 
   1141   @Override public Iterable<? extends SequenceComponent>
   1142                                                     getExtensionComponents() {
   1143     ImmutableList.Builder<SequenceComponent> builder = ImmutableList.builder();
   1144 
   1145       return builder.build();
   1146     }
   1147 
   1148 
   1149 
   1150 
   1151 
   1152 
   1153 
   1154   @Override public Iterable<BitStream> encodePerUnaligned() {
   1155     return super.encodePerUnaligned();
   1156   }
   1157 
   1158   @Override public Iterable<BitStream> encodePerAligned() {
   1159     return super.encodePerAligned();
   1160   }
   1161 
   1162   @Override public void decodePerUnaligned(BitStreamReader reader) {
   1163     super.decodePerUnaligned(reader);
   1164   }
   1165 
   1166   @Override public void decodePerAligned(BitStreamReader reader) {
   1167     super.decodePerAligned(reader);
   1168   }
   1169 
   1170   @Override public String toString() {
   1171     return toIndentedString("");
   1172   }
   1173 
   1174   public String toIndentedString(String indent) {
   1175     StringBuilder builder = new StringBuilder();
   1176     builder.append("tddType = {\n");
   1177     final String internalIndent = indent + "  ";
   1178     for (SequenceComponent component : getComponents()) {
   1179       if (component.isExplicitlySet()) {
   1180         builder.append(internalIndent)
   1181             .append(component.toIndentedString(internalIndent));
   1182       }
   1183     }
   1184     if (isExtensible()) {
   1185       builder.append(internalIndent).append("...\n");
   1186       for (SequenceComponent component : getExtensionComponents()) {
   1187         if (component.isExplicitlySet()) {
   1188           builder.append(internalIndent)
   1189               .append(component.toIndentedString(internalIndent));
   1190         }
   1191       }
   1192     }
   1193     builder.append(indent).append("};\n");
   1194     return builder.toString();
   1195   }
   1196 }
   1197 
   1198 
   1199   public boolean isTdd() {
   1200     return !hasExtensionValue() && Select.$Tdd == selection;
   1201   }
   1202 
   1203   /**
   1204    * @throws {@code IllegalStateException} if {@code !isTdd}.
   1205    */
   1206   @SuppressWarnings("unchecked")
   1207   public modeSpecificInfoType.tddType getTdd() {
   1208     if (!isTdd()) {
   1209       throw new IllegalStateException("modeSpecificInfoType value not a Tdd");
   1210     }
   1211     return (modeSpecificInfoType.tddType) element;
   1212   }
   1213 
   1214   public void setTdd(modeSpecificInfoType.tddType selected) {
   1215     selection = Select.$Tdd;
   1216     extension = false;
   1217     element = selected;
   1218   }
   1219 
   1220   public modeSpecificInfoType.tddType setTddToNewInstance() {
   1221       modeSpecificInfoType.tddType element = new modeSpecificInfoType.tddType();
   1222       setTdd(element);
   1223       return element;
   1224   }
   1225 
   1226 
   1227   private static enum Extend implements ChoiceComponent {
   1228 
   1229     ;
   1230     @Nullable private final Asn1Tag tag;
   1231     private final boolean isImplicitTagging;
   1232 
   1233     Extend(@Nullable Asn1Tag tag, boolean isImplicitTagging) {
   1234       this.tag = tag;
   1235       this.isImplicitTagging = isImplicitTagging;
   1236     }
   1237 
   1238     public Asn1Object createElement() {
   1239       throw new IllegalStateException("Extend template error");
   1240     }
   1241 
   1242     @Override
   1243     @Nullable
   1244     public Asn1Tag getTag() {
   1245       return tag;
   1246     }
   1247 
   1248     @Override
   1249     public boolean isImplicitTagging() {
   1250       return isImplicitTagging;
   1251     }
   1252 
   1253     String elementIndentedString(Asn1Object element, String indent) {
   1254       throw new IllegalStateException("Extend template error");
   1255     }
   1256   }
   1257 
   1258 
   1259   @Override public Iterable<BitStream> encodePerUnaligned() {
   1260     return super.encodePerUnaligned();
   1261   }
   1262 
   1263   @Override public Iterable<BitStream> encodePerAligned() {
   1264     return super.encodePerAligned();
   1265   }
   1266 
   1267   @Override public void decodePerUnaligned(BitStreamReader reader) {
   1268     super.decodePerUnaligned(reader);
   1269   }
   1270 
   1271   @Override public void decodePerAligned(BitStreamReader reader) {
   1272     super.decodePerAligned(reader);
   1273   }
   1274 
   1275   @Override public String toString() {
   1276     return toIndentedString("");
   1277   }
   1278 
   1279   private String elementIndentedString(String indent) {
   1280     if (element == null) {
   1281       return "null;\n";
   1282     }
   1283     if (extension) {
   1284       return Extend.values()[selection.ordinal()]
   1285           .elementIndentedString(element, indent + "  ");
   1286     } else {
   1287       return Select.values()[selection.ordinal()]
   1288           .elementIndentedString(element, indent + "  ");
   1289     }
   1290   }
   1291 
   1292   public String toIndentedString(String indent) {
   1293     return "modeSpecificInfoType = " + elementIndentedString(indent) + indent + ";\n";
   1294   }
   1295 }
   1296 
   1297 
   1298 /*
   1299  */
   1300 
   1301 
   1302 //
   1303 
   1304 /**
   1305  */
   1306 public static class sfnType extends Asn1Integer {
   1307   //
   1308 
   1309   private static final Asn1Tag TAG_sfnType
   1310       = Asn1Tag.fromClassAndNumber(-1, -1);
   1311 
   1312   public sfnType() {
   1313     super();
   1314     setValueRange("0", "4095");
   1315 
   1316   }
   1317 
   1318   @Override
   1319   @Nullable
   1320   protected Asn1Tag getTag() {
   1321     return TAG_sfnType;
   1322   }
   1323 
   1324   @Override
   1325   protected boolean isTagImplicit() {
   1326     return true;
   1327   }
   1328 
   1329   public static Collection<Asn1Tag> getPossibleFirstTags() {
   1330     if (TAG_sfnType != null) {
   1331       return ImmutableList.of(TAG_sfnType);
   1332     } else {
   1333       return Asn1Integer.getPossibleFirstTags();
   1334     }
   1335   }
   1336 
   1337   /**
   1338    * Creates a new sfnType from encoded stream.
   1339    */
   1340   public static sfnType fromPerUnaligned(byte[] encodedBytes) {
   1341     sfnType result = new sfnType();
   1342     result.decodePerUnaligned(new BitStreamReader(encodedBytes));
   1343     return result;
   1344   }
   1345 
   1346   /**
   1347    * Creates a new sfnType from encoded stream.
   1348    */
   1349   public static sfnType fromPerAligned(byte[] encodedBytes) {
   1350     sfnType result = new sfnType();
   1351     result.decodePerAligned(new BitStreamReader(encodedBytes));
   1352     return result;
   1353   }
   1354 
   1355   @Override public Iterable<BitStream> encodePerUnaligned() {
   1356     return super.encodePerUnaligned();
   1357   }
   1358 
   1359   @Override public Iterable<BitStream> encodePerAligned() {
   1360     return super.encodePerAligned();
   1361   }
   1362 
   1363   @Override public void decodePerUnaligned(BitStreamReader reader) {
   1364     super.decodePerUnaligned(reader);
   1365   }
   1366 
   1367   @Override public void decodePerAligned(BitStreamReader reader) {
   1368     super.decodePerAligned(reader);
   1369   }
   1370 
   1371   @Override public String toString() {
   1372     return toIndentedString("");
   1373   }
   1374 
   1375   public String toIndentedString(String indent) {
   1376     return "sfnType = " + getInteger() + ";\n";
   1377   }
   1378 }
   1379 
   1380 
   1381 /*
   1382  */
   1383 
   1384 
   1385 //
   1386 
   1387 /**
   1388  */
   1389 public static class ganss_TODUncertaintyType extends Asn1Integer {
   1390   //
   1391 
   1392   private static final Asn1Tag TAG_ganss_TODUncertaintyType
   1393       = Asn1Tag.fromClassAndNumber(-1, -1);
   1394 
   1395   public ganss_TODUncertaintyType() {
   1396     super();
   1397     setValueRange("0", "127");
   1398 
   1399   }
   1400 
   1401   @Override
   1402   @Nullable
   1403   protected Asn1Tag getTag() {
   1404     return TAG_ganss_TODUncertaintyType;
   1405   }
   1406 
   1407   @Override
   1408   protected boolean isTagImplicit() {
   1409     return true;
   1410   }
   1411 
   1412   public static Collection<Asn1Tag> getPossibleFirstTags() {
   1413     if (TAG_ganss_TODUncertaintyType != null) {
   1414       return ImmutableList.of(TAG_ganss_TODUncertaintyType);
   1415     } else {
   1416       return Asn1Integer.getPossibleFirstTags();
   1417     }
   1418   }
   1419 
   1420   /**
   1421    * Creates a new ganss_TODUncertaintyType from encoded stream.
   1422    */
   1423   public static ganss_TODUncertaintyType fromPerUnaligned(byte[] encodedBytes) {
   1424     ganss_TODUncertaintyType result = new ganss_TODUncertaintyType();
   1425     result.decodePerUnaligned(new BitStreamReader(encodedBytes));
   1426     return result;
   1427   }
   1428 
   1429   /**
   1430    * Creates a new ganss_TODUncertaintyType from encoded stream.
   1431    */
   1432   public static ganss_TODUncertaintyType fromPerAligned(byte[] encodedBytes) {
   1433     ganss_TODUncertaintyType result = new ganss_TODUncertaintyType();
   1434     result.decodePerAligned(new BitStreamReader(encodedBytes));
   1435     return result;
   1436   }
   1437 
   1438   @Override public Iterable<BitStream> encodePerUnaligned() {
   1439     return super.encodePerUnaligned();
   1440   }
   1441 
   1442   @Override public Iterable<BitStream> encodePerAligned() {
   1443     return super.encodePerAligned();
   1444   }
   1445 
   1446   @Override public void decodePerUnaligned(BitStreamReader reader) {
   1447     super.decodePerUnaligned(reader);
   1448   }
   1449 
   1450   @Override public void decodePerAligned(BitStreamReader reader) {
   1451     super.decodePerAligned(reader);
   1452   }
   1453 
   1454   @Override public String toString() {
   1455     return toIndentedString("");
   1456   }
   1457 
   1458   public String toIndentedString(String indent) {
   1459     return "ganss_TODUncertaintyType = " + getInteger() + ";\n";
   1460   }
   1461 }
   1462 
   1463 
   1464 
   1465 
   1466 
   1467   @Override public Iterable<BitStream> encodePerUnaligned() {
   1468     return super.encodePerUnaligned();
   1469   }
   1470 
   1471   @Override public Iterable<BitStream> encodePerAligned() {
   1472     return super.encodePerAligned();
   1473   }
   1474 
   1475   @Override public void decodePerUnaligned(BitStreamReader reader) {
   1476     super.decodePerUnaligned(reader);
   1477   }
   1478 
   1479   @Override public void decodePerAligned(BitStreamReader reader) {
   1480     super.decodePerAligned(reader);
   1481   }
   1482 
   1483   @Override public String toString() {
   1484     return toIndentedString("");
   1485   }
   1486 
   1487   public String toIndentedString(String indent) {
   1488     StringBuilder builder = new StringBuilder();
   1489     builder.append("UTRAN_GANSSReferenceTime = {\n");
   1490     final String internalIndent = indent + "  ";
   1491     for (SequenceComponent component : getComponents()) {
   1492       if (component.isExplicitlySet()) {
   1493         builder.append(internalIndent)
   1494             .append(component.toIndentedString(internalIndent));
   1495       }
   1496     }
   1497     if (isExtensible()) {
   1498       builder.append(internalIndent).append("...\n");
   1499       for (SequenceComponent component : getExtensionComponents()) {
   1500         if (component.isExplicitlySet()) {
   1501           builder.append(internalIndent)
   1502               .append(component.toIndentedString(internalIndent));
   1503         }
   1504       }
   1505     }
   1506     builder.append(indent).append("};\n");
   1507     return builder.toString();
   1508   }
   1509 }
   1510