Add session status event for P2P connect 53/87953/2
authorYu Jiung <jiung.yu@samsung.com>
Mon, 12 Sep 2016 09:10:37 +0000 (18:10 +0900)
committerJiung Yu <jiung.yu@samsung.com>
Mon, 12 Sep 2016 09:11:28 +0000 (02:11 -0700)
Change-Id: I3379456a0506665ab1dcf29c6ae0236a46f999d8
Signed-off-by: Yu jiung <jiung.yu@samsung.com>
src/session/asp-session.c
src/session/gfsm.c

index 76f7b49..05ce43e 100644 (file)
@@ -54,7 +54,9 @@
 #define ASP_SESSION_INFO_BYTE_MAX 144
 #define ASP_DEFER_RESPONSE_BYTE_MAX 144
 #define ASP_MAX_DEVICE_NAME_LEN 32
-#define SESSION_STATUS_ADDITIONAL_INFO "REQUEST_SESSION"
+#define SESSION_STATUS_ADDITIONAL_INFO_LEN 16
+#define SESSION_STATUS_ADDITIONAL_INFO_CO "REQUEST_SESSION"
+#define SESSION_STATUS_ADDITIONAL_INFO_PD "PDRequest"
 
 #define ASP_SESSION_HEADER "SESSION_FSM"
 
@@ -79,6 +81,7 @@ typedef struct asp_session {
        asp_session_closed_state_e closed_state;
        gboolean over_p2p;                      /*p2p or infra */
        gboolean confirmed;
+       gchar additional_info[SESSION_STATUS_ADDITIONAL_INFO_LEN];
 } asp_session_s;
 
 typedef struct session_request_cb {
@@ -923,6 +926,8 @@ void asp_session_recv_req(GSocketAddress *sock_addr, gpointer p_msg)
                        if (session == NULL)
                                session = _new_session_by_request_session(sock_addr, peer_ip, p_msg);
 
+                       g_strlcpy(session->additional_info, SESSION_STATUS_ADDITIONAL_INFO_PD,
+                                       SESSION_STATUS_ADDITIONAL_INFO_LEN);
                        g_assert(session);
 
                        _send_ack(sock_addr, p_header->seq_num);
@@ -1226,7 +1231,7 @@ void _call_session_status_cb(gint32 error_code, guint8 *session_mac,
 
        session_cb_v_table.session_status.cb(error_code, session_mac, session_id,
                                             _get_session_state(session_mac, session_id), closed_state,
-                                            SESSION_STATUS_ADDITIONAL_INFO, session_cb_v_table.session_status.user_data);
+                                            session->additional_info, session_cb_v_table.session_status.user_data);
 }
 
 void _call_connect_status_cb(gint32 error_code, guint8 *session_mac,
@@ -1314,6 +1319,7 @@ asp_session_status_e _get_session_state(guint8 *session_mac, guint32 session_id)
        g_assert(session);
 
        gfsm_state_id_t current_state = gfsm_get_current_state_id(session->context);
+       ASP_LOGD("%s _get_session_state() current session_state : %d", ROLE, current_state);
        switch (current_state) {
        case SESSION_STATE_NONE:
        case SESSION_STATE_CLOSED:
@@ -1321,6 +1327,7 @@ asp_session_status_e _get_session_state(guint8 *session_mac, guint32 session_id)
                ret = ASP_SESSION_STATE_CLOSED;
                break;
        case SESSION_STATE_REQUEST_SESSION_SENT:
+       case SESSION_STATE_SESSION_REQUEST_SENT:
                ret = ASP_SESSION_STATE_INITIATED;
                break;
        case SESSION_STATE_OPEN:
@@ -1328,6 +1335,7 @@ asp_session_status_e _get_session_state(guint8 *session_mac, guint32 session_id)
                ret = ASP_SESSION_STATE_OPEN;
                break;
        case SESSION_STATE_REQUEST_SESSION_RECEIVED:
+       case SESSION_STATE_SESSION_REQUEST_RECEIVED:
        /*case SESSION_STATE_DEFERRED_SESSION_SENT: */
        case SESSION_STATE_REJECT_SESSION_SENT:
                ret = ASP_SESSION_STATE_REQUESTED;
@@ -1382,6 +1390,9 @@ asp_session_s *_new_session_over_infra(guint8 *session_mac, guint32 session_id,
        /*session->sock_family = G_SOCKET_FAMILY_IPV4; // temporary */
        session->over_p2p = FALSE;
 
+       g_strlcpy(session->additional_info, SESSION_STATUS_ADDITIONAL_INFO_CO,
+                       SESSION_STATUS_ADDITIONAL_INFO_LEN);
+
        session->context = gfsm_create_context(session_fsm,
                                               _asp_session_destroy_session, session);
 
@@ -1409,6 +1420,8 @@ asp_session_s *_new_session_over_p2p(const guint8 *session_mac,
        session->advertisement_id = advertisement_id,
                 /*session->sock_family = G_SOCKET_FAMILY_IPV4; // temporary */
                 session->over_p2p = TRUE;
+       g_strlcpy(session->additional_info, SESSION_STATUS_ADDITIONAL_INFO_PD,
+                       SESSION_STATUS_ADDITIONAL_INFO_LEN);
 
        session->context = gfsm_create_context(session_fsm,
                                               _asp_session_destroy_session, session);
@@ -1437,6 +1450,9 @@ asp_session_s *_new_session_from_session_request(const guint8 *session_mac,
                 /*session->sock_family = G_SOCKET_FAMILY_IPV4; // temporary */
                 session->over_p2p = TRUE;
 
+       g_strlcpy(session->additional_info, SESSION_STATUS_ADDITIONAL_INFO_PD,
+                       SESSION_STATUS_ADDITIONAL_INFO_LEN);
+
        session->context = gfsm_create_context(session_fsm,
                                               _asp_session_destroy_session, session);
 
@@ -2093,8 +2109,10 @@ void _state_session_request_sent_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
-       /*asp_session_s* session = (asp_session_s*)p_context_data; */
+       asp_session_s* session = (asp_session_s*)p_context_data;
        /*_start_timer(...); */
+       _call_session_status_cb(0, session->session_mac, session->session_id,
+                                       ASP_SESSION_CLOSED_STATE_NONE);
 }
 
 void _state_session_request_sent_exit_action(void *p_context_data)
@@ -2236,7 +2254,12 @@ _state_session_request_defered_reaction_session_config_request_called(
 void _state_session_request_received_entry_action(void *p_context_data)
 {
        INFO_MSG;
+
+       asp_session_s* session = (asp_session_s*)p_context_data;
+
        /*_start_timer(..); */
+       _call_session_status_cb(0, session->session_mac, session->session_id,
+                                       ASP_SESSION_CLOSED_STATE_NONE);
 }
 
 void _state_session_request_received_exit_action(void *p_context_data)
@@ -2410,10 +2433,9 @@ gfsm_state_id_t _state_group_formation_completed_reaction_ip_assigned(
        _store_peer_ip_addr(session, p_ip_assigned_param->peer_ip_addr,
                            p_ip_assigned_param->length);
        if (session->asp_role == ASP_ROLE_SEEKER) {
-               _send_request_session(session, NULL, 0);
                ret_state = SESSION_STATE_REQUEST_SESSION_SENT;
        } else {
-               ret_state = GFSM_DISCARD_EVENT;
+               ret_state = SESSION_STATE_REQUEST_SESSION_RECEIVED;
        }
 
        return ret_state;
@@ -2491,7 +2513,8 @@ void _state_request_session_sent_entry_action(void *p_context_data)
 
        asp_session_s *session = (asp_session_s *)p_context_data;
 
-       _call_connect_status_cb(0, session->session_mac, session->session_id,
+       if(!session->over_p2p)
+               _call_connect_status_cb(0, session->session_mac, session->session_id,
                                ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_SENT);
 }
 
index 399f241..ff353e4 100644 (file)
@@ -435,6 +435,11 @@ void gfsm_process_transition(gfsm_context_s *p_context,
        if (p_context->current_state_id != p_next_state->state_id)
                gfsm_reenqueue_deferred_event(p_context);
 
+       if (p_context->p_fsm->log_func)
+               p_context->p_fsm->log_func("[%s] From (%s) to (%s)\n",
+                               p_context->p_fsm->p_header,
+                               p_context->p_fsm->state_name_cb(p_context->current_state_id),
+                               p_context->p_fsm->state_name_cb(p_next_state->state_id));
        p_context->current_state_id = p_next_state->state_id;
 
        gfsm_do_entry_action(p_common_ancesstor, p_next_state, p_context);