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.ulp_version_2_parameter_extensions;
18 
19 /*
20  */
21 
22 
23 //
24 //
25 import android.location.cts.asn1.base.Asn1Null;
26 import android.location.cts.asn1.base.Asn1Object;
27 import android.location.cts.asn1.base.Asn1Sequence;
28 import android.location.cts.asn1.base.Asn1Tag;
29 import android.location.cts.asn1.base.BitStream;
30 import android.location.cts.asn1.base.BitStreamReader;
31 import android.location.cts.asn1.base.SequenceComponent;
32 import com.google.common.collect.ImmutableList;
33 import java.util.Collection;
34 import javax.annotation.Nullable;
35 
36 
37 /**
38 */
39 public  class Ver2_SETCapabilities_extension extends Asn1Sequence {
40   //
41 
42   private static final Asn1Tag TAG_Ver2_SETCapabilities_extension
43       = Asn1Tag.fromClassAndNumber(-1, -1);
44 
Ver2_SETCapabilities_extension()45   public Ver2_SETCapabilities_extension() {
46     super();
47   }
48 
49   @Override
50   @Nullable
getTag()51   protected Asn1Tag getTag() {
52     return TAG_Ver2_SETCapabilities_extension;
53   }
54 
55   @Override
isTagImplicit()56   protected boolean isTagImplicit() {
57     return true;
58   }
59 
getPossibleFirstTags()60   public static Collection<Asn1Tag> getPossibleFirstTags() {
61     if (TAG_Ver2_SETCapabilities_extension != null) {
62       return ImmutableList.of(TAG_Ver2_SETCapabilities_extension);
63     } else {
64       return Asn1Sequence.getPossibleFirstTags();
65     }
66   }
67 
68   /**
69    * Creates a new Ver2_SETCapabilities_extension from encoded stream.
70    */
fromPerUnaligned(byte[] encodedBytes)71   public static Ver2_SETCapabilities_extension fromPerUnaligned(byte[] encodedBytes) {
72     Ver2_SETCapabilities_extension result = new Ver2_SETCapabilities_extension();
73     result.decodePerUnaligned(new BitStreamReader(encodedBytes));
74     return result;
75   }
76 
77   /**
78    * Creates a new Ver2_SETCapabilities_extension from encoded stream.
79    */
fromPerAligned(byte[] encodedBytes)80   public static Ver2_SETCapabilities_extension fromPerAligned(byte[] encodedBytes) {
81     Ver2_SETCapabilities_extension result = new Ver2_SETCapabilities_extension();
82     result.decodePerAligned(new BitStreamReader(encodedBytes));
83     return result;
84   }
85 
86 
87 
isExtensible()88   @Override protected boolean isExtensible() {
89     return true;
90   }
91 
containsExtensionValues()92   @Override public boolean containsExtensionValues() {
93     for (SequenceComponent extensionComponent : getExtensionComponents()) {
94       if (extensionComponent.isExplicitlySet()) return true;
95     }
96     return false;
97   }
98 
99 
100   private ServiceCapabilities serviceCapabilities_;
getServiceCapabilities()101   public ServiceCapabilities getServiceCapabilities() {
102     return serviceCapabilities_;
103   }
104   /**
105    * @throws ClassCastException if value is not a ServiceCapabilities
106    */
setServiceCapabilities(Asn1Object value)107   public void setServiceCapabilities(Asn1Object value) {
108     this.serviceCapabilities_ = (ServiceCapabilities) value;
109   }
setServiceCapabilitiesToNewInstance()110   public ServiceCapabilities setServiceCapabilitiesToNewInstance() {
111     serviceCapabilities_ = new ServiceCapabilities();
112     return serviceCapabilities_;
113   }
114 
115 
116 
117   private SupportedBearers  extensionSupportedBearers;
getExtensionSupportedBearers()118   public SupportedBearers getExtensionSupportedBearers() {
119     return extensionSupportedBearers;
120   }
121   /**
122    * @throws ClassCastException if value is not a SupportedBearers
123    */
setExtensionSupportedBearers(Asn1Object value)124   public void setExtensionSupportedBearers(Asn1Object value) {
125     extensionSupportedBearers = (SupportedBearers) value;
126   }
setExtensionSupportedBearersToNewInstance()127   public void setExtensionSupportedBearersToNewInstance() {
128     extensionSupportedBearers = new SupportedBearers();
129   }
130 
131 
132 
133 
getComponents()134   @Override public Iterable<? extends SequenceComponent> getComponents() {
135     ImmutableList.Builder<SequenceComponent> builder = ImmutableList.builder();
136 
137     builder.add(new SequenceComponent() {
138           Asn1Tag tag = Asn1Tag.fromClassAndNumber(2, 0);
139 
140           @Override public boolean isExplicitlySet() {
141             return getServiceCapabilities() != null;
142           }
143 
144           @Override public boolean hasDefaultValue() {
145             return false;
146           }
147 
148           @Override public boolean isOptional() {
149             return true;
150           }
151 
152           @Override public Asn1Object getComponentValue() {
153             return getServiceCapabilities();
154           }
155 
156           @Override public void setToNewInstance() {
157             setServiceCapabilitiesToNewInstance();
158           }
159 
160           @Override public Collection<Asn1Tag> getPossibleFirstTags() {
161             return tag == null ? ServiceCapabilities.getPossibleFirstTags() : ImmutableList.of(tag);
162           }
163 
164           @Override
165           public Asn1Tag getTag() {
166             return tag;
167           }
168 
169           @Override
170           public boolean isImplicitTagging() {
171             return true;
172           }
173 
174           @Override public String toIndentedString(String indent) {
175                 return "serviceCapabilities : "
176                     + getServiceCapabilities().toIndentedString(indent);
177               }
178         });
179 
180     return builder.build();
181   }
182 
183   @Override public Iterable<? extends SequenceComponent>
getExtensionComponents()184                                                     getExtensionComponents() {
185     ImmutableList.Builder<SequenceComponent> builder = ImmutableList.builder();
186 
187       builder.add(new SequenceComponent() {
188             @Override public boolean isExplicitlySet() {
189               return getExtensionSupportedBearers() != null;
190             }
191 
192             @Override public boolean hasDefaultValue() {
193               return false;
194             }
195 
196             @Override public boolean isOptional() {
197               return true;
198             }
199 
200             @Override public Asn1Object getComponentValue() {
201               return getExtensionSupportedBearers();
202             }
203 
204             @Override public void setToNewInstance() {
205               setExtensionSupportedBearersToNewInstance();
206             }
207 
208             @Override public Collection<Asn1Tag> getPossibleFirstTags() {
209               throw new UnsupportedOperationException(
210                   "BER decoding not supported for extension elements");
211             }
212 
213             @Override
214             public Asn1Tag getTag() {
215               throw new UnsupportedOperationException(
216                   "BER is not supported for extension elements");
217             }
218 
219             @Override
220             public boolean isImplicitTagging() {
221               throw new UnsupportedOperationException(
222                   "BER is not supported for extension elements");
223             }
224 
225             @Override public String toIndentedString(String indent) {
226               return "supportedBearers : "
227                   + getExtensionSupportedBearers().toIndentedString(indent);
228             }
229       });
230 
231       return builder.build();
232     }
233 
234 
235 
236 
237 
238 
239 
240 
241 
encodePerUnaligned()242   @Override public Iterable<BitStream> encodePerUnaligned() {
243     return super.encodePerUnaligned();
244   }
245 
encodePerAligned()246   @Override public Iterable<BitStream> encodePerAligned() {
247     return super.encodePerAligned();
248   }
249 
decodePerUnaligned(BitStreamReader reader)250   @Override public void decodePerUnaligned(BitStreamReader reader) {
251     super.decodePerUnaligned(reader);
252   }
253 
decodePerAligned(BitStreamReader reader)254   @Override public void decodePerAligned(BitStreamReader reader) {
255     super.decodePerAligned(reader);
256   }
257 
toString()258   @Override public String toString() {
259     return toIndentedString("");
260   }
261 
toIndentedString(String indent)262   public String toIndentedString(String indent) {
263     StringBuilder builder = new StringBuilder();
264     builder.append("Ver2_SETCapabilities_extension = {\n");
265     final String internalIndent = indent + "  ";
266     for (SequenceComponent component : getComponents()) {
267       if (component.isExplicitlySet()) {
268         builder.append(internalIndent)
269             .append(component.toIndentedString(internalIndent));
270       }
271     }
272     if (isExtensible()) {
273       builder.append(internalIndent).append("...\n");
274       for (SequenceComponent component : getExtensionComponents()) {
275         if (component.isExplicitlySet()) {
276           builder.append(internalIndent)
277               .append(component.toIndentedString(internalIndent));
278         }
279       }
280     }
281     builder.append(indent).append("};\n");
282     return builder.toString();
283   }
284 }
285