CONTEXT_TECH_3GPP2
};
+enum co_context_rs_state {
+ CONTEXT_RS_UNKNOWN = -1,
+ CONTEXT_RS_SUCCESS = 0,
+ CONTEXT_RS_WAITING,
+};
+
CoreObject *tcore_context_new(TcorePlugin *p, const char *name, TcoreHal *hal);
void tcore_context_free(CoreObject *o);
pcscf_addr *tcore_context_get_pcscf_ipv4_addr(CoreObject *o);
pcscf_addr *tcore_context_get_pcscf_ipv6_addr(CoreObject *o);
+gint tcore_context_get_pco_value(CoreObject *o);
+
TReturn tcore_context_set_attach_apn(CoreObject *o, gboolean flag);
gboolean tcore_context_get_attach_apn(CoreObject *o);
TReturn tcore_context_set_roaming_apn(CoreObject *o, gboolean flag);
gboolean tcore_context_get_roaming_apn(CoreObject *o);
TReturn tcore_context_set_disable_apn(CoreObject *o, gboolean flag);
gboolean tcore_context_get_disable_apn(CoreObject *o);
+TReturn tcore_context_set_rs_state(CoreObject *o, enum co_context_rs_state rs_state);
+enum co_context_rs_state tcore_context_get_rs_state(CoreObject *o);
+TReturn tcore_context_set_ra_timer_id(CoreObject *o, gint id);
+gint tcore_context_get_ra_timer_id(CoreObject *o);
+TReturn tcore_context_set_deact_reason(CoreObject *o, int deact_reason);
+int tcore_context_get_deact_reason(CoreObject *o);
__END_DECLS
char *profile_name;
char devname[16];
+ gint pco;
+
+ enum co_context_rs_state rs_state;
+
+ gint ra_timer_id;
+ gint deact_reason;
/* Dedicated bearer information */
struct dedicated_bearer_info dedicated_bearer;
};
po->auth = CONTEXT_AUTH_NONE;
po->tech_pref = CONTEXT_TECH_3GPP;
po->disable_apn = FALSE;
+ po->pco = -1;
tcore_object_set_type(o, CORE_OBJECT_TYPE_PS_CONTEXT);
tcore_object_link_object(o, po);
}
}
+ po->pco = devinfo->pco_value;
return TCORE_RETURN_SUCCESS;
}
memset(&(po->dns_secondary_v4), 0, sizeof(union tcore_ip4_type));
memset(&(po->gateway_v4), 0, sizeof(union tcore_ip4_type));
memset(po->devname, 0, sizeof(char) * 16);
+ po->pco = -1;
return TCORE_RETURN_SUCCESS;
}
return pcscf_tmp;
}
+gint tcore_context_get_pco_value(CoreObject *o)
+{
+ struct private_object_data *po = NULL;
+
+ CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, 0);
+
+ po = tcore_object_ref_object(o);
+ if (!po)
+ return -1;
+
+ return po->pco;
+}
+
TReturn tcore_context_set_attach_apn(CoreObject *o, gboolean flag)
{
struct private_object_data *po = NULL;
return po->disable_apn;
}
+
+TReturn tcore_context_set_rs_state(CoreObject *o, enum co_context_rs_state rs_state)
+{
+ struct private_object_data *po = NULL;
+
+ CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, TCORE_RETURN_EINVAL);
+
+ po = tcore_object_ref_object(o);
+ if (!po)
+ return TCORE_RETURN_EINVAL;
+
+ po->rs_state = rs_state;
+
+ return TCORE_RETURN_SUCCESS;
+}
+
+enum co_context_rs_state tcore_context_get_rs_state(CoreObject *o)
+{
+ struct private_object_data *po = NULL;
+
+ CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, 0);
+
+ po = tcore_object_ref_object(o);
+ if (!po)
+ return 0;
+
+ return po->rs_state;
+}
+
+TReturn tcore_context_set_ra_timer_id(CoreObject *o, gint id)
+{
+ struct private_object_data *po = NULL;
+
+ CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, TCORE_RETURN_EINVAL);
+
+ po = tcore_object_ref_object(o);
+ if (!po)
+ return TCORE_RETURN_EINVAL;
+
+ po->ra_timer_id= id;
+
+ return TCORE_RETURN_SUCCESS;
+}
+
+gint tcore_context_get_ra_timer_id(CoreObject *o)
+{
+ struct private_object_data *po = NULL;
+
+ CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, 0);
+
+ po = tcore_object_ref_object(o);
+ if (!po)
+ return 0;
+
+ return po->ra_timer_id;
+}
+
+TReturn tcore_context_set_deact_reason(CoreObject *o, int deact_reason)
+{
+ struct private_object_data *po = NULL;
+
+ CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, TCORE_RETURN_EINVAL);
+
+ po = tcore_object_ref_object(o);
+ if (!po)
+ return TCORE_RETURN_EINVAL;
+
+ po->deact_reason = deact_reason;
+
+ return TCORE_RETURN_SUCCESS;
+}
+
+int tcore_context_get_deact_reason(CoreObject *o)
+{
+ struct private_object_data *po = NULL;
+
+ CORE_OBJECT_CHECK_RETURN(o, CORE_OBJECT_TYPE_PS_CONTEXT, 0);
+
+ po = tcore_object_ref_object(o);
+ if (!po)
+ return 0;
+
+ return po->deact_reason;
+}