1 /*
2 * Copyright (C) 2021-2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #ifndef TELEPHONY_TELEPHONY_TYPES_H
17 #define TELEPHONY_TELEPHONY_TYPES_H
18
19 #include <string>
20 #include <vector>
21
22 #include "network_search_types.h"
23 #include "operator_config_types.h"
24 #include "parameter.h"
25
26 namespace OHOS {
27 namespace Telephony {
28 #define SIM_SLOT_COUNT GetMaxSlotCount<int32_t>()
29 #define PREFERRED_NETWORK_TYPE GetPreferredNetworkType<int32_t>()
30 #define VSIM_MODEM_COUNT GetVSimModemCount<int32_t>()
31 #define IS_SUPPORT_VSIM (VSIM_MODEM_COUNT > 0)
32 inline const int32_t SYSPARA_SIZE = 128;
33 inline constexpr size_t ARRAY_SIZE = 1024;
34 inline const int32_t DEFAULT_SIM_SLOT_ID = 0;
35 inline const int32_t DEFAULT_SIM_SLOT_ID_REMOVE = -1;
36 inline const int32_t INVALID_MAIN_CARD_SLOTID = -2;
37 inline const int32_t ERROR_SLOT_OPKEY = -2;
38 inline const int32_t DSDS_MODE_V2 = 0;
39 inline const int32_t DSDS_MODE_V3 = 1;
40 inline const size_t MAX_PARAMETER_LENGTH = 100;
41 inline const int32_t DUAL_SLOT_COUNT = 2;
42 inline const int32_t MAX_SLOT_COUNT = 3;
43 inline const int32_t VSIM_DEFAULT_VALUE = -1;
44 inline int32_t maxSlotCount_ = 0;
45 inline int32_t vSimModemCount_ = VSIM_DEFAULT_VALUE;
46 inline constexpr const char *SATELLITE_DEFAULT_VALUE = "0";
47 inline constexpr const char *DEFAULT_SLOT_COUNT = "1";
48 inline constexpr const char *TEL_SIM_SLOT_COUNT = "const.telephony.slotCount";
49 inline constexpr const char *DEFAULT_PREFERRED_NETWORK_TYPE = "5"; // CORE_NETWORK_MODE_LTE_WCDMA_GSM
50 inline constexpr const char *TEL_PREFERRED_NETWORK_TYPE = "const.telephony.preferredNetworkType";
51 inline constexpr const char *DEFAULT_OPERATOR_KEY = "";
52 inline constexpr const char *INITIAL_OPKEY = "-1";
53 inline constexpr const char *DEFAULT_OPERATOR_CONFIG = "default_operator_config.json";
54 inline constexpr const char *OPKEY_PROP_PREFIX = "telephony.sim.opkey";
55 inline constexpr const char *COUNTRY_CODE_KEY = "telephony.sim.countryCode";
56 inline constexpr const char *TEL_SATELLITE_SUPPORTED = "const.telephony.satellite.supported";
57 inline constexpr const char *DEFAULT_VSIM_MODEM_COUNT = "0";
58 inline constexpr const char *VSIM_MODEM_COUNT_STR = "const.telephony.vsimModemCount";
59
60 template<typename T>
GetMaxSlotCount()61 inline T GetMaxSlotCount()
62 {
63 if (maxSlotCount_ == 0) {
64 char simSlotCount[SYSPARA_SIZE] = { 0 };
65 GetParameter(TEL_SIM_SLOT_COUNT, DEFAULT_SLOT_COUNT, simSlotCount, SYSPARA_SIZE);
66 maxSlotCount_ = std::atoi(simSlotCount);
67 }
68 return maxSlotCount_;
69 }
70
71 template<typename T>
GetVSimModemCount()72 inline T GetVSimModemCount()
73 {
74 if (vSimModemCount_ == VSIM_DEFAULT_VALUE) {
75 char vSimModemCount[SYSPARA_SIZE] = { 0 };
76 GetParameter(VSIM_MODEM_COUNT_STR, DEFAULT_VSIM_MODEM_COUNT, vSimModemCount, SYSPARA_SIZE);
77 vSimModemCount_ = std::atoi(vSimModemCount);
78 }
79 return vSimModemCount_;
80 }
81
82 template<typename T>
GetPreferredNetworkType()83 inline T GetPreferredNetworkType()
84 {
85 char preferredNetworkType[SYSPARA_SIZE] = { 0 };
86 GetParameter(TEL_PREFERRED_NETWORK_TYPE, DEFAULT_PREFERRED_NETWORK_TYPE, preferredNetworkType, SYSPARA_SIZE);
87 T networkType = std::atoi(preferredNetworkType);
88 return networkType;
89 }
90
91 enum SatelliteValue {
92 SATELLITE_NOT_SUPPORTED = 0,
93 SATELLITE_SUPPORTED = 1,
94 };
95
96 enum SimSlotId {
97 SIM_SLOT_0 = 0,
98 SIM_SLOT_1,
99 SIM_SLOT_2,
100 SIM_SLOT_3,
101 };
102
103 /**
104 * @brief The modem power status.
105 */
106 enum ModemPowerState {
107 /**
108 * Power Not Available
109 */
110 CORE_SERVICE_POWER_NOT_AVAILABLE = -1,
111 /**
112 * Power OFF
113 */
114 CORE_SERVICE_POWER_OFF = 0,
115 /**
116 * Power ON
117 */
118 CORE_SERVICE_POWER_ON = 1
119 };
120
121 template<typename T>
122 struct TelRilResponseInfo {
123 int32_t slotId = DEFAULT_SIM_SLOT_ID;
124 int32_t flag = 0;
125 int32_t errorNo = 0;
126 T object;
127 };
128
129 /**
130 * @brief Defines the network bandwidth reporting rule.
131 */
132 struct LinkBandwidthRule {
133 /**
134 * Radio access technology
135 */
136 int32_t rat = 0;
137 /**
138 * Delay time
139 */
140 int32_t delayMs = 0;
141 /**
142 * Uplink delay
143 */
144 int32_t delayUplinkKbps = 0;
145 /**
146 * Downlink delay
147 */
148 int32_t delayDownlinkKbps = 0;
149 /**
150 * Maximum uplink parameter list
151 */
152 std::vector<int32_t> maximumUplinkKbps {};
153 /**
154 * Maximum downlink parameter list
155 */
156 std::vector<int32_t> maximumDownlinkKbps {};
157 };
158
159 /**
160 * @brief Defines PDP context information.
161 */
162 struct DataProfile {
163 /**
164 * Profile Id
165 */
166 int profileId = 0;
167 /**
168 * (Access Point Name) a string parameter which is a logical name that is used to select the
169 * GGSN or the external packet data network. from 3GPP TS 27.007 10.1 V4.3.0 (2001-12)
170 */
171 std::string apn = "";
172 /**
173 * (Packet Data Protocol type) a string parameter which specifies the type of packet
174 * data protocol from 3GPP TS 27.007 10.1 V4.3.0 (2001-12)
175 */
176 std::string protocol = "";
177 /**
178 * Authentication Type
179 */
180 int32_t verType = 0;
181 /**
182 * Username
183 */
184 std::string userName = "";
185 /**
186 * Password
187 */
188 std::string password = "";
189 /**
190 * Roaming protocol version
191 */
192 std::string roamingProtocol = "";
193 };
194
195 /**
196 * @brief Defines activate data information.
197 */
198 struct ActivateDataParam {
199 /**
200 * eg:AppExecFwk::InnerEvent::Get(eventId, activateData.param);
201 */
202 int32_t param = 0;
203 /**
204 * Radio access technology
205 */
206 int32_t radioTechnology = 0;
207 /**
208 * DataProfile
209 */
210 struct DataProfile dataProfile;
211 /**
212 * Whether the user is roaming. The value true indicates that the user is roaming,
213 * and the value false indicates the opposite.
214 */
215 bool isRoaming = false;
216 /**
217 * Whether allow roaming
218 */
219 bool allowRoaming = false;
220 };
221
222 /**
223 * @brief Defines deactivate data information.
224 */
225 struct DeactivateDataParam {
226 /**
227 * eg:AppExecFwk::InnerEvent::Get(eventId, deactivateData.param);
228 */
229 int32_t param = 0;
230 /**
231 * Packet Data Protocol (PDP) context ID
232 */
233 int32_t cid = 0;
234 /**
235 * Reason code of the data service activation failure. For details, see 3GPP TS 24.008.
236 */
237 int32_t reason = 0;
238 };
239
240 /**
241 * @brief Defines the call forwarding information.
242 */
243 struct CallTransferParam {
244 /**
245 * Call forwarding operation mode:
246 *- 0: deactivation
247 *- 1: activation
248 *- 2: status query
249 *- 3: registration
250 *- 4: deletion
251 */
252 int32_t mode = 0;
253 /**
254 * Call forwarding type:
255 *- 0: call forwarding unconditional
256 *- 1: call forwarding on busy
257 *- 2: call forwarding on no reply
258 *- 3: call forwarding not reachable (no network service, or power-off)
259 *- 4: any call forwarding
260 *- 5: any call forwarding conditional
261 */
262 int32_t reason = 0;
263 /**
264 * Service class. For details, see 3GPP TS 27.007.
265 */
266 int32_t classx = 0;
267 /**
268 * Phone number
269 */
270 std::string number = "";
271 };
272
273 /**
274 * @brief Defines the call restriction information.
275 */
276 struct CallRestrictionParam {
277 /**
278 * Operation mode:
279 *- 0: deactivation
280 *- 1: activation
281 */
282 int32_t mode = 0;
283 /**
284 * Password
285 */
286 char password[MAX_PARAMETER_LENGTH + 1] = { 0 };
287 /**
288 * Operation object
289 */
290 std::string fac = "";
291 };
292
293 /**
294 * @brief Defines the dual tone multi-frequency (DTMF) information.
295 */
296 struct DtmfParam {
297 /**
298 * Call ID
299 */
300 int32_t index = 0;
301 /**
302 * Duration for playing the DTMF tone
303 */
304 int32_t switchOn = 0;
305 /**
306 * Interval for sending DTMF signals
307 */
308 int32_t switchOff = 0;
309 /**
310 * DTMF keyword
311 */
312 std::string sDTMFCode = "";
313 };
314
315 /**
316 * @brief Defines the GSM cell broadcast configuration information.
317 */
318 struct CBConfigParam {
319 /**
320 * Mode (activated or not)
321 */
322 int32_t mode = 0;
323 /**
324 * Message IDs
325 */
326 std::string idList = "";
327 /**
328 * Data coding schemes
329 */
330 std::string dcsList = "";
331 };
332
333 /**
334 * @brief Defines the SMS message information in a SIM card.
335 */
336 struct CdmaSimMessageParam {
337 /**
338 * Message index.
339 */
340 int32_t cdmaIndex = 0;
341 /**
342 * Status
343 */
344 int32_t status = 0;
345 /**
346 * Protocol data unit
347 */
348 std::string pdu = "";
349 };
350
351 /**
352 * @brief GSM SMS message parameter.
353 */
354 struct GsmSimMessageParam {
355 /**
356 * Reference Id
357 */
358 int64_t refId = 0;
359 /**
360 * Short message service center
361 */
362 std::string smscPdu = "";
363 /**
364 * Protocol data unit
365 */
366 std::string pdu = "";
367 };
368
369 /**
370 * @brief Defines the SMS message information in a SIM card.
371 */
372 struct SimMessageParam {
373 /**
374 * Message index.
375 */
376 int32_t gsmIndex = 0;
377 /**
378 * Status
379 */
380 int32_t status = 0;
381 /**
382 * Short message service center
383 */
384 std::string smscPdu = "";
385 /**
386 * Protocol data unit
387 */
388 std::string pdu = "";
389 };
390
391 /**
392 * @brief Defines the SIM card lock information.
393 */
394 struct SimLockParam {
395 /**
396 * SIM lock type:
397 *- AO: barring of all outgoing calls
398 *- OI: barring of all outgoing international calls
399 *- OX: barring of all outgoing international calls except those directed to the home country
400 *- AI: barring of all incoming calls
401 *- IR: barring of all incoming calls when roaming outside the home location
402 *- AB: barring of all services (applicable only when the mode is greater than or equal to 0)
403 *- AG: barring of the outgoing call service (applicable only when the mode is greater than or equal to 0)
404 *- AC: barring of the incoming call service (applicable only when the mode is greater than or equal to 0)
405 *- FD: fixed dialing number (FDN)
406 *- PN: network locking
407 *- PU: subnet locking
408 *- PP: SP locking
409 */
410 std::string fac = "";
411 /**
412 * Mode:
413 *- 0: deactivation (When fac is set to PN, PU, or PP, the operation is equivalent to unlocking.)
414 *- 1: activation (When fac is set to PN, PU, or PP, activation is not supported.)
415 *- 2: query
416 */
417 int32_t mode = 0;
418 /**
419 * Password text
420 */
421 std::string passwd = "";
422 };
423
424 /**
425 * @brief Defines the SIM card password information.
426 */
427 struct SimPasswordParam {
428 /**
429 * Maximum password length
430 */
431 int32_t passwordLength = 0;
432 /**
433 * SIM lock type:
434 *- AO: barring of all outgoing calls
435 *- OI: barring of all outgoing international calls
436 *- OX: barring of all outgoing international calls except those directed to the home country
437 *- AI: barring of all incoming calls
438 *- IR: barring of all incoming calls when roaming outside the home location
439 *- AB: barring of all services (applicable only when the mode is greater than or equal to 0)
440 *- AG: barring of the outgoing call service (applicable only when the mode is greater than or equal to 0)
441 *- AC: barring of the incoming call service (applicable only when the mode is greater than or equal to 0)
442 *- FD: fixed dialing number (FDN)
443 *- PN: network locking
444 *- PU: subnet locking
445 *- PP: SP locking
446 */
447 std::string fac = "";
448 /**
449 * Old password text
450 */
451 std::string oldPassword = "";
452 /**
453 * New password text
454 */
455 std::string newPassword = "";
456 };
457
458 /**
459 * @brief Enumerates emergency call types.
460 */
461 enum class EccType : int32_t {
462 /**
463 * Default
464 */
465 TYPE_CATEGORY = 0,
466 /**
467 * Police
468 */
469 TYPE_POLICE = 1,
470 /**
471 * Ambulance
472 */
473 TYPE_AMBULANCE = 2,
474 /**
475 * Fire alarm
476 */
477 TYPE_FIRE = 4,
478 /**
479 * Marine police
480 */
481 TYPE_SEA = 8,
482 /**
483 * Mountain rescue
484 */
485 TYPE_MOUNTAIN = 16,
486 };
487
488 /**
489 * @brief Specifies whether a number is valid when there is a card or no card.
490 */
491 enum class SimpresentType : int32_t {
492 /**
493 * Valid when there is no card
494 */
495 TYPE_NO_CARD = 0,
496 /**
497 * Valid when there is a card
498 */
499 TYPE_HAS_CARD = 1,
500 };
501
502 /**
503 * @brief Specifies whether a number is valid for all states or only for the abnormal service state of
504 * the circuit switched (CS) domain.
505 */
506 enum class AbnormalServiceType : int32_t {
507 /**
508 * Vaild for all states
509 */
510 TYPE_ALL = 0,
511 /**
512 * Valid only for the abnormal service state of the CS domain
513 */
514 TYPE_ONLY_CS = 1,
515 };
516
517 /**
518 * @brief Defines the emergency call number.
519 */
520 struct EmergencyCall {
521 /**
522 * Emergency number
523 */
524 std::string eccNum = "";
525 /**
526 * Mobile country code
527 */
528 std::string mcc = "";
529 /**
530 * Enumerates emergency call types. For details, see EccType.
531 */
532 EccType eccType = EccType::TYPE_CATEGORY;
533 /**
534 * Whether a number is valid when there is a card or no card. For details, see SimpresentType.
535 */
536 SimpresentType simpresent = SimpresentType::TYPE_NO_CARD;
537 /**
538 * Whether a number is valid for all states or only for the abnormal service state of the CS domain.
539 * For details, see AbnormalService.
540 */
541 AbnormalServiceType abnormalService = AbnormalServiceType::TYPE_ALL;
542 bool operator==(const EmergencyCall &call)
543 {
544 return (eccNum == call.eccNum && mcc == call.mcc);
545 }
546 };
547
548 /**
549 * @brief Defines the response info of SetEmergencyCallList.
550 */
551 struct SetEccListResponse {
552 /**
553 * Response result
554 */
555 int32_t result = 0;
556 /**
557 * Response value
558 */
559 int32_t value = 0;
560 };
561
562 /**
563 * @brief Defines the Public Land Mobile Network name.
564 */
565 struct PlmnNetworkName {
566 /**
567 * Long name of the registered network
568 */
569 std::string longName = "";
570 /**
571 * Short name of the registered network
572 */
573 std::string shortName = "";
574 };
575
576 /**
577 * @brief Defines the Operator PLMN information see 3GPP TS 31.102 Section 4.2.59.
578 */
579 struct OperatorPlmnInfo {
580 /**
581 * PLMN numeric
582 */
583 std::string plmnNumeric = "";
584 /**
585 * Start of the LAC range
586 */
587 int32_t lacStart = 0;
588 /**
589 * End of the LAC range
590 */
591 int32_t lacEnd = 0;
592 /**
593 * Identifier of operator name in PNN to be displayed
594 */
595 int32_t pnnRecordId = 0;
596 };
597
598 /**
599 * @brief Enumerates radio protocol phases.
600 *
601 * @enum RadioProtocolPhase
602 */
603 enum class RadioProtocolPhase {
604 /**
605 * The value of Initial radio protocol phase
606 */
607 RADIO_PROTOCOL_PHASE_INITIAL,
608 /**
609 * The value of execute check communication phase
610 */
611 RADIO_PROTOCOL_PHASE_CHECK,
612 /**
613 * The value of execute update communication phase
614 */
615 RADIO_PROTOCOL_PHASE_UPDATE,
616 /**
617 * The value of unsol radio phase
618 */
619 RADIO_PROTOCOL_PHASE_NOTIFY,
620 /**
621 * The value of execute complete communication phase
622 */
623 RADIO_PROTOCOL_PHASE_COMPLETE,
624 };
625
626 /**
627 * @brief Enumerates radio protocol states.
628 */
629 enum class RadioProtocolStatus {
630 /**
631 * Unknow radio protocol state
632 */
633 RADIO_PROTOCOL_STATUS_NONE,
634 /**
635 * Set radio protocol successed
636 */
637 RADIO_PROTOCOL_STATUS_SUCCESS,
638 /**
639 * Set radio protocol failed
640 */
641 RADIO_PROTOCOL_STATUS_FAIL,
642 };
643
644 /**
645 * @brief Defines the protocol stack information of the primary and secondary SIM cards.
646 */
647 struct RadioProtocol {
648 /**
649 * Card slot ID
650 */
651 int32_t slotId = DEFAULT_SIM_SLOT_ID;
652 /**
653 * Session ID
654 */
655 int32_t sessionId = 0;
656 /**
657 * Radio protocol parameters. For details, see RadioProtocolPhase.
658 */
659 RadioProtocolPhase phase = RadioProtocolPhase::RADIO_PROTOCOL_PHASE_INITIAL;
660 /**
661 * Radio protocol technology:
662 *- 1: GSM
663 *- 2: 1XRTT
664 *- 4: WCDMA
665 *- 8: HSPA
666 *- 16: HSPAP
667 *- 32: TDSCDMA
668 *- 64: EV-DO
669 *- 128: EHRPD
670 *- 256: LTE
671 *- 512: LTE_CA
672 *- 1024: IWLAN
673 *- 2048: NR
674 */
675 int32_t technology = 0;
676 /**
677 * Modem ID, corresponding to slotId at the bottom layer
678 */
679 int32_t modemId = 0;
680 /**
681 * Radio protocol status. For details, see RadioProtocolStatus.
682 */
683 RadioProtocolStatus status = RadioProtocolStatus::RADIO_PROTOCOL_STATUS_NONE;
684 };
685
686 /**
687 * @brief Defines the result info of ss command.
688 */
689 struct SsBaseResult {
690 /**
691 * Command index, use for find the ss command to retry
692 */
693 int32_t index = 0;
694 /**
695 * The result of execute command
696 */
697 int32_t result = 0;
698 /**
699 * This use for remaind message code
700 */
701 int32_t reason = 0;
702 /**
703 * This use for remaind message
704 */
705 std::string message = "";
706 };
707
708 /**
709 * @brief Defines the result info of GetClip.
710 */
711 struct GetClipResult {
712 /**
713 * Query results
714 */
715 SsBaseResult result;
716 /**
717 * Parameter sets/shows the result code presentation status in the TA
718 */
719 int32_t action = 0;
720 /**
721 * Parameter shows the subscriber CLIP service status in the network, <0-4>
722 */
723 int32_t clipStat = 0;
724 };
725
726 /**
727 * @brief Defines the result info of GetClir.
728 */
729 struct GetClirResult {
730 /**
731 * Query results
732 */
733 SsBaseResult result;
734 /**
735 * Parameter sets/shows the result code presentation status in the TA
736 */
737 int32_t action = 0;
738 /**
739 * Parameter shows the subscriber CLIP service status in the network, <0-4>
740 */
741 int32_t clirStat = 0;
742 };
743
744 /**
745 * @brief Defines the result info of GetColr.
746 */
747 struct GetColrResult {
748 /**
749 * Query results
750 */
751 SsBaseResult result;
752 /**
753 * Parameter sets/shows the result code presentation status in the TA
754 */
755 int32_t action = 0;
756 /**
757 * Parameter shows the subscriber COLR service status in the network, <0-4>
758 */
759 int32_t colrStat = 0;
760 };
761
762 /**
763 * @brief Defines the result info of GetColp.
764 */
765 struct GetColpResult {
766 /**
767 * Query results
768 */
769 SsBaseResult result;
770 /**
771 * Parameter sets/shows the result code presentation status in the TA
772 */
773 int32_t action = 0;
774 /**
775 * Parameter shows the subscriber COLP service status in the network, <0-4>
776 */
777 int32_t colpStat = 0;
778 };
779
780 /**
781 * @brief Defines the result info of CallWait.
782 */
783 struct CallWaitResult {
784 /**
785 * Query results
786 */
787 SsBaseResult result;
788 /**
789 * Parameter sets/shows the result code presentation status in the TA
790 */
791 int32_t status = 0;
792 /**
793 * Parameter shows the subscriber CLIP service status in the network, <0-4>
794 */
795 int32_t classCw = 0;
796 };
797
798 /**
799 * @brief Defines the result info of CallRestriction.
800 */
801 struct CallRestrictionResult {
802 /**
803 * Query results
804 */
805 SsBaseResult result;
806 /**
807 * Parameter sets/shows the result code presentation status in the TA
808 */
809 int32_t status = 0;
810 /**
811 * Parameter shows the subscriber CLIP service status in the network, <0-4>
812 */
813 int32_t classCw = 0;
814 };
815
816 /**
817 * @brief Defines the call forwarding query result.
818 */
819 struct CallForwardQueryResult {
820 /**
821 * Request SN
822 */
823 int32_t serial = 0;
824 /**
825 * Query result
826 */
827 int32_t result = 0;
828 /**
829 * Status:
830 *- 0: not activated
831 *- 1: activated
832 */
833 int32_t status = 0;
834 /**
835 * Service class. For details, see 3GPP TS 27.007.
836 */
837 int32_t classx = 0;
838 /**
839 * Phone number
840 */
841 std::string number = "";
842 /**
843 * Number type:
844 *-129: common number
845 *- 145: international number
846 */
847 int32_t type = 0;
848 /**
849 * Call forwarding type:
850 *- 0: call forwarding unconditional
851 *- 1: call forwarding on busy
852 *- 2: call forwarding on no reply
853 *- 3: call forwarding not reachable (no network service or power-off)
854 *- 4: any call forwarding
855 *- 5: any call forwarding conditional
856 */
857 int32_t reason = 0;
858 /**
859 * Waiting time
860 */
861 int32_t time = 0;
862 /**
863 * Start hour
864 */
865 int32_t startHour = 0;
866 /**
867 * Start minute
868 */
869 int32_t startMinute = 0;
870 /**
871 * End hour
872 */
873 int32_t endHour = 0;
874 /**
875 * End minute
876 */
877 int32_t endMinute = 0;
878 };
879
880 /**
881 * @brief Defines the list of call forwarding information.
882 */
883 struct CallForwardQueryInfoList {
884 /**
885 * Query results
886 */
887 SsBaseResult result;
888 /**
889 * Total number
890 */
891 int32_t callSize = 0;
892 /**
893 * ID of the call forwarding query result
894 */
895 int32_t flag = 0;
896 /**
897 * Call forwarding query result
898 */
899 std::vector<CallForwardQueryResult> calls {};
900 };
901 } // namespace Telephony
902 } // namespace OHOS
903 #endif // TELEPHONY_TELEPHONY_TYPES_H
904