blob: 82c1bc443c3e9d9c6aa4bee67b133080681cd446 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/*******************************************************************************
37 *==============================================================================
38 * HISTORY
39 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
40 *------------------------------------------------------------------------------
41 * removed!
42 *
43 * removed!
44 * removed!
45 * removed!
46 * removed!
47 *
48 * removed!
49 * removed!
50 * removed!
51 * removed!
52 *
53 * removed!
54 * removed!
55 * removed!
56 *
57 * removed!
58 * removed!
59 * removed!
60 *
61 * removed!
62 * removed!
63 * removed!
64 *
65 * removed!
66 * removed!
67 * removed!
68 *
69 * removed!
70 * removed!
71 * removed!
72 *
73 * removed!
74 * removed!
75 *
76 * removed!
77 * removed!
78 *
79 * removed!
80 * removed!
81 * removed!
82 * removed!
83 *
84 * removed!
85 * removed!
86 * removed!
87 * removed!
88 *
89 * removed!
90 * removed!
91 * removed!
92 * removed!
93 *
94 * removed!
95 * removed!
96 * removed!
97 * removed!
98 *
99 * removed!
100 * removed!
101 * removed!
102 * removed!
103 * removed!
104 * removed!
105 *
106 * removed!
107 * removed!
108 * removed!
109 *
110 * removed!
111 * removed!
112 * removed!
113 *
114 * removed!
115 * removed!
116 * removed!
117 * removed!
118 *
119 * removed!
120 * removed!
121 * removed!
122 *
123 * removed!
124 * removed!
125 * removed!
126 *
127 * removed!
128 * removed!
129 *
130 * removed!
131 * removed!
132 * removed!
133 * removed!
134 * removed!
135 * removed!
136 * removed!
137 * removed!
138 * removed!
139 * removed!
140 * removed!
141 * removed!
142 * removed!
143 * removed!
144 * removed!
145 * removed!
146 * removed!
147 * removed!
148 * removed!
149 *
150 * removed!
151 * removed!
152 * removed!
153 * removed!
154 *
155 * removed!
156 * removed!
157 *
158 * removed!
159 * removed!
160 * removed!
161 * removed!
162 * removed!
163 *
164 * removed!
165 * removed!
166 * removed!
167 *
168 * removed!
169 * removed!
170 *
171 * removed!
172 * removed!
173 *
174 * removed!
175 * removed!
176 *
177 * removed!
178 * removed!
179 * removed!
180 *
181 * removed!
182 * removed!
183 * removed!
184 *
185 * removed!
186 * removed!
187 * removed!
188 * removed!
189 *
190 * removed!
191 * removed!
192 * removed!
193 * removed!
194 * removed!
195 * removed!
196 *
197 * removed!
198 * removed!
199 * removed!
200 *
201 * removed!
202 * removed!
203 * removed!
204 *
205 * removed!
206 * removed!
207 * removed!
208 *
209 * removed!
210 * removed!
211 *
212 * removed!
213 * removed!
214 * removed!
215 *
216 * removed!
217 * removed!
218 * removed!
219 * removed!
220 *
221 * removed!
222 * removed!
223 * removed!
224 *
225 * removed!
226 * removed!
227 * removed!
228 *
229 * removed!
230 * removed!
231 * removed!
232 * removed!
233 *
234 * removed!
235 * removed!
236 * removed!
237 * removed!
238 *
239 * removed!
240 * removed!
241 * removed!
242 *
243 * removed!
244 * removed!
245 * removed!
246 *
247 * removed!
248 * removed!
249 * removed!
250 *
251 * removed!
252 * removed!
253 * removed!
254 *
255 * removed!
256 * removed!
257 * removed!
258 *
259 * removed!
260 * removed!
261 * removed!
262 * removed!
263 * removed!
264 * removed!
265 * removed!
266 *
267 * removed!
268 * removed!
269 * removed!
270 *
271 * removed!
272 * removed!
273 * removed!
274 *
275 * removed!
276 * removed!
277 * removed!
278 *
279 * removed!
280 * removed!
281 *
282 * removed!
283 * removed!
284 * removed!
285 *
286 * removed!
287 * removed!
288 * removed!
289 *
290 * removed!
291 * removed!
292 * removed!
293 *
294 * removed!
295 * removed!
296 * removed!
297 *
298 * removed!
299 * removed!
300 * removed!
301 *
302 * removed!
303 * removed!
304 * removed!
305 *
306 * removed!
307 * removed!
308 * removed!
309 *
310 * removed!
311 * removed!
312 * removed!
313 *
314 * removed!
315 * removed!
316 * removed!
317 *
318 * removed!
319 * removed!
320 * removed!
321 * removed!
322 *
323 * removed!
324 * removed!
325 * removed!
326 *
327 * removed!
328 * removed!
329 * removed!
330 *
331 * removed!
332 * removed!
333 * removed!
334 *
335 * removed!
336 * removed!
337 * removed!
338 * removed!
339 *
340 * removed!
341 * removed!
342 * removed!
343 * removed!
344 *
345 * removed!
346 * removed!
347 * removed!
348 *
349 * removed!
350 * removed!
351 * removed!
352 *
353 * removed!
354 * removed!
355 * removed!
356 *
357 * removed!
358 * removed!
359 * removed!
360 *
361 * removed!
362 * removed!
363 * removed!
364 *
365 * removed!
366 * removed!
367 * removed!
368 *
369 * removed!
370 * removed!
371 * removed!
372 *
373 * removed!
374 * removed!
375 * removed!
376 *
377 * removed!
378 * removed!
379 * removed!
380 *
381 * removed!
382 * removed!
383 * removed!
384 *
385 * removed!
386 * removed!
387 * removed!
388 *
389 * removed!
390 * removed!
391 * removed!
392 * removed!
393 * removed!
394 * removed!
395 *
396 * removed!
397 * removed!
398 * removed!
399 *
400 * removed!
401 * removed!
402 * removed!
403 * removed!
404 *
405 * removed!
406 * removed!
407 * removed!
408 * removed!
409 *
410 * removed!
411 * removed!
412 * removed!
413 * removed!
414 * removed!
415 * removed!
416 *
417 * removed!
418 * removed!
419 * removed!
420 * removed!
421 * removed!
422 * removed!
423 *
424 * removed!
425 * removed!
426 * removed!
427 * removed!
428 *
429 * removed!
430 * removed!
431 * removed!
432 * removed!
433 *
434 * removed!
435 * removed!
436 * removed!
437 *
438 * removed!
439 * removed!
440 * removed!
441 *
442 * removed!
443 * removed!
444 * removed!
445 *
446 * removed!
447 * removed!
448 * removed!
449 * removed!
450 * removed!
451 * removed!
452 *
453 * removed!
454 * removed!
455 * removed!
456 *
457 * removed!
458 * removed!
459 * removed!
460 * removed!
461 *
462 * removed!
463 * removed!
464 *
465 * removed!
466 * removed!
467 * removed!
468 *
469 * removed!
470 * removed!
471 * removed!
472 *
473 * removed!
474 * removed!
475 * removed!
476 *
477 * removed!
478 * removed!
479 * removed!
480 *
481 * removed!
482 * removed!
483 * removed!
484 * removed!
485 * removed!
486 * removed!
487 * removed!
488 *
489 * removed!
490 * removed!
491 * removed!
492 *
493 * removed!
494 * removed!
495 * removed!
496 *
497 * removed!
498 * removed!
499 * removed!
500 * removed!
501 *
502 * removed!
503 * removed!
504 * removed!
505 *
506 * removed!
507 * removed!
508 * removed!
509 *
510 * removed!
511 * removed!
512 * removed!
513 *
514 *------------------------------------------------------------------------------
515 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
516 *==============================================================================
517 *******************************************************************************/
518
519#ifndef _ATP_IMC_STRUCT_H
520#define _ATP_IMC_STRUCT_H
521
522#include "l3_inc_local.h"
523#include "l3_inc_enums.h"
524#include "ps_public_enum.h"
525#include "sim_public_enum.h"
526#include "imc_msgid.h"
527#include "ims_common_def.h"
528
529typedef enum
530{
531 IMS_CS_CALL_START = 0,
532 IMS_CS_CALL_END,
533 IMS_CS_CALL_OTHERS,
534} ims_cs_call_status_enum;
535
536typedef enum
537{
538 VOICE_DOMAIN_STATUS_START = 0,
539 VOICE_DOMAIN_STATUS_STOP
540}voice_domain_status_enum;
541
542typedef enum
543{
544 IMS_1X_CALL_END = 0,
545 IMS_1X_CALL_START,
546 IMS_1X_CALL_OTHERS,
547} ims_1x_call_status_enum;
548
549/*************************/
550/* IMS Registration enum */
551/*************************/
552typedef enum {
553 IMS_VOPS_NOT_SUPPORTED = 0,
554 IMS_VOPS_SUPPORTED
555} vops_enum;
556
557// mirror from rmmi_reg_state_enum and nas_reg_status_enum @/mcu/modem/interface/ims/vdm_atp_struct.h
558typedef enum
559{
560 NAS_PS_REG_STATUS_NOT_REGISTERED = 0,
561 NAS_PS_REG_STATUS_REGISTERED_HOME,
562 NAS_PS_REG_STATUS_NOT_REGISTERED_SEARCHING,
563 NAS_PS_REG_STATUS_REG_DENIED,
564 NAS_PS_REG_STATUS_OUT_OF_COVERAGE,
565 NAS_PS_REG_STATUS_REGISTERED_ROAMING,
566 NAS_PS_REG_STATUS_SMS_ONLY_HOME,
567 NAS_PS_REG_STATUS_SMS_ONLY_ROAMING,
568 NAS_PS_REG_STATUS_EMERGENCY_ONLY,
569 NAS_PS_REG_STATUS_CSFB_NOT_PREFERRED_HOME,
570 NAS_PS_REG_STATUS_CSFB_NOT_PREFERRED_ROAMING
571} nas_ps_reg_status_enum;
572
573typedef enum
574{
575 WIFI_STATE_OFF = 0,
576 WIFI_STATE_ON
577}wifi_state_enum;
578
579typedef enum
580{
581 WIFI_STATE_CAUSE_GENERAL = 0,
582 WIFI_STATE_CAUSE_UI_DISABLE,
583 WIFI_STATE_CAUSE_MAX
584}wifi_state_cause_enum;
585
586typedef enum
587{
588 WIFI_STATE_TARGET_RAN_UNKNOWN = 0,
589 WIFI_STATE_TARGET_RAN_3GPP = 1,
590 WIFI_STATE_TARGET_RAN_WIFI = 2,
591 WIFI_STATE_TARGET_RAN_NONE = 254,
592 WIFI_STATE_TARGET_RAN_MAX = 255
593}wifi_state_target_ran_enum;
594
595typedef enum
596{
597 IMS_DEREG_CAUSE_BY_NONE = 0,
598 IMS_DEREG_CAUSE_BY_DATA_DEATTACH,
599 IMS_DEREG_CAUSE_BY_SS_CONFIG,
600 IMS_DEREG_CAUSE_BY_IMS_RECONFIG,
601 IMS_DEREG_CAUSE_BY_D2,
602 IMS_DEREG_CAUSE_BY_D2_REFRESH,
603 IMC_DEREG_CAUSE_BY_MAX
604}ims_dereg_cause_by_enum;
605
606typedef enum
607{
608 IMS_RF_OFF_TYPE_UNSPEC = 0,
609 IMS_RF_OFF_TYPE_EFUN = 1,
610 IMS_RF_OFF_TYPE_CFUN = 2
611}ims_rf_off_type_enum;
612
613typedef enum
614{
615 ECBM_STATE_STOP = 0,
616 ECBM_STATE_START = 1
617}ecbm_state_enum;
618
619typedef enum
620{
621 ECBM_CAUSE_TIMER_EXPIRED = 0,
622 ECBM_CAUSE_ANOTHER_CALL = 1,
623 ECBM_CAUSE_URC_TO_AP = 2, //IMC ignore when state is STOP
624}ecbm_cause_enum;
625
626typedef enum {
627 ATP_EGMC_OP_QUERY = 0,
628 ATP_EGMC_OP_SET,
629} atp_egmc_op_enum;
630
631typedef enum{
632 ATP_IMC_DRP_FLUSH_NVRAM = 0,
633 ATP_IMC_DRP_DUMP_TO_NVRAM,
634}atp_imc_drp_enum;
635/*
636* This enum only use for unblocking AT+ECCTRL to indicate AP should wait for network's response.
637* This enum values should be aligned with ims_cc_result_enum, using unused value of ims_cc_result_enum.
638*/
639typedef enum{
640 WAITING_FOR_NW_RESPONSE = -128,
641}CALL_CONTROL_PROVISIONAL_RESULT;
642
643typedef enum {
644 IMS_ECCTRL_STATE_CHANGE_HELD = 131,
645 IMS_ECCTRL_STATE_CHANGE_ACTIVE = 132
646} ims_ecctrl_enum;
647
648typedef struct {
649 LOCAL_PARA_HDR
650 ims_result_code_enum result;
651 ims_err_id_enum err_id;
652} atp_imc_common_at_rsp_struct;
653typedef atp_imc_common_at_rsp_struct atp_imc_common_at_cnf_struct;
654/*******************************/
655/* IMS Registration interface */
656/*******************************/
657/*
658 * Description
659 * - the primitive is used for PS to notify IMC that the operation modes for collecting
660 * - six conditions which mentioned in TS24.229 Annex L3.1.2.
661 * Direction
662 * - PS -> IMC
663 */
664typedef struct {
665 LOCAL_PARA_HDR
666 ue_mode_enum ue_mode_op;
667} atp_imc_ue_mode_update_req_struct;
668
669/*
670 * Description
671 * - the primitive is used for PS to notify IMC that UE is attached to NW or not, and IMSVoPS indicator
672 * - six conditions which mentioned in TS24.229 Annex L3.1.2.
673 * Direction
674 * - PS -> IMC
675 */
676typedef struct {
677 LOCAL_PARA_HDR
678#if 0
679/* under construction !*/
680#endif
681 vops_enum ims_vops;
682} atp_imc_imsvops_notification_req_struct;
683
684/*
685 * Description
686 * - the primitive is used for PS to notify IMC rat_type, cell_id, PLMN_type
687 * Direction
688 * - PS -> IMC
689 */
690typedef struct {
691 LOCAL_PARA_HDR
692 ims_rat_type_enum rat_type;
693 kal_uint32 cell_id;
694 cell_service_enum cell_service;
695 plmn_id_struct plmn_id;
696 plmn_type_enum plmn_type;
697 kal_uint8 la_code[2];
698 kal_uint8 ta_code[2];
699 kal_bool limited_service_emc_support;
700 domain_id_enum domain;
701 kal_bool is_empty_cell;
702} atp_imc_cell_info_update_req_struct;
703typedef atp_imc_cell_info_update_req_struct atp_imc_eimsinfo_req_struct;
704
705
706/*
707 * Description
708 * - the primitive is used for IMC identifing core network is support Emergency Bearer Service or not
709 * Direction
710 * - PS -> IMC
711 */
712typedef struct {
713 LOCAL_PARA_HDR
714 kal_bool is_emb_s1_support;
715} atp_imc_emb_s1_supp_req_struct; /* Obsolete: to be removed after code change */
716
717typedef struct {
718 LOCAL_PARA_HDR
719 ims_access_rat_enum rat_type;
720 kal_bool is_emb_support;
721} atp_imc_emb_support_req_struct;
722
723/*
724 * Description
725 * - the primitive is used for PS to notify IMC to do
726 * - 1. IMS de-registration
727 * - 2. Release PDN/signaling bearer and media bearer
728 * Direction
729 * - PS -> IMC
730 */
731typedef struct {
732 LOCAL_PARA_HDR
733 ims_dereg_cause_enum reason;
734 ims_rf_off_type_enum rf_off_type;
735 rfoff_cause_enum rf_off_cause;
736} atp_imc_power_off_req_struct;
737
738/*
739 * Description
740 * - the primitive is used for IMC to notify PS that IMS registration start.
741 * Direction
742 * - IMC -> PS
743 */
744typedef struct {
745 LOCAL_PARA_HDR
746 ims_reg_type_enum reg_type; //IMS_REG_TYPE_NORMAL=0, IMS_REG_TYPE_EMERGENCY=1
747} atp_imc_ims_reg_start_ind_struct;
748
749/*
750 * Description
751 * - the primitive is used for IMC to notify PS that IMS deregistration start.
752 * Direction
753 * - IMC -> PS
754 */
755typedef struct {
756 LOCAL_PARA_HDR
757 ims_reg_type_enum dereg_type; //IMS_REG_TYPE_NORMAL=0, IMS_REG_TYPE_EMERGENCY=1
758} atp_imc_ims_dereg_start_ind_struct;
759
760/*
761 * Description
762 * - the primitive is used for IMC to notify PS send exit ECBM to AP when PDN is deactivated.
763 * Direction
764 * - IMC -> PS
765 */
766typedef struct {
767 LOCAL_PARA_HDR
768 kal_bool reserve;
769} atp_imc_ims_exit_start_ind_struct;
770
771/*
772 * Description
773 * - the primitive is used for IMC to notify PS current IMS ENABLE state.
774 * Direction
775 * - IMC -> PS
776 */
777typedef struct {
778 LOCAL_PARA_HDR
779 kal_bool is_enabled;
780} atp_imc_ims_enable_ind_struct;
781
782/*
783 * Description
784 * - the primitive is used for IMC to notify +EIMS:0/1
785 * Direction
786 * - IMC -> PS
787 */
788typedef struct {
789 LOCAL_PARA_HDR
790 kal_bool is_enable;
791} atp_imc_eims_urc_ind_struct;
792
793/*
794 * Description
795 * - the primitive is acknowledge of "IMC_REG_POWER_OFF_IND"
796 * Direction
797 * - IMC -> PS
798 */
799typedef struct {
800 LOCAL_PARA_HDR
801 ims_dereg_cause_enum reason;
802 ims_rf_off_type_enum rf_off_type;
803} atp_imc_power_off_cnf_struct;
804
805/*
806 * @brief
807 * @note MSG_ID_ATP_IMC_ECFG_SET_REQ
808 * AT> AT+ECFGSET=<cfg_name>,<cfg_value>
809 */
810typedef struct {
811 LOCAL_PARA_HDR
812 kal_uint8 name[64];
813 kal_uint8 value[128];
814} atp_imc_ecfg_set_req_struct;
815
816/*
817 * @brief
818 * @note MSG_ID_ATP_IMC_ECFG_SET_CNF
819 * AT< OK or +CME ERROR:<err>
820 */
821typedef struct {
822 LOCAL_PARA_HDR
823 kal_bool result; // KAL_TRUE-success; KAL_FALSE-fail
824 ims_err_id_enum cause; // return "IMS_ERR_UNKNOWN" for all so far
825 // before define IMS domain proprietary cause
826} atp_imc_ecfg_set_cnf_struct;
827
828/*
829 * @brief
830 * @note MSG_ID_ATP_IMC_EMOCFG_REQ
831 * AT> AT+EMOCFG=<cfg_name>,<cfg_value>
832 */
833typedef struct {
834 LOCAL_PARA_HDR
835 kal_uint8 name[64];
836 kal_uint8 value[128];
837} atp_imc_emocfg_req_struct;
838
839/*
840 * @brief
841 * @note MSG_ID_ATP_IMC_EMOCFG_CNF
842 * AT< OK or +CME ERROR:<err>
843 */
844typedef struct {
845 LOCAL_PARA_HDR
846 kal_bool result;
847 ims_err_id_enum cause;
848} atp_imc_emocfg_cnf_struct;
849
850/*
851 * @brief
852 * @note MSG_ID_ATP_IMC_ECFG_GET_REQ
853 * AT> AT+ECFGSET=<cfg_name>
854 */
855typedef struct {
856 LOCAL_PARA_HDR
857 kal_uint8 name[64];
858} atp_imc_ecfg_get_req_struct;
859
860/*
861 * @brief
862 * @note MSG_ID_ATP_IMC_ECFG_GET_CNF
863 * AT< +ECFGGET:<cfg_name>,<cfg_value>
864 * AT< OK or +CME ERROR:<err>
865 */
866typedef struct {
867 LOCAL_PARA_HDR
868 kal_bool result; // KAL_TRUE-success; KAL_FALSE-fail
869 ims_err_id_enum cause; // return "IMS_ERR_UNKNOWN" for all so far
870 // before define IMS domain proprietary cause
871 kal_uint8 name[64];
872 kal_uint8 value[128];
873} atp_imc_ecfg_get_cnf_struct;
874
875/*
876 * @brief
877 * @note MSG_ID_ATP_IMC_ECFG_RESET_REQ
878 * AT> AT+ECFGRESET=<cfg_name>
879 */
880typedef struct {
881 LOCAL_PARA_HDR
882 kal_uint8 name[64];
883} atp_imc_ecfg_reset_req_struct;
884
885/*
886 * @brief
887 * @note MSG_ID_ATP_IMC_ECFG_RESET_CNF
888 * AT< OK or +CME ERROR:<err>
889 */
890typedef struct {
891 LOCAL_PARA_HDR
892 kal_bool result; // KAL_TRUE-success; KAL_FALSE-fail
893 ims_err_id_enum cause; // return "IMS_ERR_UNKNOWN" for all so far
894 // before define IMS domain proprietary cause
895} atp_imc_ecfg_reset_cnf_struct;
896
897/*
898 * @brief
899 * @note MSG_ID_ATP_IMC_EPVS_SET_REQ
900 * AT> AT+EPVSSET=<cfg_name>,<cfg_value>
901 */
902typedef struct {
903 LOCAL_PARA_HDR
904 kal_uint8 name[64];
905 kal_uint8 value[128];
906} atp_imc_epvs_set_req_struct;
907
908/*
909 * @brief
910 * @note MSG_ID_ATP_IMC_EPVS_SET_CNF
911 * AT< OK or +CME ERROR:<err>
912 */
913typedef struct {
914 LOCAL_PARA_HDR
915 kal_bool result;
916 ims_err_id_enum cause;
917} atp_imc_epvs_set_cnf_struct;
918
919/*
920 * @brief
921 * @note MSG_ID_ATP_IMC_EPVS_GET_REQ
922 * AT> AT+EPVSGET=<cfg_name>
923 */
924typedef struct {
925 LOCAL_PARA_HDR
926 kal_uint8 name[64];
927} atp_imc_epvs_get_req_struct;
928
929/*
930 * @brief
931 * @note MSG_ID_ATP_IMC_EPVS_GET_CNF
932 * AT< +EPVSGET:<cfg_name>,<cfg_value>
933 * AT< OK or +CME ERROR:<err>
934 */
935typedef struct {
936 LOCAL_PARA_HDR
937 kal_bool result;
938 ims_err_id_enum cause;
939 kal_uint8 name[64];
940 kal_uint8 value[128];
941} atp_imc_epvs_get_cnf_struct;
942
943/*
944 * @brief
945 * @note MSG_ID_ATP_IMC_QUERY_URI_TYPE_REQ
946 * AT+CDU=0
947 */
948typedef struct {
949 LOCAL_PARA_HDR
950} atp_imc_query_uri_type_req_struct;
951
952/*
953 * @brief
954 * @note MSG_ID_ATP_IMC_QUERY_URI_TYPE_CNF
955 */
956typedef struct {
957 LOCAL_PARA_HDR
958 kal_uint8 uri_type; // ims_uri_type_enum;
959} atp_imc_query_uri_type_cnf_struct;
960
961/*
962 * @brief
963 * @note MSG_ID_ATP_IMC_SET_EVS_SUPPORT_REQ
964 * AT>AT+EIMSEVS=0|1
965 */
966typedef struct {
967 LOCAL_PARA_HDR
968 kal_bool is_enable;
969} atp_imc_set_evs_support_req_struct;
970
971/*
972 * @brief
973 * @note MSG_ID_ATP_IMC_SET_EVS_SUPPORT_CNF
974 * AT< OK
975 */
976typedef struct {
977 LOCAL_PARA_HDR
978 kal_bool is_success;
979 kal_uint32 cause; // unused
980} atp_imc_set_evs_support_cnf_struct;
981
982/*
983 * @brief
984 * @note MSG_ID_ATP_IMC_TIMER_TEST_REQ
985 */
986
987typedef struct {
988 LOCAL_PARA_HDR
989 kal_uint8 number;
990} atp_imc_timer_test_req_struct;
991
992/*
993 * @note MSG_ID_ATP_IMC_INTER_RAT_STATUS_IND
994 * +EIRAT: <irat_status>, <irat_result>
995 */
996typedef struct {
997 LOCAL_PARA_HDR
998 ims_irat_status_enum irat_status;
999 kal_bool irat_result;
1000} atp_imc_inter_rat_status_ind_struct;
1001
1002/*
1003 * @brief
1004 * @note MSG_ID_ATP_IMC_AUTO_FAST_RETURN_IND
1005 * +EAFR=<afr_result>
1006 */
1007typedef struct {
1008 LOCAL_PARA_HDR
1009 kal_bool result;
1010} atp_imc_auto_fast_return_ind_struct;
1011
1012/*
1013 * @brief
1014 * @note MSG_ID_ATP_IMC_CS_CALL_STATUS_IND
1015 * +ECPI:<call_id>, <msg_type>, <is_ibt>, <is_tch>, <dir>, <call_mode>, <number>, <type>, "<pau>"[,<disc_cause>]
1016 */
1017typedef struct {
1018 LOCAL_PARA_HDR
1019 ims_cs_call_status_enum cs_call_status;
1020} atp_imc_cs_call_status_ind_struct;
1021
1022/*
1023 * @brief UE receive mt cs paging
1024 * note MSG_ID_ATP_IMC_MT_CS_PAGING_IND
1025 * +CIEV: 13
1026 */
1027typedef struct {
1028 LOCAL_PARA_HDR
1029} atp_imc_mt_cs_paging_ind_struct;
1030
1031/*
1032 * @brief
1033 * @note MSG_ID_ATP_IMC_VOICE_DOMAIN_STATUS_IND
1034 * AT+EVVS=<voice_status>
1035 */
1036typedef struct {
1037 LOCAL_PARA_HDR
1038 voice_domain_status_enum voice_domain_status;
1039} atp_imc_voice_domain_status_ind_struct;
1040
1041/*
1042 * @brief Turn on/off Radio link monitor
1043 * @note MSG_ID_ATP_SET_IMC_RLM_REQ
1044 */
1045typedef struct {
1046 LOCAL_PARA_HDR
1047 kal_uint8 enable;
1048} atp_imc_set_rlm_req_struct;
1049
1050/*
1051 * @brief IMS diable by AP
1052 * @note MSG_ID_ATP_IMC_IMS_DEREG_REQ/CNF
1053 * AT+EIMSDEREG:<cause>
1054 */
1055typedef struct {
1056 LOCAL_PARA_HDR
1057 kal_uint32 dereg_cause; //ims_dereg_cause_by_enum
1058} atp_imc_ims_dereg_req_struct,
1059 atp_imc_ims_dereg_cnf_struct;
1060
1061typedef struct
1062{
1063 LOCAL_PARA_HDR
1064 kal_uint8 dial_num[MAX_CC_ATD_NUM_LEN];
1065} atp_imc_fdn_ecc_check_req_struct;
1066
1067typedef struct
1068{
1069 LOCAL_PARA_HDR
1070 kal_bool is_allowed;
1071 kal_bool is_emergency;
1072 kal_uint16 emergency_service_category;
1073} atp_imc_fdn_ecc_check_cnf_struct;
1074
1075typedef struct
1076{
1077 LOCAL_PARA_HDR
1078 kal_uint8 dial_num[MAX_CC_ATD_NUM_LEN];
1079} atp_imc_ss_fdn_check_req_struct;
1080
1081typedef struct
1082{
1083 LOCAL_PARA_HDR
1084 kal_bool is_allowed;
1085} atp_imc_ss_fdn_check_cnf_struct;
1086
1087/*
1088 * @brief IMS diable by AP
1089 * @note MSG_ID_ATP_IMC_IMS_INIT_IND
1090 * AT+EIMSINVER:<AP>,<MD>
1091 */
1092typedef struct {
1093 LOCAL_PARA_HDR
1094 kal_uint32 ap_verno; //from imsa_connect_req
1095 kal_uint32 md_verno; //IMCB_IMC_HEADER_FILE_VERNO
1096} atp_imc_ims_init_ind_struct;
1097
1098/*
1099 * @brief
1100 * @note MSG_ID_ATP_IMC_C2K_SERVICE_STATE_REQ
1101 * +EC2KREG:<domain>, <state>, <service_type>
1102 */
1103typedef struct {
1104 LOCAL_PARA_HDR
1105 domain_id_enum domain;
1106 c2k_cell_service_enum state;
1107 c2k_rat_type_enum service_type;
1108} atp_imc_c2k_service_state_req_struct;
1109
1110/*
1111 * @brief
1112 * @note MSG_ID_ATP_IMC_C2K_CELL_INFO_UPDATE_REQ
1113 * +EC2KINFO:<access_type>, <sid>, <nid>, <pzid>, <base_id>, <sectot_id>, <subnet_length>, <carrier_id>
1114 */
1115typedef struct {
1116 LOCAL_PARA_HDR
1117 c2k_rat_type_enum access_type;
1118 kal_uint16 sid;
1119 kal_uint16 nid;
1120 kal_uint8 pzid;
1121 kal_uint16 base_id;
1122 kal_uint32 sectot_id[4];
1123 kal_uint8 subnet_length;
1124 kal_uint8 carrier_id[7];
1125} atp_imc_c2k_cell_info_update_req_struct;
1126
1127/*
1128 * @brief
1129 * @note MSG_ID_ATP_IMC_CAMPED_CELL_ID_UPDATE_REQ
1130 * +ECMPCID:<rat>,<ci>,<plmn_id>,<lac>,<tac>
1131 */
1132typedef struct {
1133 LOCAL_PARA_HDR
1134 ims_rat_type_enum rat_type;
1135 kal_uint64 cell_id;
1136 plmn_id_struct plmn_id;
1137 kal_uint8 la_code[2];
1138 kal_uint8 ta_code[3];
1139} atp_imc_camped_cell_id_update_req_struct;
1140
1141/*
1142 * @brief WFC profile from AP
1143 * @note MSG_ID_ATP_IMC_WFC_PROFILE_REQ/CNF
1144 * AT+EWFCP=<wfc_profile>
1145 */
1146typedef struct {
1147 LOCAL_PARA_HDR
1148 wfc_profile_enum wfc_profile;
1149} atp_imc_wfc_profile_req_struct;
1150
1151typedef struct {
1152 LOCAL_PARA_HDR
1153 kal_bool is_success;
1154 kal_uint32 cause; // un-used
1155} atp_imc_wfc_profile_cnf_struct;
1156
1157/*
1158 * @brief RCS feature tag from AP
1159 * @note MSG_ID_ATP_IMC_RCS_FEATURE_REQ/CNF
1160 * AT+EIMSRCS=<rcs_state><rcs_feature>
1161 */
1162typedef struct {
1163 LOCAL_PARA_HDR
1164 kal_uint8 rcs_state;
1165 kal_uint32 rcs_feature;
1166} atp_imc_rcs_feature_req_struct;
1167
1168typedef struct {
1169 LOCAL_PARA_HDR
1170 kal_bool is_success;
1171 kal_uint32 cause; // un-used
1172} atp_imc_rcs_feature_cnf_struct;
1173
1174/*
1175 * @brief user-defined SIP headers from AP
1176 * @note MSG_ID_ATP_IMC_SIP_HEADER_REQ/CNF
1177 * AT+ESIPHEADER=<header count>, <header name>, <value>, <header name>, <value>, ...
1178 */
1179typedef struct {
1180 LOCAL_PARA_HDR
1181 kal_uint8 value[256];
1182} atp_imc_sip_header_req_struct;
1183
1184typedef struct {
1185 LOCAL_PARA_HDR
1186 kal_bool is_success;
1187 kal_uint32 cause; // un-used
1188} atp_imc_sip_header_cnf_struct;
1189
1190/*
1191 * Description
1192 * - the primitive is indicator of "AT+ERAT"
1193 * Direction
1194 * - ATP -> IMC
1195 */
1196typedef struct {
1197 LOCAL_PARA_HDR
1198 kal_uint8 rat_mode;
1199 kal_uint8 prefer_rat;
1200 kal_uint16 ref_num;
1201} atp_imc_switch_prefer_rat_req_struct;
1202/*
1203 * Description
1204 * - the primitive is acknowledge of "MSG_ID_ATP_IMC_SWITCH_PREFER_RAT_REQ"
1205 * Direction
1206 * - IMC -> ATP
1207 */
1208typedef struct {
1209 LOCAL_PARA_HDR
1210 kal_uint16 ref_num;
1211} atp_imc_switch_prefer_rat_cnf_struct;
1212
1213/*
1214 * @brief
1215 * @note MSG_ID_ATP_IMC_SS_ECT_REQ
1216 * AT>AT+ECT=<ect_type>,<target_number>
1217 */
1218typedef struct {
1219 LOCAL_PARA_HDR
1220 kal_uint8 ect_type;
1221 kal_uint8 pad[3];
1222 kal_uint8 pau[IMC_MAX_ASSERTED_URI];
1223 kal_uint8 device_id[IMC_MAX_UUID_LEN];
1224} atp_imc_ss_ect_req_struct;
1225
1226
1227/*
1228 * @brief
1229 * @note MSG_ID_ATP_IMC_SS_ECT_CNF
1230 * AT< OK | ...
1231 */
1232typedef struct {
1233 LOCAL_PARA_HDR
1234 ims_cc_result_enum result;
1235 ims_cc_cause_enum cause;
1236} atp_imc_ss_ect_cnf_struct;
1237
1238/*
1239 * @brief
1240 * @note MSG_ID_ATP_IMC_SET_TEXT_CAPABILITY_REQ/CNF
1241 * AT+CTMCALL=<enable>
1242 */
1243typedef struct {
1244 LOCAL_PARA_HDR
1245 kal_uint8 enable;
1246} atp_imc_set_text_capability_req_struct;
1247
1248typedef struct {
1249 LOCAL_PARA_HDR
1250 kal_bool is_success;
1251 kal_uint32 cause; // un-used
1252} atp_imc_set_text_capability_cnf_struct;
1253
1254typedef struct {
1255 LOCAL_PARA_HDR
1256 kal_bool is_success;
1257 kal_uint32 cause; // un-used
1258} atp_imc_tty_capability_ind_struct;
1259
1260typedef struct {
1261 LOCAL_PARA_HDR
1262 kal_uint8 tty_mode; // TTY off:0, TTY Full:1, TTY HCO:2 (hearing carryover), TTY VCO:3 (voice carryover)
1263}atp_imc_ctmcall_ind_struct;
1264typedef atp_imc_common_at_rsp_struct atp_imc_ctmcall_rsp_struct;
1265
1266/*
1267 * @brief
1268 * @note MSG_ID_ATP_IMC_RTT_CAPABILITY_REQ/CNF
1269 * AT+EIMSRTT=<op>
1270 */
1271typedef struct {
1272 LOCAL_PARA_HDR
1273 kal_uint8 operation;
1274} atp_imc_rtt_capability_req_struct;
1275
1276typedef struct {
1277 LOCAL_PARA_HDR
1278 kal_bool is_success;
1279 kal_uint32 cause; // un-used
1280} atp_imc_rtt_capability_cnf_struct;
1281
1282/*
1283 * @brief
1284 * @note MSG_ID_ATP_IMC_RTT_OP_REQ/CNF
1285 * AT+RTTCALL = <call id>, <op>
1286 */
1287typedef struct {
1288 LOCAL_PARA_HDR
1289 kal_uint32 call_id;
1290 kal_uint32 op;
1291} atp_imc_cc_rtt_op_req_struct;
1292
1293typedef struct {
1294 LOCAL_PARA_HDR
1295 kal_uint32 acct_id;
1296 kal_uint32 call_id;
1297 kal_uint32 result;
1298} atp_imc_cc_rtt_op_cnf_struct;
1299
1300/*
1301 * @brief
1302 * @note MSG_ID_ATP_IMC_C2K_ECBM_STATE_REQ
1303 * +CIEV:<102>,<state>
1304 */
1305typedef struct {
1306 LOCAL_PARA_HDR
1307 kal_uint8 ecbm_state; //ecbm_state_enum
1308 kal_uint8 ecbm_stop_cause; //ecbm_stop_cause_enum
1309} atp_imc_c2k_ecbm_state_ind_struct;
1310
1311/*
1312 * @brief
1313 * @note MSG_ID_ATP_IMC_1X_CALL_STATUS_IND
1314 * +EC2KCI:<call_status>
1315 */
1316typedef struct{
1317 LOCAL_PARA_HDR
1318 ims_1x_call_status_enum c2k_1x_call_status;
1319} atp_imc_c2k_1x_call_status_ind_struct;
1320
1321/*
1322 * @brief
1323 * @note MSG_ID_ATP_IMC_TAU_FAIL_IND
1324 * +ETAUFAIL:<cause>
1325 */
1326typedef struct{
1327 LOCAL_PARA_HDR
1328 kal_uint8 cause;
1329} atp_imc_tau_fail_ind_struct;
1330
1331typedef struct {
1332 LOCAL_PARA_HDR
1333 kal_uint32 atcmd_id;
1334 kal_bool no_cnf;
1335 kal_uint8 cmdline[IMC_ATCMD_MAX_CMDLINE_LEN];
1336}atp_imc_atcmd_relay_ind_struct,
1337 atp_imc_atcmd_relay_req_struct;
1338
1339typedef struct {
1340 LOCAL_PARA_HDR
1341 kal_bool is_success;
1342 kal_uint32 cause; // un-used
1343} atp_imc_atcmd_relay_cnf_struct;
1344
1345/*
1346 * Description
1347 * - the primitive is request of "MSG_ID_ATP_IMC_MIMS_CAPABILITY_REQ"
1348 * Direction
1349 * - ATP -> IMC
1350 */
1351typedef struct {
1352 LOCAL_PARA_HDR
1353 kal_uint32 reserved;
1354} atp_imc_mims_capability_req_struct;
1355
1356/*
1357 * Description
1358 * - the primitive is response of "MSG_ID_ATP_IMC_MIMS_CAPABILITY_CNF"
1359 * Direction
1360 * - IMC -> ATP
1361 */
1362typedef struct {
1363 LOCAL_PARA_HDR
1364 kal_bool is_success;
1365 kal_uint8 mims_num;
1366 kal_uint32 cause;
1367} atp_imc_mims_capability_cnf_struct;
1368
1369/*
1370 * Description
1371 * - the primitive is used for IMC to notify PS current IMS Roaming support or not.
1372 * Direction
1373 * - IMC -> ATP
1374 */
1375typedef struct {
1376 LOCAL_PARA_HDR
1377 kal_bool is_enabled;
1378} atp_imc_ims_roaming_ind_struct;
1379
1380/*
1381 * Description
1382 * - NWSEL is searching the available NW or not.
1383 * Direction
1384 * - ATP -> IMC
1385 */
1386typedef struct {
1387 LOCAL_PARA_HDR
1388 kal_bool is_searching;
1389} atp_imc_nw_search_status_ind_struct;
1390
1391/*
1392 * Description
1393 * - the primitive is used for IMC to notify PS IMS special event.
1394 * Direction
1395 * - IMC -> ATP
1396 */
1397typedef struct {
1398 LOCAL_PARA_HDR
1399 ims_special_event_enum special_event;
1400 imcb_imc_sip_cause_enum sip_cause;
1401} atp_imc_ims_event_ind_struct;
1402
1403#define IMC_AT_CMD_TO_MD_NAME_LEN 32
1404#define IMC_AT_CMD_TO_MD_VALUE_LEN 512
1405/*
1406 * Description
1407 * - the primitive is response of "MSG_ID_ATP_IMC_AT_CMD_TO_MD_IND"
1408 * Direction
1409 * - IMC -> ATP
1410 */
1411typedef struct {
1412 LOCAL_PARA_HDR
1413 atp_egmc_op_enum op;
1414 kal_uint8 name[IMC_AT_CMD_TO_MD_NAME_LEN];
1415 kal_uint8 value[IMC_AT_CMD_TO_MD_VALUE_LEN];
1416} atp_imc_at_cmd_to_md_ind_struct;
1417
1418typedef struct {
1419 LOCAL_PARA_HDR
1420 atp_imc_drp_enum op;
1421} atp_imc_dump_runtime_para_req_struct;
1422
1423
1424/*
1425 * @brief
1426 * @note MSG_ID_ATP_IMC_ECNCFG_REQ
1427 * AT> AT+ECNCFG=<>
1428 */
1429typedef struct {
1430 LOCAL_PARA_HDR
1431 kal_uint8 mobile_data;
1432 kal_uint8 data_roaming;
1433} atp_imc_ecncfg_req_struct;
1434
1435/*
1436 * Description
1437 * - the primitive is used for IMC to notify PS that STK call over IMS success.
1438 * Direction
1439 * - IMC -> PS
1440 */
1441typedef struct {
1442 LOCAL_PARA_HDR
1443 kal_uint16 terminal_response; //80 for AT+STKCALL=0, 81 for AT+STKCALL=4
1444} atp_imc_ims_stkcall_ind_struct;
1445
1446/*
1447 * Description
1448 * - the primitive is response of "MSG_ID_ATP_IMC_EIMSGEO_REQ"
1449 * Direction
1450 * - ATP -> IMC
1451 */
1452typedef struct {
1453 LOCAL_PARA_HDR
1454 kal_uint8 wifi_mac[20];
1455} atp_imc_eimsgeo_req_struct;
1456
1457typedef struct {
1458 LOCAL_PARA_HDR
1459 kal_int8 account_id;
1460 kal_int8 broadcast_flag;
1461 kal_int32 latitude[2];
1462 kal_int32 longitude[2];
1463 kal_int32 accuracy;
1464 kal_char method[16];
1465 kal_char city[32];
1466 kal_char state[32];
1467 kal_char zip[8];
1468 kal_char country_code[8];
1469 kal_char mcc[MAX_GEO_MCC_NUM][MAX_MCC_STR_LEN];
1470} atp_imc_eimsgeo_ind_struct;
1471
1472/*
1473 * @brief response of AT+ECCTRL
1474 * @note MSG_ID_IMSP_CALL_CONTROL_IND
1475 */
1476typedef struct {
1477 LOCAL_PARA_HDR
1478 ims_cc_result_enum result;
1479 ims_cc_cause_enum cause;
1480 kal_int32 operation; //imcb_imc_ss_operation_enum map to ims_ecctrl_enum
1481} atp_imc_call_control_ind_struct;
1482
1483/*
1484 * @brief
1485 * @note MSG_ID_ATP_IMC_CALL_CONTROL_V2_REQ
1486 * AT>AT+ECCTRL=<call_id>,<call_state>,<is_unblocking>
1487 */
1488typedef struct {
1489 LOCAL_PARA_HDR
1490 kal_uint8 call_id;
1491 ims_ecctrl_enum call_state;
1492 kal_uint8 is_unblocking;
1493} atp_imc_call_control_v2_req_struct;
1494
1495
1496
1497/*
1498 * Description
1499 * - the primitive is used for PS to notify IMC that the UE is in limited service
1500 * Direction
1501 * - PS -> IMC
1502 */
1503typedef struct {
1504 LOCAL_PARA_HDR
1505 kal_bool t311_expire_flag;
1506 imcf_uint8 pad[3];
1507} atp_imc_oos_start_req_struct;
1508
1509/*
1510 * Description
1511 * - the primitive is used for PS to notify IMC that the UE is out of limited service
1512 * Direction
1513 * - PS -> IMC
1514 */
1515typedef struct {
1516 LOCAL_PARA_HDR
1517} atp_imc_oos_end_req_struct;
1518
1519/*
1520 * Description
1521 * - the primitive is used for IMC to notify PS current IMS REG state. (IMC has to indicate VDM + PS other modules)
1522 * Direction
1523 * - IMC -> PS
1524 */
1525typedef struct {
1526 LOCAL_PARA_HDR
1527 ims_reg_state_enum reg_state; // REGISTERED, UNREGISTERED
1528 ims_reg_sub_state_enum reg_sub_state;
1529 ims_reg_type_enum reg_type; // normal or emergency reg
1530 ims_dereg_cause_enum dereg_cause; //ims_comm_def.h
1531 ims_access_rat_enum rat;
1532 ims_ecmp_enum ecmp;
1533 /* ViLTE */
1534 ims_reg_service_enum reg_service;
1535 imcf_bool ims_retry;
1536 imcf_bool has_sent_register;
1537 imcf_uint8 pad[2];
1538 ims_reg_event_enum reg_event;
1539 ims_reg_sip_uri_type_enum sip_uri_type;
1540 imcb_imc_sip_cause_enum sip_cause; //imcb_imc_sip_cause_enum
1541} atp_imc_ims_reg_status_ind_struct;
1542
1543// CC Interface
1544typedef struct atp_imc_cc_call_progress_ind_struct {
1545 LOCAL_PARA_HDR
1546 kal_uint8 call_id;
1547 kal_uint8 msg_type;
1548 ims_ecpi_info_struct ecpi_info;
1549} atp_imc_cc_call_progress_ind_struct;
1550
1551typedef struct atp_imc_cc_imsems_ind_struct {
1552 LOCAL_PARA_HDR
1553 kal_uint8 call_id;
1554} atp_imc_cc_imsems_ind_struct;
1555
1556typedef struct atp_imc_cc_evtstatus_ind_struct {
1557 LOCAL_PARA_HDR
1558 kal_bool is_on;
1559} atp_imc_cc_evtstatus_ind_struct;
1560
1561typedef struct atp_imc_cc_espeech_ind_struct {
1562 LOCAL_PARA_HDR
1563 kal_bool is_on;
1564} atp_imc_cc_espeech_ind_struct;
1565
1566typedef struct atp_imc_cc_cssu_ind_struct {
1567 LOCAL_PARA_HDR
1568 kal_uint8 msg_type;
1569} atp_imc_cc_cssu_ind_struct;
1570
1571/*
1572 * @brief
1573 * @note MSG_ID_ATP_IMC_CALL_CONTROL_REQ
1574 * AT>AT+ECCTRL=<call_id>,<call_state>
1575 */
1576typedef struct {
1577 LOCAL_PARA_HDR
1578 kal_uint8 call_id;
1579 ims_ecctrl_enum call_state;
1580} atp_imc_call_control_req_struct;
1581
1582/*
1583 * @brief
1584 * @note MSG_ID_ATP_IMC_CALL_CONTROL_CNF
1585 * AT< OK | ...
1586 */
1587typedef struct {
1588 LOCAL_PARA_HDR
1589 ims_cc_result_enum result;
1590 ims_cc_cause_enum cause;
1591 kal_int32 operation; //imcb_imc_ss_operation_enum map to ims_ecctrl_enum
1592} atp_imc_call_control_cnf_struct;
1593
1594typedef struct {
1595 LOCAL_PARA_HDR
1596 kal_uint8 call_id;
1597 kal_uint8 dir;
1598 kal_uint8 msg_type;
1599 kal_uint8 method;
1600 kal_uint16 response_code;
1601 imcf_uint8 reason_text[IMC_MAX_REASON_TEXT_LENGTH];
1602} atp_imc_sip_call_progress_ind_struct;
1603
1604
1605typedef enum {
1606 IMS_SR_AC_BARRED = 0,
1607 IMS_SR_NW_REJ_CONN_REQUEST = 1,
1608 IMS_SR_T3346_START = 2,
1609 IMS_SR_T3346_STOP = 3,
1610 IMS_SR_T3346_EXPIRY = 4,
1611 IMS_SR_CONN_FAIL = 5,
1612 IMS_SR_T3525_START = 6,
1613 IMS_SR_T3540_START = 7,
1614} ims_service_request_fail_enum;
1615
1616typedef struct {
1617 LOCAL_PARA_HDR
1618 ims_service_request_fail_enum cause;
1619} atp_imc_service_request_fail_req_struct;
1620
1621// SS Interface
1622typedef enum {
1623 IMS_CONF_OP_ADD = 0, // add
1624 IMS_CONF_OP_REMOVE = 1, // remove
1625 IMS_CONF_OP_MAX
1626} ims_conf_operation_enum;
1627
1628
1629typedef enum {
1630 IMS_NOTIFY_SERVICE_CALL_WAITING = 259, // mapped <service_id> = 259
1631 IMS_NOTIFY_SERVICE_CALL_BARRING = 256, // mapped <service_id> = 256
1632 IMS_NOTIFY_SERVICE_CALL_FORWARDING = 13, // mapped <service_id> = 13
1633 IMS_NOTIFY_SERVICE_CALL_MWI = 3, // Not used
1634 IMS_NOTIFY_SERVICE_CALL_CONFERENCE = 4, // Not used
1635 IMS_NOTIFY_SERVICE_CALL_MT_FORWARDING = 257,
1636 IMS_NOTIFY_SERVICE_NOTIFY_DIALOG = 258,
1637 IMS_NOTIFY_SERVICE_MAX
1638} ims_notify_service_enum;
1639
1640/*
1641 * @brief
1642 * @note MSG_ID_ATP_IMC_SS_SET_VIDEO_ABILITY_REQ
1643 * AT>AT+EIMSCCP=0|1
1644 */
1645typedef struct {
1646 LOCAL_PARA_HDR
1647 kal_bool is_enable;
1648} atp_imc_ss_set_video_ability_req_struct;
1649
1650/*
1651 * @brief
1652 * @note MSG_ID_ATP_IMC_SS_SET_VIDEO_ABILITY_CNF
1653 * AT< OK
1654 */
1655typedef struct {
1656 LOCAL_PARA_HDR
1657 kal_bool is_success;
1658 kal_uint32 cause; //unused
1659} atp_imc_ss_set_video_ability_cnf_struct;
1660
1661/*
1662 * @brief
1663 * @note MSG_ID_ATP_IMC_SET_VOICE_CAPABILITY_REQ
1664 * AT>AT+EIMSVOICE=0|1
1665 */
1666typedef struct {
1667 LOCAL_PARA_HDR
1668 kal_bool is_enable;
1669} atp_imc_set_voice_capability_req_struct;
1670
1671/*
1672 * @brief
1673 * @note MSG_ID_ATP_IMC_SET_VOICE_CAPABILITY_CNF
1674 * AT< OK
1675 */
1676typedef struct {
1677 LOCAL_PARA_HDR
1678 kal_bool is_success;
1679 kal_uint32 cause; //unused
1680} atp_imc_set_voice_capability_cnf_struct;
1681
1682/*
1683 * @brief
1684 * @note MSG_ID_ATP_IMC_SET_SMS_CAPABILITY_REQ
1685 * AT>AT+EIMSSMS=0|1
1686 */
1687typedef struct {
1688 LOCAL_PARA_HDR
1689 kal_bool is_enable;
1690} atp_imc_set_sms_capability_req_struct;
1691
1692/*
1693 * @brief
1694 * @note MSG_ID_ATP_IMC_SET_SMS_CAPABILITY_CNF
1695 * AT< OK
1696 */
1697typedef struct {
1698 LOCAL_PARA_HDR
1699 kal_bool is_success;
1700 kal_uint32 cause; //unused
1701} atp_imc_set_sms_capability_cnf_struct;
1702
1703#define ATP_IMC_SS_CONFERENCE_CONTROL_REQ_NUM_LEN IMC_MAX_CONF_CONTROL_URI_LENGTH /* same as in imcb_imc_ss_conference_control_req_struct */
1704
1705/*
1706 * @brief
1707 * @note MSG_ID_ATP_IMC_SS_CONFERENCE_CONTROL_REQ
1708 * AT>AT+ECONF=<conf_call_id>,<operation>,<num>[,<joined_call_id>]
1709 */
1710typedef struct {
1711 LOCAL_PARA_HDR
1712 kal_uint8 conf_call_id;
1713 ims_conf_operation_enum operation;
1714 kal_uint8 num[ATP_IMC_SS_CONFERENCE_CONTROL_REQ_NUM_LEN];
1715 kal_uint8 joined_call_id;
1716} atp_imc_ss_conference_control_req_struct;
1717
1718
1719/*
1720 * @brief
1721 * @note MSG_ID_ATP_IMC_SS_CONFERENCE_CONTROL_CNF
1722 * AT< OK | ...
1723 */
1724typedef struct {
1725 LOCAL_PARA_HDR
1726 ims_cc_result_enum result;
1727 ims_cc_cause_enum cause;
1728} atp_imc_ss_conference_control_cnf_struct;
1729
1730
1731/*
1732 * @brief
1733 * @note MSG_ID_ATP_IMC_SS_SUBSCRIBE_CONTROL_IND
1734 * AT< +ESUBCTRL:<call_id>,<event>,<result>,<cause>
1735 */
1736typedef struct {
1737 LOCAL_PARA_HDR
1738 kal_uint8 call_id;
1739 ims_ss_sub_event_enum event;
1740 ims_cc_result_enum result;
1741 ims_cc_cause_enum cause;
1742} atp_imc_ss_subscribe_control_ind_struct;
1743
1744
1745/*
1746 * @brief
1747 * @note MSG_ID_ATP_IMC_SS_CONFERENCE_CONTROL_IND
1748 * AT< +ECONF:<conf_call_id>,<operation>,<num>,<result>,<cause>[,<joined_call_id>]
1749 */
1750typedef struct {
1751 LOCAL_PARA_HDR
1752 kal_uint8 conf_call_id;
1753 ims_conf_operation_enum operation;
1754 kal_uint8 num[MAX_CC_ATD_NUM_LEN];
1755 kal_uint8 joined_call_id;
1756 ims_cc_result_enum result;
1757 ims_cc_cause_enum cause;
1758} atp_imc_ss_conference_control_ind_struct;
1759
1760
1761/*
1762 * @brief
1763 * @note MSG_ID_ATP_IMC_SS_PROGRESS_NOTIFY_IND
1764 * AT< +ECMCCSS:<call_id>,<service_id>,<data>
1765 */
1766typedef struct {
1767 LOCAL_PARA_HDR
1768 kal_uint8 call_id;
1769 ims_notify_service_enum service;
1770 kal_uint8 data[MAX_SS_NOTIFY_DATA_LEN]; // 512
1771} atp_imc_ss_progress_notify_ind_struct;
1772
1773/*
1774 * @brief
1775 * @note MSG_ID_ATP_IMC_SS_ECT_IND
1776 * AT< +ECT:<call_id>,<ect_result>,<cause>
1777 */
1778typedef struct {
1779 LOCAL_PARA_HDR
1780 kal_uint8 call_id;
1781 kal_uint8 result;
1782 ims_disc_cause_enum cause;
1783} atp_imc_ss_ect_ind_struct;
1784
1785/* WFC */
1786typedef struct {
1787 LOCAL_PARA_HDR
1788 ims_access_rat_enum source_rat;
1789 ims_access_rat_enum target_rat;
1790 ims_reg_type_enum reg_type;
1791}atp_imc_handover_start_ind_struct;
1792
1793typedef struct {
1794 LOCAL_PARA_HDR
1795 ims_access_rat_enum source_rat;
1796 ims_access_rat_enum target_rat;
1797 kal_bool result; /* fail (FALSE) or success (TRUE) */
1798 ims_reg_type_enum reg_type;
1799}atp_imc_handover_stop_ind_struct;
1800
1801/*
1802 * @brief
1803 * @note MSG_ID_ATP_IMC_CC_MEDIA_MOD_IND
1804 */
1805/* VILTE */
1806typedef struct {
1807 LOCAL_PARA_HDR
1808 kal_uint8 call_id;
1809 ims_call_mode_enum call_mode;
1810 ims_cc_camera_direction_enum camera_direction;
1811 kal_uint8 audio_direction;
1812 kal_uint8 audio_codec; // opaque
1813 kal_int8 p_assert_uri[IMS_P_ASSERT_URI_LEN];
1814} atp_imc_cc_media_mod_ind_struct;
1815
1816typedef struct {
1817 LOCAL_PARA_HDR
1818 kal_uint8 call_id;
1819 kal_uint8 local_video_capability;
1820 kal_uint8 remote_video_capability;
1821} atp_imc_cc_video_cap_ind_struct;
1822
1823typedef struct {
1824 LOCAL_PARA_HDR
1825 kal_uint8 call_id;
1826 kal_uint8 local_text_capability;
1827 kal_uint8 remote_text_capability;
1828 kal_uint8 local_text_status;
1829 kal_uint8 real_remote_text_capability;
1830} atp_imc_cc_text_cap_ind_struct;
1831
1832/*
1833 * @brief Turn on/off Radio link monitor
1834 * @note MSG_ID_ATP_IMC_RLM_EVENT_IND
1835 */
1836typedef struct {
1837 LOCAL_PARA_HDR
1838 kal_uint8 reserve;
1839 kal_uint8 event_type;
1840 kal_uint16 band;
1841} atp_imc_rlm_event_ind_struct;
1842
1843/**
1844 * @brief USSD AT Command RILD-->ATP-->IMC-->IMCB-->UA
1845 * @note MSG_ID_ATP_IMC_SEND_USSD_REQ
1846 */
1847typedef struct atp_imc_send_ussd_req {
1848 LOCAL_PARA_HDR
1849 kal_uint8 cmd_class; /*< class */
1850 kal_uint8 operation; /*< oper */
1851 kal_uint16 action; /*< action */
1852 kal_uint8 language[IMS_USSD_LANGUANGE_LEN]; /*< language */
1853 kal_uint16 error_code; /*< error_code */
1854 kal_uint16 message_len; /*< message length */
1855 kal_uint8 message[IMS_USSD_MAX_MSG_LEN];
1856 kal_uint8 digit_from_line_number[IMC_MAX_URI_LENGTH];
1857} atp_imc_send_ussd_req_struct;
1858
1859/**
1860 * @brief USSD AT Command RILD<--ATP<--IMC<--IMCB<--UA
1861 * @note MSG_ID_ATP_IMC_SEND_USSD_CNF
1862 */
1863typedef struct atp_imc_send_ussd_cnf {
1864 LOCAL_PARA_HDR
1865 kal_uint32 response; /*< OK or ERROR, may be extended to CME ERROR later on*/
1866} atp_imc_send_ussd_cnf_struct;
1867
1868/**
1869 * @brief USSD AT Command RILD<--ATP<--IMC<--IMCB<--UA
1870 * @note MSG_ID_ATP_IMC_RECV_USSD_IND
1871 */
1872typedef struct atp_imc_recv_ussd_ind {
1873 LOCAL_PARA_HDR
1874 kal_uint8 urc_class; /*< class */
1875 kal_uint8 alert_pattern; /*< Alertin Pattern for AP */
1876 kal_uint8 padding[2]; /*< oper */
1877 kal_uint16 status; /*< status */
1878 kal_uint16 sip_cause; /*< status */
1879 kal_uint8 language[IMS_USSD_LANGUANGE_LEN]; /*< language */
1880 kal_uint16 error_code; /*< error_code */
1881 kal_uint16 message_len; /*< message length */
1882 kal_uint8 message[IMS_USSD_MAX_MSG_LEN];
1883 kal_uint8 digit_from_line_number[IMC_MAX_URI_LENGTH];
1884} atp_imc_recv_ussd_ind_struct;
1885
1886/*
1887 * @brief
1888 * @note MSG_ID_ATP_IMC_SET_EMERGENCY_AID_REQ
1889 * AT>AT+EIMSAID="xxxx-yyyy-wwww-zzzz"
1890 */
1891typedef struct {
1892 LOCAL_PARA_HDR
1893 kal_uint8 emergency_aid[IMC_MAX_EMERGENCY_AID_LEN];
1894} atp_imc_set_emergency_aid_req_struct;
1895
1896/*
1897 * @brief
1898 * @note MSG_ID_ATP_IMC_SET_EMERGENCY_AID_CNF
1899 * AT< OK
1900 */
1901typedef struct {
1902 LOCAL_PARA_HDR
1903 kal_bool is_success;
1904 kal_uint32 cause; //unused
1905} atp_imc_set_emergency_aid_cnf_struct;
1906
1907/*
1908 * @brief
1909 * @note MSG_ID_ATP_IMC_CISRVCC_REQ
1910 * AT>AT+CISRVCC=0|1
1911 */
1912typedef struct {
1913 LOCAL_PARA_HDR
1914 kal_bool is_enable;
1915} atp_imc_cisrvcc_req_struct;
1916
1917/*
1918 * @brief
1919 * @note MSG_ID_ATP_IMC_CISRVCC_CNF
1920 * AT< OK
1921 */
1922typedef struct {
1923 LOCAL_PARA_HDR
1924 kal_bool is_success;
1925 kal_uint32 cause; //unused
1926} atp_imc_cisrvcc_cnf_struct;
1927
1928/*
1929 * @brief
1930 * @note MSG_ID_ATP_IMC_IMS_TIMER_STATUS_IND
1931 * AT+EITMR=<timer_type>,<timer_status>,<timer_length>
1932 */
1933typedef struct {
1934 LOCAL_PARA_HDR
1935 kal_uint32 account_id; /*< Account ID*/
1936 kal_uint32 timer_type; // ims_timer_type_enum
1937 kal_uint32 timer_status; // ims_timer_status_enum
1938 kal_uint16 timer_length;
1939 kal_uint8 pad[2];
1940} atp_imc_ims_timer_status_ind_struct;
1941
1942/*
1943 * @brief
1944 * @note MSG_ID_ATP_IMC_NORMAL_REG_CSCM_REQ
1945 * AT>AT+CSCM=<service_type>,<action>
1946 */
1947typedef struct {
1948 LOCAL_PARA_HDR
1949 ims_scm_info_type_enum service_type;
1950 ims_scm_info_action_enum action;
1951} atp_imc_normal_reg_cscm_req_struct;
1952
1953
1954/*
1955 * @brief
1956 * @note MSG_ID_ATP_IMC_NORMAL_REG_CSCM_CNF
1957 * AT< OK | ...
1958 */
1959typedef struct {
1960 LOCAL_PARA_HDR
1961 kal_bool result;
1962} atp_imc_normal_reg_cscm_cnf_struct;
1963
1964/*
1965 * @brief
1966 * @note MSG_ID_ATP_IMC_REGUA_REMAIN_TIME_IND
1967 */
1968typedef struct {
1969 LOCAL_PARA_HDR
1970 kal_uint8 rereg_flag; // send rereg_time or not
1971 kal_int32 rereg_remain_time; // rereg_time
1972 kal_uint8 resub_flag; // send resub_time or not
1973 kal_int32 resub_remain_time; // resub_time
1974} atp_imc_regua_remain_time_ind_struct;
1975
1976/*
1977 * Description
1978 * - to query IMEI SVN from L4
1979 * Direction
1980 * - IMC -> ATP
1981 */
1982typedef struct {
1983 LOCAL_PARA_HDR
1984} atp_imc_query_imei_svn_req_struct;
1985
1986typedef struct
1987{
1988 LOCAL_PARA_HDR
1989 kal_uint8 imei_svn[IMC_MAX_IMEI_SVN_LEN];
1990} atp_imc_query_imei_svn_cnf_struct;
1991
1992/*
1993 * @brief
1994 * @note MSG_ID_ATP_IMC_EVOLTESI_CONFIG_IND
1995 * AT+EVOLTESI
1996 */
1997typedef struct {
1998 LOCAL_PARA_HDR
1999 enh_volte_si_enum config;
2000} atp_imc_evoltesi_config_ind_struct;
2001
2002
2003#endif