#include "base_datatype_def.txt"
#include "extern_datatype_def.txt"







typedef unsigned int uintptr_t;
typedef int intptr_t;
typedef signed char int8_t;




typedef signed short int16_t;




typedef signed int int32_t;




typedef signed long long int64_t;




typedef signed long long intmax_t;




typedef unsigned char uint8_t;




typedef unsigned short uint16_t;




typedef unsigned int uint32_t;




typedef unsigned long long uint64_t;
typedef unsigned long long uintmax_t;

typedef int8_t int_fast8_t;
typedef int64_t int_fast64_t;

typedef int8_t int_least8_t;
typedef int16_t int_least16_t;
typedef int32_t int_least32_t;
typedef int64_t int_least64_t;

typedef uint8_t uint_fast8_t;
typedef uint64_t uint_fast64_t;

typedef uint8_t uint_least8_t;
typedef uint16_t uint_least16_t;
typedef uint32_t uint_least32_t;
typedef uint64_t uint_least64_t;
typedef int32_t int_fast16_t;
typedef int32_t int_fast32_t;
typedef uint32_t uint_fast16_t;
typedef uint32_t uint_fast32_t;


typedef struct {

    uint8_t conn_est_fail_offset;
    uint8_t conn_est_fail_count;
    uint16_t conn_est_fail_offset_validity;
} rrc_conn_est_fail_temp_qoffset_params;















typedef struct {
    _Bool nslpi_configured;
    _Bool nslpi_override_configured;



    _Bool fast_first_hpplmn_configured;

    _Bool min_periodic_search_time_available;
    uint8_t min_periodic_search_time;
    _Bool t3245_behaviour;
    _Bool attach_with_imsi;
    _Bool eab_configured;
    _Bool eab_override_configured;
} nas_kv_nas_config_t;


typedef struct {



    uint8_t pdn_type;
    uint8_t request_type;
    uint8_t apn_len;
    uint8_t apn[101];
    uint8_t auth_port;
    uint8_t auth_username_len;
    uint8_t auth_password_len;
    uint8_t auth_username[61];
    uint8_t auth_password[61];
    uint8_t h_comp;
    uint8_t p_cscf_discovery;
    _Bool nslpi;
    _Bool im_cn_signaling;
} nas_kv_context_config_t;


typedef struct {
    _Bool psm_supported;
    uint8_t req_psm_active_timer;
    _Bool ext_timer_support;
    uint8_t req_ext_periodic_timer;



} nas_ue_capability_config_t;


typedef enum {
    PCO_IE = 1,
    EXT_PCO_IE = 2
} nas_kv_pco_ie_type_t;

typedef enum {
    E_PTW_VAL_0 = 0,
    E_PTW_VAL_1 = 1,
    E_PTW_VAL_2 = 2,
    E_PTW_VAL_3 = 3,
    E_PTW_VAL_4 = 4,
    E_PTW_VAL_5 = 5,
    E_PTW_VAL_6 = 6,
    E_PTW_VAL_7 = 7,
    E_PTW_VAL_8 = 8,
    E_PTW_VAL_9 = 9,
    E_PTW_VAL_10 = 10,
    E_PTW_VAL_11 = 11,
    E_PTW_VAL_12 = 12,
    E_PTW_VAL_13 = 13,
    E_PTW_VAL_14 = 14,
    E_PTW_VAL_15 = 15
} PAGING_TIME_WINDOW_LEN_e;

typedef enum {
    E_DRX_CYCLE_PARAM_0 = 0,
    E_DRX_CYCLE_PARAM_1 = 1,
    E_DRX_CYCLE_PARAM_2 = 2,
    E_DRX_CYCLE_PARAM_3 = 3,
    E_DRX_CYCLE_PARAM_4 = 4,
    E_DRX_CYCLE_PARAM_5 = 5,
    E_DRX_CYCLE_PARAM_6 = 6,
    E_DRX_CYCLE_PARAM_7 = 7,
    E_DRX_CYCLE_PARAM_8 = 8,
    E_DRX_CYCLE_PARAM_9 = 9,
    E_DRX_CYCLE_PARAM_10 = 10,
    E_DRX_CYCLE_PARAM_11 = 11,
    E_DRX_CYCLE_PARAM_12 = 12,
    E_DRX_CYCLE_PARAM_13 = 13,
    E_DRX_CYCLE_PARAM_14 = 14,
    E_DRX_CYCLE_PARAM_15 = 15
} eDRX_CYCLE_PARAM_e;


typedef struct {
    _Bool e_drx_is_supported;
    PAGING_TIME_WINDOW_LEN_e paging_time_window;
    eDRX_CYCLE_PARAM_e edrx_cycle;
} nas_kv_edrx_ptw_config_t;


typedef struct {
    _Bool has_synchronized;
    uint8_t req_psm_active_timer;
    uint8_t req_ext_periodic_timer;
    PAGING_TIME_WINDOW_LEN_e paging_time_window;
    eDRX_CYCLE_PARAM_e edrx_cycle;
} nas_kv_psm_edrx_default_value_t;


typedef struct {
    _Bool dns_server_ipv4_addr_request;
    _Bool dns_server_ipv6_addr_request;
} nas_pdp_context_dynamic_param_request_item_config_t;


typedef struct {
    uint8_t apn[101];
    uint8_t auth_prot;
    char login_str[32];
    char password_str[32];
} nas_kv_apn_adapt_t;


typedef struct {
    uint8_t rpm_n1;
    uint8_t rpm_t1;
    uint8_t rpm_f1;
    uint8_t rpm_f2;
    uint8_t rpm_f3;
    uint8_t rpm_f4;

    uint8_t rpm_lr1;
    uint8_t rpm_lr2;
    uint8_t rpm_lr3;
} nas_kv_rpm_params_t;


typedef struct {
    uint8_t rpm_c_br1;
    uint8_t rpm_c_r1;
    uint8_t rpm_c_pdn1;
    uint8_t rpm_c_pdn2;
    uint8_t rpm_c_pdn3;
    uint8_t rpm_c_pdn4;
} nas_kv_rpm_counts_t;


typedef struct {
    uint16_t split_pg_cycle_code;
    uint8_t non_drx_timer;
    uint8_t split_on_ccch;
    uint8_t drx_len;
    _Bool drx_parameter_present;
} wb_s1_drx_parameter;
typedef struct {
    uint8_t len;
    uint8_t list[18];
} eutra_band_list;


typedef struct {
    uint32_t len;
    uint32_t list[120];
} soc_ue_preset_earfcn_list_internal;


typedef struct {
    uint32_t len;
    uint32_t list[40];
} soc_ue_preset_earfcn_list;


typedef struct {
    uint8_t autostart_mode;
    uint8_t default_plmn[3];

} nb_iot_ue_nvconfig_autostart_config_t;


typedef struct {

    uint16_t first_full_search_interval;

    uint16_t full_search_interval_mult;
    uint16_t max_full_search_interval;

    uint16_t first_stored_search_interval;

    uint16_t stored_search_interval_mult;
    uint16_t max_stored_search_interval;

    uint16_t reserved;

    uint16_t band_scan_puncture_rate;

    int32_t earfcn_search_threshold;

} nb_iot_ue_nvconfig_plmn_search_config_t;
typedef struct {
    uint8_t ds_protect_switch;
    uint8_t ds_protect_length;
    uint8_t nds_after_boot;
    uint8_t reserved;
} ds_basic_attr_config;

typedef struct {
    uint32_t baud_rate;
    uint8_t data_bits;
    uint8_t stop_bits;
    uint8_t parity;
    uint8_t flow_ctrl;
} diag_uart_attr;

typedef struct {
    uint8_t conn_vertify[384];
    uint8_t conn_salt[20];
    uint32_t salt_len;
} secure_conn_t;

typedef enum {
    IMS_PARM_URI_FORMAT_TYPE_DEFAULT = 0,
    IMS_PARM_URI_FORMAT_TYPE_SIP,
    IMS_PARM_URI_FORMAT_TYPE_TEL,
    IMS_PARM_URI_BUTT = 0xFF,
} ims_parm_uri_format_type;

typedef enum {
    IMS_PARM_TRANSPORT_TYPE_UDP = 0,
    IMS_PARM_TRANSPORT_TYPE_TCP,
    IMS_PARM_TRANSPORT_TYPE_BUTT = 0xFF,
} ims_parm_transport_type;

typedef struct {
    ims_parm_transport_type transport_type;
    ims_parm_uri_format_type uri_format;
    uint8_t header_compact_enabled;
    uint8_t forking_flag;
    uint32_t server_port;
    uint32_t timer_sip_reg_value;
    uint32_t subs_reg_expires;
    uint32_t rsv1;
    uint32_t rsv2;
    uint32_t rsv3;
    uint32_t rsv4;
    uint32_t sip_socket_keep_alive_value;
    int8_t user_agent[129];
    int8_t timer_reg;
    int8_t sms_format_timer_dereg[2];
    uint32_t tcp_threshold;
} ims_parm_sip;


typedef enum {
    IMS_PARM_SESSION_REFRESH_TYPE_UAC = 0x00,
    IMS_PARM_SESSION_REFRESH_TYPE_UAS,
    IMS_PARM_SESSION_REFRESH_TYPE_BUTT = 0xFF,
} ims_parm_session_refresh_type;

typedef enum {
    IMS_PARM_SESSION_REFRESH_METHOD_UPDATE = 0x00,
    IMS_PARM_SESSION_REFRESH_METHOD_REINVITE,
    IMS_PARM_SESSION_REFRESH_METHOD_BUTT = 0xFF,
} ims_parm_session_refresh_method;

typedef struct {
    uint8_t session_timer_enabled;
    uint8_t pre_condition_enable;
    ims_parm_session_refresh_type session_refresh_type;
    ims_parm_session_refresh_method session_refresh_method;
    uint16_t session_expires;
    uint8_t rtp_inactive_timer[2];
} ims_parm_voip;

typedef enum {
    IMS_PARM_AUDIO_CAP_AMR_NB_AND_WB = 0x00,
    IMS_PARM_AUDIO_CAP_AMR_WB_AND_NB,
    IMS_PARM_AUDIO_CAP_AMR_NB,
    IMS_PARM_AUDIO_CAP_AMR_WB,
    IMS_PARM_AUDIO_CAP_EVS_AND_AMR_NB_AND_WB,
    IMS_PARM_AUDIO_CAP_EVS = 5,
    IMS_PARM_AUDIO_CAP_TYPE_BUTT
} ims_parm_audio_cap;

typedef enum {
    IMS_PARM_AUDIO_CODE_MODE_OCTECT_ALIGN = 0x00,
    IMS_PARM_AUDIO_CODE_MODE_BAND_EFFICIENT,
    IMS_PARM_AUDIO_CODE_MODE_EF_AND_OC,
    IMS_PARM_AUDIO_CODE_MODE_OC_AND_EF,
    IMS_PARM_AUDIO_CODE_TYPE_BUTT
} ims_parm_audio_code_mode;

typedef struct {
    ims_parm_audio_cap comm_audio_cap;
    uint8_t set_nb_amr_mode_flag;
    uint8_t set_wb_amr_mode_flag;
    ims_parm_audio_cap nr_audio_cap;
    uint32_t nb_amr_mode_set;
    uint32_t wb_amr_mode_set;
    ims_parm_audio_code_mode nb_amr_audio_code_mode;
    ims_parm_audio_code_mode wb_amr_audio_code_mode;
    uint16_t ptimer_value;
    uint8_t video_resolution;
    uint8_t h264_level;
    uint8_t video_fps;
    uint8_t cvo_flag;
    uint32_t video_bitrate;
} ims_parm_voip_code;

typedef struct {
    uint8_t conf_factory_uri[129];
    uint8_t reject_with_486[3];
} ims_parm_ss_conf;

typedef struct {
    uint8_t null;
    uint8_t aes;
    uint8_t gcm;
    uint8_t rsv[1];
} ealgo_capability;

typedef struct {
    uint8_t gmac;
    uint8_t sha;
    uint8_t rsv[2];
} algo_capability;

typedef struct {
    uint8_t srtp_flag;
    uint8_t sock_support_linger[3];
    ealgo_capability ealgo;
    algo_capability algo;
} ims_parm_security;

typedef struct {
    uint8_t dtx_enable;
    uint8_t rsv[3];
} ims_parm_media;

typedef struct {
    uint8_t reserved0;
    uint8_t reserved1;
    uint8_t reserved2;
    uint8_t reserved3;
    uint8_t reserved4;
    uint8_t reserved5;
    uint8_t reserved6;
    uint8_t reserved7;
    uint8_t reserved8;
    uint8_t reserved9;
    uint8_t reserved10;
    uint8_t reserved11;
    uint8_t reserved12;
    uint8_t reserved13;
    uint8_t reserved14;
    uint8_t reserved15;
} uint8_nv_stru;

typedef struct {
    uint16_t reserved0;
    uint16_t reserved1;
    uint16_t reserved2;
    uint16_t reserved3;
    uint16_t reserved4;
    uint16_t reserved5;
    uint16_t reserved6;
    uint16_t reserved7;
} uint16_nv_stru;

typedef struct {
    uint32_t reserved0;
    uint32_t reserved1;
    uint32_t reserved2;
    uint32_t reserved3;
    uint32_t reserved4;
    uint32_t reserved5;
    uint32_t reserved6;
    uint32_t reserved7;
} uint32_nv_stru;

typedef struct {
    uint8_t rsp_sip_timeout;
    uint8_t image_attr_flag;
    uint8_t att_feature_flag;
    uint8_t vdf_switch;
    uint8_t keep_alive_flag;
    uint8_t ipsec_flag;
    uint8_t rsv[2];
    uint8_nv_stru uint8_nv_para[16];
    uint16_nv_stru uint16_nv_para[16];
    uint32_nv_stru uint32_nv_para[8];
} ims_parm_ue_capability;

typedef struct {
    uint32_t timer_t1_value;
    uint32_t timer_t2_value;
    uint32_t timer_t4_value;
    uint32_t timer_ta_value;
    uint32_t timer_tb_value;
    uint32_t timer_tc_value;
    uint32_t timer_td_value;
    uint32_t timer_te_value;
    uint32_t timer_tf_value;
    uint32_t timer_tg_value;
    uint32_t timer_th_value;
    uint32_t timer_ti_value;
    uint32_t timer_tj_value;
    uint32_t timer_tk_value;
} ims_parm_sip_timer;

typedef struct {
    uint8_t category;
    uint8_t urn[65];
    uint8_t rsv[2];
} ims_emc_category_urn;

typedef struct {
    ims_emc_category_urn emc_cat_urn[6];
} ims_nv_emergency_urn;

typedef struct {
    char phone_context[129];
    char phone_context_impu[129];
    char dislay_name[129];
    uint8_t rsv[1];
} ims_parm_string_switch_value;

typedef struct {
    uint8_t single_cause_num;
    uint8_t single_cause_list[23];
} imsa_nv_pdn_temp_rej_cause_list;

typedef struct {
    uint8_t single_cause_num;
    uint8_t single_cause_list[7];
} imsa_nv_pdn_perm_rej_cause_list;

typedef struct {
    uint8_t temp_forb_feature_flag;
    uint8_t perm_forb_feature_flag;
    uint8_t rsv[2];
    imsa_nv_pdn_temp_rej_cause_list pdn_temp_rej_cause_list;
    imsa_nv_pdn_perm_rej_cause_list pdn_perm_rej_cause_list;
} imsa_pdn_rej_forbidden_ctrl;

typedef struct {
    uint32_t max_time;
    uint32_t base_time;
    uint32_t retry_period;
    uint32_t save_retry_times;

    imsa_pdn_rej_forbidden_ctrl pdn_rej_forb_ctrl;
} imsa_nv_ims_ctrl;

typedef struct {
    uint8_t user_info_flag;
    uint8_t auth_type;
    uint8_t rsv[2];
    char impi[128];
    char impu[128];
    char domain[128];
    char pass_word[128];
} imsa_nv_ims_config;

typedef struct {
    uint8_t voice_call_on_ims_support_flag;
    uint8_t sms_on_ims_support_flag;
    int16_t call_rsrp_threhold;
} imsa_ue_cap;

typedef enum {
    IMSA_PCSCF_DISCOVERY_POLICY_PCO = 0,
    IMSA_PCSCF_DISCOVERY_POLICY_NV = 1,
    IMSA_PCSCF_DISCOVERY_POLICY_BUTT = 0xFF
} imsa_pcscf_discovery_policy;

typedef struct {
    uint32_t bit_op_prim_pcscf_addr : 1;
    uint32_t bit_op_sec_pcscf_addr : 1;
    uint32_t bit_op_spare : 30;

    uint8_t prim_pcscf_addr[4];
    uint8_t sec_pcscf_addr[4];
} imsa_nv_pdp_ipv4_pcscf;

typedef struct {
    uint32_t bit_op_prim_pcscf_addr : 1;
    uint32_t bit_op_sec_pcscf_addr : 1;
    uint32_t bit_op_spare : 30;

    uint8_t prim_pcscf_addr[16];
    uint8_t sec_pcscf_addr[16];
} imsa_nv_pdp_ipv6_pcscf;

typedef struct {
    imsa_pcscf_discovery_policy pcscf_discover_policy;
    uint8_t rsv[3];
    imsa_nv_pdp_ipv4_pcscf ipv4_pcscf;
    imsa_nv_pdp_ipv6_pcscf ipv6_pcscf;
} imsa_nv_pcscsf_discovery_policy;

typedef struct {
    uint16_t ims_min_port;
    uint16_t ims_max_port;
} ims_sip_port;

typedef struct {
    uint32_t speech_start;
    uint32_t speech_end;
    uint32_t video_start;
    uint32_t video_end;
} ims_comm_para_config;

typedef enum {
    IMSA_CALL_CCWA_CTRL_BY_NW = 0,
    IMSA_CALL_CCWA_CTRL_BY_UE = 1,
    IMSA_CALL_CCWA_CTRL_MODE_BUTT = 0xFF,
} imsa_call_ccwa_ctrl_mode;

typedef enum {
    IMSA_CALL_CCWAI_MODE_DISABLE = 0,
    IMSA_CALL_CCWAI_MODE_ENABLE = 1,

    IMSA_CALL_CCWAI_MODE_BUTT = 0xFF,
} imsa_call_ccwai_mode;

typedef struct {
    imsa_call_ccwa_ctrl_mode ccwa_ctrl_mode;
    imsa_call_ccwai_mode ccwai_mode;
    uint8_t rsv[2];
} imsa_nv_call_ims_ccwa_ctrl_mode;

typedef struct {
    uint8_t imei_svn[4];
} imsa_nv_ims_imei_svn;

typedef enum {
    NO_SIM_LOCK,
    SIM_LOCK_BLOCK_LIST,
    SIM_LOCK_ALLOW_LIST
} sim_lock_mode;

typedef struct {
    uint8_t len;
    uint8_t start[15];
    uint8_t end[15];
    uint8_t res;
} imsi_mask_interval;

typedef struct {
    sim_lock_mode mode;
    uint8_t intervals_num;
    uint8_t res[2];
    imsi_mask_interval intervals[20];
} sim_lock_config;


typedef struct {
    uint8_t bcd_len;
    uint8_t addr_type;
    uint8_t bcd_num[10];
} sms_store_bcd_addr;

typedef struct {
    sms_store_bcd_addr sc_addr;
    uint8_t cmgf;
    uint8_t csdh;
    uint8_t cpms;
    uint8_t csmp_fo;
    uint8_t csmp_pid;
    uint8_t csmp_dcs;
    uint8_t csmp_vp;
    uint8_t reserve;
} sms_nv_config_para;

typedef struct {
    uint8_t trans_monitor_switch;
    uint8_t trans_monitor_time;

    uint8_t dhcp_flowctl_switch;
    uint8_t dhcp_flowctl_time;
    uint16_t dhcp_lease_time;

    uint8_t ppp_auth_type;
    uint8_t ppp_echo_max_lost_cnt;
} taf_nv_config;

typedef struct {
    uint8_t buffer[40];
} undetermined_size_buffer;


typedef enum {
    S_MGPIO0 = 0,
    S_MGPIO1 = 1,
    S_MGPIO2 = 2,
    S_MGPIO3 = 3,
    S_MGPIO4 = 4,
    S_MGPIO5 = 5,
    S_MGPIO6 = 6,
    S_MGPIO7 = 7,
    S_MGPIO8 = 8,
    S_MGPIO9 = 9,
    S_MGPIO10 = 10,
    S_MGPIO11 = 11,
    S_MGPIO12 = 12,
    S_MGPIO13 = 13,
    S_MGPIO14 = 14,
    S_MGPIO15 = 15,
    S_MGPIO16 = 16,
    S_MGPIO17 = 17,
    S_MGPIO18 = 18,
    S_MGPIO19 = 19,
    S_MGPIO20 = 20,
    S_MGPIO21 = 21,
    S_MGPIO22 = 22,
    S_MGPIO23 = 23,
    S_MGPIO24 = 24,
    S_MGPIO25 = 25,
    S_MGPIO26 = 26,
    S_MGPIO27 = 27,
    S_MGPIO28 = 28,
    S_MGPIO29 = 29,
    S_MGPIO30 = 30,
    S_MGPIO31 = 31,
    S_MGPIO32 = 32,
    S_MGPIO33 = 33,
    S_MGPIO34 = 34,
    S_MGPIO35 = 35,
    S_MGPIO36 = 36,
    S_MGPIO37 = 37,
    S_MGPIO38 = 38,
    S_MGPIO39 = 39,
    S_MGPIO40 = 40,
    S_MGPIO41 = 41,
    S_MGPIO42 = 42,
    S_MGPIO43 = 43,
    S_MGPIO44 = 44,
    S_MGPIO45 = 45,
    S_MGPIO46 = 46,
    S_MGPIO47 = 47,
    S_MGPIO48 = 48,
    S_MGPIO49 = 49,
    S_MGPIO50 = 50,
    S_MGPIO51 = 51,
    S_MGPIO52 = 52,
    S_MGPIO53 = 53,
    S_MGPIO54 = 54,
    S_MGPIO55 = 55,
    S_MGPIO56 = 56,
    S_MGPIO57 = 57,
    S_MGPIO58 = 58,
    S_MGPIO59 = 59,
    S_MGPIO60 = 60,

    PIN_NONE = 61,
    ULP_PIN = PIN_NONE,
} pin_t;



typedef struct {
    pin_t tx_pin;
    pin_t rx_pin;
    pin_t cts_pin;
    pin_t rts_pin;
} uart_pin_config_t;



typedef struct {
    uint32_t baudrate;
    uint8_t stopbits;
    uint8_t parity;
    uint16_t sw_flow_control;
} at_uart_config;


typedef struct {
    uint8_t remote_wakeup_type;
    uint8_t net_card_type;
} usb_init_config;

typedef struct {
    uint8_t bit_get_gnss_cap_by_nv;

    uint8_t bit_modem_orig;
    uint8_t bit_gps_sup_flag;
    uint8_t bit_period_pro_ctrl_flag;
} lpp_nv_long_bit;

typedef struct {
    uint8_t bit_access_type_ext;
    uint8_t access_types_cnt;
    uint8_t access_types;
} lpp_nv_access_type;

typedef struct {
    uint8_t bit_gnss_id_bitmap_ext;
    uint8_t us_gnss_ids_cnt;
    uint16_t us_gnss_ids;
} lpp_nv_gnss_id_bitmap;

typedef struct {
    uint8_t bit_assist_sup_list_ext;
    uint8_t bit_fta_sup;

    lpp_nv_access_type fta_support;
    lpp_nv_gnss_id_bitmap gnss_system_time;
} lpp_nv_gnss_ref_time_sup;

typedef struct {
    uint8_t bit_gnss_ref_loc_ext;
} lpp_nv_gnss_ref_loc_sup;

typedef struct {
    uint8_t bit_gnss_iono_sup_ext;
    uint8_t iono_model;
    uint8_t iono_model_len;
} lpp_nv_gnss_iono_model;

typedef struct {
    uint8_t bit_com_assist_sup_list_ext;
    uint8_t bit_ref_time_sup;
    uint8_t bit_ref_loc_sup;
    uint8_t bit_ionospheric_model_sup;
    uint8_t bit_earth_orientation_para_sup;
    lpp_nv_gnss_ref_time_sup ref_time_sup;
    lpp_nv_gnss_ref_loc_sup ref_loc_sup;
    lpp_nv_gnss_iono_model iono_model_sup;
} lpp_nv_gnss_com_assist_sup;

typedef struct {
    uint8_t bit_gnss_id_ext;
    uint8_t en_gnss_id;
} lpp_nv_gnss_id;

typedef struct {
    uint8_t bit_sbas_id_ext;
    uint8_t en_sbas_id;
} lpp_nv_gnss_sbas_id;

typedef struct {
    uint8_t bit_nav_model_sup_ext;
    uint8_t bit_clock_model;
    uint8_t bit_orbit_model;
    uint8_t clock_model;
    uint8_t clock_model_num;
    uint8_t orbit_model;
    uint8_t orbit_model_num;
} lpp_nv_gnss_mode_sup;

typedef struct {
    uint8_t bit_almanac_sup_ext;
    uint8_t bit_almanac;
    uint8_t almanac_model;
    uint8_t almanac_model_num;
} lpp_nv_almanac_sup;

typedef struct {
    uint8_t bit_acq_assist_sup_ext;
    uint8_t bit_confidence_sup_r10;
    uint8_t bit_doppler_uncertain_ext_sup;
    uint8_t confidence_sup_r10;
    uint8_t doppler_uncertain_ext_sup_r10;
} lpp_nv_acq_assist_sup;

typedef struct {
    uint8_t gnss_signal_ids;
    uint8_t gnss_valid_time_sup;
} lpp_nv_diff_correct_sup;

typedef struct {
    uint8_t bit_bsd_diff_correct;
    uint8_t gnss_signal_ids;
    uint8_t bds_grid_model_sup;
} lpp_nv_bds_info_sup;

typedef struct {
    uint8_t bit_assist_sup_ext;
    uint8_t bit_sbas_id;
    uint8_t bit_tim_model_sup;
    uint8_t bit_diff_correct_sup;
    uint8_t bit_nav_model_sup;
    uint8_t bit_real_time_sup;
    uint8_t bit_data_bit_sup;
    uint8_t bit_acq_assist_sup;
    uint8_t bit_almanac_sup;
    uint8_t bit_utc_model_sup;
    uint8_t bit_aux_info_sup;
    uint8_t bit_bds_info_sup;

    lpp_nv_gnss_id gnss_id;
    lpp_nv_gnss_sbas_id gnss_sbas_id;
    lpp_nv_gnss_mode_sup nav_model_sup;
    lpp_nv_acq_assist_sup acq_assist_sup;
    lpp_nv_almanac_sup alamanac_sup;
    lpp_nv_diff_correct_sup diff_correct_sup;
    lpp_nv_bds_info_sup bds_info;
} lpp_nv_gnss_sup_element;

typedef struct {
    uint8_t ul_support_element_num;
    lpp_nv_gnss_sup_element ast_gnss_gen_sup_element_array[(2)];
} lpp_nv_gnss_gen_assist_sup;

typedef struct {
    uint8_t bit_assist_sup_list_ext;
    lpp_nv_gnss_com_assist_sup gnss_com_assist_sup;
    lpp_nv_gnss_gen_assist_sup gnss_gen_assist_sup;
} lpp_nv_gnss_assist_sup_list;

typedef struct {
    uint8_t bit_Signal_id_ext;
    uint8_t gnss_signal_ids;
} lpp_nv_gnss_signal_id;

typedef struct {
    uint8_t bit_position_mode_ext;
    uint8_t pos_mode_len;
    uint8_t positioning_modes;
} lpp_nv_gnss_positioning_modes;

typedef struct {
    uint8_t bit_fta_meas_sup_ext;

    lpp_nv_access_type access_types;
    lpp_nv_gnss_positioning_modes mode;
} lpp_nv_gnss_fat_meas_sup;

typedef struct {
    uint8_t bit_support_element_ext;
    uint8_t bit_sbas_id;
    uint8_t bit_fta_meas_sup;
    uint8_t bit_velocity_meas_sup;
    lpp_nv_gnss_id gnss_id;
    lpp_nv_gnss_positioning_modes agnss_modes;
    lpp_nv_gnss_signal_id gnss_signal_ids;
    lpp_nv_gnss_fat_meas_sup fta_meas_sup;
} lpp_nv_gnss_support_element;

typedef struct {
    uint8_t ul_support_element_num;
    lpp_nv_gnss_support_element ast_gnss_support_element_array[(2)];
} lpp_nv_gnss_support_list;

typedef struct {
    uint8_t bit_loc_coordinate_type_ext;
    uint8_t b_ellipsoid_point;
    uint8_t b_ellipsoid_point_with_uncertainty_circle;
    uint8_t b_ellipsoid_point_with_uncertainty_ellipse;

    uint8_t b_polygon;
    uint8_t b_ellipsoid_point_with_altitude;
    uint8_t b_ellipsoid_point_with_altitude_and_uncertainty_ellipsoid;
    uint8_t b_ellipsoid_arc;
} lpp_nv_gnss_loc_coordinate_type;

typedef struct {
    uint8_t bit_velocity_type_ext;
    uint8_t b_horizontal_velocity;
    uint8_t b_horizontal_with_vertical_velocity;
    uint8_t b_horizontal_velocity_with_uncertainty;
    uint8_t b_horizontal_with_vertical_velocity_and_uncertainty;
} lpp_nv_gnss_velocity_type;

typedef struct {
    uint8_t bit_gnss_provide_cap_ext;
    uint8_t bit_gnss_support_list;
    uint8_t bit_assist_data_sup_list;
    uint8_t bit_loc_coordinate_types;
    uint8_t bit_velocity_types;
    lpp_nv_gnss_support_list gnss_sup_list;
    lpp_nv_gnss_assist_sup_list gnss_assist_sup_list;
    lpp_nv_gnss_loc_coordinate_type loc_coordinate_type;
    lpp_nv_gnss_velocity_type velocity_types;
} lpp_gnss_cap_cfg_nv;

typedef struct {
    lpp_nv_long_bit st_lpp_nv_long_bit;
    lpp_gnss_cap_cfg_nv st_lpp_agnss_cap_nv;
    uint16_t us_re_trans_timer_len;
    uint16_t us_attempe_trans_cnt;
    uint8_t lpp_layer_switch;
    uint8_t lpp_layer_norm;
    uint8_t lpp_layer_info;
    uint8_t lpp_layer_warn;
    uint8_t lpp_layer_err;
    uint32_t ul_response_time_allowance;
} lpp_nv_config_para;

