Add co_context internal functions 97/120997/1
authorWootak Jung <wootak.jung@samsung.com>
Mon, 27 Mar 2017 04:20:44 +0000 (13:20 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Mon, 27 Mar 2017 04:20:44 +0000 (13:20 +0900)
Change-Id: If8376106dcb7c5d93a62bcaffb1a6e0aab6c3012

include/co_context.h
include/type/ps.h
packaging/libtcore.spec
src/core_object/co_context.c

index 0d4f552..21c27f6 100644 (file)
@@ -94,6 +94,12 @@ enum co_context_tech {
        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);
 
@@ -163,12 +169,20 @@ char *tcore_context_get_ipv6_gw(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
 
index 5e1b594..7697085 100644 (file)
@@ -160,6 +160,7 @@ struct tnoti_ps_pdp_ipconfiguration {
 
        char devname[16];
        unsigned long mtu;
+       int pco_value;
 
        unsigned char ip_address[IPV4_ADDR_LEN];
        unsigned char primary_dns[IPV4_ADDR_LEN];
index a16b12f..aaa6f93 100644 (file)
@@ -1,6 +1,6 @@
 %define major 0
 %define minor 3
-%define patchlevel 13
+%define patchlevel 14
 
 Name:           libtcore
 Version:        %{major}.%{minor}.%{patchlevel}
index 2ec21ae..72a220e 100644 (file)
@@ -72,6 +72,12 @@ struct private_object_data {
        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;
 };
@@ -157,6 +163,7 @@ CoreObject *tcore_context_new(TcorePlugin *p, const char *name, TcoreHal *hal)
        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);
@@ -988,6 +995,7 @@ TReturn tcore_context_set_devinfo(CoreObject *o, struct tnoti_ps_pdp_ipconfigura
                }
        }
 
+       po->pco = devinfo->pco_value;
        return TCORE_RETURN_SUCCESS;
 }
 
@@ -1043,6 +1051,7 @@ TReturn tcore_context_reset_devinfo(CoreObject *o)
        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;
 }
@@ -1397,6 +1406,19 @@ pcscf_addr *tcore_context_get_pcscf_ipv6_addr(CoreObject *o)
        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;
@@ -1492,3 +1514,87 @@ gboolean tcore_context_get_disable_apn(CoreObject *o)
 
        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;
+}