• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2019 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.media.tv.tuner.frontend;
18 
19 import android.annotation.IntDef;
20 import android.annotation.IntRange;
21 import android.annotation.NonNull;
22 import android.annotation.SystemApi;
23 import android.hardware.tv.tuner.V1_0.Constants;
24 import android.media.tv.tuner.Tuner;
25 
26 import java.lang.annotation.Retention;
27 import java.lang.annotation.RetentionPolicy;
28 
29 /**
30  * Frontend settings for ISDBS.
31  *
32  * @hide
33  */
34 @SystemApi
35 public class IsdbsFrontendSettings extends FrontendSettings {
36     /** @hide */
37     @Retention(RetentionPolicy.SOURCE)
38     @IntDef(prefix = "STREAM_ID_TYPE_",
39             value = {STREAM_ID_TYPE_ID, STREAM_ID_TYPE_RELATIVE_NUMBER})
40     public @interface StreamIdType {}
41 
42     /**
43      * Uses stream ID.
44      */
45     public static final int STREAM_ID_TYPE_ID = Constants.FrontendIsdbsStreamIdType.STREAM_ID;
46     /**
47      * Uses relative number.
48      */
49     public static final int STREAM_ID_TYPE_RELATIVE_NUMBER =
50             Constants.FrontendIsdbsStreamIdType.RELATIVE_STREAM_NUMBER;
51 
52 
53     /** @hide */
54     @IntDef(flag = true,
55             prefix = "MODULATION_",
56             value = {MODULATION_UNDEFINED, MODULATION_AUTO, MODULATION_MOD_BPSK,
57                     MODULATION_MOD_QPSK, MODULATION_MOD_TC8PSK})
58     @Retention(RetentionPolicy.SOURCE)
59     public @interface Modulation {}
60 
61     /**
62      * Modulation undefined.
63      */
64     public static final int MODULATION_UNDEFINED = Constants.FrontendIsdbsModulation.UNDEFINED;
65     /**
66      * Hardware is able to detect and set modulation automatically
67      */
68     public static final int MODULATION_AUTO = Constants.FrontendIsdbsModulation.AUTO;
69     /**
70      * BPSK Modulation.
71      */
72     public static final int MODULATION_MOD_BPSK = Constants.FrontendIsdbsModulation.MOD_BPSK;
73     /**
74      * QPSK Modulation.
75      */
76     public static final int MODULATION_MOD_QPSK = Constants.FrontendIsdbsModulation.MOD_QPSK;
77     /**
78      * TC8PSK Modulation.
79      */
80     public static final int MODULATION_MOD_TC8PSK = Constants.FrontendIsdbsModulation.MOD_TC8PSK;
81 
82 
83     /** @hide */
84     @IntDef(flag = true,
85             prefix = "CODERATE_",
86             value = {CODERATE_UNDEFINED, CODERATE_AUTO, CODERATE_1_2, CODERATE_2_3, CODERATE_3_4,
87                     CODERATE_5_6, CODERATE_7_8})
88     @Retention(RetentionPolicy.SOURCE)
89     public @interface CodeRate {}
90 
91     /**
92      * Code rate undefined.
93      */
94     public static final int CODERATE_UNDEFINED = Constants.FrontendIsdbsCoderate.UNDEFINED;
95     /**
96      * Hardware is able to detect and set code rate automatically.
97      */
98     public static final int CODERATE_AUTO = Constants.FrontendIsdbsCoderate.AUTO;
99     /**
100      * 1/2 code rate.
101      */
102     public static final int CODERATE_1_2 = Constants.FrontendIsdbsCoderate.CODERATE_1_2;
103     /**
104      * 2/3 code rate.
105      */
106     public static final int CODERATE_2_3 = Constants.FrontendIsdbsCoderate.CODERATE_2_3;
107     /**
108      * 3/4 code rate.
109      */
110     public static final int CODERATE_3_4 = Constants.FrontendIsdbsCoderate.CODERATE_3_4;
111     /**
112      * 5/6 code rate.
113      */
114     public static final int CODERATE_5_6 = Constants.FrontendIsdbsCoderate.CODERATE_5_6;
115     /**
116      * 7/8 code rate.
117      */
118     public static final int CODERATE_7_8 = Constants.FrontendIsdbsCoderate.CODERATE_7_8;
119 
120     /** @hide */
121     @Retention(RetentionPolicy.SOURCE)
122     @IntDef(prefix = "ROLLOFF_",
123             value = {ROLLOFF_UNDEFINED, ROLLOFF_0_35})
124     public @interface Rolloff {}
125 
126     /**
127      * Rolloff type undefined.
128      */
129     public static final int ROLLOFF_UNDEFINED = Constants.FrontendIsdbsRolloff.UNDEFINED;
130     /**
131      * 0,35 rolloff.
132      */
133     public static final int ROLLOFF_0_35 = Constants.FrontendIsdbsRolloff.ROLLOFF_0_35;
134 
135 
136     private final int mStreamId;
137     private final int mStreamIdType;
138     private final int mModulation;
139     private final int mCodeRate;
140     private final int mSymbolRate;
141     private final int mRolloff;
142 
IsdbsFrontendSettings(int frequency, int streamId, int streamIdType, int modulation, int codeRate, int symbolRate, int rolloff)143     private IsdbsFrontendSettings(int frequency, int streamId, int streamIdType, int modulation,
144             int codeRate, int symbolRate, int rolloff) {
145         super(frequency);
146         mStreamId = streamId;
147         mStreamIdType = streamIdType;
148         mModulation = modulation;
149         mCodeRate = codeRate;
150         mSymbolRate = symbolRate;
151         mRolloff = rolloff;
152     }
153 
154     /**
155      * Gets Stream ID.
156      */
getStreamId()157     public int getStreamId() {
158         return mStreamId;
159     }
160     /**
161      * Gets Stream ID Type.
162      */
163     @StreamIdType
getStreamIdType()164     public int getStreamIdType() {
165         return mStreamIdType;
166     }
167     /**
168      * Gets Modulation.
169      */
170     @Modulation
getModulation()171     public int getModulation() {
172         return mModulation;
173     }
174     /**
175      * Gets Code rate.
176      */
177     @CodeRate
getCodeRate()178     public int getCodeRate() {
179         return mCodeRate;
180     }
181     /**
182      * Gets Symbol Rate in symbols per second.
183      */
getSymbolRate()184     public int getSymbolRate() {
185         return mSymbolRate;
186     }
187     /**
188      * Gets Roll off type.
189      */
190     @Rolloff
getRolloff()191     public int getRolloff() {
192         return mRolloff;
193     }
194 
195     /**
196      * Creates a builder for {@link IsdbsFrontendSettings}.
197      */
198     @NonNull
builder()199     public static Builder builder() {
200         return new Builder();
201     }
202 
203     /**
204      * Builder for {@link IsdbsFrontendSettings}.
205      */
206     public static class Builder {
207         private int mFrequency = 0;
208         private int mStreamId = Tuner.INVALID_STREAM_ID;
209         private int mStreamIdType = STREAM_ID_TYPE_ID;
210         private int mModulation = MODULATION_UNDEFINED;
211         private int mCodeRate = CODERATE_UNDEFINED;
212         private int mSymbolRate = 0;
213         private int mRolloff = ROLLOFF_UNDEFINED;
214 
Builder()215         private Builder() {
216         }
217 
218         /**
219          * Sets frequency in Hz.
220          *
221          * <p>Default value is 0.
222          */
223         @NonNull
224         @IntRange(from = 1)
setFrequency(int frequency)225         public Builder setFrequency(int frequency) {
226             mFrequency = frequency;
227             return this;
228         }
229 
230         /**
231          * Sets Stream ID.
232          *
233          * <p>Default value is {@link Tuner#INVALID_STREAM_ID}.
234          */
235         @NonNull
setStreamId(int streamId)236         public Builder setStreamId(int streamId) {
237             mStreamId = streamId;
238             return this;
239         }
240         /**
241          * Sets StreamIdType.
242          *
243          * <p>Default value is {@link #STREAM_ID_TYPE_ID}.
244          */
245         @NonNull
setStreamIdType(@treamIdType int streamIdType)246         public Builder setStreamIdType(@StreamIdType int streamIdType) {
247             mStreamIdType = streamIdType;
248             return this;
249         }
250         /**
251          * Sets Modulation.
252          *
253          * <p>Default value is {@link #MODULATION_UNDEFINED}.
254          */
255         @NonNull
setModulation(@odulation int modulation)256         public Builder setModulation(@Modulation int modulation) {
257             mModulation = modulation;
258             return this;
259         }
260         /**
261          * Sets Code rate.
262          *
263          * <p>Default value is {@link #CODERATE_UNDEFINED}.
264          */
265         @NonNull
setCodeRate(@odeRate int codeRate)266         public Builder setCodeRate(@CodeRate int codeRate) {
267             mCodeRate = codeRate;
268             return this;
269         }
270         /**
271          * Sets Symbol Rate in symbols per second.
272          *
273          * <p>Default value is 0.
274          */
275         @NonNull
setSymbolRate(int symbolRate)276         public Builder setSymbolRate(int symbolRate) {
277             mSymbolRate = symbolRate;
278             return this;
279         }
280         /**
281          * Sets Roll off type.
282          *
283          * <p>Default value is {@link #ROLLOFF_UNDEFINED}.
284          */
285         @NonNull
setRolloff(@olloff int rolloff)286         public Builder setRolloff(@Rolloff int rolloff) {
287             mRolloff = rolloff;
288             return this;
289         }
290 
291         /**
292          * Builds a {@link IsdbsFrontendSettings} object.
293          */
294         @NonNull
build()295         public IsdbsFrontendSettings build() {
296             return new IsdbsFrontendSettings(mFrequency, mStreamId, mStreamIdType, mModulation,
297                     mCodeRate, mSymbolRate, mRolloff);
298         }
299     }
300 
301     @Override
getType()302     public int getType() {
303         return FrontendSettings.TYPE_ISDBS;
304     }
305 }
306