blob: 1fc10c18e25b19beee2f65ec73dfd09f7d568a19 [file] [log] [blame]
#ifndef _ATP_URSP_STRUCT_H
#define _ATP_URSP_STRUCT_H
#include "kal_general_types.h"
#include "kal_public_defs.h"
#include "mcd_l3_inc_struct.h"
#include "atcmd_struct.h"
#include "ursp_public_defs.h"
#include "ursp_struct.h"
/*******************************************************************************/
/* Caution!! */
/* LOCAL_PARA_HDR and src_id MUST be the 1st and 2nd parameters, respectively. */
/*******************************************************************************/
#define ATP_URSP_REQ_LOCAL_PARA_HDR \
LOCAL_PARA_HDR \
kal_uint32 src_id; \
kal_uint32 cmd_mode;
#define ATP_URSP_CNF_LOCAL_PARA_HDR \
LOCAL_PARA_HDR \
kal_uint32 src_id; \
kal_bool is_success; \
kal_uint16 err_cause;
#define ATP_URSP_IND_LOCAL_PARA_HDR \
LOCAL_PARA_HDR \
kal_uint32 src_id;
/*******************************************************************************
* URSP Internal *
*******************************************************************************/
// => Internal data type for URSP
typedef struct
{
atcmd_SSC_mode_enum ssc_mode; // by default ATCMD_SSC_MODE_MAX
at_s_nssai_struct s_nssai; // by default is_sst_present, is_sd_present, is_mapped_configured_sst_present, is_mapped_configured_sd_present) = (KAL_FALSE, KAL_FALSE, KAL_FALSE, KAL_FALSE)
kal_char dnn[URSP_DNN_SIZE]; // by default a NULL string
pdp_addr_type_enum pdx_type; // by default NULL_PDP_ADDR_TYPE in ps_public_enum_public.h
atcmd_Access_type_enum access_type; // by default ATCMD_ACCESS_TYPE_MAX
}ursp_at_ue_local_conf_struct;
typedef ursp_at_ue_local_conf_struct ursp_at_est_req_param_struct;
/******************************************************************************************************************************************************************************
* AT+EGURSPRDP[=<cid>] *
*******************************************************************************************************************************************************************************/
// MSG_ID_ATP_D2AT_EGURSPRDP_REQ
typedef struct
{
ATP_URSP_REQ_LOCAL_PARA_HDR
kal_int32 cid;
}atp_d2at_egursprdp_req_struct;
// MSG_ID_ATP_D2AT_EGURSPRDP_IND
typedef struct
{
ATP_URSP_IND_LOCAL_PARA_HDR
kal_int32 cid;
int type;
union
{
ursp_est_req_param_struct est_req;
struct
{
ursp_traffic_desc_struct traffic_desc;
ursp_ue_local_conf_struct ue_local_conf;
kal_bool match_all_disallow;
}app_req;
}param;
}atp_d2at_egursprdp_ind_struct;
// MSG_ID_ATP_D2AT_EGURSPRDP_CNF
typedef struct
{
ATP_URSP_CNF_LOCAL_PARA_HDR
kal_int32 res;
}atp_d2at_egursprdp_cnf_struct;
/******************************************************************************************************************************************************************************
* +EGURSPREEVALU: <cid>,<event> *
*******************************************************************************************************************************************************************************/
// MSG_ID_ATP_D2AT_EGURSPREEVAL_URC_IND
typedef struct
{
ATP_URSP_IND_LOCAL_PARA_HDR
kal_int32 cid;
kal_uint32 event;
}atp_d2at_egurspreeval_urc_ind_struct;
/******************************************************************************************************************************************************************************
* AT+EGUEPOLICY=0,"<plmn_id>"[,"<ue_policy_part_content>"] *
* AT+EGUEPOLICY=1,"<plmn_id>"[,<rule_precedence>,"<traffic_desc>",<num_of_route_sel_desc>[,<route_sel_desc_precedence>,"<route_sel_desc>"][...]][...] …] *
*******************************************************************************************************************************************************************************/
// MSG_ID_ATP_D2AT_EGUEPOLICY_REQ
typedef struct
{
ATP_URSP_REQ_LOCAL_PARA_HDR
plmn_id_struct plmn_id;
kal_uint8 num_of_rule;
ursp_rule_struct rule_list[URSP_UE_POLICY_MAX_RULE_LIST_SIZE]; // 'eight' refers to the maximum size of allowed NSSAI, i.e. at most eight different slices
}atp_d2at_eguepolicy_req_struct;
// MSG_ID_ATP_D2AT_EGUEPOLICY_CNF
typedef struct
{
ATP_URSP_CNF_LOCAL_PARA_HDR
kal_int32 res;
}atp_d2at_eguepolicy_cnf_struct;
/******************************************************************************************************************************************************************************
* +EGUEPOLICYU:<plmn_id> *
*******************************************************************************************************************************************************************************/
// MSG_ID_ATP_D2AT_EGUEPOLICY_URC_IND
typedef struct
{
ATP_URSP_IND_LOCAL_PARA_HDR
plmn_id_struct plmn_id;
}atp_d2at_eguepolicy_urc_ind_struct;
/******************************************************************************************************************************************************************************
* AT+EGUEPOLICYRDP=<msg_type>[,"<plmn_id>"] *
*******************************************************************************************************************************************************************************/
// MSG_ID_ATP_D2AT_EGUEPOLICYRDP_REQ
typedef struct
{
ATP_URSP_REQ_LOCAL_PARA_HDR
kal_int8 msg_type;
plmn_id_struct plmn_id;
}atp_d2at_eguepolicyrdp_req_struct;
// MSG_ID_ATP_D2AT_EGUEPOLICYRDP_IND
typedef struct
{
ATP_URSP_IND_LOCAL_PARA_HDR
kal_int8 msg_type;
plmn_id_struct plmn_id;
kal_uint8 num_of_rule;
ursp_rule_struct rule_list[URSP_UE_POLICY_MAX_RULE_LIST_SIZE]; // 'eight' refers to the maximum size of allowed NSSAI, i.e. at most eight different slices
}atp_d2at_eguepolicyrdp_ind_struct;
// MSG_ID_ATP_D2AT_EGUEPOLICYRDP_CNF
typedef struct
{
ATP_URSP_CNF_LOCAL_PARA_HDR
kal_int32 res;
}atp_d2at_eguepolicyrdp_cnf_struct;
#endif