Add session module for ASP 2.0
[platform/core/connectivity/asp-manager.git] / src / asp-manager.c
index 58053ed..d80d672 100755 (executable)
@@ -53,6 +53,91 @@ static asp_s *g_asp = NULL;
  * Local Functions Definition
  *****************************************************************************/
 
+static void __session_request_cb(gint32 error_code, guint8 *session_mac,
+               guint32 session_id, guint32 adv_id, gchar *device_name,
+               size_t name_length, guint8 *session_info, size_t info_length,
+               gboolean get_pin, guint32 pin, gpointer user_data)
+{
+       __ASP_LOG_FUNC_ENTER__;
+
+       gchar session_mac_str[MACSTR_LEN + 1] = {0,};
+       gchar pin_str[MACSTR_LEN + 1] = {0,};
+
+       g_snprintf(session_mac_str, MACSTR_LEN + 1, MACSTR, MAC2STR(session_mac));
+       g_snprintf(pin_str, PINSTR_LEN + 1, "%u", pin);
+       asp_manager_gdbus_notify_session_request(error_code, session_mac_str,
+                       session_id, adv_id, device_name, session_info, get_pin, pin_str);
+
+       __ASP_LOG_FUNC_EXIT__;
+       return;
+}
+
+static void __session_config_request_cb(gint32 error_code, guint8 *session_mac,
+               guint32 session_id, gboolean get_pin, guint32 pin, gpointer user_data)
+{
+       __ASP_LOG_FUNC_ENTER__;
+
+       gchar pin_str[MACSTR_LEN + 1] = {0,};
+       g_snprintf(pin_str, PINSTR_LEN + 1, "%u", pin);
+
+       asp_manager_gdbus_notify_session_config_request(session_id,
+                       get_pin, pin_str);
+
+       __ASP_LOG_FUNC_EXIT__;
+       return;
+}
+
+static void __connect_status_cb(gint32 error_code, const guint8 *session_mac,
+               guint32 session_id, asp_session_connect_status_e status,
+               guint8 *deferred_resp, size_t resp_length, gpointer user_data)
+{
+       __ASP_LOG_FUNC_ENTER__;
+
+       gchar session_mac_str[MACSTR_LEN + 1] = {0,};
+       g_snprintf(session_mac_str, MACSTR_LEN + 1, MACSTR, MAC2STR(session_mac));
+
+
+       asp_manager_gdbus_notify_connect_status(session_mac_str, session_id,
+                       status, deferred_resp);
+
+       __ASP_LOG_FUNC_EXIT__;
+       return;
+}
+
+static void __session_status_cb(gint32 error_code, const guint8 *session_mac,
+               guint32 session_id, asp_session_status_e state,
+               asp_session_closed_state_e status, const gchar *requested_info,
+               gpointer user_data)
+{
+       __ASP_LOG_FUNC_ENTER__;
+
+       gchar session_mac_str[MACSTR_LEN + 1] = {0,};
+       g_snprintf(session_mac_str, MACSTR_LEN + 1, MACSTR, MAC2STR(session_mac));
+
+       asp_manager_gdbus_notify_session_status(session_mac_str,
+                       session_id, state, status, requested_info);
+
+       __ASP_LOG_FUNC_EXIT__;
+       return;
+}
+
+static void __port_status_cb(gint32 error_code, const guint8 *session_mac,
+               guint32 session_id, const gchar *ip, guint16 port, guint8 protocol,
+               asp_session_port_status_e status, gpointer user_data)
+{
+       __ASP_LOG_FUNC_ENTER__;
+
+       gchar session_mac_str[MACSTR_LEN + 1] = {0,};
+       g_snprintf(session_mac_str, MACSTR_LEN + 1, MACSTR, MAC2STR(session_mac));
+
+       asp_manager_gdbus_notify_port_status(session_mac_str, session_id,
+                       ip, port, protocol, status);
+
+       __ASP_LOG_FUNC_EXIT__;
+       return;
+}
+
+
 asp_s *asp_get_manager()
 {
        return g_asp;
@@ -61,20 +146,23 @@ asp_s *asp_get_manager()
 static void __asp_manager_deinit()
 {
        __ASP_LOG_FUNC_ENTER__;
-       int res = 0;
+       gint32 res = 0;
 
        if (!g_asp) {
-               printf("Memory for manager structure is not allocated");
+               ASP_LOGD("Memory for manager structure is not allocated");
                return;
        }
 
+       if (!asp_session_deinitialize())
+               ASP_LOGE("Failed to deinitialize session");
+
        asp_tech_deinit();
 
        res = asp_service_deinit();
        if (res < 0)
                ASP_LOGE("Failed to deinitialize service");
 
-       asp_manager_gdbus_deinit((void *)g_asp);
+       asp_manager_gdbus_deinit((gpointer)g_asp);
 
        g_free(g_asp);
        g_asp = NULL;
@@ -85,7 +173,7 @@ static asp_s *__asp_manager_init()
 {
        __ASP_LOG_FUNC_ENTER__;
        asp_s *asp = NULL;
-       int res = 0;
+       gint32 res = 0;
 
        asp = (asp_s*) g_try_malloc0(sizeof(asp_s));
        if (!asp) {
@@ -105,17 +193,29 @@ static asp_s *__asp_manager_init()
                return NULL;
        }
 
-       asp_manager_gdbus_init((void *)asp);
+       if (!asp_session_initialize()) {
+               ASP_LOGE("Failed to initialize session");
+               g_free(asp);
+               return NULL;
+       }
+
+       asp_session_set_session_request_cb(__session_request_cb, NULL);
+       asp_session_set_session_config_request_cb(__session_config_request_cb, NULL);
+       asp_session_set_connect_status_cb(__connect_status_cb, NULL);
+       asp_session_set_session_status_cb(__session_status_cb, NULL);
+       asp_session_set_port_status_cb(__port_status_cb, NULL);
+
+       asp_manager_gdbus_init((gpointer)asp);
 
        ASP_LOGD("asp manager initialized");
        __ASP_LOG_FUNC_EXIT__;
        return asp;
 }
 
-int main(int argc, char *argv[])
+gint32 main(gint32 argc, gchar *argv[])
 {
        GMainLoop *main_loop = NULL;
-       int ret = -1;
+       gint32 ret = -1;
 
        /* Initialize required subsystems */
 #if !GLIB_CHECK_VERSION(2, 35, 0)