1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
|
/*
* Copyright (C) 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.hardware.radio@1.6;
import @1.0::CdmaSignalStrength;
import @1.0::EvdoSignalStrength;
import @1.0::GsmSignalStrength;
import @1.0::LteSignalStrength;
import @1.0::RadioError;
import @1.0::RadioResponseType;
import @1.0::RegState;
import @1.1::EutranBands;
import @1.1::GeranBands;
import @1.1::ScanStatus;
import @1.1::UtranBands;
import @1.1::ImsiEncryptionInfo;
import @1.2::Call;
import @1.2::CellInfoCdma;
import @1.2::CellConnectionStatus;
import @1.2::TdscdmaSignalStrength;
import @1.2::WcdmaSignalStrength;
import @1.4::DataCallFailCause;
import @1.4::DataConnActiveStatus;
import @1.4::NrSignalStrength;
import @1.4::PdpProtocolType;
import @1.4::RadioTechnology;
import @1.5::CellIdentity;
import @1.5::CellIdentityLte;
import @1.5::CellIdentityNr;
import @1.5::CellInfoGsm;
import @1.5::CellInfoWcdma;
import @1.5::CellInfoTdscdma;
import @1.5::LinkAddress;
import @1.5::NgranBands;
import @1.5::RegStateResult.AccessTechnologySpecificInfo.Cdma2000RegistrationInfo;
import @1.5::RegStateResult.AccessTechnologySpecificInfo.EutranRegistrationInfo;
import @1.5::RegistrationFailCause;
import @1.5::SetupDataCallResult;
import android.hidl.safe_union@1.0::Monostate;
struct QosBandwidth {
/** Maximum bit rate possible on the bearer */
uint32_t maxBitrateKbps;
/** Minimum bit rate that is guaranteed to be provided by the network */
uint32_t guaranteedBitrateKbps;
};
/** LTE/EPS Quality of Service parameters as per 3gpp spec 24.301 sec 9.9.4.3. */
struct EpsQos {
/**
* Quality of Service Class Identifier (QCI), see 3GPP TS 23.203 and 29.212.
* The allowed values are standard values(1-9, 65-68, 69-70, 75, 79-80, 82-85)
* defined in the spec and operator specific values in the range 128-254.
*/
uint16_t qci;
QosBandwidth downlink;
QosBandwidth uplink;
};
/** 5G Quality of Service parameters as per 3gpp spec 24.501 sec 9.11.4.12 */
struct NrQos {
/**
* 5G QOS Identifier (5QI), see 3GPP TS 24.501 and 23.501.
* The allowed values are standard values(1-9, 65-68, 69-70, 75, 79-80, 82-85)
* defined in the spec and operator specific values in the range 128-254.
*/
uint16_t fiveQi;
QosBandwidth downlink;
QosBandwidth uplink;
/**
* QOS flow identifier of the QOS flow description in the
* range of QosFlowIdRange::MIN to QosFlowIdRange::MAX
*/
uint8_t qfi;
uint16_t averagingWindowMs;
};
/** Allowed values for 5G QOS flow identifier */
enum QosFlowIdRange : uint8_t {
MIN = 1,
MAX = 63
};
/** EPS or NR QOS parameters */
safe_union Qos {
Monostate noinit;
EpsQos eps;
NrQos nr;
};
/**
* Next header protocol numbers defined by IANA, RFC 5237
*/
enum QosProtocol : int8_t {
/** No protocol specified */
UNSPECIFIED = -1,
/** Transmission Control Protocol */
TCP = 6,
/** User Datagram Protocol */
UDP = 17,
/** Encapsulating Security Payload Protocol */
ESP = 50,
/** Authentication Header */
AH = 51,
};
enum QosFilterDirection : int8_t {
DOWNLINK = 0,
UPLINK = 1,
BIDIRECTIONAL = 2,
};
/** Allowed port numbers */
enum QosPortRange : uint16_t {
MIN = 20,
MAX = 65535
};
enum RadioError : @1.0::RadioError {
/** 1X voice and SMS are not allowed simulteneously. */
SIMULTANEOUS_SMS_AND_CALL_NOT_ALLOWED = 67,
/** Access is barred. */
ACCESS_BARRED = 68,
/**
* SMS is blocked due to call control, e.g., resource unavailable
* in the SMR entity.
*/
BLOCKED_DUE_TO_CALL = 69,
/**
* Returned from setRadioPowerResponse when detecting RF HW issues. Some RF
* Front-End(RFFE) components like antenna are considered critical for modem
* to provide telephony service. This RadioError is used when modem detect
* such RFFE problem.
*/
RF_HARDWARE_ISSUE = 70,
/**
* Returned from setRadioPowerResponse when detecting no RF calibration
* issue. Unlike RF_HARDWARE_ISSUE, this is a SW problem and no HW repair is
* needed.
*/
NO_RF_CALIBRATION_INFO = 71,
};
/**
* Overwritten from @1.0::RadioResponseInfo in order to update the RadioError to 1.6 version.
*/
struct RadioResponseInfo {
RadioResponseType type; // Response type
int32_t serial; // Serial number of the request
RadioError error; // Response error
};
/**
* Defines range of ports. start and end are the first and last port numbers
* (inclusive) in the range. Both start and end are in QosPortRange.MIN to
* QosPortRange.MAX range. A single port shall be represented by the same
* start and end value.
*/
struct PortRange {
int32_t start;
int32_t end;
};
/** Port is optional, contains either single port or range of ports */
safe_union MaybePort {
Monostate noinit;
PortRange range;
};
/** See 3gpp 24.008 10.5.6.12 and 3gpp 24.501 9.11.4.13 */
struct QosFilter {
/**
* Local and remote IP addresses, typically one IPv4 or one IPv6
* or one of each. Addresses could be with optional "/" prefix
* length, e.g.,"192.0.1.3" or "192.0.1.11/16 2001:db8::1/64".
* If the prefix length is absent the addresses are assumed to be
* point to point with IPv4 having a prefix length of 32 and
* IPv6 128.
*/
vec<string> localAddresses;
vec<string> remoteAddresses;
/** Local and remote port/ranges */
MaybePort localPort;
MaybePort remotePort;
/** QoS protocol */
QosProtocol protocol;
/** Type of service value or mask as defined in RFC 1349 */
safe_union TypeOfService {
Monostate noinit;
uint8_t value;
} tos;
/** IPv6 flow label as defined in RFC 6437 */
safe_union Ipv6FlowLabel {
Monostate noinit;
uint32_t value;
} flowLabel;
/** IPSec security parameter index */
safe_union IpsecSpi {
Monostate noinit;
uint32_t value;
} spi;
/** Filter direction */
QosFilterDirection direction;
/**
* Specifies the order in which the filter needs to be matched.
* A lower numerical(positive) value has a higher precedence.
* Set -1 when unspecified.
*/
int32_t precedence;
};
/** QOS session associated with a dedicated bearer */
struct QosSession {
/** Unique ID of the QoS session within the data call */
int32_t qosSessionId;
/** QOS attributes */
Qos qos;
/** List of QOS filters associated with this session */
vec<QosFilter> qosFilters;
};
/** The allowed failure modes on an IWLAN handover failure. */
enum HandoverFailureMode : int8_t {
/**
* On data handover failure, fallback to the source data transport when the
* fail cause is due to a hand off preference change.
*/
LEGACY = 0,
/** On data handover failure, fallback to the source data transport. */
DO_FALLBACK = 1,
/**
* On data handover failure, retry the handover instead of falling back to
* the source data transport.
*/
NO_FALLBACK_RETRY_HANDOVER = 2,
/**
* On data handover failure, setup a new data connection by sending a normal
* request to the underlying data service.
*/
NO_FALLBACK_RETRY_SETUP_NORMAL = 3
};
/**
* Overwritten from @1.5::SetupDataCallResult in order to change the suggestedRetryTime
* to 64-bit value. In the future, this must be extended instead of overwritten.
* Also added defaultQos, qosSessions, handoverFailureMode, pduSessionId, sliceInfo,
* and traffic descriptors in this version.
*/
struct SetupDataCallResult {
/** Data call fail cause. DataCallFailCause.NONE if no error. */
DataCallFailCause cause;
/**
* If cause is not DataCallFailCause.NONE, this field indicates the network suggested data
* retry back-off time in milliseconds. Negative value indicates network does not give any
* suggestion. 0 indicates retry should be performed immediately. 0x7fffffffffffffff indicates
* the device should not retry data setup anymore.
*
* During this time, no calls to IRadio@1.6::SetupDataCall for this APN will be made unless
* IRadioIndication@1.6::unthrottleApn is sent with the same APN.
*/
int64_t suggestedRetryTime;
/** Context ID, uniquely identifies this data connection. */
int32_t cid;
/** Data connection active status. */
DataConnActiveStatus active;
/**
* PDP protocol type. If cause is DataCallFailCause.ONLY_SINGLE_BEARER_ALLOWED, this is the
* protocol type supported, such as "IP" or "IPV6".
*/
PdpProtocolType type;
/** The network interface name. */
string ifname;
/**
* List of link address.
*/
vec<LinkAddress> addresses;
/**
* List of DNS server addresses, e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1". Empty if no dns
* server addresses returned.
*/
vec<string> dnses;
/**
* List of default gateway addresses, e.g., "192.0.1.3" or "192.0.1.11 2001:db8::1".
* When empty, the addresses represent point to point connections.
*/
vec<string> gateways;
/**
* List of P-CSCF(Proxy Call State Control Function) addresses via PCO(Protocol Configuration
* Option), e.g., "2001:db8::1 2001:db8::2 2001:db8::3". Empty if not IMS client.
*/
vec<string> pcscf;
/**
* MTU received from network for IPv4.
* Value <= 0 means network has either not sent a value or sent an invalid value.
*/
int32_t mtuV4;
/**
* MTU received from network for IPv6.
* Value <= 0 means network has either not sent a value or sent an invalid value.
*/
int32_t mtuV6;
/** Default bearer QoS. Applicable to LTE and NR */
Qos defaultQos;
/**
* Active QOS sessions of the dedicated bearers. Applicable to
* PDNs that support dedicated bearers.
*/
vec<QosSession> qosSessions;
/** Specifies the fallback mode on an IWLAN handover failure. */
HandoverFailureMode handoverFailureMode;
/**
* The allocated pdu session id for this data call.
* A value of 0 means no pdu session id was attached to this call.
*
* Reference: 3GPP TS 24.007 section 11.2.3.1b
*/
int32_t pduSessionId;
/**
* Slice used for this data call. It is valid only when this data call is on
* AccessNetwork:NGRAN.
*/
OptionalSliceInfo sliceInfo;
/**
* TrafficDescriptors for which this data call must be used. It only includes
* the TDs for which a data call has been requested so far; it is not an
* exhaustive list.
*/
vec<TrafficDescriptor> trafficDescriptors;
};
/**
* NR Dual connectivity state
*/
enum NrDualConnectivityState: int8_t {
/**
* Enable NR dual connectivity. Enabled state does not mean dual connectivity
* is active. It means device is allowed to connect to both primary and secondary.
*/
ENABLE = 1,
/**
* Disable NR dual connectivity. Disabled state does not mean secondary cell is released.
* Modem will release it only if current bearer is released to avoid radio link failure.
*/
DISABLE = 2,
/**
* Disable NR dual connectivity and force secondary cell to be released if dual connectivity
* was active. This may result in radio link failure.
*/
DISABLE_IMMEDIATE= 3,
};
/**
* Overwritten from @1.2::LinkCapacityEstimate to update LinkCapacityEstimate to 1.6 version.
*/
struct LinkCapacityEstimate {
/**
* Estimated downlink capacity in kbps. In case of a dual connected network,
* this includes capacity of both primary and secondary. This bandwidth estimate shall be
* the estimated maximum sustainable link bandwidth (as would be measured
* at the Upper PDCP or SNDCP SAP). If the DL Aggregate Maximum Bit Rate is known,
* this value shall not exceed the DL-AMBR for the Internet PDN connection.
* This must be filled with 0 if network is not connected.
*/
uint32_t downlinkCapacityKbps;
/**
* Estimated uplink capacity in kbps. In case of a dual connected network,
* this includes capacity of both primary and secondary. This bandwidth estimate shall be the
* estimated maximum sustainable link bandwidth (as would be measured at the
* Upper PDCP or SNDCP SAP). If the UL Aggregate Maximum Bit Rate is known,
* this value shall not exceed the UL-AMBR for the Internet PDN connection.
* This must be filled with 0 if network is not connected.
*/
uint32_t uplinkCapacityKbps;
/**
* Estimated downlink capacity of secondary carrier in a dual connected NR mode in kbps.
* This bandwidth estimate shall be the estimated maximum sustainable link bandwidth
* (as would be measured at the Upper PDCP or SNDCP SAP). This is valid only
* in if device is connected to both primary and secodary in dual connected
* mode. This must be filled with 0 if secondary is not connected or if
* modem does not support this feature.
*/
uint32_t secondaryDownlinkCapacityKbps;
/**
* Estimated uplink capacity secondary carrier in a dual connected NR mode in kbps.
* This bandwidth estimate shall be the estimated
* maximum sustainable link bandwidth (as would be measured at the Upper PDCP or SNDCP SAP).
* This is valid only in if device is connected to both primary and secodary in dual connected
* mode.This must be filled with 0 if secondary is not connected or if modem
* does not support this feature.
*/
uint32_t secondaryUplinkCapacityKbps;
};
enum DataThrottlingAction : int8_t {
/* Clear all existing data throttling. */
NO_DATA_THROTTLING = 0,
/**
* Enact secondary carrier data throttling and remove any existing data
* throttling on anchor carrier.
*/
THROTTLE_SECONDARY_CARRIER = 1,
/**
* Enact anchor carrier data throttling and disable data on secondary
* carrier if currently enabled.
*/
THROTTLE_ANCHOR_CARRIER = 2,
/**
* Immediately hold on to current level of throttling.
*/
HOLD = 3
};
/**
* Defines the values for VoPS indicator of NR as per 3gpp spec 24.501 sec 9.10.3.5
*/
enum VopsIndicator : uint8_t {
/** IMS voice over PS session not supported */
VOPS_NOT_SUPPORTED = 0,
/** IMS voice over PS session supported over 3GPP access */
VOPS_OVER_3GPP = 1,
/** IMS voice over PS session supported over non-3GPP access */
VOPS_OVER_NON_3GPP = 2,
};
/**
* Defines the values for emergency service indicator of NR
* as per 3gpp spec 24.501 sec 9.10.3.5
*/
enum EmcIndicator : uint8_t {
/** Emergency services not supported */
EMC_NOT_SUPPORTED = 0,
/** Emergency services supported in NR connected to 5GCN only */
EMC_NR_CONNECTED_TO_5GCN = 1,
/** Emergency services supported in E-UTRA connected to 5GCN only */
EMC_EUTRA_CONNECTED_TO_5GCN = 2,
/** Emergency services supported in NR connected to 5GCN and E-UTRA connected to 5GCN */
EMC_BOTH_NR_EUTRA_CONNECTED_TO_5GCN = 3
};
/**
* Defines the values for emergency service fallback indicator of NR
* as per 3gpp spec 24.501 sec 9.10.3.5
*/
enum EmfIndicator : uint8_t {
/** Emergency services fallback not supported */
EMF_NOT_SUPPORTED = 0,
/** Emergency services fallback supported in NR connected to 5GCN only */
EMF_NR_CONNECTED_TO_5GCN = 1,
/** Emergency services fallback supported in E-UTRA connected to 5GCN only */
EMF_EUTRA_CONNECTED_TO_5GCN = 2,
/**
* Emergency services fallback supported in NR connected to 5GCN and E-UTRA
* connected to 5GCN.
*/
EMF_BOTH_NR_EUTRA_CONNECTED_TO_5GCN = 3
};
/**
* Type to define the NR specific network capabilities for voice over PS including
* emergency and normal voice calls.
*/
struct NrVopsInfo {
/**
* This indicates if the camped network supports VoNR services, and what kind of services
* it supports. This information is received from NR network during NR NAS registration
* procedure through NR REGISTRATION ACCEPT.
* Refer 3GPP 24.501 EPS 5GS network feature support -> IMS VoPS
*/
VopsIndicator vopsSupported;
/**
* This indicates if the camped network supports VoNR emergency service. This information
* is received from NR network through two sources:
* a. During NR NAS registration procedure through NR REGISTRATION ACCEPT.
* Refer 3GPP 24.501 EPS 5GS network feature support -> EMC
* b. In case the device is not registered on the network.
* Refer 3GPP 38.331 SIB1 : ims-EmergencySupport
* If device is registered on NR, then this field indicates whether the cell
* supports IMS emergency bearer services for UEs in limited service mode.
*/
EmcIndicator emcSupported;
/**
* This indicates if the camped network supports VoNR emergency service fallback. This
* information is received from NR network during NR NAS registration procedure through
* NR REGISTRATION ACCEPT.
* Refer 3GPP 24.501 EPS 5GS network feature support -> EMF
*/
EmfIndicator emfSupported;
};
struct LteSignalStrength {
@1.0::LteSignalStrength base;
/**
* CSI channel quality indicator (CQI) table index. There are multiple CQI tables.
* The definition of CQI in each table is different.
*
* Reference: 3GPP TS 136.213 section 7.2.3.
*
* Range [1, 6], INT_MAX means invalid/unreported.
*/
uint32_t cqiTableIndex;
};
struct NrSignalStrength {
@1.4::NrSignalStrength base;
/**
* CSI channel quality indicator (CQI) table index. There are multiple CQI tables.
* The definition of CQI in each table is different.
*
* Reference: 3GPP TS 138.214 section 5.2.2.1.
*
* Range [1, 3], INT_MAX means invalid/unreported.
*/
uint32_t csiCqiTableIndex;
/**
* CSI channel quality indicator (CQI) for all subbands.
*
* If the CQI report is for the entire wideband, a single CQI index is provided.
* If the CQI report is for all subbands, one CQI index is provided for each subband,
* in ascending order of subband index.
* If CQI is not available, the CQI report is empty.
*
* Reference: 3GPP TS 138.214 section 5.2.2.1.
*
* Range [0, 15], 0xFF means invalid/unreported.
*/
vec<uint8_t> csiCqiReport;
};
/**
* Overwritten from @1.4::SignalStrength in order to update LteSignalStrength and NrSignalStrength.
*/
struct SignalStrength {
/**
* If GSM measurements are provided, this structure must contain valid measurements; otherwise
* all fields should be set to INT_MAX to mark them as invalid.
*/
GsmSignalStrength gsm;
/**
* If CDMA measurements are provided, this structure must contain valid measurements; otherwise
* all fields should be set to INT_MAX to mark them as invalid.
*/
CdmaSignalStrength cdma;
/**
* If EvDO measurements are provided, this structure must contain valid measurements; otherwise
* all fields should be set to INT_MAX to mark them as invalid.
*/
EvdoSignalStrength evdo;
/**
* If LTE measurements are provided, this structure must contain valid measurements; otherwise
* all fields should be set to INT_MAX to mark them as invalid.
*/
LteSignalStrength lte;
/**
* If TD-SCDMA measurements are provided, this structure must contain valid measurements;
* otherwise all fields should be set to INT_MAX to mark them as invalid.
*/
TdscdmaSignalStrength tdscdma;
/**
* If WCDMA measurements are provided, this structure must contain valid measurements; otherwise
* all fields should be set to INT_MAX to mark them as invalid.
*/
WcdmaSignalStrength wcdma;
/**
* If NR 5G measurements are provided, this structure must contain valid measurements; otherwise
* all fields should be set to INT_MAX to mark them as invalid.
*/
NrSignalStrength nr;
};
/** Overwritten from @1.5::CellInfoLte in order to update LteSignalStrength. */
struct CellInfoLte {
CellIdentityLte cellIdentityLte;
LteSignalStrength signalStrengthLte;
};
/** Overwritten from @1.5::CellInfoNr in order to update NrSignalStrength. */
struct CellInfoNr {
CellIdentityNr cellIdentityNr;
NrSignalStrength signalStrengthNr;
};
/** Overwritten from @1.5::CellInfo in order to update LteSignalStrength and NrSignalStrength. */
struct CellInfo {
/**
* True if this cell is registered false if not registered.
*/
bool registered;
/**
* Connection status for the cell.
*/
CellConnectionStatus connectionStatus;
safe_union CellInfoRatSpecificInfo {
/**
* 3gpp CellInfo types.
*/
CellInfoGsm gsm;
CellInfoWcdma wcdma;
CellInfoTdscdma tdscdma;
CellInfoLte lte;
CellInfoNr nr;
/**
* 3gpp2 CellInfo types;
*/
CellInfoCdma cdma;
} ratSpecificInfo;
};
/** Overwritten from @1.5::NetworkScanResult in order to update the CellInfo to 1.6 version. */
struct NetworkScanResult {
/**
* The status of the scan.
*/
ScanStatus status;
/**
* The error code of the incremental result.
*/
RadioError error;
/**
* List of network information as CellInfo.
*/
vec<CellInfo> networkInfos;
};
/**
* Overwritten from @1.5::RegStateResult to 1.6 to support NrRegistrationInfo
* version.
*/
struct RegStateResult {
/**
* Registration state
*
* If the RAT is indicated as a GERAN, UTRAN, or CDMA2000 technology, this value reports
* registration in the Circuit-switched domain.
* If the RAT is indicated as an EUTRAN, NGRAN, or another technology that does not support
* circuit-switched services, this value reports registration in the Packet-switched domain.
*/
RegState regState;
/**
* Indicates the available voice radio technology, valid values as defined by RadioTechnology,
* except LTE_CA, which is no longer a valid value on 1.5 or above. When the device is on
* carrier aggregation, vendor RIL service should properly report multiple PhysicalChannelConfig
* elements through IRadio::currentPhysicalChannelConfigs_1_6.
*/
RadioTechnology rat;
/**
* Cause code reported by the network in case registration fails. This will be a mobility
* management cause code defined for MM, GMM, MME or equivalent as appropriate for the RAT.
*/
RegistrationFailCause reasonForDenial;
/** CellIdentity */
CellIdentity cellIdentity;
/**
* The most-recent PLMN-ID upon which the UE registered (or attempted to register if a failure
* is reported in the reasonForDenial field). This PLMN shall be in standard format consisting
* of a 3 digit MCC concatenated with a 2 or 3 digit MNC.
*/
string registeredPlmn;
/**
* Access-technology-specific registration information, such as for CDMA2000.
*/
safe_union AccessTechnologySpecificInfo {
Monostate noinit;
Cdma2000RegistrationInfo cdmaInfo;
EutranRegistrationInfo eutranInfo;
/**
* Network capabilities for voice over PS services. This info is valid only on NR
* network and must be present when the device is camped on NR. VopsInfo must be
* empty when the device is not camped on NR.
*/
NrVopsInfo ngranNrVopsInfo;
/**
* True if the dual transfer mode is supported.
* Refer to 3GPP TS 44.108 section 3.4.25.3
*/
bool geranDtmSupported;
} accessTechnologySpecificInfo;
};
struct Call {
@1.2::Call base;
/**
* Forwarded number. It can set only one forwarded number based on 3GPP rule of the CS.
* Reference: 3GPP TS 24.008 section 10.5.4.21b
*/
string forwardedNumber;
};
/**
* This safe_union represents an optional slice info
*/
safe_union OptionalSliceInfo {
Monostate noinit;
SliceInfo value;
};
/**
* This struct represents a S-NSSAI as defined in 3GPP TS 24.501.
*/
struct SliceInfo {
/**
* The type of service provided by the slice.
*
* see: 3GPP TS 24.501 Section 9.11.2.8.
*/
SliceServiceType sst;
/**
* Slice differentiator is the identifier of a slice that has
* SliceServiceType as SST. A value of -1 indicates that there is
* no corresponding SliceInfo of the HPLMN.
*
* see: 3GPP TS 24.501 Section 9.11.2.8.
*/
int32_t sliceDifferentiator;
/**
* This SST corresponds to a SliceInfo (S-NSSAI) of the HPLMN; the SST is
* mapped to this value.
*
* see: 3GPP TS 24.501 Section 9.11.2.8.
*/
SliceServiceType mappedHplmnSst;
/**
* Present only if both sliceDifferentiator and mappedHplmnSst are also
* present. This SD corresponds to a SliceInfo (S-NSSAI) of the HPLMN;
* sliceDifferentiator is mapped to this value. A value of -1 indicates that
* there is no corresponding SliceInfo of the HPLMN.
*
* see: 3GPP TS 24.501 Section 9.11.2.8.
*/
int32_t mappedHplmnSD;
/**
* Field to indicate the current status of the slice.
*/
SliceStatus status;
};
/**
* Slice/Service Type as defined in 3GPP TS 23.501.
*/
enum SliceServiceType : uint8_t {
/* Not specified */
NONE = 0,
/* Slice suitable for the handling of 5G enhanced Mobile Broadband */
EMBB = 1,
/**
* Slice suitable for the handling of ultra-reliable low latency
* communications
*/
URLLC = 2,
/* Slice suitable for the handling of massive IoT */
MIOT = 3,
};
/**
* Expose more setup data call failures.
*/
enum DataCallFailCause : @1.4::DataCallFailCause {
/**
* Data call fail due to the slice not being allowed for the data call.
*/
SLICE_REJECTED = 0x8CC,
/**
* No matching rule available for the request, and match-all rule is not allowed for it.
*/
MATCH_ALL_RULE_NOT_ALLOWED = 0x8CD,
/**
* If connection failed for all matching URSP rules.
*/
ALL_MATCHING_RULES_FAILED = 0x8CE,
};
struct PhysicalChannelConfig {
/** Connection status for cell. Valid values are PRIMARY_SERVING and SECONDARY_SERVING */
CellConnectionStatus status;
/** The radio technology for this physical channel */
RadioTechnology rat;
/** Downlink Absolute Radio Frequency Channel Number */
int32_t downlinkChannelNumber;
/** Uplink Absolute Radio Frequency Channel Number */
int32_t uplinkChannelNumber;
/** Downlink cell bandwidth, in kHz */
int32_t cellBandwidthDownlinkKhz;
/** Uplink cell bandwidth, in kHz */
int32_t cellBandwidthUplinkKhz;
/**
* A list of data calls mapped to this physical channel. The context id must match the cid of
* @1.5::SetupDataCallResult. An empty list means the physical channel has no data call mapped
* to it.
*/
vec<int32_t> contextIds;
/**
* The physical cell identifier for this cell.
*
* In UTRAN, this value is primary scrambling code. The range is [0, 511].
* Reference: 3GPP TS 25.213 section 5.2.2.
*
* In EUTRAN, this value is physical layer cell identity. The range is [0, 503].
* Reference: 3GPP TS 36.211 section 6.11.
*
* In 5G RAN, this value is physical layer cell identity. The range is [0, 1007].
* Reference: 3GPP TS 38.211 section 7.4.2.1.
*/
uint32_t physicalCellId;
/**
* The frequency band to scan.
*/
safe_union Band {
/** Valid only if radioAccessNetwork = GERAN. */
GeranBands geranBand;
/** Valid only if radioAccessNetwork = UTRAN. */
UtranBands utranBand;
/** Valid only if radioAccessNetwork = EUTRAN. */
EutranBands eutranBand;
/** Valid only if radioAccessNetwork = NGRAN. */
NgranBands ngranBand;
} band;
};
/**
* Extended from @1.5 NgranBands
* IRadio 1.6 supports NGRAN bands up to V16.5.0
*/
enum NgranBands : @1.5::NgranBands {
/** 3GPP TS 38.101-1, Table 5.2-1: FR1 bands */
BAND_26 = 26,
BAND_46 = 46,
BAND_53 = 53,
BAND_96 = 96,
};
/**
* This safe_union represents an optional DNN. DNN stands for Data Network Name
* and represents an APN as defined in 3GPP TS 23.003.
*/
safe_union OptionalDnn {
Monostate noinit;
string value;
};
/**
* This safe_union represents an optional OsAppId.
*/
safe_union OptionalOsAppId {
Monostate noinit;
OsAppId value;
};
/**
* This safe_union represents an optional TrafficDescriptor.
*/
safe_union OptionalTrafficDescriptor {
Monostate noinit;
TrafficDescriptor value;
};
/**
* This struct represents a traffic descriptor. A valid struct must have at least
* one of the optional values present. This is based on the definition of traffic
* descriptor in TS 24.526 Section 5.2.
*/
struct TrafficDescriptor {
/**
* DNN stands for Data Network Name and represents an APN as defined in
* 3GPP TS 23.003.
*/
OptionalDnn dnn;
/**
* Indicates the OsId + OsAppId (used as category in Android).
*/
OptionalOsAppId osAppId;
};
/**
* This struct represents the OsId + OsAppId as defined in TS 24.526 Section 5.2
*/
struct OsAppId {
/**
* Byte array representing OsId + OsAppId. The minimum length of the array is
* 18 and maximum length is 272 (16 bytes for OsId + 1 byte for OsAppId length
* + up to 255 bytes for OsAppId).
*/
vec<uint8_t> osAppId;
};
/**
* This struct represents the current slicing configuration.
*/
struct SlicingConfig {
/**
* This vector contains the current URSP rules. Empty vector represents that no
* rules are configured.
*/
vec<UrspRule> urspRules;
/**
* List of all slices.
*/
vec<SliceInfo> sliceInfo;
};
/**
* This struct represents a single URSP rule as defined in 3GPP TS 24.526.
*/
struct UrspRule {
/**
* Precedence value in the range of 0 to 255. Higher value has lower
* precedence.
*/
uint8_t precedence;
/**
* Used as a matcher for network requests.
*/
vec<TrafficDescriptor> trafficDescriptors;
/**
* List of routes (connection parameters) that must be used for requests
* matching a trafficDescriptor.
*/
vec<RouteSelectionDescriptor> routeSelectionDescriptor;
};
/**
* This struct represents a single route selection descriptor as defined in
* 3GPP TS 24.526.
*/
struct RouteSelectionDescriptor {
/**
* Precedence value in the range of 0 to 255. Higher value has lower
* precedence.
*/
uint8_t precedence;
/**
* Valid values are IP, IPV6 and IPV4V6.
*/
OptionalPdpProtocolType sessionType;
OptionalSscMode sscMode;
/**
* There can be 0 or more SliceInfo specified in a route descriptor.
*/
vec<SliceInfo> sliceInfo;
/**
* DNN stands for Data Network Name and represents an APN as defined in
* 3GPP TS 23.003. There can be 0 or more DNNs specified in a route
* descriptor.
*/
vec<string> dnn;
};
/**
* This safe_union represents an optional PdpProtocolType.
*/
safe_union OptionalPdpProtocolType {
Monostate noinit;
PdpProtocolType value;
};
/**
* This safe_union represents an optional SscMode.
*/
safe_union OptionalSscMode {
Monostate noinit;
SscMode value;
};
enum SliceStatus : int8_t {
UNKNOWN,
CONFIGURED, // Configured but not allowed or rejected yet
ALLOWED, // Allowed to be used
REJECTED_NOT_AVAILABLE_IN_PLMN, // Rejected because not available in PLMN
REJECTED_NOT_AVAILABLE_IN_REG_AREA, // Rejected because not available in reg area
DEFAULT_CONFIGURED, // Considered valid when configured/allowed slices are not available
};
/**
* Enum representing session and service continuity mode as defined in
* 3GPP TS 23.501.
*/
enum SscMode : int8_t {
MODE_1 = 1,
MODE_2 = 2,
MODE_3 = 3,
};
/**
* Public key type from carrier certificate.
*/
enum PublicKeyType : int8_t {
EPDG = 1, // Key type to be used for ePDG
WLAN = 2, // Key type to be used for WLAN
};
/**
* Carrier specific Information sent by the carrier,
* which will be used to encrypt the IMSI and IMPI.
*/
struct ImsiEncryptionInfo {
@1.1::ImsiEncryptionInfo base;
PublicKeyType keyType; // Public key type
};
/**
* Phonebook-record-information specified by EF_ADN(Abbreviated dialing numbers)
* record of SIM as per 3GPP spec 31.102 v15 Section-4.4.2.3.
*/
struct PhonebookRecordInfo {
/** Record index. 0 is used to insert a record */
uint32_t recordId;
/** Alpha identifier, empty string if no value */
string name;
/** Dialling number, empty string if no value */
string number;
/** Email addresses */
vec<string> emails;
/** Additional numbers */
vec<string> additionalNumbers;
};
struct PhonebookCapacity {
/**
* Maximum number of ADN records possible in the SIM phonebook
* Needs to be non-negative
*/
int32_t maxAdnRecords;
/**
* Used ADN records in the SIM phonebook
* Needs to be non-negative
*/
int32_t usedAdnRecords;
/**
* Maximum email records possible in the SIM phonebook
* Needs to be non-negative
*/
int32_t maxEmailRecords;
/**
* Used email records in the SIM phonebook
* Needs to be non-negative
*/
int32_t usedEmailRecords;
/**
* Maximum additional number records possible in the SIM phonebook
* Needs to be non-negative
*/
int32_t maxAdditionalNumberRecords;
/**
* Used additional number records in the SIM phonebook
* Needs to be non-negative
*/
int32_t usedAdditionalNumberRecords;
/**
* Maximum name length possible in the SIM phonebook
* Needs to be non-negative
*/
int32_t maxNameLen;
/**
* Maximum number length possible in the SIM phonebook
* Needs to be non-negative
*/
int32_t maxNumberLen;
/**
* Maximum email length possible in the SIM phonebook
* Needs to be non-negative
*/
int32_t maxEmailLen;
/**
* Maximum additional number length possible in the SIM phonebook
* Needs to be non-negative
*/
int32_t maxAdditionalNumberLen;
};
/**
* Enum representing the status of the received PB indication,
* PB_RECEIVED_OK indicates this retrieval is fine
* PB_RECEIVED_ERROR indicates one error happens, in general, the process
* can't be restored soon.
* PB_RECEIVED_ABORT indicates the process is interrupted, in this case,
* modem might need resources and interrupt the current process, or it is
* timed out to receive all indications, and client can retry soon.
* PB_RECEIVED_FINAL indicates the whole process is finished with a full
* chunk of phonebook data, means this is a last indication with the left
* data.
*/
enum PbReceivedStatus : int8_t {
PB_RECEIVED_OK = 1,
PB_RECEIVED_ERROR = 2,
PB_RECEIVED_ABORT = 3,
PB_RECEIVED_FINAL = 4,
};
|