asp session fixes 12/84512/9
authorYu Jiung <jiung.yu@samsung.com>
Tue, 23 Aug 2016 06:11:51 +0000 (15:11 +0900)
committerJiung Yu <jiung.yu@samsung.com>
Tue, 23 Aug 2016 09:18:59 +0000 (02:18 -0700)
Description:

Modify the structure of gfsm.
Apply tizen coding rules

Change-Id: I9ea313ffced38dc88ab1c41a654a6dbac0f278c6

include/asp-session.h
src/session/asp-coordination-protocol.c
src/session/asp-coordination-protocol.h
src/session/asp-session-peer.c
src/session/asp-session-peer.h
src/session/asp-session.c
src/session/gfsm.c
src/session/gfsm.h

index b983e61..3e614f8 100755 (executable)
@@ -50,7 +50,7 @@ typedef enum {
        ASP_SESSION_CLOSED_STATE_LOCAL_CLOSE,
        ASP_SESSION_CLOSED_STATE_REMOTE_CLOSE,
        ASP_SESSION_CLOSED_STATE_SYSTEM_FAILURE,
-       CLOSED_STATE_NO_RESPONSE_FROM_REMOTE
+       ASP_SESSION_CLOSED_STATE_NO_RESPONSE_FROM_REMOTE
 } asp_session_closed_state_e;
 
 typedef enum {
index 2b36bdf..4358b13 100644 (file)
@@ -63,50 +63,44 @@ GSource *source = NULL;
 static gboolean asp_coordination_protocol_read_cb(GIOChannel *src,
                GIOCondition condition, gpointer data);
 static void asp_coordination_protocol_ack_handler(GSocketAddress *sock_addr,
-               gpointer input_data);
+               void *input_data);
 static void asp_coordination_protocol_nack_handler(GSocketAddress *sock_addr,
-               gpointer input_data);
+               void *input_data);
 static void asp_coordination_protocol_version_handler(GSocketAddress *sock_addr,
-               gpointer input_data);
+               void *input_data);
 static void asp_coordination_protocol_request_session_handler(
-       GSocketAddress *sock_addr, gpointer input_data);
+       GSocketAddress *sock_addr, void *input_data);
 static void asp_coordination_protocol_allowed_port_handler(
-       GSocketAddress *sock_addr, gpointer input_data);
+       GSocketAddress *sock_addr, void *input_data);
 static void asp_coordination_protocol_remove_session_handler(
-       GSocketAddress *sock_addr, gpointer input_data);
+       GSocketAddress *sock_addr, void *input_data);
 
 static gboolean asp_coordination_protocol_send_ack(GSocketAddress *sock_addr,
-               asp_ack_t *input_data);
+               asp_ack_s *input_data);
 static gboolean asp_coordination_protocol_send_nack(GSocketAddress *sock_addr,
-               asp_nack_t *input_data);
+               asp_nack_s *input_data);
 static gboolean asp_coordination_protocol_send_version(GSocketAddress
-               *sock_addr, asp_version_t *input_data);
+               *sock_addr, asp_version_s *input_data);
 static gboolean asp_coordination_protocol_send_added_session(
-       GSocketAddress *sock_addr, asp_added_session_t *input_data);
+       GSocketAddress *sock_addr, asp_added_session_s *input_data);
 static gboolean asp_coordination_protocol_send_deferred_session(
-       GSocketAddress *sock_addr, asp_deferred_session_t *input_data);
+       GSocketAddress  *sock_addr, asp_deferred_session_s *input_data);
 static gboolean asp_coordination_protocol_send_rejected_session(
-       GSocketAddress *sock_addr, asp_rejected_session_t *input_data);
+       GSocketAddress  *sock_addr, asp_rejected_session_s *input_data);
 static gboolean asp_coordination_protocol_send_allowed_port(
-       GSocketAddress *sock_addr, asp_allowed_port_t *input_data);
+       GSocketAddress *sock_addr, asp_allowed_port_s *input_data);
 
 static gboolean asp_coordination_protocol_send_request_session(
-       GSocketAddress *dest_addr, asp_request_session_t *input_data);
+       GSocketAddress *dest_addr, asp_request_session_s *input_data);
 static gboolean asp_coordination_protocol_send_remove_session(
-       GSocketAddress *sock_addr, asp_remove_session_t *input_data);
+       GSocketAddress *sock_addr, asp_remove_session_s *input_data);
 static void asp_coordination_protocol_added_session_handler(
-       GSocketAddress *sock_addr, gchar *input_data);
+       GSocketAddress *sock_addr, char *input_data);
 static void asp_coordination_protocol_rejected_session_handler(
-       GSocketAddress *sock_addr, gchar *input_data);
+       GSocketAddress *sock_addr, char *input_data);
 static void asp_coordination_protocol_deferred_session_handler(
-       GSocketAddress *sock_addr, gchar *input_data);
+       GSocketAddress *sock_addr, char *input_data);
 
-/* By using below comments, can find the client ip & port
-       gchar *print_addr;
-       GInetSocketAddress *inet_addr = G_INET_SOCKET_ADDRESS(sock_addr);
-       print_addr = g_inet_address_to_string(g_inet_socket_address_get_address(inet_addr));
-    SM_INFO("client ip : %s, port : %d", print_addr, g_inet_socket_address_get_port(inet_addr));
-*/
 
 gboolean asp_coordination_protocol_init()
 {
@@ -123,13 +117,9 @@ gboolean asp_coordination_protocol_init()
 
        inet_addr = g_inet_address_new_any(G_SOCKET_FAMILY_IPV4);
 
-#ifdef SEEKER
-       /* for test */
-       /*coordination_protocol_sockaddr = g_inet_socket_address_new(inet_addr, 7233); */
-#else
        coordination_protocol_sockaddr = g_inet_socket_address_new(inet_addr,
                                         ASP_COORDINATION_PROTOCOL_PORT);
-#endif
+
        g_object_unref(inet_addr);
 
        if (!g_socket_bind(coordination_protocol_socket, coordination_protocol_sockaddr,
@@ -168,13 +158,13 @@ gboolean asp_coordination_protocol_destroy()
 }
 
 gboolean asp_coordination_protocol_send_msg(GSocketAddress *input_sock_addr,
-               gpointer input_data)
+               void *input_data)
 {
        INFO_MSG;
 
        gboolean ret_val = FALSE;
 
-       asp_coord_header_t *asp_cord_header = (asp_coord_header_t *) input_data;
+       asp_coord_header_s *asp_cord_header = (asp_coord_header_s *)input_data;
 
        ASP_LOGD("%s asp_coordination_protocol_send_msg() asp_cord_header->opcode: %x",
                 ROLE, asp_cord_header->opcode);
@@ -182,47 +172,47 @@ gboolean asp_coordination_protocol_send_msg(GSocketAddress *input_sock_addr,
        switch (asp_cord_header->opcode) {
        case ASP_OPCODE_REQUEST_SESSION: {
                        ret_val = asp_coordination_protocol_send_request_session(input_sock_addr,
-                                       (asp_request_session_t *) input_data);
+                                       (asp_request_session_s *)input_data);
                        break;
                }
        case ASP_OPCODE_ADDED_SESSION: {
                        ret_val = asp_coordination_protocol_send_added_session(input_sock_addr,
-                                       (asp_added_session_t *) input_data);
+                                       (asp_added_session_s *)input_data);
                        break;
                }
        case ASP_OPCODE_REJECTED_SESSION: {
                        ret_val = asp_coordination_protocol_send_rejected_session(input_sock_addr,
-                                       (asp_rejected_session_t *) input_data);
+                                       (asp_rejected_session_s *)input_data);
                        break;
                }
        case ASP_OPCODE_REMOVE_SESSION: {
                        ret_val = asp_coordination_protocol_send_remove_session(input_sock_addr,
-                                       (asp_remove_session_t *) input_data);
+                                       (asp_remove_session_s *)input_data);
                        break;
                }
        case ASP_OPCODE_ALLOWED_PORT: {
                        ret_val = asp_coordination_protocol_send_allowed_port(input_sock_addr,
-                                       (asp_allowed_port_t *) input_data);
+                                       (asp_allowed_port_s *)input_data);
                        break;
                }
        case ASP_OPCODE_VERSION: {
                        ret_val = asp_coordination_protocol_send_version(input_sock_addr,
-                                       (asp_version_t *) input_data);
+                                       (asp_version_s *)input_data);
                        break;
                }
        case ASP_OPCODE_DEFERRED_SESSION: {
                        ret_val = asp_coordination_protocol_send_deferred_session(input_sock_addr,
-                                       (asp_deferred_session_t *) input_data);
+                                       (asp_deferred_session_s *)input_data);
                        break;
                }
        case ASP_OPCODE_ACK: {
                        ret_val = asp_coordination_protocol_send_ack(input_sock_addr,
-                                       (asp_ack_t *) input_data);
+                                       (asp_ack_s *)input_data);
                        break;
                }
        case ASP_OPCODE_NACK: {
                        ret_val = asp_coordination_protocol_send_nack(input_sock_addr,
-                                       (asp_nack_t *) input_data);
+                                       (asp_nack_s *)input_data);
                        break;
                }
        default: {
@@ -297,136 +287,136 @@ static gboolean asp_coordination_protocol_read_cb(GIOChannel *src,
 }
 
 static void asp_coordination_protocol_ack_handler(GSocketAddress *sock_addr,
-               gpointer input_data)
+               void *input_data)
 {
        INFO_MSG;
 
-       asp_ack_t *ack_data = (asp_ack_t *) input_data;
+       asp_ack_s *ack_data = (asp_ack_s *)input_data;
        asp_sess_peer_recv_msg(sock_addr, ack_data);
 }
 
 static void asp_coordination_protocol_nack_handler(GSocketAddress *sock_addr,
-               gpointer input_data)
+               void *input_data)
 {
        INFO_MSG;
 
-       asp_nack_t *nack_data = (asp_nack_t *) input_data;
+       asp_nack_s *nack_data = (asp_nack_s *)input_data;
        asp_sess_peer_recv_msg(sock_addr, nack_data);
 }
 
 static void asp_coordination_protocol_version_handler(GSocketAddress *sock_addr,
-               gpointer input_data)
+               void *input_data)
 {
        INFO_MSG;
 
-       asp_version_t *ver = (asp_version_t *) input_data;
+       asp_version_s *ver = (asp_version_s *)input_data;
        asp_sess_peer_recv_msg(sock_addr, ver);
 }
 
 static void asp_coordination_protocol_request_session_handler(
-       GSocketAddress *sock_addr, gpointer input_data)
+       GSocketAddress *sock_addr, void *input_data)
 {
        INFO_MSG;
 
-       asp_request_session_t *request_sess = (asp_request_session_t *) input_data;
+       asp_request_session_s *request_sess = (asp_request_session_s *)input_data;
        request_sess->session_id = ntohl(request_sess->session_id);
        request_sess->advertisement_id = ntohl(request_sess->advertisement_id);
        asp_sess_peer_recv_msg(sock_addr, request_sess);
 }
 
 static void asp_coordination_protocol_allowed_port_handler(
-       GSocketAddress *sock_addr, gpointer input_data)
+       GSocketAddress *sock_addr, void *input_data)
 {
        INFO_MSG;
 
-       asp_allowed_port_t *allowed_port_data = (asp_allowed_port_t *) input_data;
+       asp_allowed_port_s *allowed_port_data = (asp_allowed_port_s *)input_data;
        allowed_port_data->session_id = ntohl(allowed_port_data->session_id);
        asp_sess_peer_recv_msg(sock_addr, allowed_port_data);
 }
 
 static void asp_coordination_protocol_remove_session_handler(
-       GSocketAddress *sock_addr, gpointer input_data)
+       GSocketAddress *sock_addr, void *input_data)
 {
        INFO_MSG;
 
-       asp_remove_session_t *remove_sess = (asp_remove_session_t *) input_data;
+       asp_remove_session_s *remove_sess = (asp_remove_session_s *)input_data;
        remove_sess->session_id = ntohl(remove_sess->session_id);
        asp_sess_peer_recv_msg(sock_addr, remove_sess);
 }
 
 static gboolean asp_coordination_protocol_send_ack(GSocketAddress *sock_addr,
-               asp_ack_t *input_data)
+               asp_ack_s *input_data)
 {
        INFO_MSG;
 
        GError *error = NULL;
-       asp_ack_t *send_ack = input_data;
+       asp_ack_s *send_ack = input_data;
 
-       g_socket_send_to(coordination_protocol_socket, sock_addr, (gchar *)send_ack,
-                        sizeof(asp_ack_t), NULL, &error);
+       g_socket_send_to(coordination_protocol_socket, sock_addr, (char *)send_ack,
+                        sizeof(asp_ack_s), NULL, &error);
 
        return TRUE;
 }
 
 static gboolean asp_coordination_protocol_send_nack(GSocketAddress *sock_addr,
-               asp_nack_t *input_data)
+               asp_nack_s *input_data)
 {
        INFO_MSG;
 
        GError *error = NULL;
-       asp_nack_t *send_nack = input_data;
+       asp_nack_s *send_nack = input_data;
 
-       g_socket_send_to(coordination_protocol_socket, sock_addr, (gchar *)send_nack,
-                        sizeof(asp_nack_t), NULL, &error);
+       g_socket_send_to(coordination_protocol_socket, sock_addr, (char *)send_nack,
+                        sizeof(asp_nack_s), NULL, &error);
 
        return TRUE;
 }
 
 static gboolean asp_coordination_protocol_send_version(GSocketAddress
-               *sock_addr, asp_version_t *input_data)
+               *sock_addr, asp_version_s *input_data)
 {
        INFO_MSG;
 
        GError *error = NULL;
-       asp_version_t *send_version = input_data;
+       asp_version_s *send_version = input_data;
 
-       g_socket_send_to(coordination_protocol_socket, sock_addr, (gchar *)send_version,
-                        sizeof(asp_version_t), NULL, &error);
+       g_socket_send_to(coordination_protocol_socket, sock_addr, (char *)send_version,
+                        sizeof(asp_version_s), NULL, &error);
 
        return TRUE;
 }
 
 static gboolean asp_coordination_protocol_send_added_session(
-       GSocketAddress *sock_addr, asp_added_session_t *input_data)
+       GSocketAddress *sock_addr, asp_added_session_s *input_data)
 {
        INFO_MSG;
 
        GError *error = NULL;
-       asp_added_session_t added_sess;
-       memcpy(&added_sess, input_data, sizeof(asp_added_session_t));
+       asp_added_session_s added_sess;
+       memcpy(&added_sess, input_data, sizeof(asp_added_session_s));
        added_sess.session_id = htonl(added_sess.session_id);
 
-       g_socket_send_to(coordination_protocol_socket, sock_addr, (gchar *)&added_sess,
-                        sizeof(asp_added_session_t), NULL, &error);
+       g_socket_send_to(coordination_protocol_socket, sock_addr, (char *)&added_sess,
+                        sizeof(asp_added_session_s), NULL, &error);
 
        return TRUE;
 }
 
 static gboolean asp_coordination_protocol_send_deferred_session(
-       GSocketAddress *sock_addr, asp_deferred_session_t *input_data)
+       GSocketAddress *sock_addr, asp_deferred_session_s *input_data)
 {
        INFO_MSG;
 
        GError *error = NULL;
-       asp_deferred_session_t deferred_sess;
-       memcpy(&deferred_sess, input_data, sizeof(asp_deferred_session_t));
+       asp_deferred_session_s deferred_sess;
+       memcpy(&deferred_sess, input_data, sizeof(asp_deferred_session_s));
        deferred_sess.session_id = htonl(deferred_sess.session_id);
 
        if (deferred_sess.deferred_session__response_length <= LENGTH_MAX)
                g_socket_send_to(coordination_protocol_socket, sock_addr,
-                                (gchar *)&deferred_sess,
-                                sizeof(asp_deferred_session_t) + deferred_sess.deferred_session__response_length
-                                - DEFERRED_INFO_BUF_SIZE, NULL, &error);
+                                (char *)&deferred_sess, sizeof(asp_deferred_session_s) +
+                                deferred_sess.deferred_session__response_length - DEFERRED_INFO_BUF_SIZE, NULL,
+                                &error);
        else
                return FALSE;
 
@@ -434,52 +424,52 @@ static gboolean asp_coordination_protocol_send_deferred_session(
 }
 
 static gboolean asp_coordination_protocol_send_rejected_session(
-       GSocketAddress *sock_addr, asp_rejected_session_t *input_data)
+       GSocketAddress *sock_addr, asp_rejected_session_s *input_data)
 {
        INFO_MSG;
 
        GError *error = NULL;
-       asp_rejected_session_t rejected_sess;
-       memcpy(&rejected_sess, input_data, sizeof(asp_rejected_session_t));
+       asp_rejected_session_s rejected_sess;
+       memcpy(&rejected_sess, input_data, sizeof(asp_rejected_session_s));
        rejected_sess.session_id = htonl(rejected_sess.session_id);
 
        g_socket_send_to(coordination_protocol_socket, sock_addr,
-                        (gchar *)&rejected_sess, sizeof(asp_rejected_session_t), NULL, &error);
+                        (char *)&rejected_sess, sizeof(asp_rejected_session_s), NULL, &error);
 
        return TRUE;
 }
 
 static gboolean asp_coordination_protocol_send_allowed_port(
-       GSocketAddress *sock_addr, asp_allowed_port_t *input_data)
+       GSocketAddress *sock_addr, asp_allowed_port_s *input_data)
 {
        INFO_MSG;
 
        GError *error = NULL;
-       asp_allowed_port_t allowed_port_data;
-       memcpy(&allowed_port_data, input_data, sizeof(asp_allowed_port_t));
+       asp_allowed_port_s allowed_port_data;
+       memcpy(&allowed_port_data, input_data, sizeof(asp_allowed_port_s));
        allowed_port_data.session_id = htonl(allowed_port_data.session_id);
 
        g_socket_send_to(coordination_protocol_socket, sock_addr,
-                        (gchar *)&allowed_port_data, sizeof(asp_allowed_port_t), NULL, &error);
+                        (char *)&allowed_port_data, sizeof(asp_allowed_port_s), NULL, &error);
 
        return TRUE;
 }
 
 static gboolean asp_coordination_protocol_send_request_session(
-       GSocketAddress *dest_sock_addr, asp_request_session_t *input_data)
+       GSocketAddress *dest_sock_addr, asp_request_session_s *input_data)
 {
        INFO_MSG;
 
        GError *error = NULL;
 
-       asp_request_session_t request_sess;
-       memcpy(&request_sess, input_data, sizeof(asp_request_session_t));
+       asp_request_session_s request_sess;
+       memcpy(&request_sess, input_data, sizeof(asp_request_session_s));
        request_sess.session_id = htonl(request_sess.session_id);
        request_sess.advertisement_id = htonl(request_sess.advertisement_id);
 
        if (request_sess.session_information_length <= LENGTH_MAX)
                g_socket_send_to(coordination_protocol_socket, dest_sock_addr,
-                                (gchar *)&request_sess, sizeof(asp_request_session_t) +
+                                (char *)&request_sess, sizeof(asp_request_session_s) +
                                 request_sess.session_information_length - SESSION_INFO_BUF_SIZE, NULL, &error);
        else
                return FALSE;
@@ -488,47 +478,47 @@ static gboolean asp_coordination_protocol_send_request_session(
 }
 
 static gboolean asp_coordination_protocol_send_remove_session(
-       GSocketAddress *sock_addr, asp_remove_session_t *input_data)
+       GSocketAddress *sock_addr, asp_remove_session_s *input_data)
 {
        INFO_MSG;
 
        GError *error = NULL;
-       asp_remove_session_t remove_sess;
-       memcpy(&remove_sess, input_data, sizeof(asp_remove_session_t));
+       asp_remove_session_s remove_sess;
+       memcpy(&remove_sess, input_data, sizeof(asp_remove_session_s));
        remove_sess.session_id = htonl(remove_sess.session_id);
 
-       g_socket_send_to(coordination_protocol_socket, sock_addr, (gchar *)&remove_sess,
-                        sizeof(asp_remove_session_t), NULL, &error);
+       g_socket_send_to(coordination_protocol_socket, sock_addr, (char *)&remove_sess,
+                        sizeof(asp_remove_session_s), NULL, &error);
 
        return TRUE;
 }
 
 static void asp_coordination_protocol_added_session_handler(
-       GSocketAddress *sock_addr, gchar *input_data)
+       GSocketAddress *sock_addr, char *input_data)
 {
        INFO_MSG;
 
-       asp_added_session_t *added_sess = (asp_added_session_t *) input_data;
+       asp_added_session_s *added_sess = (asp_added_session_s *)input_data;
        added_sess->session_id = ntohl(added_sess->session_id);
        asp_sess_peer_recv_msg(sock_addr, added_sess);
 }
 
 static void asp_coordination_protocol_rejected_session_handler(
-       GSocketAddress *sock_addr, gchar *input_data)
+       GSocketAddress *sock_addr, char *input_data)
 {
        INFO_MSG;
 
-       asp_rejected_session_t *rejected_sess = (asp_rejected_session_t *) input_data;
+       asp_rejected_session_s *rejected_sess = (asp_rejected_session_s *)input_data;
        rejected_sess->session_id = ntohl(rejected_sess->session_id);
        asp_sess_peer_recv_msg(sock_addr, rejected_sess);
 }
 
 static void asp_coordination_protocol_deferred_session_handler(
-       GSocketAddress *sock_addr, gchar *input_data)
+       GSocketAddress *sock_addr, char *input_data)
 {
        INFO_MSG;
 
-       asp_deferred_session_t *deferred_sess = (asp_deferred_session_t *) input_data;
+       asp_deferred_session_s *deferred_sess = (asp_deferred_session_s *)input_data;
        deferred_sess->session_id = ntohl(deferred_sess->session_id);
        asp_sess_peer_recv_msg(sock_addr, deferred_sess);
 }
index af1b53d..99a5325 100644 (file)
 typedef struct asp_coord_header {
        guint8 opcode;
        guint8 seq_num;
-} __attribute__((packed)) asp_coord_header_t;
+} __attribute__((packed)) asp_coord_header_s;
 
 typedef struct asp_request_header {
        guint8 opcode;
        guint8 seq_num;
        guint8 session_mac[SESSION_MAC_BUF_SIZE];
        guint32 session_id;
-} __attribute__((packed)) asp_request_header_t;
+} __attribute__((packed)) asp_request_header_s;
 
 typedef struct asp_request_session {
        guint8 opcode;
@@ -56,21 +56,21 @@ typedef struct asp_request_session {
        guint32 advertisement_id;
        guint8 session_information_length;
        guint8 session_information[SESSION_INFO_BUF_SIZE];
-} __attribute__((packed)) asp_request_session_t;
+} __attribute__((packed)) asp_request_session_s;
 
 typedef struct asp_added_session {
        guint8 opcode;
        guint8 seq_num;
        guint8 session_mac[SESSION_MAC_BUF_SIZE];
        guint32 session_id;
-} __attribute__((packed)) asp_added_session_t;
+} __attribute__((packed)) asp_added_session_s;
 
 typedef struct asp_rejected_session {
        guint8 opcode;
        guint8 seq_num;
        guint8 session_mac[SESSION_MAC_BUF_SIZE];
        guint32 session_id;
-} __attribute__((packed)) asp_rejected_session_t;
+} __attribute__((packed)) asp_rejected_session_s;
 
 typedef struct asp_remove_session {
        guint8 opcode;
@@ -78,7 +78,7 @@ typedef struct asp_remove_session {
        guint8 session_mac[SESSION_MAC_BUF_SIZE];
        guint32 session_id;
        guint8 reason;
-} __attribute__((packed)) asp_remove_session_t;
+} __attribute__((packed)) asp_remove_session_s;
 
 typedef struct asp_allowed_port {
        guint8 opcode;
@@ -87,7 +87,7 @@ typedef struct asp_allowed_port {
        guint32 session_id;
        guint16 port;
        guint8 proto;
-} __attribute__((packed)) asp_allowed_port_t;
+} __attribute__((packed)) asp_allowed_port_s;
 
 typedef struct asp_version {
        guint8 opcode;
@@ -95,7 +95,7 @@ typedef struct asp_version {
        guint8 coordination_version;
        guint8 vendor_information_length;
        guint32 vendor_information;
-} __attribute__((packed)) asp_version_t;
+} __attribute__((packed)) asp_version_s;
 
 typedef struct asp_deferred_session {
        guint8 opcode;
@@ -104,18 +104,18 @@ typedef struct asp_deferred_session {
        guint32 session_id;
        guint8 deferred_session__response_length;
        guint8 deferred_session__response[DEFERRED_INFO_BUF_SIZE];
-} __attribute__((packed)) asp_deferred_session_t;
+} __attribute__((packed)) asp_deferred_session_s;
 
 typedef struct asp_ack {
        guint8 opcode;
        guint8 seq_num;
-} __attribute__((packed)) asp_ack_t;
+} __attribute__((packed)) asp_ack_s;
 
 typedef struct asp_nack {
        guint8 opcode;
        guint8 seq_num;
        guint8 reason;
-} __attribute__((packed)) asp_nack_t;
+} __attribute__((packed)) asp_nack_s;
 
 enum {
        ASP_OPCODE_REQUEST_SESSION = 0x00,
@@ -149,6 +149,6 @@ enum {
 gboolean asp_coordination_protocol_init();
 gboolean asp_coordination_protocol_destroy();
 gboolean asp_coordination_protocol_send_msg(GSocketAddress *input_sock_addr,
-               gpointer input_data);
+               void *input_data);
 
 #endif                                                 /* __ASP_COORDINATION_PROTOCOL_H__ */
index 6f8a029..f7b0785 100644 (file)
@@ -8,12 +8,12 @@
 #define ASP_SESS_PEER_FSM_TRACE_LEAVE()
 
 typedef struct asp_sess_peer {
-       gfsm_context_context;
+       gfsm_context_s *context;
        GSocketAddress *p_sock_addr;
        guint8 seq_num;
        guint8 retry;
        guint timer_id;
-       gpointer p_sending_msg_data;
+       void *p_sending_msg_data;
        GTree *p_sess_tree;
 } asp_sess_peer_t;
 
@@ -58,7 +58,7 @@ enum asp_sess_peer_event_t {
 };
 
 static asp_sess_peer_t *_asp_sess_peer_create_peer(GSocketAddress *p_sock_addr);
-static void _asp_sess_peer_destroy_peer(gpointer p_peer);
+static void _asp_sess_peer_destroy_peer(void *p_peer);
 static asp_sess_peer_t *_asp_sess_peer_tree_find_peer(GSocketAddress
                *p_sock_addr);
 static gboolean _asp_sess_peer_tree_insert_peer(GSocketAddress *p_sock_addr,
@@ -68,9 +68,9 @@ static gint _asp_sess_peer_tree_compare_cb(gconstpointer a, gconstpointer b,
                gpointer p_user_data);
 static void _asp_sess_peer_tree_key_destructor_cb(gpointer a);
 static void _asp_sess_peer_tree_value_destructor_cb(gpointer a);
-static gpointer asp_sess_peer_dup_msg_data(gpointer p_msg);
+static void *asp_sess_peer_dup_msg_data(void *p_msg);
 static void _asp_sess_peer_set_sending_msg_data(asp_sess_peer_t *p_peer,
-               gpointer p_msg);
+               void *p_msg);
 static asp_sess_peer_sess_key_t *_asp_sess_peer_sess_tree_create_key(
        guint8 session_mac[], guint32 session_id);
 static gint _asp_sess_peer_sess_tree_compare_cb(gconstpointer a,
@@ -81,107 +81,105 @@ static void _asp_sess_peer_stop_timer(asp_sess_peer_t *p_peer);
 static void _asp_sess_peer_start_timer(asp_sess_peer_t *p_peer, guint sec);
 
 static gboolean _asp_sess_peer_send_req(GSocketAddress *p_sock_addr,
-                                       gpointer p_msg);
+                                       void *p_msg);
 static gboolean _asp_sess_peer_send_ack(GSocketAddress *p_sock_addr,
-                                       gpointer p_msg);
+                                       void *p_msg);
 static gboolean _asp_sess_peer_send_nack(GSocketAddress *p_sock_addr,
-               gpointer p_msg);
+               void *p_msg);
 
 static gboolean _asp_sess_peer_recv_req(GSocketAddress *p_sock_addr,
-                                       gpointer p_msg);
+                                       void *p_msg);
 static gboolean _asp_sess_peer_recv_ack(GSocketAddress *p_sock_addr,
-                                       gpointer p_msg);
+                                       void *p_msg);
 static gboolean _asp_sess_peer_recv_nack(GSocketAddress *p_sock_addr,
-               gpointer p_msg);
+               void *p_msg);
 
 static gboolean _asp_sess_peer_recv_version(GSocketAddress *p_sock_addr,
-               gpointer p_msg);
+               void *p_msg);
 static void _asp_sess_peer_send_nack_to_protocol(GSocketAddress *p_sock_addr,
                guint8 seq_num, guint8 reason);
 
-void _asp_sess_peer_state_init_entry_action(gpointer p_context_data);
-static void _asp_sess_peer_state_init_exit_action(gpointer p_context_data);
+void _asp_sess_peer_state_init_entry_action(void *p_context_data);
+static void _asp_sess_peer_state_init_exit_action(void *p_context_data);
 static gfsm_state_id_t _asp_sess_peer_state_init_reaction_start(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _asp_sess_peer_state_created_entry_action(gpointer p_context_data);
-static void _asp_sess_peer_state_created_exit_action(gpointer p_context_data);
+static void _asp_sess_peer_state_created_entry_action(void *p_context_data);
+static void _asp_sess_peer_state_created_exit_action(void *p_context_data);
 static gfsm_state_id_t _asp_sess_peer_state_created_reaction_add_session(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _asp_sess_peer_state_created_reaction_del_session(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _asp_sess_peer_state_created_reaction_close(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _asp_sess_peer_state_created_reaction_send_ack(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _asp_sess_peer_state_created_reaction_send_nack(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
 static void _asp_sess_peer_state_version_sent_entry_action(
-       gpointer p_context_data);
-static void _asp_sess_peer_state_version_sent_exit_action(
-       gpointer p_context_data);
+       void *p_context_data);
+static void _asp_sess_peer_state_version_sent_exit_action(void *p_context_data);
 /*static gfsm_state_id_t asp_sess_peer_state_version_sent_reaction_send_req (void* p_context_data, void* p_event_data); */
 /*static gfsm_state_id_t asp_sess_peer_state_version_sent_reaction_recv_version (void* p_context_data, void* p_event_data); */
 /*static gfsm_state_id_t asp_sess_peer_state_version_sent_reaction_recv_req (void* p_context_data, void* p_event_data); */
 static gfsm_state_id_t _asp_sess_peer_state_version_sent_reaction_recv_ack(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _asp_sess_peer_state_version_sent_reaction_recv_nack(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _asp_sess_peer_state_version_sent_reaction_timeout(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
 static void _asp_sess_peer_state_wait_version_entry_action(
-       gpointer p_context_data);
-static void _asp_sess_peer_state_wait_version_exit_action(
-       gpointer p_context_data);
+       void *p_context_data);
+static void _asp_sess_peer_state_wait_version_exit_action(void *p_context_data);
 /*static gfsm_state_id_t asp_sess_peer_state_wait_version_reaction_send_req (void* p_context_data, void* p_event_data); */
 static gfsm_state_id_t _asp_sess_peer_state_wait_version_reaction_recv_version(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _asp_sess_peer_state_wait_version_reaction_recv_req(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 /*static gfsm_state_id_t asp_sess_peer_state_wait_version_reaction_recv_ack (void* p_context_data, void* p_event_data); */
 /*static gfsm_state_id_t asp_sess_peer_state_wait_version_reaction_recv_nack (void* p_context_data, void* p_event_data); */
 static gfsm_state_id_t _asp_sess_peer_state_wait_version_reaction_timeout(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _asp_sess_peer_state_opened_entry_action(gpointer p_context_data);
-static void _asp_sess_peer_state_opened_exit_action(gpointer p_context_data);
+static void _asp_sess_peer_state_opened_entry_action(void *p_context_data);
+static void _asp_sess_peer_state_opened_exit_action(void *p_context_data);
 static gfsm_state_id_t _asp_sess_peer_state_opened_reaction_recv_version(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _asp_sess_peer_state_opened_reaction_recv_req(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _asp_sess_peer_state_idle_entry_action(gpointer p_context_data);
-static void _asp_sess_peer_state_idle_exit_action(gpointer p_context_data);
+static void _asp_sess_peer_state_idle_entry_action(void *p_context_data);
+static void _asp_sess_peer_state_idle_exit_action(void *p_context_data);
 static gfsm_state_id_t _asp_sess_peer_state_idle_reaction_send_req(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _asp_sess_peer_state_wait_ack_entry_action(gpointer p_context_data);
-static void _asp_sess_peer_state_wait_ack_exit_action(gpointer p_context_data);
+static void _asp_sess_peer_state_wait_ack_entry_action(void *p_context_data);
+static void _asp_sess_peer_state_wait_ack_exit_action(void *p_context_data);
 /*static gfsm_state_id_t asp_sess_peer_state_wait_ack_reaction_send_req (void* p_context_data, void* p_event_data); */
 static gfsm_state_id_t _asp_sess_peer_state_wait_ack_reaction_recv_ack(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _asp_sess_peer_state_wait_ack_reaction_recv_nack(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _asp_sess_peer_state_wait_ack_reaction_timeout(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _asp_sess_peer_state_close_entry_action(gpointer p_context_data);
-static void _asp_sess_peer_state_close_exit_action(gpointer p_context_data);
+static void _asp_sess_peer_state_close_entry_action(void *p_context_data);
+static void _asp_sess_peer_state_close_exit_action(void *p_context_data);
 
 static void asp_sess_peer_fsm_init();
 
-static gfsm_asm_sess_peer_fsm;
-static gfsm_state_asp_sess_peer_state_init;
-static gfsm_state_asp_sess_peer_state_created;
-static gfsm_state_asp_sess_peer_state_version_sent;
-static gfsm_state_asp_sess_peer_state_wait_version;
-static gfsm_state_asp_sess_peer_state_opened;
-static gfsm_state_asp_sess_peer_state_idle;
-/*static gfsm_state_t asp_sess_peer_state_req_sent; */
-static gfsm_state_asp_sess_peer_state_wait_ack;
-static gfsm_state_asp_sess_peer_state_closed;
+static gfsm_s *asm_sess_peer_fsm;
+static gfsm_state_s *asp_sess_peer_state_init;
+static gfsm_state_s *asp_sess_peer_state_created;
+static gfsm_state_s *asp_sess_peer_state_version_sent;
+static gfsm_state_s *asp_sess_peer_state_wait_version;
+static gfsm_state_s *asp_sess_peer_state_opened;
+static gfsm_state_s *asp_sess_peer_state_idle;
+/*static gfsm_state_s asp_sess_peer_state_req_sent; */
+static gfsm_state_s *asp_sess_peer_state_wait_ack;
+static gfsm_state_s *asp_sess_peer_state_closed;
 static GTree *gp_peer_tree = 0;
 
 void asp_sess_peer_init()
@@ -200,21 +198,21 @@ void asp_sess_peer_destroy()
 {
        INFO_MSG;
 
-       gfsm_terminate_fsm(&asm_sess_peer_fsm);
+       gfsm_destroy_fsm(asm_sess_peer_fsm);
        g_tree_destroy(gp_peer_tree);
        gp_peer_tree = 0;
 }
 
-gboolean asp_sess_peer_send_msg(GSocketAddress *p_sock_addr, gpointer p_msg)
+gboolean asp_sess_peer_send_msg(GSocketAddress *p_sock_addr, void *p_msg)
 {
        INFO_MSG;
 
-       asp_coord_header_t *p_header = (asp_coord_header_t *) p_msg;
+       asp_coord_header_s *p_header = (asp_coord_header_s *)p_msg;
 
        switch (p_header->opcode) {
        case ASP_OPCODE_REQUEST_SESSION:
                ASP_LOGD("%s asp_sess_peer_send_msg, ASP_OPCODE_REQUEST_SESSION session_id:%d",
-                        ROLE, ((asp_request_session_t *) p_msg)->session_id);
+                        ROLE, ((asp_request_session_s *)p_msg)->session_id);
                return _asp_sess_peer_send_req(p_sock_addr, p_msg);
        case ASP_OPCODE_ADDED_SESSION:
        /*FALL THROUGH */
@@ -239,11 +237,11 @@ gboolean asp_sess_peer_send_msg(GSocketAddress *p_sock_addr, gpointer p_msg)
        return TRUE;
 }
 
-gboolean asp_sess_peer_recv_msg(GSocketAddress *p_sock_addr, gpointer p_msg)
+gboolean asp_sess_peer_recv_msg(GSocketAddress *p_sock_addr, void *p_msg)
 {
        INFO_MSG;
 
-       asp_coord_header_t *p_header = (asp_coord_header_t *) p_msg;
+       asp_coord_header_s *p_header = (asp_coord_header_s *)p_msg;
 
        switch (p_header->opcode) {
        case ASP_OPCODE_REQUEST_SESSION:
@@ -273,7 +271,7 @@ gboolean asp_sess_peer_recv_msg(GSocketAddress *p_sock_addr, gpointer p_msg)
        return TRUE;
 }
 
-gboolean _asp_sess_peer_send_req(GSocketAddress *p_sock_addr, gpointer p_msg)
+gboolean _asp_sess_peer_send_req(GSocketAddress *p_sock_addr, void *p_msg)
 {
        INFO_MSG;
 
@@ -283,18 +281,17 @@ gboolean _asp_sess_peer_send_req(GSocketAddress *p_sock_addr, gpointer p_msg)
                p_peer = _asp_sess_peer_create_peer(p_sock_addr);
                g_assert(p_peer);
 
-               gfsm_process_event(&p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_START,
+               gfsm_process_event(p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_START,
                                   NULL, NULL));
        }
 
-       gfsm_process_event(&p_peer->context,
-                          gfsm_create_event(ASP_S_PEER_EVENT_SEND_REQ, asp_sess_peer_dup_msg_data(p_msg),
-                                            g_free));
+       gfsm_process_event(p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_SEND_REQ,
+                          asp_sess_peer_dup_msg_data(p_msg), g_free));
 
        return TRUE;
 }
 
-gboolean _asp_sess_peer_send_ack(GSocketAddress *p_sock_addr, gpointer p_msg)
+gboolean _asp_sess_peer_send_ack(GSocketAddress *p_sock_addr, void *p_msg)
 {
        INFO_MSG;
 
@@ -303,14 +300,13 @@ gboolean _asp_sess_peer_send_ack(GSocketAddress *p_sock_addr, gpointer p_msg)
        if (NULL == p_peer)
                return FALSE;
 
-       gfsm_process_event(&p_peer->context,
-                          gfsm_create_event(ASP_S_PEER_EVENT_SEND_ACK, asp_sess_peer_dup_msg_data(p_msg),
-                                            g_free));
+       gfsm_process_event(p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_SEND_ACK,
+                          asp_sess_peer_dup_msg_data(p_msg), g_free));
 
        return TRUE;
 }
 
-gboolean _asp_sess_peer_send_nack(GSocketAddress *p_sock_addr, gpointer p_msg)
+gboolean _asp_sess_peer_send_nack(GSocketAddress *p_sock_addr, void *p_msg)
 {
        INFO_MSG;
 
@@ -319,15 +315,14 @@ gboolean _asp_sess_peer_send_nack(GSocketAddress *p_sock_addr, gpointer p_msg)
        if (NULL == p_peer)
                return FALSE;
 
-       gfsm_process_event(&p_peer->context,
+       gfsm_process_event(p_peer->context,
                           gfsm_create_event(ASP_S_PEER_EVENT_SEND_NACK, asp_sess_peer_dup_msg_data(p_msg),
                                             g_free));
 
        return TRUE;
 }
 
-gboolean _asp_sess_peer_recv_version(GSocketAddress *p_sock_addr,
-                                    gpointer p_msg)
+gboolean _asp_sess_peer_recv_version(GSocketAddress *p_sock_addr, void *p_msg)
 {
        INFO_MSG;
 
@@ -338,33 +333,33 @@ gboolean _asp_sess_peer_recv_version(GSocketAddress *p_sock_addr,
 
                g_assert(p_peer);
 
-               asp_ack_t ack;
+               asp_ack_s ack;
                ack.opcode = ASP_OPCODE_ACK;
-               ack.seq_num = ((asp_version_t *) p_msg)->seq_num;
+               ack.seq_num = ((asp_version_s *)p_msg)->seq_num;
                asp_coordination_protocol_send_msg(p_sock_addr, &ack);
 
-               gfsm_process_event(&p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_START,
+               gfsm_process_event(p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_START,
                                   NULL, NULL));
        } else {
-               asp_ack_t ack;
+               asp_ack_s ack;
                ack.opcode = ASP_OPCODE_ACK;
-               ack.seq_num = ((asp_version_t *) p_msg)->seq_num;
+               ack.seq_num = ((asp_version_s *)p_msg)->seq_num;
                asp_coordination_protocol_send_msg(p_sock_addr, &ack);
        }
 
-       gfsm_process_event(&p_peer->context,
+       gfsm_process_event(p_peer->context,
                           gfsm_create_event(ASP_S_PEER_EVENT_RECV_VERSION,
                                             asp_sess_peer_dup_msg_data(p_msg), g_free));
 
        return TRUE;
 }
 
-gboolean _asp_sess_peer_recv_req(GSocketAddress *p_sock_addr, gpointer p_msg)
+gboolean _asp_sess_peer_recv_req(GSocketAddress *p_sock_addr, void *p_msg)
 {
        INFO_MSG;
 
        asp_sess_peer_t *p_peer = _asp_sess_peer_tree_find_peer(p_sock_addr);
-       asp_coord_header_t *p_header = (asp_coord_header_t *) p_msg;
+       asp_coord_header_s *p_header = (asp_coord_header_s *)p_msg;
 
        if (NULL == p_peer) {
                _asp_sess_peer_send_nack_to_protocol(p_sock_addr, p_header->seq_num,
@@ -372,14 +367,13 @@ gboolean _asp_sess_peer_recv_req(GSocketAddress *p_sock_addr, gpointer p_msg)
                return FALSE;
        }
 
-       gfsm_process_event(&p_peer->context,
-                          gfsm_create_event(ASP_S_PEER_EVENT_RECV_REQ, asp_sess_peer_dup_msg_data(p_msg),
-                                            g_free));
+       gfsm_process_event(p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_RECV_REQ,
+                          asp_sess_peer_dup_msg_data(p_msg), g_free));
 
        return TRUE;
 }
 
-gboolean _asp_sess_peer_recv_ack(GSocketAddress *p_sock_addr, gpointer p_msg)
+gboolean _asp_sess_peer_recv_ack(GSocketAddress *p_sock_addr, void *p_msg)
 {
        INFO_MSG;
 
@@ -388,19 +382,18 @@ gboolean _asp_sess_peer_recv_ack(GSocketAddress *p_sock_addr, gpointer p_msg)
        if (NULL == p_peer)
                return FALSE;
 
-       asp_request_header_t *p_header = (asp_request_header_t *)
+       asp_request_header_s *p_header = (asp_request_header_s *)
                                         p_peer->p_sending_msg_data;
        ASP_LOGD("%s _asp_sess_peer_recv_ack, opcode:%d session_id:%d", ROLE,
                 p_header->opcode, p_header->session_id);
 
-       gfsm_process_event(&p_peer->context,
-                          gfsm_create_event(ASP_S_PEER_EVENT_RECV_ACK, asp_sess_peer_dup_msg_data(p_msg),
-                                            g_free));
+       gfsm_process_event(p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_RECV_ACK,
+                          asp_sess_peer_dup_msg_data(p_msg), g_free));
 
        return TRUE;
 }
 
-gboolean _asp_sess_peer_recv_nack(GSocketAddress *p_sock_addr, gpointer p_msg)
+gboolean _asp_sess_peer_recv_nack(GSocketAddress *p_sock_addr, void *p_msg)
 {
        INFO_MSG;
 
@@ -409,7 +402,7 @@ gboolean _asp_sess_peer_recv_nack(GSocketAddress *p_sock_addr, gpointer p_msg)
        if (NULL == p_peer)
                return FALSE;
 
-       gfsm_process_event(&p_peer->context,
+       gfsm_process_event(p_peer->context,
                           gfsm_create_event(ASP_S_PEER_EVENT_RECV_NACK, asp_sess_peer_dup_msg_data(p_msg),
                                             g_free));
 
@@ -427,11 +420,11 @@ gboolean asp_sess_peer_add_session(GSocketAddress *p_sock_addr,
                p_peer = _asp_sess_peer_create_peer(p_sock_addr);
                g_assert(p_peer);
 
-               gfsm_process_event(&p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_START,
+               gfsm_process_event(p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_START,
                                   NULL, NULL));
        }
 
-       gfsm_process_event(&p_peer->context,
+       gfsm_process_event(p_peer->context,
                           gfsm_create_event(ASP_S_PEER_EVENT_ADD_SESSION,
                                             _asp_sess_peer_sess_tree_create_key(session_mac, session_id), g_free));
 
@@ -449,7 +442,7 @@ gboolean asp_sess_peer_del_session(GSocketAddress *p_sock_addr,
                return TRUE;
 
        /*asp_sess_peer_remove_session(p_peer,session_mac,sessiond_id); */
-       gfsm_process_event(&p_peer->context,
+       gfsm_process_event(p_peer->context,
                           gfsm_create_event(ASP_S_PEER_EVENT_DEL_SESSION,
                                             _asp_sess_peer_sess_tree_create_key(session_mac, session_id), g_free));
 
@@ -459,8 +452,6 @@ gboolean asp_sess_peer_del_session(GSocketAddress *p_sock_addr,
 asp_sess_peer_key_t *_asp_sess_peer_tree_create_peer_key(
        GSocketAddress *p_sock_addr)
 {
-       INFO_MSG;
-
        GInetSocketAddress *p_inet_sock_addr = G_INET_SOCKET_ADDRESS(p_sock_addr);
 
        g_assert(p_inet_sock_addr);
@@ -469,7 +460,8 @@ asp_sess_peer_key_t *_asp_sess_peer_tree_create_peer_key(
 
        g_assert(p_inet_addr);
 
-       asp_sess_peer_key_t *p_key = g_malloc(sizeof(asp_sess_peer_key_t));
+       asp_sess_peer_key_t *p_key = (asp_sess_peer_key_t *) g_malloc(sizeof(
+                                            asp_sess_peer_key_t));
 
        g_assert(p_key);
 
@@ -487,8 +479,6 @@ asp_sess_peer_key_t *_asp_sess_peer_tree_create_peer_key(
 
 asp_sess_peer_t *_asp_sess_peer_tree_find_peer(GSocketAddress *p_sock_addr)
 {
-       INFO_MSG;
-
        asp_sess_peer_key_t *p_key = _asp_sess_peer_tree_create_peer_key(p_sock_addr);
 
        g_assert(p_key);
@@ -499,8 +489,6 @@ asp_sess_peer_t *_asp_sess_peer_tree_find_peer(GSocketAddress *p_sock_addr)
 gboolean _asp_sess_peer_tree_insert_peer(GSocketAddress *p_sock_addr,
                asp_sess_peer_t *p_peer)
 {
-       INFO_MSG;
-
        asp_sess_peer_key_t *p_key = _asp_sess_peer_tree_create_peer_key(p_sock_addr);
 
        g_assert(p_key);
@@ -526,8 +514,6 @@ gboolean _asp_sess_peer_tree_remove_peer(GSocketAddress* p_sock_addr)
 gint _asp_sess_peer_tree_compare_cb(gconstpointer a, gconstpointer b,
                                    gpointer p_user_data)
 {
-       INFO_MSG;
-
        asp_sess_peer_key_t *p_l = (asp_sess_peer_key_t *) a;
        asp_sess_peer_key_t *p_r = (asp_sess_peer_key_t *) b;
 
@@ -547,15 +533,11 @@ gint _asp_sess_peer_tree_compare_cb(gconstpointer a, gconstpointer b,
 
 void _asp_sess_peer_tree_key_destructor_cb(gpointer a)
 {
-       INFO_MSG;
-
        g_free(a);
 }
 
 void _asp_sess_peer_tree_value_destructor_cb(gpointer a)
 {
-       INFO_MSG;
-
        g_free(a);
 }
 
@@ -563,11 +545,11 @@ asp_sess_peer_t *_asp_sess_peer_create_peer(GSocketAddress *p_sock_addr)
 {
        INFO_MSG;
 
-       asp_sess_peer_t *p_peer = g_malloc(sizeof(asp_sess_peer_t));
+       asp_sess_peer_t *p_peer = (asp_sess_peer_t *) g_malloc(sizeof(asp_sess_peer_t));
 
        g_assert(p_peer);
 
-       p_peer->p_sock_addr = g_object_ref(p_sock_addr);
+       p_peer->p_sock_addr = (GSocketAddress *) g_object_ref(p_sock_addr);
        p_peer->seq_num = 0;
        p_peer->retry = 0;
        p_peer->timer_id = 0;
@@ -579,16 +561,14 @@ asp_sess_peer_t *_asp_sess_peer_create_peer(GSocketAddress *p_sock_addr)
 
        _asp_sess_peer_tree_insert_peer(p_sock_addr, p_peer);
 
-       gfsm_init_context(&p_peer->context, &asm_sess_peer_fsm,
-                         _asp_sess_peer_destroy_peer, p_peer);
+       p_peer->context = gfsm_create_context(asm_sess_peer_fsm,
+                                             _asp_sess_peer_destroy_peer, p_peer);
 
        return p_peer;
 }
 
-void _asp_sess_peer_destroy_peer(gpointer p_context_data)
+void _asp_sess_peer_destroy_peer(void *p_context_data)
 {
-       INFO_MSG;
-
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_context_data;
 
        if (p_peer->p_sock_addr) {
@@ -609,12 +589,11 @@ void _asp_sess_peer_destroy_peer(gpointer p_context_data)
        g_free(p_peer);
 }
 
-void _asp_sess_peer_set_sending_msg_data(asp_sess_peer_t *p_peer,
-               gpointer p_msg)
+void _asp_sess_peer_set_sending_msg_data(asp_sess_peer_t *p_peer, void *p_msg)
 {
        INFO_MSG;
 
-       asp_coord_header_t *p_header = (asp_coord_header_t *) p_msg;
+       asp_coord_header_s *p_header = (asp_coord_header_s *)p_msg;
 
        if (p_peer->p_sending_msg_data)
                g_free(p_peer->p_sending_msg_data);
@@ -637,30 +616,24 @@ void _asp_sess_peer_clear_sending_msg_data(asp_sess_peer_t *p_peer)
 }
 
 void _asp_sess_peer_forward_req_to_sessmgmt(asp_sess_peer_t *p_peer,
-               gpointer p_msg_data)
+               void *p_msg_data)
 {
-       INFO_MSG;
-
        asp_session_recv_req(p_peer->p_sock_addr, p_msg_data);
 }
 
 void _asp_sess_peer_forward_ack_to_sessmgmt(asp_sess_peer_t *p_peer,
-               gpointer p_msg_data)
+               void *p_msg_data)
 {
-       INFO_MSG;
-
-       asp_request_header_t *p_header = (asp_request_header_t *)
+       asp_request_header_s *p_header = (asp_request_header_s *)
                                         p_peer->p_sending_msg_data;
        asp_session_recv_ack(p_peer->p_sock_addr, p_header->session_mac,
                             p_header->session_id, p_msg_data);
 }
 
 void _asp_sess_peer_forward_nack_to_sessmgmt(asp_sess_peer_t *p_peer,
-               gpointer p_msg_data)
+               void *p_msg_data)
 {
-       INFO_MSG;
-
-       asp_request_header_t *p_header = (asp_request_header_t *)
+       asp_request_header_s *p_header = (asp_request_header_s *)
                                         p_peer->p_sending_msg_data;
        asp_session_recv_nack(p_peer->p_sock_addr, p_header->session_mac,
                              p_header->session_id, p_msg_data);
@@ -668,13 +641,11 @@ void _asp_sess_peer_forward_nack_to_sessmgmt(asp_sess_peer_t *p_peer,
 
 gboolean _asp_sess_peer_notify_timeout_cb(gpointer p_user_data)
 {
-       INFO_MSG;
-
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_user_data;
 
        p_peer->timer_id = 0;
 
-       gfsm_process_event(&p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_TIMEOUT,
+       gfsm_process_event(p_peer->context, gfsm_create_event(ASP_S_PEER_EVENT_TIMEOUT,
                           NULL, NULL));
 
        return FALSE;
@@ -703,17 +674,14 @@ void _asp_sess_peer_stop_timer(asp_sess_peer_t *p_peer)
 
 void _asp_sess_peer_increase_seq_num(asp_sess_peer_t *p_peer)
 {
-       INFO_MSG;
-
        ++p_peer->retry;
 }
 
 asp_sess_peer_sess_key_t *_asp_sess_peer_sess_tree_create_key(
        guint8 session_mac[], guint32 session_id)
 {
-       INFO_MSG;
-
-       asp_sess_peer_sess_key_t *p_key = g_malloc(sizeof(asp_sess_peer_sess_key_t));
+       asp_sess_peer_sess_key_t *p_key = (asp_sess_peer_sess_key_t *) g_malloc(sizeof(
+                       asp_sess_peer_sess_key_t));
 
        g_assert(p_key);
 
@@ -726,8 +694,6 @@ asp_sess_peer_sess_key_t *_asp_sess_peer_sess_tree_create_key(
 void _asp_sess_peer_insert_session(asp_sess_peer_t *p_peer,
                                   asp_sess_peer_sess_key_t *p_key)
 {
-       INFO_MSG;
-
        asp_sess_peer_sess_key_t *p_value = (asp_sess_peer_sess_key_t *) g_tree_lookup(
                        p_peer->p_sess_tree, p_key);
 
@@ -740,16 +706,12 @@ void _asp_sess_peer_insert_session(asp_sess_peer_t *p_peer,
 void _asp_sess_peer_remove_session(asp_sess_peer_t *p_peer,
                                   asp_sess_peer_sess_key_t *p_key)
 {
-       INFO_MSG;
-
        g_tree_remove(p_peer->p_sess_tree, p_key);
 }
 
 gint _asp_sess_peer_sess_tree_compare_cb(gconstpointer a, gconstpointer b,
                gpointer user_data)
 {
-       INFO_MSG;
-
        asp_sess_peer_sess_key_t *p_l = (asp_sess_peer_sess_key_t *) a;
        asp_sess_peer_sess_key_t *p_r = (asp_sess_peer_sess_key_t *) b;
 
@@ -763,8 +725,6 @@ gint _asp_sess_peer_sess_tree_compare_cb(gconstpointer a, gconstpointer b,
 
 void _asp_sess_peer_sess_tree_key_destructor_cb(gpointer p_data)
 {
-       INFO_MSG;
-
        asp_sess_peer_sess_key_t *p_key = (asp_sess_peer_sess_key_t *) p_data;
        asp_session_peer_destroyed(p_key->sess_mac, p_key->sess_id);
        g_free(p_key);
@@ -772,118 +732,92 @@ void _asp_sess_peer_sess_tree_key_destructor_cb(gpointer p_data)
 
 void _asp_sess_peer_sess_tree_value_destructor_cb(gpointer p_value)
 {
-       INFO_MSG;
-
        /*do nothing. */
        /*p_key and p_value is same pointer. */
 }
 
-gpointer _asp_sess_peer_dup_request_session(gpointer p_msg)
+void *_asp_sess_peer_dup_request_session(void *p_msg)
 {
-       INFO_MSG;
-
-       asp_request_session_t *p_dup_msg = g_malloc(sizeof(asp_request_session_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_request_session_t));
+       asp_request_session_s *p_dup_msg = (asp_request_session_s *)g_malloc(sizeof(
+                       asp_request_session_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_request_session_s));
 
-       ASP_LOGD("%s _asp_sess_peer_dup_request_session, session_id:%d", ROLE,
-                p_dup_msg->session_id);
        return p_dup_msg;
 }
 
-gpointer _asp_sess_peer_dup_msg_added_session(gpointer p_msg)
+void *_asp_sess_peer_dup_msg_added_session(void *p_msg)
 {
-       INFO_MSG;
-
-       asp_added_session_t *p_dup_msg = g_malloc(sizeof(asp_added_session_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_added_session_t));
+       asp_added_session_s *p_dup_msg = (asp_added_session_s *)g_malloc(sizeof(
+                       asp_added_session_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_added_session_s));
 
-       ASP_LOGD("%s _asp_sess_peer_dup_msg_added_session, session_id:%d", ROLE,
-                p_dup_msg->session_id);
        return p_dup_msg;
 }
 
-gpointer _asp_sess_peer_dup_msg_rejected_session(gpointer p_msg)
+void *_asp_sess_peer_dup_msg_rejected_session(void *p_msg)
 {
-       INFO_MSG;
-
-       asp_rejected_session_t *p_dup_msg = g_malloc(sizeof(asp_rejected_session_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_rejected_session_t));
+       asp_rejected_session_s *p_dup_msg = (asp_rejected_session_s *)g_malloc(sizeof(
+                       asp_rejected_session_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_rejected_session_s));
 
-       ASP_LOGD("%s _asp_sess_peer_dup_msg_rejected_session, session_id:%d", ROLE,
-                p_dup_msg->session_id);
        return p_dup_msg;
 }
 
-gpointer _asp_sess_peer_dup_msg_remove_session(gpointer p_msg)
+void *_asp_sess_peer_dup_msg_remove_session(void *p_msg)
 {
-       INFO_MSG;
-
-       asp_remove_session_t *p_dup_msg = g_malloc(sizeof(asp_remove_session_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_remove_session_t));
+       asp_remove_session_s *p_dup_msg = (asp_remove_session_s *)g_malloc(sizeof(
+                       asp_remove_session_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_remove_session_s));
 
-       ASP_LOGD("%s _asp_sess_peer_dup_msg_remove_session, session_id:%d", ROLE,
-                p_dup_msg->session_id);
        return p_dup_msg;
 }
 
-gpointer _asp_sess_peer_dup_msg_allowed_port(gpointer p_msg)
+void *_asp_sess_peer_dup_msg_allowed_port(void *p_msg)
 {
-       INFO_MSG;
-
-       asp_allowed_port_t *p_dup_msg = g_malloc(sizeof(asp_allowed_port_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_allowed_port_t));
+       asp_allowed_port_s *p_dup_msg = (asp_allowed_port_s *)g_malloc(sizeof(
+                                               asp_allowed_port_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_allowed_port_s));
 
-       ASP_LOGD("%s, _asp_sess_peer_dup_msg_allowed_port, session_id:%d", ROLE,
-                p_dup_msg->session_id);
        return p_dup_msg;
 }
 
-gpointer _asp_sess_peer_dup_msg_version(gpointer p_msg)
+void *_asp_sess_peer_dup_msg_version(void *p_msg)
 {
-       INFO_MSG;
-
-       asp_version_t *p_dup_msg = g_malloc(sizeof(asp_version_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_version_t));
+       asp_version_s *p_dup_msg = (asp_version_s *)g_malloc(sizeof(asp_version_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_version_s));
 
        return p_dup_msg;
 }
 
-gpointer _asp_sess_peer_dup_msg_deferred_session(gpointer p_msg)
+void *_asp_sess_peer_dup_msg_deferred_session(void *p_msg)
 {
-       INFO_MSG;
-
-       asp_deferred_session_t *p_dup_msg = g_malloc(sizeof(asp_deferred_session_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_deferred_session_t));
+       asp_deferred_session_s *p_dup_msg = (asp_deferred_session_s *)g_malloc(sizeof(
+                       asp_deferred_session_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_deferred_session_s));
 
-       ASP_LOGD("_asp_sess_peer_dup_msg_deferred_session, session_id:%d",
-                p_dup_msg->session_id);
+       printf("_asp_sess_peer_dup_msg_deferred_session, session_id:%d\n",
+              p_dup_msg->session_id);
        return p_dup_msg;
 }
 
-gpointer _asp_sess_peer_dup_msg_ack(gpointer p_msg)
+void *_asp_sess_peer_dup_msg_ack(void *p_msg)
 {
-       INFO_MSG;
-
-       asp_ack_t *p_dup_msg = g_malloc(sizeof(asp_ack_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_ack_t));
+       asp_ack_s *p_dup_msg = (asp_ack_s *)g_malloc(sizeof(asp_ack_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_ack_s));
        return p_dup_msg;
 }
 
-gpointer _asp_sess_peer_dup_msg_nack(gpointer p_msg)
+void *_asp_sess_peer_dup_msg_nack(void *p_msg)
 {
-       INFO_MSG;
-
-       asp_nack_t *p_dup_msg = g_malloc(sizeof(asp_nack_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_nack_t));
+       asp_nack_s *p_dup_msg = (asp_nack_s *)g_malloc(sizeof(asp_nack_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_nack_s));
        return p_dup_msg;
 }
 
-gpointer asp_sess_peer_dup_msg_data(gpointer p_msg)
+void *asp_sess_peer_dup_msg_data(void *p_msg)
 {
-       INFO_MSG;
-
-       asp_coord_header_t *p_header = (asp_coord_header_t *) p_msg;
-       gpointer ret = NULL;
+       asp_coord_header_s *p_header = (asp_coord_header_s *)p_msg;
+       void *ret = NULL;
 
        switch (p_header->opcode) {
        case ASP_OPCODE_REQUEST_SESSION:
@@ -915,15 +849,13 @@ gpointer asp_sess_peer_dup_msg_data(gpointer p_msg)
                break;
        }
 
-       return (gpointer)ret;
+       return (void *)ret;
 }
 
 void _asp_sess_peer_send_nack_to_protocol(GSocketAddress *p_sock_addr,
                guint8 seq_num, guint8 reason)
 {
-       INFO_MSG;
-
-       asp_nack_t nack_msg;
+       asp_nack_s nack_msg;
 
        nack_msg.opcode = ASP_OPCODE_NACK;
        nack_msg.seq_num = seq_num;;
@@ -936,119 +868,116 @@ void asp_sess_peer_fsm_init()
 {
        INFO_MSG;
 
-       gfsm_init_fsm(&asm_sess_peer_fsm, ASP_S_PEER_STATE_MAX, ASP_S_PEER_EVENT_MAX,
-                     ASP_S_PEER_STATE_INIT);
+       asm_sess_peer_fsm = gfsm_create_fsm(ASP_S_PEER_STATE_MAX, ASP_S_PEER_EVENT_MAX,
+                                           ASP_S_PEER_STATE_INIT);
 
-       gfsm_init_state(&asp_sess_peer_state_init, ASP_S_PEER_STATE_INIT,
-                       &asm_sess_peer_fsm, _asp_sess_peer_state_init_entry_action,
-                       _asp_sess_peer_state_init_exit_action);
-       gfsm_add_reaction(&asp_sess_peer_state_init, ASP_S_PEER_EVENT_START,
+       asp_sess_peer_state_init = gfsm_create_state(ASP_S_PEER_STATE_INIT,
+                                  asm_sess_peer_fsm, _asp_sess_peer_state_init_entry_action,
+                                  _asp_sess_peer_state_init_exit_action);
+       gfsm_add_reaction(asp_sess_peer_state_init, ASP_S_PEER_EVENT_START,
                          _asp_sess_peer_state_init_reaction_start);
 
-       gfsm_init_state(&asp_sess_peer_state_created, ASP_S_PEER_STATE_CREATED,
-                       &asm_sess_peer_fsm, _asp_sess_peer_state_created_entry_action,
-                       _asp_sess_peer_state_created_exit_action);
-       gfsm_add_reaction(&asp_sess_peer_state_created, ASP_S_PEER_EVENT_ADD_SESSION,
+       asp_sess_peer_state_created = gfsm_create_state(ASP_S_PEER_STATE_CREATED,
+                                     asm_sess_peer_fsm, _asp_sess_peer_state_created_entry_action,
+                                     _asp_sess_peer_state_created_exit_action);
+       gfsm_add_reaction(asp_sess_peer_state_created, ASP_S_PEER_EVENT_ADD_SESSION,
                          _asp_sess_peer_state_created_reaction_add_session);
-       gfsm_add_reaction(&asp_sess_peer_state_created, ASP_S_PEER_EVENT_DEL_SESSION,
+       gfsm_add_reaction(asp_sess_peer_state_created, ASP_S_PEER_EVENT_DEL_SESSION,
                          _asp_sess_peer_state_created_reaction_del_session);
-       gfsm_add_reaction(&asp_sess_peer_state_created, ASP_S_PEER_EVENT_CLOSE,
+       gfsm_add_reaction(asp_sess_peer_state_created, ASP_S_PEER_EVENT_CLOSE,
                          _asp_sess_peer_state_created_reaction_close);
-       gfsm_add_reaction(&asp_sess_peer_state_created, ASP_S_PEER_EVENT_SEND_ACK,
+       gfsm_add_reaction(asp_sess_peer_state_created, ASP_S_PEER_EVENT_SEND_ACK,
                          _asp_sess_peer_state_created_reaction_send_ack);
-       gfsm_add_reaction(&asp_sess_peer_state_created, ASP_S_PEER_EVENT_SEND_NACK,
+       gfsm_add_reaction(asp_sess_peer_state_created, ASP_S_PEER_EVENT_SEND_NACK,
                          _asp_sess_peer_state_created_reaction_send_nack);
 
-       gfsm_init_state(&asp_sess_peer_state_version_sent,
-                       ASP_S_PEER_STATE_VERSION_SENT, &asm_sess_peer_fsm,
+       asp_sess_peer_state_version_sent = gfsm_create_state(
+                       ASP_S_PEER_STATE_VERSION_SENT, asm_sess_peer_fsm,
                        _asp_sess_peer_state_version_sent_entry_action,
                        _asp_sess_peer_state_version_sent_exit_action);
-       gfsm_set_parent_state(&asp_sess_peer_state_version_sent,
-                             &asp_sess_peer_state_created);
-       gfsm_add_reaction(&asp_sess_peer_state_version_sent,
+       gfsm_set_parent_state(asp_sess_peer_state_version_sent,
+                             asp_sess_peer_state_created);
+       gfsm_add_reaction(asp_sess_peer_state_version_sent,
                          ASP_S_PEER_EVENT_ADD_SESSION, gfsm_deferral_reaction);
-       gfsm_add_reaction(&asp_sess_peer_state_version_sent,
+       gfsm_add_reaction(asp_sess_peer_state_version_sent,
                          ASP_S_PEER_EVENT_DEL_SESSION, gfsm_deferral_reaction);
-       gfsm_add_reaction(&asp_sess_peer_state_version_sent, ASP_S_PEER_EVENT_SEND_REQ,
+       gfsm_add_reaction(asp_sess_peer_state_version_sent, ASP_S_PEER_EVENT_SEND_REQ,
                          gfsm_deferral_reaction);
-       gfsm_add_reaction(&asp_sess_peer_state_version_sent,
+       gfsm_add_reaction(asp_sess_peer_state_version_sent,
                          ASP_S_PEER_EVENT_RECV_VERSION, gfsm_deferral_reaction);
-       gfsm_add_reaction(&asp_sess_peer_state_version_sent, ASP_S_PEER_EVENT_RECV_REQ,
+       gfsm_add_reaction(asp_sess_peer_state_version_sent, ASP_S_PEER_EVENT_RECV_REQ,
                          gfsm_deferral_reaction);
-       gfsm_add_reaction(&asp_sess_peer_state_version_sent, ASP_S_PEER_EVENT_RECV_ACK,
+       gfsm_add_reaction(asp_sess_peer_state_version_sent, ASP_S_PEER_EVENT_RECV_ACK,
                          _asp_sess_peer_state_version_sent_reaction_recv_ack);
-       gfsm_add_reaction(&asp_sess_peer_state_version_sent, ASP_S_PEER_EVENT_RECV_NACK,
+       gfsm_add_reaction(asp_sess_peer_state_version_sent, ASP_S_PEER_EVENT_RECV_NACK,
                          _asp_sess_peer_state_version_sent_reaction_recv_nack);
-       gfsm_add_reaction(&asp_sess_peer_state_version_sent, ASP_S_PEER_EVENT_TIMEOUT,
+       gfsm_add_reaction(asp_sess_peer_state_version_sent, ASP_S_PEER_EVENT_TIMEOUT,
                          _asp_sess_peer_state_version_sent_reaction_timeout);
 
-       gfsm_init_state(&asp_sess_peer_state_wait_version,
-                       ASP_S_PEER_STATE_WAIT_VERSION, &asm_sess_peer_fsm,
+       asp_sess_peer_state_wait_version = gfsm_create_state(
+                       ASP_S_PEER_STATE_WAIT_VERSION, asm_sess_peer_fsm,
                        _asp_sess_peer_state_wait_version_entry_action,
                        _asp_sess_peer_state_wait_version_exit_action);
-       gfsm_set_parent_state(&asp_sess_peer_state_wait_version,
-                             &asp_sess_peer_state_created);
-       gfsm_add_reaction(&asp_sess_peer_state_wait_version,
+       gfsm_set_parent_state(asp_sess_peer_state_wait_version,
+                             asp_sess_peer_state_created);
+       gfsm_add_reaction(asp_sess_peer_state_wait_version,
                          ASP_S_PEER_EVENT_ADD_SESSION, gfsm_deferral_reaction);
-       gfsm_add_reaction(&asp_sess_peer_state_wait_version,
+       gfsm_add_reaction(asp_sess_peer_state_wait_version,
                          ASP_S_PEER_EVENT_DEL_SESSION, gfsm_deferral_reaction);
-       gfsm_add_reaction(&asp_sess_peer_state_wait_version, ASP_S_PEER_EVENT_SEND_REQ,
+       gfsm_add_reaction(asp_sess_peer_state_wait_version, ASP_S_PEER_EVENT_SEND_REQ,
                          gfsm_deferral_reaction);
-       gfsm_add_reaction(&asp_sess_peer_state_wait_version,
+       gfsm_add_reaction(asp_sess_peer_state_wait_version,
                          ASP_S_PEER_EVENT_RECV_VERSION,
                          _asp_sess_peer_state_wait_version_reaction_recv_version);
-       gfsm_add_reaction(&asp_sess_peer_state_wait_version, ASP_S_PEER_EVENT_RECV_REQ,
+       gfsm_add_reaction(asp_sess_peer_state_wait_version, ASP_S_PEER_EVENT_RECV_REQ,
                          _asp_sess_peer_state_wait_version_reaction_recv_req);
-       gfsm_add_reaction(&asp_sess_peer_state_wait_version, ASP_S_PEER_EVENT_TIMEOUT,
+       gfsm_add_reaction(asp_sess_peer_state_wait_version, ASP_S_PEER_EVENT_TIMEOUT,
                          _asp_sess_peer_state_wait_version_reaction_timeout);
 
-       gfsm_init_state(&asp_sess_peer_state_opened, ASP_S_PEER_STATE_OPENED,
-                       &asm_sess_peer_fsm, _asp_sess_peer_state_opened_entry_action,
-                       _asp_sess_peer_state_opened_exit_action);
-       gfsm_set_parent_state(&asp_sess_peer_state_opened,
-                             &asp_sess_peer_state_created);
-       gfsm_add_reaction(&asp_sess_peer_state_opened, ASP_S_PEER_EVENT_RECV_VERSION,
+       asp_sess_peer_state_opened = gfsm_create_state(ASP_S_PEER_STATE_OPENED,
+                                    asm_sess_peer_fsm, _asp_sess_peer_state_opened_entry_action,
+                                    _asp_sess_peer_state_opened_exit_action);
+       gfsm_set_parent_state(asp_sess_peer_state_opened, asp_sess_peer_state_created);
+       gfsm_add_reaction(asp_sess_peer_state_opened, ASP_S_PEER_EVENT_RECV_VERSION,
                          _asp_sess_peer_state_opened_reaction_recv_version);
-       gfsm_add_reaction(&asp_sess_peer_state_opened, ASP_S_PEER_EVENT_RECV_REQ,
+       gfsm_add_reaction(asp_sess_peer_state_opened, ASP_S_PEER_EVENT_RECV_REQ,
                          _asp_sess_peer_state_opened_reaction_recv_req);
 
-       gfsm_init_state(&asp_sess_peer_state_idle, ASP_S_PEER_STATE_IDLE,
-                       &asm_sess_peer_fsm, _asp_sess_peer_state_idle_entry_action,
-                       _asp_sess_peer_state_idle_exit_action);
-       gfsm_set_parent_state(&asp_sess_peer_state_idle, &asp_sess_peer_state_opened);
-       gfsm_add_reaction(&asp_sess_peer_state_idle, ASP_S_PEER_EVENT_SEND_REQ,
+       asp_sess_peer_state_idle = gfsm_create_state(ASP_S_PEER_STATE_IDLE,
+                                  asm_sess_peer_fsm, _asp_sess_peer_state_idle_entry_action,
+                                  _asp_sess_peer_state_idle_exit_action);
+       gfsm_set_parent_state(asp_sess_peer_state_idle, asp_sess_peer_state_opened);
+       gfsm_add_reaction(asp_sess_peer_state_idle, ASP_S_PEER_EVENT_SEND_REQ,
                          _asp_sess_peer_state_idle_reaction_send_req);
 
-       gfsm_init_state(&asp_sess_peer_state_wait_ack, ASP_S_PEER_STATE_WAIT_ACK,
-                       &asm_sess_peer_fsm, _asp_sess_peer_state_wait_ack_entry_action,
-                       _asp_sess_peer_state_wait_ack_exit_action);
-       gfsm_set_parent_state(&asp_sess_peer_state_wait_ack,
-                             &asp_sess_peer_state_opened);
-       gfsm_add_reaction(&asp_sess_peer_state_wait_ack, ASP_S_PEER_EVENT_SEND_REQ,
+       asp_sess_peer_state_wait_ack = gfsm_create_state(ASP_S_PEER_STATE_WAIT_ACK,
+                                      asm_sess_peer_fsm, _asp_sess_peer_state_wait_ack_entry_action,
+                                      _asp_sess_peer_state_wait_ack_exit_action);
+       gfsm_set_parent_state(asp_sess_peer_state_wait_ack, asp_sess_peer_state_opened);
+       gfsm_add_reaction(asp_sess_peer_state_wait_ack, ASP_S_PEER_EVENT_SEND_REQ,
                          gfsm_deferral_reaction);
-       gfsm_add_reaction(&asp_sess_peer_state_wait_ack, ASP_S_PEER_EVENT_RECV_ACK,
+       gfsm_add_reaction(asp_sess_peer_state_wait_ack, ASP_S_PEER_EVENT_RECV_ACK,
                          _asp_sess_peer_state_wait_ack_reaction_recv_ack);
-       gfsm_add_reaction(&asp_sess_peer_state_wait_ack, ASP_S_PEER_EVENT_RECV_NACK,
+       gfsm_add_reaction(asp_sess_peer_state_wait_ack, ASP_S_PEER_EVENT_RECV_NACK,
                          _asp_sess_peer_state_wait_ack_reaction_recv_nack);
-       gfsm_add_reaction(&asp_sess_peer_state_wait_ack, ASP_S_PEER_EVENT_TIMEOUT,
+       gfsm_add_reaction(asp_sess_peer_state_wait_ack, ASP_S_PEER_EVENT_TIMEOUT,
                          _asp_sess_peer_state_wait_ack_reaction_timeout);
 
-       gfsm_init_state(&asp_sess_peer_state_closed, ASP_S_PEER_STATE_CLOSED,
-                       &asm_sess_peer_fsm, _asp_sess_peer_state_close_entry_action,
-                       _asp_sess_peer_state_close_exit_action);
-
-       gfsm_add_state(&asm_sess_peer_fsm, &asp_sess_peer_state_init);
-       gfsm_add_state(&asm_sess_peer_fsm, &asp_sess_peer_state_created);
-       gfsm_add_state(&asm_sess_peer_fsm, &asp_sess_peer_state_version_sent);
-       gfsm_add_state(&asm_sess_peer_fsm, &asp_sess_peer_state_wait_version);
-       gfsm_add_state(&asm_sess_peer_fsm, &asp_sess_peer_state_opened);
-       gfsm_add_state(&asm_sess_peer_fsm, &asp_sess_peer_state_idle);
+       asp_sess_peer_state_closed = gfsm_create_state(ASP_S_PEER_STATE_CLOSED,
+                                    asm_sess_peer_fsm, _asp_sess_peer_state_close_entry_action,
+                                    _asp_sess_peer_state_close_exit_action);
+       gfsm_add_state(asm_sess_peer_fsm, asp_sess_peer_state_init);
+       gfsm_add_state(asm_sess_peer_fsm, asp_sess_peer_state_created);
+       gfsm_add_state(asm_sess_peer_fsm, asp_sess_peer_state_version_sent);
+       gfsm_add_state(asm_sess_peer_fsm, asp_sess_peer_state_wait_version);
+       gfsm_add_state(asm_sess_peer_fsm, asp_sess_peer_state_opened);
+       gfsm_add_state(asm_sess_peer_fsm, asp_sess_peer_state_idle);
        /*gfsm_add_state(&asm_sess_peer_fsm,&asp_sess_peer_state_req_sent); */
-       gfsm_add_state(&asm_sess_peer_fsm, &asp_sess_peer_state_wait_ack);
-       gfsm_add_state(&asm_sess_peer_fsm, &asp_sess_peer_state_closed);
+       gfsm_add_state(asm_sess_peer_fsm, asp_sess_peer_state_wait_ack);
+       gfsm_add_state(asm_sess_peer_fsm, asp_sess_peer_state_closed);
 }
 
-void _asp_sess_peer_state_init_entry_action(gpointer p_context_data)
+void _asp_sess_peer_state_init_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
@@ -1062,7 +991,7 @@ void _asp_sess_peer_state_init_entry_action(gpointer p_context_data)
        ASP_SESS_PEER_FSM_TRACE_LEAVE();
 }
 
-void _asp_sess_peer_state_init_exit_action(gpointer p_context_data)
+void _asp_sess_peer_state_init_exit_action(void *p_context_data)
 {
        INFO_MSG;
 
@@ -1073,8 +1002,8 @@ void _asp_sess_peer_state_init_exit_action(gpointer p_context_data)
        ASP_SESS_PEER_FSM_TRACE_LEAVE();
 }
 
-gfsm_state_id_t _asp_sess_peer_state_init_reaction_start(
-       gpointer p_context_data, gpointer p_event_data)
+gfsm_state_id_t _asp_sess_peer_state_init_reaction_start(void *p_context_data,
+               void *p_event_data)
 {
        INFO_MSG;
 
@@ -1087,14 +1016,14 @@ gfsm_state_id_t _asp_sess_peer_state_init_reaction_start(
        return ASP_S_PEER_STATE_VERSION_SENT;
 }
 
-void _asp_sess_peer_state_created_entry_action(gpointer p_context_data)
+void _asp_sess_peer_state_created_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
        /*    asp_sess_peer_t* p_peer = (asp_sess_peer_t*)p_context_data; */
 }
 
-void _asp_sess_peer_state_created_exit_action(gpointer p_context_data)
+void _asp_sess_peer_state_created_exit_action(void *p_context_data)
 {
        INFO_MSG;
 
@@ -1102,7 +1031,7 @@ void _asp_sess_peer_state_created_exit_action(gpointer p_context_data)
 }
 
 gfsm_state_id_t _asp_sess_peer_state_created_reaction_add_session(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1119,7 +1048,7 @@ gfsm_state_id_t _asp_sess_peer_state_created_reaction_add_session(
 }
 
 gfsm_state_id_t _asp_sess_peer_state_created_reaction_del_session(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1136,7 +1065,7 @@ gfsm_state_id_t _asp_sess_peer_state_created_reaction_del_session(
 }
 
 gfsm_state_id_t _asp_sess_peer_state_created_reaction_close(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1150,7 +1079,7 @@ gfsm_state_id_t _asp_sess_peer_state_created_reaction_close(
 }
 
 gfsm_state_id_t _asp_sess_peer_state_created_reaction_send_ack(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1166,7 +1095,7 @@ gfsm_state_id_t _asp_sess_peer_state_created_reaction_send_ack(
 }
 
 gfsm_state_id_t _asp_sess_peer_state_created_reaction_send_nack(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1181,14 +1110,15 @@ gfsm_state_id_t _asp_sess_peer_state_created_reaction_send_nack(
        return GFSM_DISCARD_EVENT;
 }
 
-void _asp_sess_peer_state_version_sent_entry_action(gpointer p_context_data)
+void _asp_sess_peer_state_version_sent_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
        ASP_SESS_PEER_FSM_TRACE_ENTER();
 
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_context_data;
-       asp_version_t *p_msg_version = g_malloc(sizeof(asp_version_t));
+       asp_version_s *p_msg_version = (asp_version_s *)g_malloc(sizeof(
+                                              asp_version_s));
 
        p_msg_version->opcode = ASP_OPCODE_VERSION;
        p_msg_version->seq_num = p_peer->seq_num;
@@ -1200,12 +1130,12 @@ void _asp_sess_peer_state_version_sent_entry_action(gpointer p_context_data)
 
        asp_coordination_protocol_send_msg(p_peer->p_sock_addr, p_msg_version);
 
-       _asp_sess_peer_start_timer(p_peer, 1 /*sec */);
+       _asp_sess_peer_start_timer(p_peer, 1);
 
        ASP_SESS_PEER_FSM_TRACE_LEAVE();
 }
 
-void _asp_sess_peer_state_version_sent_exit_action(gpointer p_context_data)
+void _asp_sess_peer_state_version_sent_exit_action(void *p_context_data)
 {
        INFO_MSG;
 
@@ -1216,12 +1146,12 @@ void _asp_sess_peer_state_version_sent_exit_action(gpointer p_context_data)
 }
 
 gfsm_state_id_t _asp_sess_peer_state_version_sent_reaction_recv_ack(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_context_data;
-       asp_ack_t *p_ack = (asp_ack_t *) p_event_data;
+       asp_ack_s *p_ack = (asp_ack_s *)p_event_data;
 
        if (p_peer->seq_num != p_ack->seq_num)
                return GFSM_DISCARD_EVENT;
@@ -1232,12 +1162,12 @@ gfsm_state_id_t _asp_sess_peer_state_version_sent_reaction_recv_ack(
 }
 
 gfsm_state_id_t _asp_sess_peer_state_version_sent_reaction_recv_nack(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_context_data;
-       asp_nack_t *p_nack = (asp_nack_t *) p_event_data;
+       asp_nack_s *p_nack = (asp_nack_s *)p_event_data;
 
        if (p_peer->seq_num != p_nack->seq_num)
                return GFSM_DISCARD_EVENT;
@@ -1246,7 +1176,7 @@ gfsm_state_id_t _asp_sess_peer_state_version_sent_reaction_recv_nack(
 }
 
 gfsm_state_id_t _asp_sess_peer_state_version_sent_reaction_timeout(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1255,16 +1185,16 @@ gfsm_state_id_t _asp_sess_peer_state_version_sent_reaction_timeout(
        return ASP_S_PEER_STATE_VERSION_SENT;
 }
 
-void _asp_sess_peer_state_wait_version_entry_action(gpointer p_context_data)
+void _asp_sess_peer_state_wait_version_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_context_data;
 
-       _asp_sess_peer_start_timer(p_peer, 10 /*sec */);
+       _asp_sess_peer_start_timer(p_peer, 10);
 }
 
-void _asp_sess_peer_state_wait_version_exit_action(gpointer p_context_data)
+void _asp_sess_peer_state_wait_version_exit_action(void *p_context_data)
 {
        INFO_MSG;
 
@@ -1274,23 +1204,23 @@ void _asp_sess_peer_state_wait_version_exit_action(gpointer p_context_data)
 }
 
 gfsm_state_id_t _asp_sess_peer_state_wait_version_reaction_recv_version(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
        /*    asp_sess_peer_t* p_peer = (asp_sess_peer_t*)p_context_data; */
-       /*    asp_coord_header_t* p_header = (asp_coord_header_t*)p_event_data; */
+       /*    asp_coord_header_s* p_header = (asp_coord_header_s*)p_event_data; */
 
        return ASP_S_PEER_STATE_IDLE;
 }
 
 gfsm_state_id_t _asp_sess_peer_state_wait_version_reaction_recv_req(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_context_data;
-       asp_coord_header_t *p_header = (asp_coord_header_t *) p_event_data;
+       asp_coord_header_s *p_header = (asp_coord_header_s *)p_event_data;
 
        _asp_sess_peer_send_nack_to_protocol(p_peer->p_sock_addr, p_header->seq_num,
                                             ASP_NACK_REASON_NO_SESSION_EXIST);
@@ -1299,7 +1229,7 @@ gfsm_state_id_t _asp_sess_peer_state_wait_version_reaction_recv_req(
 }
 
 gfsm_state_id_t _asp_sess_peer_state_wait_version_reaction_timeout(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1307,14 +1237,14 @@ gfsm_state_id_t _asp_sess_peer_state_wait_version_reaction_timeout(
        return ASP_S_PEER_STATE_CLOSED;
 }
 
-void _asp_sess_peer_state_opened_entry_action(gpointer p_context_data)
+void _asp_sess_peer_state_opened_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
        /*asp_sess_peer_t* p_peer = (asp_sess_peer_t*)p_context_data; */
 }
 
-void _asp_sess_peer_state_opened_exit_action(gpointer p_context_data)
+void _asp_sess_peer_state_opened_exit_action(void *p_context_data)
 {
        INFO_MSG;
 
@@ -1322,7 +1252,7 @@ void _asp_sess_peer_state_opened_exit_action(gpointer p_context_data)
 }
 
 gfsm_state_id_t _asp_sess_peer_state_opened_reaction_recv_version(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1333,7 +1263,7 @@ gfsm_state_id_t _asp_sess_peer_state_opened_reaction_recv_version(
 }
 
 gfsm_state_id_t _asp_sess_peer_state_opened_reaction_recv_req(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1343,14 +1273,14 @@ gfsm_state_id_t _asp_sess_peer_state_opened_reaction_recv_req(
        return GFSM_DISCARD_EVENT;
 }
 
-void _asp_sess_peer_state_idle_entry_action(gpointer p_context_data)
+void _asp_sess_peer_state_idle_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
        /*asp_sess_peer_t* p_peer = (asp_sess_peer_t*)p_context_data; */
 }
 
-void _asp_sess_peer_state_idle_exit_action(gpointer p_context_data)
+void _asp_sess_peer_state_idle_exit_action(void *p_context_data)
 {
        INFO_MSG;
 
@@ -1358,12 +1288,12 @@ void _asp_sess_peer_state_idle_exit_action(gpointer p_context_data)
 }
 
 gfsm_state_id_t _asp_sess_peer_state_idle_reaction_send_req(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_context_data;
-       gpointer p_msg_data = asp_sess_peer_dup_msg_data(p_event_data);
+       void *p_msg_data = asp_sess_peer_dup_msg_data(p_event_data);
 
        /*asp_sess_peer_add_sess_list(p_msg_data); */
        _asp_sess_peer_set_sending_msg_data(p_peer, p_msg_data);
@@ -1373,7 +1303,7 @@ gfsm_state_id_t _asp_sess_peer_state_idle_reaction_send_req(
        return ASP_S_PEER_STATE_WAIT_ACK;
 }
 
-void _asp_sess_peer_state_wait_ack_entry_action(gpointer p_context_data)
+void _asp_sess_peer_state_wait_ack_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
@@ -1382,7 +1312,7 @@ void _asp_sess_peer_state_wait_ack_entry_action(gpointer p_context_data)
        _asp_sess_peer_start_timer(p_peer, 1);
 }
 
-void _asp_sess_peer_state_wait_ack_exit_action(gpointer p_context_data)
+void _asp_sess_peer_state_wait_ack_exit_action(void *p_context_data)
 {
        INFO_MSG;
 
@@ -1392,12 +1322,12 @@ void _asp_sess_peer_state_wait_ack_exit_action(gpointer p_context_data)
 }
 
 gfsm_state_id_t _asp_sess_peer_state_wait_ack_reaction_recv_ack(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_context_data;
-       asp_ack_t *p_ack = (asp_ack_t *) p_event_data;
+       asp_ack_s *p_ack = (asp_ack_s *)p_event_data;
 
        if (p_ack->seq_num != p_peer->seq_num)
                return GFSM_DISCARD_EVENT;
@@ -1412,12 +1342,12 @@ gfsm_state_id_t _asp_sess_peer_state_wait_ack_reaction_recv_ack(
 }
 
 gfsm_state_id_t _asp_sess_peer_state_wait_ack_reaction_recv_nack(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_context_data;
-       asp_nack_t *p_nack = (asp_nack_t *) p_event_data;
+       asp_nack_s *p_nack = (asp_nack_s *)p_event_data;
 
        if (p_nack->seq_num != p_peer->seq_num)
                return GFSM_DISCARD_EVENT;
@@ -1430,7 +1360,7 @@ gfsm_state_id_t _asp_sess_peer_state_wait_ack_reaction_recv_nack(
 }
 
 gfsm_state_id_t _asp_sess_peer_state_wait_ack_reaction_timeout(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1448,16 +1378,16 @@ gfsm_state_id_t _asp_sess_peer_state_wait_ack_reaction_timeout(
        }
 }
 
-void _asp_sess_peer_state_close_entry_action(gpointer p_context_data)
+void _asp_sess_peer_state_close_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
        asp_sess_peer_t *p_peer = (asp_sess_peer_t *) p_context_data;
 
-       gfsm_terminate_context(&p_peer->context);
+       gfsm_destroy_context(p_peer->context);
 }
 
-void _asp_sess_peer_state_close_exit_action(gpointer p_context_data)
+void _asp_sess_peer_state_close_exit_action(void *p_context_data)
 {
        INFO_MSG;
 
index 136fe1b..ff3e635 100644 (file)
@@ -7,8 +7,8 @@
 void asp_sess_peer_init();
 void asp_sess_peer_destroy();
 
-gboolean asp_sess_peer_send_msg(GSocketAddress *p_sock_addr, gpointer  p_msg);
-gboolean asp_sess_peer_recv_msg(GSocketAddress *p_sock_addr, gpointer  p_msg);
+gboolean asp_sess_peer_send_msg(GSocketAddress *p_sock_addr, void *p_msg);
+gboolean asp_sess_peer_recv_msg(GSocketAddress *p_sock_addr, void *p_msg);
 
 gboolean asp_sess_peer_add_session(GSocketAddress *p_sock_addr,
                                   guint8 session_mac[], guint32 session_id);
index 7535ae3..7455f09 100644 (file)
@@ -64,7 +64,7 @@ typedef enum asp_role {
 
 typedef struct asp_session {
        /* Can be used as session argument from below */
-       gfsm_context_context;
+       gfsm_context_s *context;
        asp_role_e asp_role;
        guint8 session_mac[MAC_ADDRESS_LEN];    /* the MAC address of the P2P device that generated the session ID */
        guint32 session_id;
@@ -76,45 +76,45 @@ typedef struct asp_session {
        /*GSocketFamily sock_family; // ipv4 or ipv6 */
        asp_session_closed_state_e closed_state;
        gboolean over_p2p;                      /*p2p or infra */
-} asp_session_t;
+} asp_session_s;
 
 typedef struct session_request_cb {
        asp_session_session_request_cb cb;
        gpointer user_data;
-} session_request_cb_t;
+} session_request_cb_s;
 
 typedef struct session_config_request_cb {
        asp_session_session_config_request_cb cb;
        gpointer user_data;
-} session_config_request_cb_t;
+} session_config_request_cb_s;
 
 typedef struct connect_status_cb {
        asp_session_connect_status_cb cb;
        gpointer user_data;
-} connect_status_cb_t;
+} connect_status_cb_s;
 
 typedef struct port_status_cb {
        asp_session_port_status_cb cb;
        gpointer user_data;
-} port_status_cb_t;
+} port_status_cb_s;
 
 typedef struct session_status_cb {
        asp_session_session_status_cb cb;
        gpointer user_data;
-} session_status_cb_t;
+} session_status_cb_s;
 
 typedef struct asp_session_cb_v_table {
-       session_request_cb_t session_request;
-       session_config_request_cb_t session_config_request;
-       connect_status_cb_t connect_status;
-       port_status_cb_t port_status;
-       session_status_cb_t session_status;
-} asp_session_cb_v_table_t;
+       session_request_cb_s session_request;
+       session_config_request_cb_s session_config_request;
+       connect_status_cb_s connect_status;
+       port_status_cb_s port_status;
+       session_status_cb_s session_status;
+} asp_session_cb_v_table_s;
 
 typedef struct asp_session_key {
        guint32 session_id;
        guint8 session_mac[MAC_ADDRESS_LEN];
-} asp_session_key_t;
+} asp_session_key_s;
 
 typedef struct connect_session_param {
        guint8 service_mac[MAC_ADDRESS_LEN];    /* the MAC address of the P2P device that generated the session ID */
@@ -122,26 +122,26 @@ typedef struct connect_session_param {
        size_t info_length;
        guint8 network_role;
        guint8 network_config;
-} connect_session_param_t;
+} connect_session_param_s;
 
 typedef struct defer_session_param {
        guint8 deferred_response[ASP_DEFER_RESPONSE_BYTE_MAX];
        size_t length;
-} defer_session_param_t;
+} defer_session_param_s;
 
 typedef struct confirm_session_param {
        gboolean confirmed;
        guint32 pin;
-} confirm_session_param_t;
+} confirm_session_param_s;
 
 typedef struct bound_port_param {
        gchar local_ip[ASP_SESSION_IPV4_STR_LEN];
        guint16 local_port;
        guint8 proto;
-} bound_port_param_t;
+} bound_port_param_s;
 
 typedef struct session_request_param {
-       gint32 error_code;
+       int error_code;
        guint32 advertisement_id;
        gchar device_name[ASP_MAX_DEVICE_NAME_LEN + 1];
        size_t name_length;
@@ -149,25 +149,25 @@ typedef struct session_request_param {
        size_t info_length;
        gboolean get_pin;
        guint32 pin;
-} session_request_param_t;
+} session_request_param_s;
 
 typedef struct connect_status_param {
        asp_session_connect_status_e status;
-       gchar deferred_resp[ASP_DEFER_RESPONSE_BYTE_MAX];
+       char deferred_resp[ASP_DEFER_RESPONSE_BYTE_MAX];
        size_t length;
-} connect_status_param_t;
+} connect_status_param_s;
 
 typedef struct session_config_request_param {
        gboolean get_network_config_pin;
        guint32 network_config_pin;
-} session_config_request_param_t;
+} session_config_request_param_s;
 
 typedef struct ip_assigned_param {
-       gchar peer_ip_addr[ASP_SESSION_IPV4_STR_LEN];
+       char peer_ip_addr[ASP_SESSION_IPV4_STR_LEN];
        size_t length;
-} ip_assigned_param_t;
+} ip_assigned_param_s;
 
-enum asp_session_state_e {
+enum {
        SESSION_STATE_NONE,
        SESSION_STATE_CLOSED,
        SESSION_STATE_RUNNING,
@@ -185,9 +185,9 @@ enum asp_session_state_e {
        SESSION_STATE_REJECT_SESSION_SENT,
        SESSION_STATE_REMOVE_SESSION_SENT,
        SESSION_STATE_MAX
-};
+} asp_session_state_e;
 
-enum asp_session_event_e {
+enum {
        SESSION_EVENT_BOUND_PORT_CALLED,
        SESSION_EVENT_CLOSE_SESSION_CALLED,
        SESSION_EVENT_CONNECT_SESSION_CALLED,
@@ -211,52 +211,53 @@ enum asp_session_event_e {
 
        SESSION_EVENT_PEER_DESTROYED,
        SESSION_EVENT_TIMEOUT,
+       SESSION_EVENT_DELETE_SESSION,
 
        SESSION_EVENT_MAX
-};
+} asp_session_event_e;
 
 /*****************************************************************************
  * Global Variables
  *****************************************************************************/
 static GTree *sessionTree =
-       NULL;   /* [key] - [asp_session_key_t*], [value] - [asp_session_t*] */
-static asp_session_cb_v_table_t session_cb_v_table;
-static gchar g_my_p2p_mac[MAC_ADDRESS_LEN];
+       NULL;   /* [key] - [asp_session_key_s*], [value] - [asp_session_s*] */
+static asp_session_cb_v_table_s session_cb_v_table;
+static char g_my_p2p_mac[MAC_ADDRESS_LEN];
+
 static guint16 g_asp_cordination_port = 7235;
 
-static gfsm_t session_fsm;
-static gfsm_state_t session_state_none;
-static gfsm_state_t session_state_closed;
-static gfsm_state_t session_state_running;
-static gfsm_state_t session_state_l2connecting;
-static gfsm_state_t session_state_session_request_sent;
-static gfsm_state_t session_state_session_request_defered;
-static gfsm_state_t session_state_entering_pin;
-static gfsm_state_t session_state_session_request_received;
-static gfsm_state_t session_state_session_request_accepted;
-static gfsm_state_t session_state_entering_pin;
-static gfsm_state_t session_state_group_formation_completed;
-static gfsm_state_t session_state_l2connected;
-static gfsm_state_t session_state_request_session_sent;
-static gfsm_state_t session_state_open;
-static gfsm_state_t session_state_request_session_received;
-static gfsm_state_t session_state_reject_session_sent;
-static gfsm_state_t session_state_remove_session_sent;
+static gfsm_s *session_fsm;
+static gfsm_state_s *session_state_none;
+static gfsm_state_s *session_state_closed;
+static gfsm_state_s *session_state_running;
+static gfsm_state_s *session_state_l2connecting;
+static gfsm_state_s *session_state_session_request_sent;
+static gfsm_state_s *session_state_session_request_defered;
+static gfsm_state_s *session_state_entering_pin;
+static gfsm_state_s *session_state_session_request_received;
+static gfsm_state_s *session_state_session_request_accepted;
+static gfsm_state_s *session_state_group_formation_completed;
+static gfsm_state_s *session_state_l2connected;
+static gfsm_state_s *session_state_request_session_sent;
+static gfsm_state_s *session_state_open;
+static gfsm_state_s *session_state_request_session_received;
+static gfsm_state_s *session_state_reject_session_sent;
+static gfsm_state_s *session_state_remove_session_sent;
 
 /*****************************************************************************
  * Local Functions Declaration
  *****************************************************************************/
 
 /* send coordination protocol message */
-static gboolean _send_request_session(asp_session_t *session,
+static gboolean _send_request_session(asp_session_s *session,
                                      guint8 *session_info, size_t session_info_len);
-static gboolean _send_added_session(asp_session_t *session);
-static gboolean _send_reject_session(asp_session_t *session);
-static gboolean _send_remove_session(asp_session_t *session,
+static gboolean _send_added_session(asp_session_s *session);
+static gboolean _send_reject_session(asp_session_s *session);
+static gboolean _send_remove_session(asp_session_s *session,
                                     guint8 remove_reason);
-static gboolean _send_allowed_port(asp_session_t *session, guint16 port,
+static gboolean _send_allowed_port(asp_session_s *session, guint16 port,
                                   guint8 protocol);
-static gboolean _send_deferred_session(asp_session_t *session,
+static gboolean _send_deferred_session(asp_session_s *session,
                                       guint8 *deferred_response, size_t length);
 static gboolean _send_nack(GSocketAddress *sock_addr, guint8 seq_num,
                           guint8 reason);
@@ -266,32 +267,32 @@ static gboolean _send_ack(GSocketAddress *sock_addr, guint8 seq_num);
 static gint _session_tree_compare_func(gconstpointer a, gconstpointer b);
 static void _session_tree_value_destoryed(gpointer data);
 static void _session_tree_key_destoryed(gpointer data);
-static void _insert_session(asp_session_t *session);
+static void _insert_session(asp_session_s *session);
 static void _remove_session(guint8 *session_mac, guint32 session_id);
 static void _get_ip_from_socketaddress(GSocketAddress *sock_addr,
                                       gchar *peer_ip);
 static guint32 _alloc_session_id();
-static asp_session_t *_get_exist_session(guint32 session_id,
+static asp_session_s *_get_exist_session(guint32 session_id,
                const guint8 *session_mac);
-static asp_session_t *_new_session_by_request_session(GSocketAddress *sock_addr,
+static asp_session_s *_new_session_by_request_session(GSocketAddress *sock_addr,
                const gchar *peer_ip, gpointer p_msg);
-static asp_session_t *_new_session_over_infra(guint8 *session_mac,
+static asp_session_s *_new_session_over_infra(guint8 *session_mac,
                guint32 session_id, asp_role_e asp_role, guint32 advertisement_id,
                GSocketAddress *sock_addr, const gchar *peer_ip);
-static asp_session_t *_new_session_over_p2p(const guint8 *session_mac,
+static asp_session_s *_new_session_over_p2p(const guint8 *session_mac,
                guint32 session_id, asp_role_e asp_role, const guint8 *service_mac,
                guint32 advertisement_id);
-static asp_session_t *_new_session_from_session_request(
+static asp_session_s *_new_session_from_session_request(
        const guint8 *session_mac, guint32 session_id, guint32 advertisement_id);
-static void _asp_session_destroy_session(gpointer p_context_data);
+static void _asp_session_destroy_session(void *p_context_data);
 static asp_session_status_e _get_session_state(guint8 *session_mac,
                guint32 session_id);
-static asp_session_key_t *_get_session_key(guint32 session_id,
+static asp_session_key_s *_get_session_key(guint32 session_id,
                const guint8 *session_mac);
-static void _store_peer_ip_addr(asp_session_t *session, gchar *peer_ip,
+static void _store_peer_ip_addr(asp_session_s *session, char *peer_ip,
                                size_t length);
 #ifdef HAVE_ASP_P2P_CONN
-static guint8 *_get_peer_mac(asp_session_t *session);
+static guint8 *_get_peer_mac(asp_session_s *session);
 #endif
 
 static gpointer _asp_session_dup_reqeust_session(gpointer p_msg);
@@ -326,138 +327,140 @@ void _p2p_conn_session_config_request_cb(gint32 error_code,
                gpointer user_data);
 void _p2p_conn_connect_status_cb(gint32 error_code, const guint8 *session_mac,
                                 guint32 session_id, asp_session_connect_status_e status, gpointer user_data);
+void _p2p_conn_ip_assigned_cb(gint32 error_code, const guint8 *session_mac,
+                             guint32 session_id, gchar *service_mac, gchar *peer_ip_addr, gint32 ip_length,
+                             gpointer user_data);
 
 /* state machine using gfsm */
 static void _asp_session_fsm_init();
 static void _asp_session_fsm_terminate();
-static void _state_none_entry_action(gpointer p_context_data);
-static void _state_none_exit_action(gpointer p_context_data);
+static void _state_none_entry_action(void *p_context_data);
+static void _state_none_exit_action(void *p_context_data);
 static gfsm_state_id_t _state_none_reaction_connect_session_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _state_none_reaction_request_session_received(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _state_none_reaction_session_request_received(
-       gpointer p_context_data, gpointer p_event_data);
-static void _state_closed_entry_action(gpointer p_context_data);
-static void _state_closed_exit_action(gpointer p_context_data);
+       void *p_context_data, void *p_event_data);
+static void _state_closed_entry_action(void *p_context_data);
+static void _state_closed_exit_action(void *p_context_data);
+static gfsm_state_id_t _state_closed_reaction_delete_session(
+       void *p_context_data, void *p_event_data);
 /*static gfsm_state_id_t _state_closed_reaction_connect_session_called (void* p_context_data, void* p_event_data); */
 /*static gfsm_state_id_t _state_closed_reaction_request_session_received(void* p_context_data, void* p_event_data); */
-static void _state_running_entry_action(gpointer p_context_data);
-static void _state_running_exit_action(gpointer p_context_data);
+static void _state_running_entry_action(void *p_context_data);
+static void _state_running_exit_action(void *p_context_data);
 
-static void _state_l2connecting_entry_action(gpointer p_context_data);
-static void _state_l2connecting_exit_action(gpointer p_context_data);
+static void _state_l2connecting_entry_action(void *p_context_data);
+static void _state_l2connecting_exit_action(void *p_context_data);
 static gfsm_state_id_t _state_l2connecting_reaction_close_session_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _state_l2connecting_reaction_timeout(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _state_session_request_sent_entry_action(gpointer p_context_data);
-static void _state_session_request_sent_exit_action(gpointer p_context_data);
+static void _state_session_request_sent_entry_action(void *p_context_data);
+static void _state_session_request_sent_exit_action(void *p_context_data);
 static gfsm_state_id_t
-_state_session_request_sent_reaction_connect_status_called(
-       gpointer p_context_data, gpointer p_event_data);
+_state_session_request_sent_reaction_connect_status_called(void *p_context_data,
+               void *p_event_data);
 static gfsm_state_id_t
 _state_session_request_sent_reaction_session_config_request_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _state_session_request_defered_entry_action(
-       gpointer p_context_data);
-static void _state_session_request_defered_exit_action(gpointer p_context_data);
+static void _state_session_request_defered_entry_action(void *p_context_data);
+static void _state_session_request_defered_exit_action(void *p_context_data);
 static gfsm_state_id_t
 _state_session_request_defered_reaction_connect_status_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t
 _state_session_request_defered_reaction_session_config_request_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _state_session_request_received_entry_action(
-       gpointer p_context_data);
-static void _state_session_request_received_exit_action(
-       gpointer p_context_data);
+static void _state_session_request_received_entry_action(void *p_context_data);
+static void _state_session_request_received_exit_action(void *p_context_data);
 static gfsm_state_id_t
 _state_session_request_received_reaction_confirm_session_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _state_session_request_accepted_entry_action(
-       gpointer p_context_data);
-static void _state_session_request_accepted_exit_action(
-       gpointer p_context_data);
+static void _state_session_request_accepted_entry_action(void *p_context_data);
+static void _state_session_request_accepted_exit_action(void *p_context_data);
 static gfsm_state_id_t
 _state_session_request_accepted_reaction_connect_status_received(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t
 _state_session_request_accepted_reaction_session_config_request_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
+static gfsm_state_id_t
+_state_session_request_accepted_reaction_set_session_ready_called(
+       void *p_context_data, void *p_event_data);
 
-static void _state_entering_pin_entry_action(gpointer p_context_data);
-static void _state_entering_pin_exit_action(gpointer p_context_data);
+static void _state_entering_pin_entry_action(void *p_context_data);
+static void _state_entering_pin_exit_action(void *p_context_data);
 static gfsm_state_id_t _state_entering_pin_reaction_confirm_session_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _state_group_formation_completed_entry_action(
-       gpointer p_context_data);
-static void _state_group_formation_completed_exit_action(
-       gpointer p_context_data);
+static void _state_group_formation_completed_entry_action(void *p_context_data);
+static void _state_group_formation_completed_exit_action(void *p_context_data);
 static gfsm_state_id_t _state_group_formation_completed_reaction_ip_assigned(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t
 _state_group_formation_completed_reaction_request_session_received(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
+static gfsm_state_id_t
+_state_group_formation_completed_reaction_set_session_ready_called(
+       void *p_context_data, void *p_event_data);
 
-static void _state_l2connected_entry_action(gpointer p_context_data);
-static void _state_l2connected_exit_action(gpointer p_context_data);
+static void _state_l2connected_entry_action(void *p_context_data);
+static void _state_l2connected_exit_action(void *p_context_data);
 static gfsm_state_id_t _state_l2connected_reaction_close_session_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _state_l2connected_reaction_remove_session_received(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _state_l2connected_reaction_peer_destroyed(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
-static void _state_request_session_sent_entry_action(gpointer p_context_data);
-static void _state_request_session_sent_exit_action(gpointer p_context_data);
+static void _state_request_session_sent_entry_action(void *p_context_data);
+static void _state_request_session_sent_exit_action(void *p_context_data);
 static gfsm_state_id_t
 _state_request_session_sent_reaction_added_session_received(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t
 _state_request_session_sent_reaction_deferred_session_received(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t
 _state_request_session_sent_reaction_rejected_session_received(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _state_request_session_sent_reaction_timeout(
-       gpointer p_context_data, gpointer p_event_data);
-static void _state_request_session_received_entry_action(
-       gpointer p_context_data);
-static void _state_request_session_received_exit_action(
-       gpointer p_context_data);
+       void *p_context_data, void *p_event_data);
+static void _state_request_session_received_entry_action(void *p_context_data);
+static void _state_request_session_received_exit_action(void *p_context_data);
 static gfsm_state_id_t
 _state_request_session_received_reaction_set_session_ready_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t
 _state_request_session_received_reaction_defer_session_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t
 _state_request_session_received_reaction_confirm_session_called(
-       gpointer p_context_data, gpointer p_event_data);
-static void _state_open_entry_action(gpointer p_context_data);
-static void _state_open_exit_action(gpointer p_context_data);
+       void *p_context_data, void *p_event_data);
+static void _state_open_entry_action(void *p_context_data);
+static void _state_open_exit_action(void *p_context_data);
 static gfsm_state_id_t _state_open_reaction_bound_port_called(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _state_open_reaction_allowed_port_received(
-       gpointer p_context_data, gpointer p_event_data);
-static void _state_reject_session_sent_entry_action(gpointer p_context_data);
-static void _state_reject_session_sent_exit_action(gpointer p_context_data);
+       void *p_context_data, void *p_event_data);
+static void _state_reject_session_sent_entry_action(void *p_context_data);
+static void _state_reject_session_sent_exit_action(void *p_context_data);
 static gfsm_state_id_t _state_reject_session_sent_reaction_ack_received(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _state_reject_session_sent_reaction_nack_received(
-       gpointer p_context_data, gpointer p_event_data);
-static void _state_remove_session_sent_entry_action(gpointer p_context_data);
-static void _state_remove_session_sent_exit_action(gpointer p_context_data);
+       void *p_context_data, void *p_event_data);
+static void _state_remove_session_sent_entry_action(void *p_context_data);
+static void _state_remove_session_sent_exit_action(void *p_context_data);
 static gfsm_state_id_t _state_remove_session_sent_reaction_ack_received(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 static gfsm_state_id_t _state_remove_session_sent_reaction_nack_received(
-       gpointer p_context_data, gpointer p_event_data);
+       void *p_context_data, void *p_event_data);
 
 /*****************************************************************************
  * API Definition
@@ -498,6 +501,7 @@ gboolean asp_session_initialize()
        asp_p2p_conn_set_session_config_request_cb(_p2p_conn_session_config_request_cb,
                        NULL);
        asp_p2p_conn_set_connect_status_cb(_p2p_conn_connect_status_cb, NULL);
+       asp_p2p_conn_set_ip_assigned_cb(_p2p_conn_ip_assigned_cb, NULL);
 #endif
 
        return TRUE;
@@ -545,13 +549,13 @@ gboolean asp_session_connect_session_over_p2p(const guint8 *service_mac,
                *p_session_id = _alloc_session_id();
        } while (_get_exist_session(*p_session_id, session_mac) != NULL);
 
-       asp_session_t *session = _new_session_over_p2p(session_mac, *p_session_id,
+       asp_session_s *session = _new_session_over_p2p(session_mac, *p_session_id,
                                 ASP_ROLE_SEEKER, service_mac,
                                 advertisement_id);     /*this function is not implemented yet, hjjee */
        g_assert(session);
 
-       connect_session_param_t *p_connect_session = (connect_session_param_t *)
-                       g_malloc(sizeof(connect_session_param_t));
+       connect_session_param_s *p_connect_session = (connect_session_param_s *)
+                       g_malloc(sizeof(connect_session_param_s));
 
        memcpy(p_connect_session->service_mac, service_mac, MAC_ADDRESS_LEN);
        if (session_info) {
@@ -563,14 +567,14 @@ gboolean asp_session_connect_session_over_p2p(const guint8 *service_mac,
        p_connect_session->network_role = network_role;
        p_connect_session->network_config = network_config;
 
-       gfsm_process_event(&session->context,
+       gfsm_process_event(session->context,
                           gfsm_create_event(SESSION_EVENT_CONNECT_SESSION_CALLED, p_connect_session,
                                             g_free));
 
        return TRUE;
 }
 
-gboolean asp_session_connect_session_over_infa(const gchar *peer_ip,
+gboolean asp_session_connect_session_over_infra(const gchar *peer_ip,
                guint32 advertisement_id, guint8 *session_info, size_t info_length,
                guint8 *session_mac, guint32 *p_session_id)
 {
@@ -582,13 +586,13 @@ gboolean asp_session_connect_session_over_infa(const gchar *peer_ip,
                *p_session_id = _alloc_session_id();
        } while (_get_exist_session(*p_session_id, session_mac) != NULL);
 
-       asp_session_t *session = _new_session_over_infra(session_mac, *p_session_id,
+       asp_session_s *session = _new_session_over_infra(session_mac, *p_session_id,
                                 ASP_ROLE_SEEKER, advertisement_id, NULL,
                                 peer_ip);      /*this function needs to be modified because there is new element in session structure., hjjee */
        g_assert(session);
 
-       connect_session_param_t *p_connect_session = (connect_session_param_t *)
-                       g_malloc(sizeof(connect_session_param_t));
+       connect_session_param_s *p_connect_session = (connect_session_param_s *)
+                       g_malloc(sizeof(connect_session_param_s));
 
        memset(p_connect_session->service_mac, 0, MAC_ADDRESS_LEN);
        if (session_info) {
@@ -600,7 +604,7 @@ gboolean asp_session_connect_session_over_infa(const gchar *peer_ip,
        p_connect_session->network_role = 0;
        p_connect_session->network_config = 0;
 
-       gfsm_process_event(&session->context,
+       gfsm_process_event(session->context,
                           gfsm_create_event(SESSION_EVENT_CONNECT_SESSION_CALLED, p_connect_session,
                                             g_free));
 
@@ -612,9 +616,9 @@ gboolean asp_session_defer_session(guint8 *session_mac, guint32 session_id,
 {
        INFO_MSG;
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
-       defer_session_param_t *defer_session_param = (defer_session_param_t *) g_malloc(
-                               sizeof(defer_session_param_t));
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
+       defer_session_param_s *defer_session_param = (defer_session_param_s *)g_malloc(
+                               sizeof(defer_session_param_s));
 
        g_assert(session);
 
@@ -622,7 +626,7 @@ gboolean asp_session_defer_session(guint8 *session_mac, guint32 session_id,
        memcpy(defer_session_param->deferred_response, deferred_response, MIN(length,
                        ASP_DEFER_RESPONSE_BYTE_MAX));
 
-       gfsm_process_event(&session->context,
+       gfsm_process_event(session->context,
                           gfsm_create_event(SESSION_EVENT_DEFER_SESSION_CALLED, defer_session_param,
                                             g_free));
 
@@ -634,15 +638,15 @@ gboolean asp_session_confirm_session(const guint8 *session_mac,
 {
        INFO_MSG;
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
-       confirm_session_param_t *confirmed_param = (confirm_session_param_t *) g_malloc(
-                               sizeof(confirm_session_param_t));
+       confirm_session_param_s *confirmed_param = (confirm_session_param_s *)g_malloc(
+                               sizeof(confirm_session_param_s));
        confirmed_param->confirmed = confirmed;
        confirmed_param->pin = pin;
 
-       gfsm_process_event(&session->context,
+       gfsm_process_event(session->context,
                           gfsm_create_event(SESSION_EVENT_CONFIRM_SESSION_CALLED, confirmed_param,
                                             g_free));
 
@@ -654,10 +658,10 @@ gboolean asp_session_set_session_ready(const guint8 *session_mac,
 {
        INFO_MSG;
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
-       gfsm_process_event(&session->context,
+       gfsm_process_event(session->context,
                           gfsm_create_event(SESSION_EVENT_SET_SESSION_READY_CALLED, NULL, NULL));
 
        return TRUE;
@@ -668,13 +672,13 @@ gboolean asp_session_close_session(guint8 *session_mac, guint32 session_id,
 {
        INFO_MSG;
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
        guint8 *close_reason = (guint8 *) g_malloc(sizeof(guint8));
        *close_reason = (guint8) reason;
 
-       gfsm_process_event(&session->context,
+       gfsm_process_event(session->context,
                           gfsm_create_event(SESSION_EVENT_CLOSE_SESSION_CALLED, close_reason, g_free));
 
        return TRUE;
@@ -685,16 +689,16 @@ gboolean asp_session_bound_port(guint8 *session_mac, guint32 session_id,
 {
        INFO_MSG;
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
-       bound_port_param_t *bound_port_param = (bound_port_param_t *) g_malloc(sizeof(
-                       bound_port_param_t));
+       bound_port_param_s *bound_port_param = (bound_port_param_s *)g_malloc(sizeof(
+                       bound_port_param_s));
        g_strlcpy(bound_port_param->local_ip, local_ip, ASP_SESSION_IPV4_STR_LEN);
        bound_port_param->local_port = local_port;
        bound_port_param->proto = protocol;
 
-       gfsm_process_event(&session->context,
+       gfsm_process_event(session->context,
                           gfsm_create_event(SESSION_EVENT_BOUND_PORT_CALLED, bound_port_param, g_free));
 
        return TRUE;
@@ -705,7 +709,7 @@ void _p2p_conn_session_request_cb(gint32 error_code, const guint8 *session_mac,
                                  size_t name_length, const guint8 *session_info, size_t info_length,
                                  gboolean get_pin, guint32 pin, gpointer user_data)
 {
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
 
        if (session) {
                /* Discard or delete previous session??? */
@@ -715,8 +719,8 @@ void _p2p_conn_session_request_cb(gint32 error_code, const guint8 *session_mac,
                                advertisement_id);
                g_assert(session);
 
-               session_request_param_t *p_param = (session_request_param_t *) g_malloc(sizeof(
-                               session_request_param_t));
+               session_request_param_s *p_param = (session_request_param_s *)g_malloc(sizeof(
+                               session_request_param_s));
 
                p_param->name_length = MIN(ASP_MAX_DEVICE_NAME_LEN, name_length);
                memcpy(p_param->device_name, device_name, p_param->name_length);
@@ -729,7 +733,7 @@ void _p2p_conn_session_request_cb(gint32 error_code, const guint8 *session_mac,
                p_param->get_pin = get_pin;
                p_param->pin = pin;
 
-               gfsm_process_event(&session->context,
+               gfsm_process_event(session->context,
                                   gfsm_create_event(SESSION_EVENT_SESSION_REQUEST_CALLED, p_param, g_free));
        }
 }
@@ -738,15 +742,15 @@ void _p2p_conn_session_config_request_cb(gint32 error_code,
                const guint8 *session_mac, guint32 session_id, gboolean get_pin, guint32 pin,
                gpointer user_data)
 {
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
 
        if (session) {
-               session_config_request_param_t *p_param = (session_config_request_param_t *)
-                               g_malloc(sizeof(session_config_request_param_t));
+               session_config_request_param_s *p_param = (session_config_request_param_s *)
+                               g_malloc(sizeof(session_config_request_param_s));
                p_param->get_network_config_pin = get_pin;
                p_param->network_config_pin = pin;
 
-               gfsm_process_event(&session->context,
+               gfsm_process_event(session->context,
                                   gfsm_create_event(SESSION_EVENT_SESSION_CONFIG_REQUEST_CALLED, p_param,
                                                     g_free));
        }
@@ -755,19 +759,36 @@ void _p2p_conn_session_config_request_cb(gint32 error_code,
 void _p2p_conn_connect_status_cb(gint32 error_code, const guint8 *session_mac,
                                 guint32 session_id, asp_session_connect_status_e status, gpointer user_data)
 {
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
 
        if (session) {
-               connect_status_param_t *p_param = (connect_status_param_t *) g_malloc(sizeof(
-                               connect_status_param_t));
+               connect_status_param_s *p_param = (connect_status_param_s *)g_malloc(sizeof(
+                               connect_status_param_s));
                p_param->status = status;
                p_param->length = 0;
 
-               gfsm_process_event(&session->context,
+               gfsm_process_event(session->context,
                                   gfsm_create_event(SESSION_EVENT_CONNECT_STATUS_CALLED, p_param, g_free));
        }
 }
 
+void _p2p_conn_ip_assigned_cb(gint32 error_code, const guint8 *session_mac,
+                             guint32 session_id, gchar *service_mac, gchar *peer_ip_addr, gint32 ip_length,
+                             gpointer user_data)
+{
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
+
+       if (session) {
+               ip_assigned_param_s *p_param = (ip_assigned_param_s *)g_malloc(sizeof(
+                                                      ip_assigned_param_s));
+               memcpy(p_param->peer_ip_addr, peer_ip_addr, ip_length);
+               p_param->length = ip_length;
+
+               gfsm_process_event(session->context,
+                                  gfsm_create_event(SESSION_EVENT_IP_ASSIGNED, p_param, g_free));
+       }
+}
+
 gboolean asp_session_set_session_request_cb(asp_session_session_request_cb cb,
                gpointer user_data)
 {
@@ -823,7 +844,7 @@ gboolean asp_session_get_advertisement_id(guint8 *session_mac,
 {
        INFO_MSG;
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
        *advertisement_id = session->advertisement_id;
@@ -846,7 +867,7 @@ gboolean asp_session_get_peer_endpoint(guint8 *session_mac, guint32 session_id,
 {
        INFO_MSG;
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
        g_strlcpy(peer_ip, session->peer_ip, ASP_SESSION_IPV4_STR_LEN);
@@ -860,20 +881,27 @@ void asp_session_recv_req(GSocketAddress *sock_addr, gpointer p_msg)
 {
        INFO_MSG;
 
-       asp_request_header_t *p_header = (asp_request_header_t *) p_msg;
+       asp_request_header_s *p_header = (asp_request_header_s *)p_msg;
 
        ASP_LOGD("%s asp_session_recv_req(), opcode:%d", ROLE, p_header->opcode);
 
-       asp_session_t *session = _get_exist_session(p_header->session_id,
+       asp_session_s *session = _get_exist_session(p_header->session_id,
                                 p_header->session_mac);
 
-       if (NULL == session && ASP_OPCODE_REQUEST_SESSION != p_header->opcode) {
-               /* in case of session not found for reqeust message */
+       if (!session->over_p2p && NULL == session &&
+           ASP_OPCODE_REQUEST_SESSION != p_header->opcode) {
+               /* over infra */
                /* NACK shall be sent */
                _send_nack(sock_addr, p_header->seq_num, ASP_NACK_REASON_NO_SESSION_EXIST);
                return;
        }
 
+       if (session->over_p2p && NULL == session) {
+               /* over p2p */
+               _send_nack(sock_addr, p_header->seq_num, ASP_NACK_REASON_NO_SESSION_EXIST);
+               return;
+       }
+
        switch (p_header->opcode) {
        case ASP_OPCODE_REQUEST_SESSION: {
                        gchar peer_ip[ASP_SESSION_IPV4_STR_LEN];
@@ -887,37 +915,36 @@ void asp_session_recv_req(GSocketAddress *sock_addr, gpointer p_msg)
 
                        _send_ack(sock_addr, p_header->seq_num);
 
-                       gfsm_process_event(&session->context,
+                       gfsm_process_event(session->context,
                                           gfsm_create_event(SESSION_EVENT_REQUEST_SESSION_RECEIVED,
                                                             _asp_session_dup_reqeust_session(p_msg), g_free));
                }
                break;
        case ASP_OPCODE_ADDED_SESSION:
                _send_ack(sock_addr, p_header->seq_num);
-               gfsm_process_event(&session->context,
-                                  gfsm_create_event(SESSION_EVENT_ADDED_SESSION_RECEIVED, NULL,
-                                                    NULL /*_asp_session_dup_added_session(p_msg), g_free*/));
+               gfsm_process_event(session->context,
+                                  gfsm_create_event(SESSION_EVENT_ADDED_SESSION_RECEIVED, NULL, NULL));
                break;
        case ASP_OPCODE_REJECTED_SESSION:
                _send_ack(sock_addr, p_header->seq_num);
-               gfsm_process_event(&session->context,
+               gfsm_process_event(session->context,
                                   gfsm_create_event(SESSION_EVENT_REJECTED_SESSION_RECEIVED, NULL, NULL));
                break;
        case ASP_OPCODE_REMOVE_SESSION:
                _send_ack(sock_addr, p_header->seq_num);
-               gfsm_process_event(&session->context,
+               gfsm_process_event(session->context,
                                   gfsm_create_event(SESSION_EVENT_REMOVE_SESSION_RECEIVED,
-                                                    &((asp_remove_session_t *) p_msg)->reason, NULL));
+                                                    &((asp_remove_session_s *)p_msg)->reason, NULL));
                break;
        case ASP_OPCODE_ALLOWED_PORT:
                _send_ack(sock_addr, p_header->seq_num);
-               gfsm_process_event(&session->context,
+               gfsm_process_event(session->context,
                                   gfsm_create_event(SESSION_EVENT_ALLOWED_PORT_RECEIVED,
                                                     _asp_session_dup_allowed_session(p_msg), g_free));
                break;
        case ASP_OPCODE_DEFERRED_SESSION:
                _send_ack(sock_addr, p_header->seq_num);
-               gfsm_process_event(&session->context,
+               gfsm_process_event(session->context,
                                   gfsm_create_event(SESSION_EVENT_DEFERRED_SESSION_RECEIVED, NULL, NULL));
                break;
 
@@ -940,10 +967,10 @@ void asp_session_recv_ack(GSocketAddress *sock_addr, guint8 *session_mac,
 
        ASP_LOGD("%s asp_session_recv_ack: session_id:%d, session_mac[0]:%x", ROLE,
                 session_id, session_mac[0]);
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
-       gfsm_process_event(&session->context,
+       gfsm_process_event(session->context,
                           gfsm_create_event(SESSION_EVENT_ACK_RECEIVED, NULL, NULL));
 }
 
@@ -952,10 +979,10 @@ void asp_session_recv_nack(GSocketAddress *sock_addr, guint8 *session_mac,
 {
        INFO_MSG;
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
-       gfsm_process_event(&session->context,
+       gfsm_process_event(session->context,
                           gfsm_create_event(SESSION_EVENT_NACK_RECEIVED, NULL, NULL));
 }
 
@@ -964,8 +991,8 @@ void asp_session_peer_destroyed(guint8 *session_mac, guint32 session_id)
        INFO_MSG;
 
        /*_remove_session(session_mac, session_id); */
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
-       gfsm_process_event(&session->context,
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
+       gfsm_process_event(session->context,
                           gfsm_create_event(SESSION_EVENT_PEER_DESTROYED, NULL, NULL));
 }
 
@@ -973,12 +1000,12 @@ void asp_session_peer_destroyed(guint8 *session_mac, guint32 session_id)
  * Local Function Definition
  *****************************************************************************/
 
-gboolean _send_request_session(asp_session_t *session, guint8 *session_info,
+gboolean _send_request_session(asp_session_s *session, guint8 *session_info,
                               size_t session_info_len)
 {
        INFO_MSG;
 
-       asp_request_session_t request_session_data;
+       asp_request_session_s request_session_data;
 
        request_session_data.opcode = ASP_OPCODE_REQUEST_SESSION;
        memcpy(request_session_data.session_mac, session->session_mac, MAC_ADDRESS_LEN);
@@ -993,56 +1020,55 @@ gboolean _send_request_session(asp_session_t *session, guint8 *session_info,
                request_session_data.session_information_length = 0;
 
        return asp_sess_peer_send_msg(session->sock_addr,
-                                     (gpointer)&request_session_data);
+                                     (void *)&request_session_data);
 }
 
-gboolean _send_remove_session(asp_session_t *session, guint8 remove_reason)
+gboolean _send_remove_session(asp_session_s *session, guint8 remove_reason)
 {
        INFO_MSG;
 
-       asp_remove_session_t remove_session_data;
+       asp_remove_session_s remove_session_data;
 
        remove_session_data.opcode = ASP_OPCODE_REMOVE_SESSION;
        memcpy(remove_session_data.session_mac, session->session_mac, MAC_ADDRESS_LEN);
        remove_session_data.session_id = session->session_id;
        remove_session_data.reason = remove_reason;
 
-       return asp_sess_peer_send_msg(session->sock_addr,
-                                     (gpointer)&remove_session_data);
+       return asp_sess_peer_send_msg(session->sock_addr, (void *)&remove_session_data);
 }
 
-gboolean _send_reject_session(asp_session_t *session)
+gboolean _send_reject_session(asp_session_s *session)
 {
        INFO_MSG;
 
-       asp_rejected_session_t rejected_session_data;
+       asp_rejected_session_s rejected_session_data;
        rejected_session_data.opcode = ASP_OPCODE_REJECTED_SESSION;
        memcpy(rejected_session_data.session_mac, session->session_mac,
               MAC_ADDRESS_LEN);
        rejected_session_data.session_id = session->session_id;
 
        return asp_sess_peer_send_msg(session->sock_addr,
-                                     (gpointer)&rejected_session_data);
+                                     (void *)&rejected_session_data);
 }
 
-gboolean _send_added_session(asp_session_t *session)
+gboolean _send_added_session(asp_session_s *session)
 {
        INFO_MSG;
 
-       asp_added_session_t add_session_data;
+       asp_added_session_s add_session_data;
        add_session_data.opcode = ASP_OPCODE_ADDED_SESSION;
        memcpy(add_session_data.session_mac, session->session_mac, MAC_ADDRESS_LEN);
        add_session_data.session_id = session->session_id;
 
-       return asp_sess_peer_send_msg(session->sock_addr, (gpointer)&add_session_data);
+       return asp_sess_peer_send_msg(session->sock_addr, (void *)&add_session_data);
 }
 
-gboolean _send_deferred_session(asp_session_t *session,
+gboolean _send_deferred_session(asp_session_s *session,
                                guint8 *deferred_response, size_t length)
 {
        INFO_MSG;
 
-       asp_deferred_session_t deferred_session_data;
+       asp_deferred_session_s deferred_session_data;
        deferred_session_data.opcode = ASP_OPCODE_DEFERRED_SESSION;
        memcpy(deferred_session_data.session_mac, session->session_mac,
               MAC_ADDRESS_LEN);
@@ -1052,55 +1078,55 @@ gboolean _send_deferred_session(asp_session_t *session,
               length);
 
        return asp_sess_peer_send_msg(session->sock_addr,
-                                     (gpointer)&deferred_session_data);
+                                     (void *)&deferred_session_data);
 }
 
-gboolean _send_allowed_port(asp_session_t *session, guint16 port,
+gboolean _send_allowed_port(asp_session_s *session, guint16 port,
                            guint8 protocol)
 {
        INFO_MSG;
 
-       asp_allowed_port_t allowed_port_data;
+       asp_allowed_port_s allowed_port_data;
        allowed_port_data.opcode = ASP_OPCODE_ALLOWED_PORT;
        memcpy(allowed_port_data.session_mac, session->session_mac, MAC_ADDRESS_LEN);
        allowed_port_data.session_id = session->session_id;
        allowed_port_data.port = port;
        allowed_port_data.proto = protocol;
 
-       return asp_sess_peer_send_msg(session->sock_addr, (gpointer)&allowed_port_data);
+       return asp_sess_peer_send_msg(session->sock_addr, (void *)&allowed_port_data);
 }
 
 gboolean _send_nack(GSocketAddress *sock_addr, guint8 seq_num, guint8 reason)
 {
        INFO_MSG;
 
-       asp_nack_t nack_data;
+       asp_nack_s nack_data;
        nack_data.opcode = ASP_OPCODE_NACK;
        nack_data.seq_num = seq_num;
        nack_data.reason = reason;
 
-       return asp_sess_peer_send_msg(sock_addr, (gpointer)&nack_data);
+       return asp_sess_peer_send_msg(sock_addr, (void *)&nack_data);
 }
 
 gboolean _send_ack(GSocketAddress *sock_addr, guint8 seq_num)
 {
        INFO_MSG;
 
-       asp_nack_t ack_data;
+       asp_nack_s ack_data;
        ack_data.opcode = ASP_OPCODE_ACK;
        ack_data.seq_num = seq_num;
 
-       return asp_sess_peer_send_msg(sock_addr, (gpointer)&ack_data);
+       return asp_sess_peer_send_msg(sock_addr, (void *)&ack_data);
 }
 
 void _session_tree_value_destoryed(gpointer data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) data;
+       asp_session_s *session = (asp_session_s *)data;
 
-       /* terminate gfsm context */
-       gfsm_terminate_context(&session->context);
+       /* destroy gfsm context */
+       /*gfsm_destroy_context(session->context); */
 
        if (session->sock_addr) {
                g_object_unref(session->sock_addr);
@@ -1113,25 +1139,20 @@ void _session_tree_value_destoryed(gpointer data)
 
 void _session_tree_key_destoryed(gpointer data)
 {
-       INFO_MSG;
-
-       asp_session_key_t *key = (asp_session_key_t *) data;
+       asp_session_key_s *key = (asp_session_key_s *)data;
 
        g_free(key);
 }
 
 gint _session_tree_compare_func(gconstpointer a, gconstpointer b)
 {
-       INFO_MSG;
-
-       asp_session_key_t *s1 = (asp_session_key_t *) a;
-       asp_session_key_t *s2 = (asp_session_key_t *) b;
+       asp_session_key_s *s1 = (asp_session_key_s *)a;
+       asp_session_key_s *s2 = (asp_session_key_s *)b;
 
        /* ascending sort */
-       if (s1->session_id != s2->session_id) {
-               ASP_LOGD("%s s1-id:%d, s2-id:%d", ROLE, s1->session_id, s2->session_id);
+       if (s1->session_id != s2->session_id)
                return s1->session_id - s2->session_id;
-       else
+       else
                return memcmp(s1->session_mac, s2->session_mac, MAC_ADDRESS_LEN);
 }
 
@@ -1188,7 +1209,7 @@ void _call_session_status_cb(gint32 error_code, guint8 *session_mac,
 
        g_assert(session_cb_v_table.session_status.cb);
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
        session_cb_v_table.session_status.cb(error_code, session_mac, session_id,
@@ -1203,7 +1224,7 @@ void _call_connect_status_cb(gint32 error_code, guint8 *session_mac,
 
        g_assert(session_cb_v_table.session_status.cb);
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
        /* temporary code */
@@ -1218,9 +1239,9 @@ void _call_connect_status_cb(gint32 error_code, guint8 *session_mac,
 
 gpointer _asp_session_dup_reqeust_session(gpointer p_msg)
 {
-       asp_request_session_t *p_dup_msg = (asp_request_session_t *) g_malloc(sizeof(
-                       asp_request_session_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_request_session_t));
+       asp_request_session_s *p_dup_msg = (asp_request_session_s *)g_malloc(sizeof(
+                       asp_request_session_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_request_session_s));
        return (gpointer) p_dup_msg;
 }
 
@@ -1228,29 +1249,29 @@ gpointer _asp_session_dup_reqeust_session(gpointer p_msg)
 
 gpointer _asp_session_dup_added_session(gpointer p_msg)
 {
-    asp_added_session_t* p_dup_msg = (asp_added_session_t*)g_malloc(sizeof(asp_added_session_t));
-    memcpy(p_dup_msg, p_msg, sizeof(asp_added_session_t));
+    asp_added_session_s* p_dup_msg = (asp_added_session_s*)g_malloc(sizeof(asp_added_session_s));
+    memcpy(p_dup_msg, p_msg, sizeof(asp_added_session_s));
     return (gpointer)p_dup_msg;
 }
 
 gpointer _asp_session_dup_rejected_session(gpointer p_msg)
 {
-    asp_rejected_session_t* p_dup_msg = (asp_rejected_session_t*)g_malloc(sizeof(asp_rejected_session_t));
-    memcpy(p_dup_msg, p_msg, sizeof(asp_rejected_session_t));
+    asp_rejected_session_s* p_dup_msg = (asp_rejected_session_s*)g_malloc(sizeof(asp_rejected_session_s));
+    memcpy(p_dup_msg, p_msg, sizeof(asp_rejected_session_s));
     return (gpointer)p_dup_msg;
 }
 
 gpointer _asp_session_dup_remove_session(gpointer p_msg)
 {
-    asp_remove_session_t* p_dup_msg = (asp_remove_session_t*)g_malloc(sizeof(asp_remove_session_t));
-    memcpy(p_dup_msg, p_msg, sizeof(asp_remove_session_t));
+    asp_remove_session_s* p_dup_msg = (asp_remove_session_s*)g_malloc(sizeof(asp_remove_session_s));
+    memcpy(p_dup_msg, p_msg, sizeof(asp_remove_session_s));
     return (gpointer)p_dup_msg;
 }
 
 gpointer _asp_session_dup_deferred_session(gpointer p_msg)
 {
-    asp_deferred_session_t* p_dup_msg = (asp_deferred_session_t*)g_malloc(sizeof(asp_deferred_session_t));
-    memcpy(p_dup_msg, p_msg, sizeof(asp_deferred_session_t));
+    asp_deferred_session_s* p_dup_msg = (asp_deferred_session_s*)g_malloc(sizeof(asp_deferred_session_s));
+    memcpy(p_dup_msg, p_msg, sizeof(asp_deferred_session_s));
     return (gpointer)p_dup_msg;
 }
 */
@@ -1259,9 +1280,9 @@ gpointer _asp_session_dup_allowed_session(gpointer p_msg)
 {
        INFO_MSG;
 
-       asp_allowed_port_t *p_dup_msg = (asp_allowed_port_t *) g_malloc(sizeof(
-                                               asp_allowed_port_t));
-       memcpy(p_dup_msg, p_msg, sizeof(asp_allowed_port_t));
+       asp_allowed_port_s *p_dup_msg = (asp_allowed_port_s *)g_malloc(sizeof(
+                                               asp_allowed_port_s));
+       memcpy(p_dup_msg, p_msg, sizeof(asp_allowed_port_s));
        return (gpointer) p_dup_msg;
 }
 
@@ -1277,11 +1298,12 @@ asp_session_status_e _get_session_state(guint8 *session_mac, guint32 session_id)
 
        asp_session_status_e ret = ASP_SESSION_STATE_ERROR;
 
-       asp_session_t *session = _get_exist_session(session_id, session_mac);
+       asp_session_s *session = _get_exist_session(session_id, session_mac);
        g_assert(session);
 
-       gfsm_state_id_t current_state = gfsm_get_current_state_id(&session->context);
+       gfsm_state_id_t current_state = gfsm_get_current_state_id(session->context);
        switch (current_state) {
+       case SESSION_STATE_NONE:
        case SESSION_STATE_CLOSED:
        case SESSION_STATE_RUNNING:
                ret = ASP_SESSION_STATE_CLOSED;
@@ -1307,13 +1329,13 @@ asp_session_status_e _get_session_state(guint8 *session_mac, guint32 session_id)
        return ret;
 }
 
-asp_session_t *_new_session_by_request_session(GSocketAddress *sock_addr,
+asp_session_s *_new_session_by_request_session(GSocketAddress *sock_addr,
                const gchar *peer_ip, gpointer p_msg)
 {
        INFO_MSG;
 
-       asp_session_t *session = NULL;
-       asp_request_session_t *p_req_session = (asp_request_session_t *) p_msg;
+       asp_session_s *session = NULL;
+       asp_request_session_s *p_req_session = (asp_request_session_s *)p_msg;
        g_assert(p_req_session);
 
        session = _new_session_over_infra(p_req_session->session_mac,
@@ -1323,15 +1345,15 @@ asp_session_t *_new_session_by_request_session(GSocketAddress *sock_addr,
        return session;
 }
 
-asp_session_t *_new_session_over_infra(guint8 *session_mac, guint32 session_id,
+asp_session_s *_new_session_over_infra(guint8 *session_mac, guint32 session_id,
                                       asp_role_e asp_role, guint32 advertisement_id, GSocketAddress *sock_addr,
                                       const gchar *peer_ip)
 {
        INFO_MSG;
 
-       asp_session_t *session = NULL;
+       asp_session_s *session = NULL;
 
-       session = (asp_session_t *) g_malloc0(sizeof(asp_session_t));
+       session = (asp_session_s *)g_malloc0(sizeof(asp_session_s));
 
        session->asp_role = asp_role;
 
@@ -1344,27 +1366,27 @@ asp_session_t *_new_session_over_infra(guint8 *session_mac, guint32 session_id,
                session->sock_addr = g_inet_socket_address_new_from_string(peer_ip,
                                     (guint) g_asp_cordination_port);
        else                                            /* advertiser side */
-               session->sock_addr = g_object_ref(sock_addr);
+               session->sock_addr = (GSocketAddress *) g_object_ref(sock_addr);
        /*session->sock_family = G_SOCKET_FAMILY_IPV4; // temporary */
        session->over_p2p = FALSE;
 
-       gfsm_init_context(&(session->context), &session_fsm,
-                         _asp_session_destroy_session, session);
+       session->context = gfsm_create_context(session_fsm,
+                                              _asp_session_destroy_session, session);
 
        _insert_session(session);
 
        return session;
 }
 
-asp_session_t *_new_session_over_p2p(const guint8 *session_mac,
+asp_session_s *_new_session_over_p2p(const guint8 *session_mac,
                                     guint32 session_id, asp_role_e asp_role, const guint8 *service_mac,
                                     guint32 advertisement_id)
 {
        INFO_MSG;
 
-       asp_session_t *session = NULL;
+       asp_session_s *session = NULL;
 
-       session = (asp_session_t *) g_malloc0(sizeof(asp_session_t));
+       session = (asp_session_s *)g_malloc0(sizeof(asp_session_s));
 
        memcpy(session->session_mac, session_mac, MAC_ADDRESS_LEN);
        session->session_id = session_id;
@@ -1372,26 +1394,26 @@ asp_session_t *_new_session_over_p2p(const guint8 *session_mac,
        session->asp_role = asp_role;
 
        memcpy(session->service_mac, service_mac, MAC_ADDRESS_LEN);
-       session->advertisement_id = advertisement_id;
-       /* temporal code session->sock_family = G_SOCKET_FAMILY_IPV4; */
-       session->over_p2p = TRUE;
+       session->advertisement_id = advertisement_id,
+                /*session->sock_family = G_SOCKET_FAMILY_IPV4; // temporary */
+                session->over_p2p = TRUE;
 
-       gfsm_init_context(&(session->context), &session_fsm,
-                         _asp_session_destroy_session, session);
+       session->context = gfsm_create_context(session_fsm,
+                                              _asp_session_destroy_session, session);
 
        _insert_session(session);
 
        return session;
 }
 
-asp_session_t *_new_session_from_session_request(const guint8 *session_mac,
+asp_session_s *_new_session_from_session_request(const guint8 *session_mac,
                guint32 session_id, guint32 advertisement_id)
 {
        INFO_MSG;
 
-       asp_session_t *session = NULL;
+       asp_session_s *session = NULL;
 
-       session = (asp_session_t *) g_malloc0(sizeof(asp_session_t));
+       session = (asp_session_s *)g_malloc0(sizeof(asp_session_s));
 
        memcpy(session->session_mac, session_mac, MAC_ADDRESS_LEN);
        session->session_id = session_id;
@@ -1403,23 +1425,23 @@ asp_session_t *_new_session_from_session_request(const guint8 *session_mac,
                 /*session->sock_family = G_SOCKET_FAMILY_IPV4; // temporary */
                 session->over_p2p = TRUE;
 
-       gfsm_init_context(&(session->context), &session_fsm,
-                         _asp_session_destroy_session, session);
+       session->context = gfsm_create_context(session_fsm,
+                                              _asp_session_destroy_session, session);
 
        _insert_session(session);
 
        return session;
 }
 
-void _store_peer_ip_addr(asp_session_t *session, gchar *peer_ip, size_t length)
+void _store_peer_ip_addr(asp_session_s *session, char *peer_ip, size_t length)
 {
-       g_strlcpy(session->peer_ip, peer_ip, ASP_SESSION_IPV4_STR_LEN);
+       g_strlcpy(session->peer_ip, peer_ip, length);
        session->sock_addr = g_inet_socket_address_new_from_string(peer_ip,
                             (guint) g_asp_cordination_port);
 }
 
 #ifdef HAVE_ASP_P2P_CONN
-guint8 *_get_peer_mac(asp_session_t *session)
+guint8 *_get_peer_mac(asp_session_s *session)
 {
        if (session->asp_role == ASP_ROLE_ADVERTIZER)
                return session->session_mac;
@@ -1428,11 +1450,11 @@ guint8 *_get_peer_mac(asp_session_t *session)
 }
 #endif
 
-void _asp_session_destroy_session(gpointer p_context_data)
+void _asp_session_destroy_session(void *p_context_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
        _remove_session(session->session_mac, session->session_id);
 }
 
@@ -1444,46 +1466,36 @@ void _remove_session(guint8 *session_mac, guint32 session_id)
        /* key & value pair in tree will be freed _session_tree_key_destoryed and _session_tree_value_destoryed */
 }
 
-asp_session_t *_get_exist_session(guint32 session_id, const guint8 *session_mac)
+asp_session_s *_get_exist_session(guint32 session_id, const guint8 *session_mac)
 {
-       INFO_MSG;
-       ASP_LOGD("%s _get_exist_session() session_id:%u, session_mac[0]:%x", ROLE,
-                session_id, session_mac[0]);
-
-       asp_session_t *session = NULL;
+       asp_session_s *session = NULL;
 
-       session = (asp_session_t *) g_tree_lookup(sessionTree,
+       session = (asp_session_s *)g_tree_lookup(sessionTree,
                        _get_session_key(session_id, session_mac));
 
        return session;
 }
 
-asp_session_key_t *_get_session_key(guint32 session_id,
+asp_session_key_s *_get_session_key(guint32 session_id,
                                    const guint8 *session_mac)
 {
-       INFO_MSG;
-
-       asp_session_key_t *key = (asp_session_key_t *) g_malloc(sizeof(
-                                        asp_session_key_t));
+       asp_session_key_s *key = (asp_session_key_s *)g_malloc(sizeof(
+                                        asp_session_key_s));
        key->session_id = session_id;
        memcpy(key->session_mac, session_mac, MAC_ADDRESS_LEN); /* 6 bytes */
 
        return key;
 }
 
-void _insert_session(asp_session_t *session)
+void _insert_session(asp_session_s *session)
 {
-       INFO_MSG;
-
-       /* add a new session to hash table ( key - session_id, value - asp_session_t*) */
+       /* add a new session to hash table ( key - session_id, value - asp_session_s*) */
        g_tree_insert(sessionTree, _get_session_key(session->session_id,
                        session->session_mac), session);
 }
 
 void _get_ip_from_socketaddress(GSocketAddress *sock_addr, gchar *peer_ip)
 {
-       INFO_MSG;
-
        GInetSocketAddress *inetaddr;
        GInetAddress *hostaddr;
 
@@ -1507,245 +1519,249 @@ void _asp_session_fsm_init()
 {
        INFO_MSG;
 
-       gfsm_init_fsm(&session_fsm, SESSION_STATE_MAX, SESSION_EVENT_MAX,
-                     SESSION_STATE_NONE);
+       session_fsm = gfsm_create_fsm(SESSION_STATE_MAX, SESSION_EVENT_MAX,
+                                     SESSION_STATE_NONE);
 
-       gfsm_init_state(&session_state_none, SESSION_STATE_NONE, &session_fsm,
-                       _state_none_entry_action, _state_none_exit_action);
-       gfsm_add_reaction(&session_state_none, SESSION_EVENT_CONNECT_SESSION_CALLED,
+       session_state_none = gfsm_create_state(SESSION_STATE_NONE, session_fsm,
+                                              _state_none_entry_action, _state_none_exit_action);
+       gfsm_add_reaction(session_state_none, SESSION_EVENT_CONNECT_SESSION_CALLED,
                          _state_none_reaction_connect_session_called);
-       gfsm_add_reaction(&session_state_none, SESSION_EVENT_REQUEST_SESSION_RECEIVED,
+       gfsm_add_reaction(session_state_none, SESSION_EVENT_REQUEST_SESSION_RECEIVED,
                          _state_none_reaction_request_session_received);
-       gfsm_add_reaction(&session_state_none, SESSION_EVENT_SESSION_REQUEST_CALLED,
+       gfsm_add_reaction(session_state_none, SESSION_EVENT_SESSION_REQUEST_CALLED,
                          _state_none_reaction_session_request_received);
 
-       gfsm_init_state(&session_state_closed, SESSION_STATE_CLOSED, &session_fsm,
-                       _state_closed_entry_action, _state_closed_exit_action);
+       session_state_closed = gfsm_create_state(SESSION_STATE_CLOSED, session_fsm,
+                              _state_closed_entry_action, _state_closed_exit_action);
+       gfsm_add_reaction(session_state_closed, SESSION_EVENT_DELETE_SESSION,
+                         _state_closed_reaction_delete_session);
        /*gfsm_add_reaction(&session_state_closed, SESSION_EVENT_CONNECT_SESSION_CALLED, _state_closed_reaction_connect_session_called); */
        /*gfsm_add_reaction(&session_state_closed, SESSION_EVENT_REQUEST_SESSION_RECEIVED, _state_closed_reaction_request_session_received); */
        /*gfsm_add_reaction(&session_state_closed, SESSION_EVENT_SESSION_REQUEST_CALLED, _state_closed_reaction_session_request_received);  // ???? */
 
-       gfsm_init_state(&session_state_running, SESSION_STATE_RUNNING, &session_fsm,
-                       _state_running_entry_action, _state_running_exit_action);
+       session_state_running = gfsm_create_state(SESSION_STATE_RUNNING, session_fsm,
+                               _state_running_entry_action, _state_running_exit_action);
 
-       gfsm_init_state(&session_state_l2connecting, SESSION_STATE_L2CONNECTING,
-                       &session_fsm, _state_l2connecting_entry_action,
-                       _state_l2connecting_exit_action);
-       gfsm_set_parent_state(&session_state_l2connecting, &session_state_running);
-       gfsm_add_reaction(&session_state_l2connecting,
+       session_state_l2connecting = gfsm_create_state(SESSION_STATE_L2CONNECTING,
+                                    session_fsm, _state_l2connecting_entry_action, _state_l2connecting_exit_action);
+       gfsm_set_parent_state(session_state_l2connecting, session_state_running);
+       gfsm_add_reaction(session_state_l2connecting,
                          SESSION_EVENT_CLOSE_SESSION_CALLED,
                          _state_l2connecting_reaction_close_session_called);
-       gfsm_add_reaction(&session_state_l2connecting, SESSION_EVENT_TIMEOUT,
+       gfsm_add_reaction(session_state_l2connecting, SESSION_EVENT_TIMEOUT,
                          _state_l2connecting_reaction_timeout);
 
-       gfsm_init_state(&session_state_session_request_sent,
-                       SESSION_STATE_SESSION_REQUEST_SENT, &session_fsm,
+       session_state_session_request_sent = gfsm_create_state(
+                       SESSION_STATE_SESSION_REQUEST_SENT, session_fsm,
                        _state_session_request_sent_entry_action,
                        _state_session_request_sent_exit_action);
-       gfsm_set_parent_state(&session_state_session_request_sent,
-                             &session_state_l2connecting);
-       gfsm_add_reaction(&session_state_session_request_sent,
+       gfsm_set_parent_state(session_state_session_request_sent,
+                             session_state_l2connecting);
+       gfsm_add_reaction(session_state_session_request_sent,
                          SESSION_EVENT_CONNECT_STATUS_CALLED,
                          _state_session_request_sent_reaction_connect_status_called);
-       gfsm_add_reaction(&session_state_session_request_sent,
+       gfsm_add_reaction(session_state_session_request_sent,
                          SESSION_EVENT_SESSION_CONFIG_REQUEST_CALLED,
                          _state_session_request_sent_reaction_session_config_request_called);
 
-       gfsm_init_state(&session_state_session_request_defered,
-                       SESSION_STATE_SESSION_REQUEST_DEFERED, &session_fsm,
+       session_state_session_request_defered = gfsm_create_state(
+                       SESSION_STATE_SESSION_REQUEST_DEFERED, session_fsm,
                        _state_session_request_defered_entry_action,
                        _state_session_request_defered_exit_action);
-       gfsm_set_parent_state(&session_state_session_request_defered,
-                             &session_state_l2connecting);
-       gfsm_add_reaction(&session_state_session_request_defered,
+       gfsm_set_parent_state(session_state_session_request_defered,
+                             session_state_l2connecting);
+       gfsm_add_reaction(session_state_session_request_defered,
                          SESSION_EVENT_CONNECT_STATUS_CALLED,
                          _state_session_request_defered_reaction_connect_status_called);
-       gfsm_add_reaction(&session_state_session_request_defered,
+       gfsm_add_reaction(session_state_session_request_defered,
                          SESSION_EVENT_SESSION_CONFIG_REQUEST_CALLED,
                          _state_session_request_defered_reaction_session_config_request_called);
 
-       gfsm_init_state(&session_state_session_request_received,
-                       SESSION_STATE_SESSION_REQUEST_RECEIVED, &session_fsm,
-                       _state_session_request_received_entry_action,
-                       _state_session_request_received_exit_action);
-       gfsm_set_parent_state(&session_state_session_request_received,
-                             &session_state_l2connecting);
-       gfsm_add_reaction(&session_state_session_request_received,
+       session_state_session_request_received = gfsm_create_state(
+                               SESSION_STATE_SESSION_REQUEST_RECEIVED, session_fsm,
+                               _state_session_request_received_entry_action,
+                               _state_session_request_received_exit_action);
+       gfsm_set_parent_state(session_state_session_request_received,
+                             session_state_l2connecting);
+       gfsm_add_reaction(session_state_session_request_received,
                          SESSION_EVENT_CONFIRM_SESSION_CALLED,
                          _state_session_request_received_reaction_confirm_session_called);
 
-       gfsm_init_state(&session_state_session_request_accepted,
-                       SESSION_STATE_SESSION_REQUEST_ACCEPTED, &session_fsm,
-                       _state_session_request_accepted_entry_action,
-                       _state_session_request_accepted_exit_action);
-       gfsm_set_parent_state(&session_state_session_request_accepted,
-                             &session_state_l2connecting);
-       gfsm_add_reaction(&session_state_session_request_accepted,
+       session_state_session_request_accepted = gfsm_create_state(
+                               SESSION_STATE_SESSION_REQUEST_ACCEPTED, session_fsm,
+                               _state_session_request_accepted_entry_action,
+                               _state_session_request_accepted_exit_action);
+       gfsm_set_parent_state(session_state_session_request_accepted,
+                             session_state_l2connecting);
+       gfsm_add_reaction(session_state_session_request_accepted,
                          SESSION_EVENT_CONNECT_STATUS_CALLED,
                          _state_session_request_accepted_reaction_connect_status_received);
-       gfsm_add_reaction(&session_state_session_request_accepted,
+       gfsm_add_reaction(session_state_session_request_accepted,
                          SESSION_EVENT_SESSION_CONFIG_REQUEST_CALLED,
                          _state_session_request_accepted_reaction_session_config_request_called);
+       gfsm_add_reaction(session_state_session_request_accepted,
+                         SESSION_EVENT_SET_SESSION_READY_CALLED,
+                         _state_session_request_accepted_reaction_set_session_ready_called);
 
-       gfsm_init_state(&session_state_entering_pin, SESSION_STATE_ENTERING_PIN,
-                       &session_fsm, _state_entering_pin_entry_action,
-                       _state_entering_pin_exit_action);
-       gfsm_set_parent_state(&session_state_entering_pin, &session_state_l2connecting);
-       gfsm_add_reaction(&session_state_entering_pin,
+       session_state_entering_pin = gfsm_create_state(SESSION_STATE_ENTERING_PIN,
+                                    session_fsm, _state_entering_pin_entry_action, _state_entering_pin_exit_action);
+       gfsm_set_parent_state(session_state_entering_pin, session_state_l2connecting);
+       gfsm_add_reaction(session_state_entering_pin,
                          SESSION_EVENT_CONFIRM_SESSION_CALLED,
                          _state_entering_pin_reaction_confirm_session_called);
 
-       gfsm_init_state(&session_state_group_formation_completed,
-                       SESSION_STATE_GROUP_FORMATION_COMPLETED, &session_fsm,
-                       _state_group_formation_completed_entry_action,
-                       _state_group_formation_completed_exit_action);
-       gfsm_set_parent_state(&session_state_group_formation_completed,
-                             &session_state_l2connecting);
-       gfsm_add_reaction(&session_state_group_formation_completed,
+       session_state_group_formation_completed = gfsm_create_state(
+                               SESSION_STATE_GROUP_FORMATION_COMPLETED, session_fsm,
+                               _state_group_formation_completed_entry_action,
+                               _state_group_formation_completed_exit_action);
+       gfsm_set_parent_state(session_state_group_formation_completed,
+                             session_state_l2connecting);
+       gfsm_add_reaction(session_state_group_formation_completed,
                          SESSION_EVENT_IP_ASSIGNED,
                          _state_group_formation_completed_reaction_ip_assigned);
-       gfsm_add_reaction(&session_state_group_formation_completed,
+       gfsm_add_reaction(session_state_group_formation_completed,
                          SESSION_EVENT_REQUEST_SESSION_RECEIVED,
                          _state_group_formation_completed_reaction_request_session_received);
+       gfsm_add_reaction(session_state_group_formation_completed,
+                         SESSION_EVENT_SET_SESSION_READY_CALLED,
+                         _state_group_formation_completed_reaction_set_session_ready_called);
 
-       gfsm_init_state(&session_state_l2connected, SESSION_STATE_L2CONNECTED,
-                       &session_fsm, _state_l2connected_entry_action, _state_l2connected_exit_action);
-       gfsm_set_parent_state(&session_state_l2connected, &session_state_running);
-       gfsm_add_reaction(&session_state_l2connected,
-                         SESSION_EVENT_CLOSE_SESSION_CALLED,
+       session_state_l2connected = gfsm_create_state(SESSION_STATE_L2CONNECTED,
+                                   session_fsm, _state_l2connected_entry_action, _state_l2connected_exit_action);
+       gfsm_set_parent_state(session_state_l2connected, session_state_running);
+       gfsm_add_reaction(session_state_l2connected, SESSION_EVENT_CLOSE_SESSION_CALLED,
                          _state_l2connected_reaction_close_session_called);
-       gfsm_add_reaction(&session_state_l2connected,
+       gfsm_add_reaction(session_state_l2connected,
                          SESSION_EVENT_REMOVE_SESSION_RECEIVED,
                          _state_l2connected_reaction_remove_session_received);
-       gfsm_add_reaction(&session_state_l2connected, SESSION_EVENT_PEER_DESTROYED,
+       gfsm_add_reaction(session_state_l2connected, SESSION_EVENT_PEER_DESTROYED,
                          _state_l2connected_reaction_peer_destroyed);
 
-       gfsm_init_state(&session_state_request_session_sent,
-                       SESSION_STATE_REQUEST_SESSION_SENT, &session_fsm,
+       session_state_request_session_sent = gfsm_create_state(
+                       SESSION_STATE_REQUEST_SESSION_SENT, session_fsm,
                        _state_request_session_sent_entry_action,
                        _state_request_session_sent_exit_action);
-       gfsm_set_parent_state(&session_state_request_session_sent,
-                             &session_state_l2connected);
-       gfsm_add_reaction(&session_state_request_session_sent,
+       gfsm_set_parent_state(session_state_request_session_sent,
+                             session_state_l2connected);
+       gfsm_add_reaction(session_state_request_session_sent,
                          SESSION_EVENT_ADDED_SESSION_RECEIVED,
                          _state_request_session_sent_reaction_added_session_received);
-       gfsm_add_reaction(&session_state_request_session_sent,
+       gfsm_add_reaction(session_state_request_session_sent,
                          SESSION_EVENT_DEFERRED_SESSION_RECEIVED,
                          _state_request_session_sent_reaction_deferred_session_received);
-       gfsm_add_reaction(&session_state_request_session_sent,
+       gfsm_add_reaction(session_state_request_session_sent,
                          SESSION_EVENT_REJECTED_SESSION_RECEIVED,
                          _state_request_session_sent_reaction_rejected_session_received);
-       gfsm_add_reaction(&session_state_request_session_sent, SESSION_EVENT_TIMEOUT,
+       gfsm_add_reaction(session_state_request_session_sent, SESSION_EVENT_TIMEOUT,
                          _state_request_session_sent_reaction_timeout);
 
-       gfsm_init_state(&session_state_request_session_received,
-                       SESSION_STATE_REQUEST_SESSION_RECEIVED, &session_fsm,
-                       _state_request_session_received_entry_action,
-                       _state_request_session_received_exit_action);
-       gfsm_set_parent_state(&session_state_request_session_received,
-                             &session_state_l2connected);
-       gfsm_add_reaction(&session_state_request_session_received,
+       session_state_request_session_received = gfsm_create_state(
+                               SESSION_STATE_REQUEST_SESSION_RECEIVED, session_fsm,
+                               _state_request_session_received_entry_action,
+                               _state_request_session_received_exit_action);
+       gfsm_set_parent_state(session_state_request_session_received,
+                             session_state_l2connected);
+       gfsm_add_reaction(session_state_request_session_received,
                          SESSION_EVENT_SET_SESSION_READY_CALLED,
                          _state_request_session_received_reaction_set_session_ready_called);
-       gfsm_add_reaction(&session_state_request_session_received,
+       gfsm_add_reaction(session_state_request_session_received,
                          SESSION_EVENT_DEFER_SESSION_CALLED,
                          _state_request_session_received_reaction_defer_session_called);
-       gfsm_add_reaction(&session_state_request_session_received,
+       gfsm_add_reaction(session_state_request_session_received,
                          SESSION_EVENT_CONFIRM_SESSION_CALLED,
                          _state_request_session_received_reaction_confirm_session_called);
 
-       gfsm_init_state(&session_state_open, SESSION_STATE_OPEN, &session_fsm,
-                       _state_open_entry_action, _state_open_exit_action);
-       gfsm_set_parent_state(&session_state_open, &session_state_l2connected);
-       gfsm_add_reaction(&session_state_open, SESSION_EVENT_BOUND_PORT_CALLED,
+       session_state_open = gfsm_create_state(SESSION_STATE_OPEN, session_fsm,
+                                              _state_open_entry_action, _state_open_exit_action);
+       gfsm_set_parent_state(session_state_open, session_state_l2connected);
+       gfsm_add_reaction(session_state_open, SESSION_EVENT_BOUND_PORT_CALLED,
                          _state_open_reaction_bound_port_called);
-       gfsm_add_reaction(&session_state_open, SESSION_EVENT_ALLOWED_PORT_RECEIVED,
+       gfsm_add_reaction(session_state_open, SESSION_EVENT_ALLOWED_PORT_RECEIVED,
                          _state_open_reaction_allowed_port_received);
 
-       gfsm_init_state(&session_state_reject_session_sent,
-                       SESSION_STATE_REJECT_SESSION_SENT, &session_fsm,
+       session_state_reject_session_sent = gfsm_create_state(
+                       SESSION_STATE_REJECT_SESSION_SENT, session_fsm,
                        _state_reject_session_sent_entry_action,
                        _state_reject_session_sent_exit_action);
-       gfsm_add_reaction(&session_state_reject_session_sent,
-                         SESSION_EVENT_ACK_RECEIVED, _state_reject_session_sent_reaction_ack_received);
-       gfsm_add_reaction(&session_state_reject_session_sent,
+       gfsm_add_reaction(session_state_reject_session_sent, SESSION_EVENT_ACK_RECEIVED,
+                         _state_reject_session_sent_reaction_ack_received);
+       gfsm_add_reaction(session_state_reject_session_sent,
                          SESSION_EVENT_NACK_RECEIVED, _state_reject_session_sent_reaction_nack_received);
 
-       gfsm_init_state(&session_state_remove_session_sent,
-                       SESSION_STATE_REMOVE_SESSION_SENT, &session_fsm,
+       session_state_remove_session_sent = gfsm_create_state(
+                       SESSION_STATE_REMOVE_SESSION_SENT, session_fsm,
                        _state_remove_session_sent_entry_action,
                        _state_remove_session_sent_exit_action);
-       gfsm_add_reaction(&session_state_remove_session_sent,
-                         SESSION_EVENT_ACK_RECEIVED, _state_remove_session_sent_reaction_ack_received);
-       gfsm_add_reaction(&session_state_remove_session_sent,
+       gfsm_add_reaction(session_state_remove_session_sent, SESSION_EVENT_ACK_RECEIVED,
+                         _state_remove_session_sent_reaction_ack_received);
+       gfsm_add_reaction(session_state_remove_session_sent,
                          SESSION_EVENT_NACK_RECEIVED, _state_remove_session_sent_reaction_nack_received);
 
-       gfsm_add_state(&session_fsm, &session_state_none);
-       gfsm_add_state(&session_fsm, &session_state_closed);
-       gfsm_add_state(&session_fsm, &session_state_running);
+       gfsm_add_state(session_fsm, session_state_none);
+       gfsm_add_state(session_fsm, session_state_closed);
+       gfsm_add_state(session_fsm, session_state_running);
 
-       gfsm_add_state(&session_fsm, &session_state_l2connecting);
-       gfsm_add_state(&session_fsm, &session_state_session_request_sent);
-       gfsm_add_state(&session_fsm, &session_state_session_request_defered);
-       gfsm_add_state(&session_fsm, &session_state_session_request_received);
-       gfsm_add_state(&session_fsm, &session_state_session_request_accepted);
-       gfsm_add_state(&session_fsm, &session_state_group_formation_completed);
+       gfsm_add_state(session_fsm, session_state_l2connecting);
+       gfsm_add_state(session_fsm, session_state_session_request_sent);
+       gfsm_add_state(session_fsm, session_state_session_request_defered);
+       gfsm_add_state(session_fsm, session_state_session_request_received);
+       gfsm_add_state(session_fsm, session_state_session_request_accepted);
+       gfsm_add_state(session_fsm, session_state_group_formation_completed);
 
-       gfsm_add_state(&session_fsm, &session_state_l2connected);
-       gfsm_add_state(&session_fsm, &session_state_request_session_sent);
-       gfsm_add_state(&session_fsm, &session_state_request_session_received);
-       gfsm_add_state(&session_fsm, &session_state_open);
+       gfsm_add_state(session_fsm, session_state_l2connected);
+       gfsm_add_state(session_fsm, session_state_request_session_sent);
+       gfsm_add_state(session_fsm, session_state_request_session_received);
+       gfsm_add_state(session_fsm, session_state_open);
 
-       gfsm_add_state(&session_fsm, &session_state_reject_session_sent);
-       gfsm_add_state(&session_fsm, &session_state_remove_session_sent);
+       gfsm_add_state(session_fsm, session_state_reject_session_sent);
+       gfsm_add_state(session_fsm, session_state_remove_session_sent);
 }
 
 void _asp_session_fsm_terminate()
 {
-       INFO_MSG;
-       gfsm_terminate_state(&session_state_none);
-       gfsm_terminate_state(&session_state_closed);
-       gfsm_terminate_state(&session_state_running);
-       gfsm_terminate_state(&session_state_request_session_sent);
-       gfsm_terminate_state(&session_state_request_session_received);
-       gfsm_terminate_state(&session_state_open);
-       gfsm_terminate_state(&session_state_reject_session_sent);
-       gfsm_terminate_state(&session_state_remove_session_sent);
+       gfsm_destroy_state(session_state_none);
+       gfsm_destroy_state(session_state_closed);
+       gfsm_destroy_state(session_state_running);
+       gfsm_destroy_state(session_state_request_session_sent);
+       gfsm_destroy_state(session_state_request_session_received);
+       gfsm_destroy_state(session_state_open);
+       gfsm_destroy_state(session_state_reject_session_sent);
+       gfsm_destroy_state(session_state_remove_session_sent);
 
-       gfsm_terminate_fsm(&session_fsm);
+       gfsm_destroy_fsm(session_fsm);
 }
 
-void _state_none_entry_action(gpointer p_context_data)
+void _state_none_entry_action(void *p_context_data)
 {
        INFO_MSG;
 }
 
-void _state_none_exit_action(gpointer p_context_data)
+void _state_none_exit_action(void *p_context_data)
 {
-       INFO_MSG;
 }
 
 gfsm_state_id_t _state_none_reaction_request_session_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       asp_request_session_t *p_msg = (asp_request_session_t *) p_event_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       asp_request_session_s *p_msg = (asp_request_session_s *)p_event_data;
 
-       _call_session_request_cb(0, session->session_mac, session->session_id,
-                                session->advertisement_id, NULL, 0, p_msg->session_information,
-                                p_msg->session_information_length, 0, 0);
+       if (!session->over_p2p)
+               _call_session_request_cb(0, session->session_mac, session->session_id,
+                                        session->advertisement_id, NULL, 0, p_msg->session_information,
+                                        p_msg->session_information_length, 0, 0);
 
        return SESSION_STATE_REQUEST_SESSION_RECEIVED;
 }
 
 gfsm_state_id_t _state_none_reaction_connect_session_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       connect_session_param_t *p_connect_session = (connect_session_param_t *)
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       connect_session_param_s *p_connect_session = (connect_session_param_s *)
                        p_event_data;
 
        g_assert(session);
@@ -1770,12 +1786,12 @@ gfsm_state_id_t _state_none_reaction_connect_session_called(
 }
 
 gfsm_state_id_t _state_none_reaction_session_request_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       session_request_param_t *p_session_request = (session_request_param_t *)
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       session_request_param_s *p_session_request = (session_request_param_s *)
                        p_event_data;
 
        _call_session_request_cb(0, session->session_mac, session->session_id,
@@ -1787,33 +1803,49 @@ gfsm_state_id_t _state_none_reaction_session_request_received(
        return SESSION_STATE_SESSION_REQUEST_RECEIVED;
 }
 
-void _state_closed_entry_action(gpointer p_context_data)
+void _state_closed_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        g_assert(session);
 
+       _call_session_status_cb(0, session->session_mac, session->session_id,
+                               session->closed_state);
+
        asp_sess_peer_del_session(session->sock_addr, session->session_mac,
                                  session->session_id);
 
-       gfsm_terminate_context(&session->context);
+       gfsm_process_event(session->context,
+                          gfsm_create_event(SESSION_EVENT_DELETE_SESSION, NULL, NULL));
+}
+
+void _state_closed_exit_action(void *p_context_data)
+{
 }
 
-void _state_closed_exit_action(gpointer p_context_data)
+gfsm_state_id_t _state_closed_reaction_delete_session(void *p_context_data,
+               void *p_event_data)
 {
        INFO_MSG;
 
+       asp_session_s *session = (asp_session_s *)p_context_data;
+
+       g_assert(session);
+
+       gfsm_destroy_context(session->context);
+
+       return GFSM_DISCARD_EVENT;
 }
 
 #if 0
 gfsm_state_id_t _state_closed_reaction_connect_session_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       /*asp_session_t* session = (asp_session_t*)p_context_data; */
+       /*asp_session_s* session = (asp_session_s*)p_context_data; */
 
        /*ASP_LOGD("_state_closed_reaction_connect_session_called - session_id : %d, peer_ip:%s, peer_port:%d", session->session_id, session->peer_ip, session->peer_port); */
 
@@ -1823,7 +1855,7 @@ gfsm_state_id_t _state_closed_reaction_connect_session_called(
 }
 
 gfsm_state_id_t _state_closed_reaction_request_session_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -1831,79 +1863,89 @@ gfsm_state_id_t _state_closed_reaction_request_session_received(
 }
 #endif
 
-void _state_running_entry_action(gpointer p_context_data)
+void _state_running_entry_action(void *p_context_data)
 {
        INFO_MSG;
 }
 
-void _state_running_exit_action(gpointer p_context_data)
+void _state_running_exit_action(void *p_context_data)
 {
-       INFO_MSG;
 }
 
-void _state_l2connecting_entry_action(gpointer p_context_data)
+void _state_l2connecting_entry_action(void *p_context_data)
 {
        INFO_MSG;
 }
 
-void _state_l2connecting_exit_action(gpointer p_context_data)
+void _state_l2connecting_exit_action(void *p_context_data)
 {
-       INFO_MSG;
 }
 
 gfsm_state_id_t _state_l2connecting_reaction_close_session_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
+
+       asp_session_s *session = (asp_session_s *)p_context_data;
+
 #ifdef HAVE_ASP_P2P_CONN
-       asp_session_t *session = (asp_session_t *) p_context_data;
        asp_p2p_conn_disconnect_p2p(_get_peer_mac(session));
 #endif
+
+       session->closed_state =
+               ASP_SESSION_CLOSED_STATE_LOCAL_CLOSE;   /* temporary value. shall be changed */
+
        return SESSION_STATE_CLOSED;
 }
 
-gfsm_state_id_t _state_l2connecting_reaction_timeout(gpointer p_context_data,
-               gpointer p_event_data)
+gfsm_state_id_t _state_l2connecting_reaction_timeout(void *p_context_data,
+               void *p_event_data)
 {
        INFO_MSG;
+
+       asp_session_s *session = (asp_session_s *)p_context_data;
 #ifdef HAVE_ASP_P2P_CONN
-       asp_session_t *session = (asp_session_t *) p_context_data;
+
        asp_p2p_conn_disconnect_p2p(_get_peer_mac(session));
 #endif
+
+       session->closed_state = ASP_SESSION_CLOSED_STATE_DISASSOCIATED;
+
        return SESSION_STATE_CLOSED;
 }
 
-void _state_session_request_sent_entry_action(gpointer p_context_data)
+void _state_session_request_sent_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
-       /*asp_session_t* session = (asp_session_t*)p_context_data; */
+       /*asp_session_s* session = (asp_session_s*)p_context_data; */
        /*_start_timer(...); */
 }
 
-void _state_session_request_sent_exit_action(gpointer p_context_data)
+void _state_session_request_sent_exit_action(void *p_context_data)
 {
-       INFO_MSG;
        /*_stop_timer(...); */
 }
 
 gfsm_state_id_t _state_session_request_sent_reaction_connect_status_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       connect_status_param_t *p_connect_status = (connect_status_param_t *)
+       connect_status_param_s *p_connect_status = (connect_status_param_s *)
                        p_event_data;
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        _call_connect_status_cb(0 /*?? */ , session->session_mac, session->session_id,
                                p_connect_status->status);
 
        switch (p_connect_status->status) {
        case ASP_SESSION_CONNECT_STATUS_NETWORK_ROLE_REJECTED:
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
                break;
        case ASP_SESSION_CONNECT_STATUS_NO_MORE_CONNECTION:
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
                break;
        case ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_ACCEPTED:
@@ -1913,6 +1955,7 @@ gfsm_state_id_t _state_session_request_sent_reaction_connect_status_called(
                return SESSION_STATE_SESSION_REQUEST_DEFERED;
                break;
        case ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_FAILED:
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
                break;
        case ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_SENT:   /*Fall through */
@@ -1928,11 +1971,11 @@ gfsm_state_id_t _state_session_request_sent_reaction_connect_status_called(
 
 gfsm_state_id_t
 _state_session_request_sent_reaction_session_config_request_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       session_config_request_param_t *p_config_request_param =
-               (session_config_request_param_t *) p_event_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       session_config_request_param_s *p_config_request_param =
+               (session_config_request_param_s *)p_event_data;
        g_assert(p_config_request_param);
 
        _call_session_config_request_cb(0, session->session_mac, session->session_id,
@@ -1945,41 +1988,43 @@ _state_session_request_sent_reaction_session_config_request_called(
        return GFSM_DISCARD_EVENT;
 }
 
-void _state_session_request_defered_entry_action(gpointer p_context_data)
+void _state_session_request_defered_entry_action(void *p_context_data)
 {
        INFO_MSG;
        /*_start_timer(...); */
 }
 
-void _state_session_request_defered_exit_action(gpointer p_context_data)
+void _state_session_request_defered_exit_action(void *p_context_data)
 {
-       INFO_MSG;
        /*_stop_timer(...); */
 }
 
 gfsm_state_id_t _state_session_request_defered_reaction_connect_status_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       connect_status_param_t *p_connect_status = (connect_status_param_t *)
+       connect_status_param_s *p_connect_status = (connect_status_param_s *)
                        p_event_data;
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        _call_connect_status_cb(0 /*?? */ , session->session_mac, session->session_id,
                                p_connect_status->status);
 
        switch (p_connect_status->status) {
        case ASP_SESSION_CONNECT_STATUS_NETWORK_ROLE_REJECTED:
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
                break;
        case ASP_SESSION_CONNECT_STATUS_NO_MORE_CONNECTION:
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
                break;
        case ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_ACCEPTED:
                return SESSION_STATE_SESSION_REQUEST_ACCEPTED;
                break;
        case ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_FAILED:
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
                break;
        case ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_SENT:   /*Fall through */
@@ -1996,11 +2041,11 @@ gfsm_state_id_t _state_session_request_defered_reaction_connect_status_called(
 
 gfsm_state_id_t
 _state_session_request_defered_reaction_session_config_request_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       session_config_request_param_t *p_config_request_param =
-               (session_config_request_param_t *) p_event_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       session_config_request_param_s *p_config_request_param =
+               (session_config_request_param_s *)p_event_data;
        g_assert(p_config_request_param);
 
        _call_session_config_request_cb(0, session->session_mac, session->session_id,
@@ -2013,27 +2058,26 @@ _state_session_request_defered_reaction_session_config_request_called(
        return GFSM_DISCARD_EVENT;
 }
 
-void _state_session_request_received_entry_action(gpointer p_context_data)
+void _state_session_request_received_entry_action(void *p_context_data)
 {
        INFO_MSG;
        /*_start_timer(..); */
 }
 
-void _state_session_request_received_exit_action(gpointer p_context_data)
+void _state_session_request_received_exit_action(void *p_context_data)
 {
-       INFO_MSG;
        /*_stop_timer(..); */
 }
 
 gfsm_state_id_t _state_session_request_received_reaction_confirm_session_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
 #ifdef HAVE_ASP_P2P_CONN
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 #endif
-       confirm_session_param_t *p_confirm_session = (confirm_session_param_t *)
+       confirm_session_param_s *p_confirm_session = (confirm_session_param_s *)
                        p_event_data;
        g_assert(p_confirm_session);
 
@@ -2044,49 +2088,54 @@ gfsm_state_id_t _state_session_request_received_reaction_confirm_session_called(
 
        if (p_confirm_session->confirmed)
                return SESSION_STATE_SESSION_REQUEST_ACCEPTED;
-       else
+       else {
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
+       }
 }
 
-void _state_session_request_accepted_entry_action(gpointer p_context_data)
+void _state_session_request_accepted_entry_action(void *p_context_data)
 {
        INFO_MSG;
        /*_start_timer(...) */
 }
 
-void _state_session_request_accepted_exit_action(gpointer p_context_data)
+void _state_session_request_accepted_exit_action(void *p_context_data)
 {
-       INFO_MSG;
        /*_stop_timer(...) */
 }
 
 gfsm_state_id_t
 _state_session_request_accepted_reaction_connect_status_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       connect_status_param_t *p_connect_status = (connect_status_param_t *)
+       connect_status_param_s *p_connect_status = (connect_status_param_s *)
                        p_event_data;
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        _call_connect_status_cb(0 /*?? */ , session->session_mac, session->session_id,
                                p_connect_status->status);
 
        switch (p_connect_status->status) {
        case ASP_SESSION_CONNECT_STATUS_NETWORK_ROLE_REJECTED:
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
                break;
        case ASP_SESSION_CONNECT_STATUS_NO_MORE_CONNECTION:
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
                break;
        case ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_FAILED:
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
                break;
        case ASP_SESSION_CONNECT_STATUS_GROUP_FORMATION_COMPLETED:      /* ???? */
                return SESSION_STATE_GROUP_FORMATION_COMPLETED;
                break;
        case ASP_SESSION_CONNECT_STATUS_GROUP_FORMATION_FAILED:
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
                break;
        case ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_SENT:   /*Fall through */
@@ -2102,11 +2151,11 @@ _state_session_request_accepted_reaction_connect_status_received(
 
 gfsm_state_id_t
 _state_session_request_accepted_reaction_session_config_request_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       session_config_request_param_t *p_config_request_param =
-               (session_config_request_param_t *) p_event_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       session_config_request_param_s *p_config_request_param =
+               (session_config_request_param_s *)p_event_data;
        g_assert(p_config_request_param);
 
        _call_session_config_request_cb(0, session->session_mac, session->session_id,
@@ -2119,23 +2168,30 @@ _state_session_request_accepted_reaction_session_config_request_called(
        return GFSM_DISCARD_EVENT;
 }
 
-void _state_entering_pin_entry_action(gpointer p_context_data)
+gfsm_state_id_t
+_state_session_request_accepted_reaction_set_session_ready_called(
+       void *p_context_data, void *p_event_data)
+{
+       return GFSM_DEFER_EVENT;
+}
+
+void _state_entering_pin_entry_action(void *p_context_data)
 {
        /*start_timer */
 }
 
-void _state_entering_pin_exit_action(gpointer p_context_data)
+void _state_entering_pin_exit_action(void *p_context_data)
 {
        /*stop_timer */
 }
 
 gfsm_state_id_t _state_entering_pin_reaction_confirm_session_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
 #ifdef HAVE_ASP_P2P_CONN
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 #endif
-       confirm_session_param_t *p_confirm_session = (confirm_session_param_t *)
+       confirm_session_param_s *p_confirm_session = (confirm_session_param_s *)
                        p_event_data;
        g_assert(p_confirm_session);
 
@@ -2146,34 +2202,35 @@ gfsm_state_id_t _state_entering_pin_reaction_confirm_session_called(
 
        if (p_confirm_session->confirmed)
                return SESSION_STATE_SESSION_REQUEST_ACCEPTED;
-       else
+       else {
+               /* need to assign a proper closed_state "session->closed_state = ???; */
                return SESSION_STATE_CLOSED;
+       }
 }
 
-void _state_group_formation_completed_entry_action(gpointer p_context_data)
+void _state_group_formation_completed_entry_action(void *p_context_data)
 {
        /*_start_timer(...); */
        INFO_MSG;
 }
 
-void _state_group_formation_completed_exit_action(gpointer p_context_data)
+void _state_group_formation_completed_exit_action(void *p_context_data)
 {
        /*_stop_timer(...); */
-       INFO_MSG;
 }
 
 gfsm_state_id_t _state_group_formation_completed_reaction_ip_assigned(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
        g_assert(session);
 
        if (session->asp_role == ASP_ROLE_ADVERTIZER)
                return GFSM_DISCARD_EVENT;
 
-       ip_assigned_param_t *p_ip_assigned_param = (ip_assigned_param_t *) p_event_data;
+       ip_assigned_param_s *p_ip_assigned_param = (ip_assigned_param_s *)p_event_data;
        g_assert(p_ip_assigned_param);
 
        _store_peer_ip_addr(session, p_ip_assigned_param->peer_ip_addr,
@@ -2186,7 +2243,7 @@ gfsm_state_id_t _state_group_formation_completed_reaction_ip_assigned(
 
 gfsm_state_id_t
 _state_group_formation_completed_reaction_request_session_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -2195,28 +2252,35 @@ _state_group_formation_completed_reaction_request_session_received(
        return SESSION_STATE_REQUEST_SESSION_RECEIVED;
 }
 
-void _state_l2connected_entry_action(gpointer p_context_data)
+gfsm_state_id_t
+_state_group_formation_completed_reaction_set_session_ready_called(
+       void *p_context_data, void *p_event_data)
+{
+       INFO_MSG;
+       return GFSM_DEFER_EVENT;
+}
+
+void _state_l2connected_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        asp_sess_peer_add_session(session->sock_addr, session->session_mac,
                                  session->session_id); /* into running state */
 }
 
-void _state_l2connected_exit_action(gpointer p_context_data)
+void _state_l2connected_exit_action(void *p_context_data)
 {
-       INFO_MSG;
 }
 
 gfsm_state_id_t _state_l2connected_reaction_close_session_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
        guint8 *close_reason = (guint8 *) p_event_data;
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        _send_remove_session(session, *close_reason);
 
@@ -2224,45 +2288,41 @@ gfsm_state_id_t _state_l2connected_reaction_close_session_called(
 }
 
 gfsm_state_id_t _state_l2connected_reaction_remove_session_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
        /*guint8 remove_reason = *((guint8*)p_event_data); */
-       asp_session_t *session = (asp_session_t *) p_context_data;
-
-       /* temporary error_code as 0 */
-       _call_session_status_cb(0, session->session_mac, session->session_id,
-                               ASP_SESSION_CLOSED_STATE_REMOTE_CLOSE);
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       session->closed_state = ASP_SESSION_CLOSED_STATE_REMOTE_CLOSE;
 
        return SESSION_STATE_CLOSED;
 }
 
-gfsm_state_id_t _state_l2connected_reaction_peer_destroyed(
-       gpointer p_context_data, gpointer p_event_data)
+gfsm_state_id_t _state_l2connected_reaction_peer_destroyed(void *p_context_data,
+               void *p_event_data)
 {
        INFO_MSG;
 
        return SESSION_STATE_CLOSED;
 }
 
-void _state_request_session_sent_entry_action(gpointer p_context_data)
+void _state_request_session_sent_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        _call_connect_status_cb(0, session->session_mac, session->session_id,
                                ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_SENT);
 }
 
-void _state_request_session_sent_exit_action(gpointer p_context_data)
+void _state_request_session_sent_exit_action(void *p_context_data)
 {
-       INFO_MSG;
 }
 
 gfsm_state_id_t _state_request_session_sent_reaction_added_session_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
@@ -2270,12 +2330,12 @@ gfsm_state_id_t _state_request_session_sent_reaction_added_session_received(
 }
 
 gfsm_state_id_t _state_request_session_sent_reaction_deferred_session_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
 
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        _call_connect_status_cb(0, session->session_mac, session->session_id,
                                ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_DEFFERED);
@@ -2284,34 +2344,34 @@ gfsm_state_id_t _state_request_session_sent_reaction_deferred_session_received(
 }
 
 gfsm_state_id_t _state_request_session_sent_reaction_rejected_session_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       _call_session_status_cb(0, session->session_mac, session->session_id,
-                               ASP_SESSION_CLOSED_STATE_REMOTE_CLOSE);
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       session->closed_state = ASP_SESSION_CLOSED_STATE_REMOTE_CLOSE;
+
        return SESSION_STATE_CLOSED;
 }
 
 gfsm_state_id_t _state_request_session_sent_reaction_timeout(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
        guint8 *remove_reason = (guint8 *) p_event_data;
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        _send_remove_session(session, *remove_reason);
 
        return SESSION_STATE_REMOVE_SESSION_SENT;
 }
 
-void _state_request_session_received_entry_action(gpointer p_context_data)
+void _state_request_session_received_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        /* session_request_cb */
        /* what is user data ? */
@@ -2321,18 +2381,17 @@ void _state_request_session_received_entry_action(gpointer p_context_data)
                                ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_RECEIVED);
 }
 
-void _state_request_session_received_exit_action(gpointer p_context_data)
+void _state_request_session_received_exit_action(void *p_context_data)
 {
-       INFO_MSG;
 }
 
 gfsm_state_id_t
 _state_request_session_received_reaction_set_session_ready_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        _send_added_session(session);
 
@@ -2340,13 +2399,13 @@ _state_request_session_received_reaction_set_session_ready_called(
 }
 
 gfsm_state_id_t _state_request_session_received_reaction_defer_session_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       defer_session_param_t *defer_session_param = (defer_session_param_t *)
+       defer_session_param_s *defer_session_param = (defer_session_param_s *)
                        p_event_data;
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        _send_deferred_session(session, defer_session_param->deferred_response,
                               defer_session_param->length);
@@ -2358,12 +2417,12 @@ gfsm_state_id_t _state_request_session_received_reaction_defer_session_called(
 }
 
 gfsm_state_id_t _state_request_session_received_reaction_confirm_session_called(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       confirm_session_param_t *p_confirmed_param = (confirm_session_param_t *)
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       confirm_session_param_s *p_confirmed_param = (confirm_session_param_s *)
                        p_event_data;
 
        if (FALSE == p_confirmed_param->confirmed) {
@@ -2379,27 +2438,26 @@ gfsm_state_id_t _state_request_session_received_reaction_confirm_session_called(
        return GFSM_DISCARD_EVENT;
 }
 
-void _state_open_entry_action(gpointer p_context_data)
+void _state_open_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
        _call_session_status_cb(0, session->session_mac, session->session_id,
                                ASP_SESSION_CLOSED_STATE_NONE);
 }
 
-void _state_open_exit_action(gpointer p_context_data)
+void _state_open_exit_action(void *p_context_data)
 {
-       INFO_MSG;
 }
 
-gfsm_state_id_t _state_open_reaction_bound_port_called(gpointer p_context_data,
-               gpointer p_event_data)
+gfsm_state_id_t _state_open_reaction_bound_port_called(void *p_context_data,
+               void *p_event_data)
 {
        INFO_MSG;
 
-       bound_port_param_t *bound_port_param = (bound_port_param_t *) p_event_data;
-       asp_session_t *session = (asp_session_t *) p_context_data;
+       bound_port_param_s *bound_port_param = (bound_port_param_s *)p_event_data;
+       asp_session_s *session = (asp_session_s *)p_context_data;
 
        if (_send_allowed_port(session, bound_port_param->local_port,
                               bound_port_param->proto)) {
@@ -2421,14 +2479,14 @@ gfsm_state_id_t _state_open_reaction_bound_port_called(gpointer p_context_data,
        return GFSM_DISCARD_EVENT;
 }
 
-gfsm_state_id_t _state_open_reaction_allowed_port_received(
-       gpointer p_context_data, gpointer p_event_data)
+gfsm_state_id_t _state_open_reaction_allowed_port_received(void *p_context_data,
+               void *p_event_data)
 {
        INFO_MSG;
 
-       asp_allowed_port_t *p_allowed_port = (asp_allowed_port_t *) p_event_data;
+       asp_allowed_port_s *p_allowed_port = (asp_allowed_port_s *)p_event_data;
 
-       asp_session_t *session = _get_exist_session(p_allowed_port->session_id,
+       asp_session_s *session = _get_exist_session(p_allowed_port->session_id,
                                 p_allowed_port->session_mac);
        g_assert(session);
 
@@ -2441,70 +2499,68 @@ gfsm_state_id_t _state_open_reaction_allowed_port_received(
        return GFSM_DISCARD_EVENT;
 }
 
-void _state_reject_session_sent_entry_action(gpointer p_context_data)
+void _state_reject_session_sent_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
-       /*    asp_session_t* session = (asp_session_t*)p_context_data; */
+       /*    asp_session_s* session = (asp_session_s*)p_context_data; */
 }
 
-void _state_reject_session_sent_exit_action(gpointer p_context_data)
+void _state_reject_session_sent_exit_action(void *p_context_data)
 {
-       INFO_MSG;
 }
 
 gfsm_state_id_t _state_reject_session_sent_reaction_ack_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       _call_session_status_cb(0, session->session_mac, session->session_id,
-                               ASP_SESSION_CLOSED_STATE_LOCAL_CLOSE);
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       session->closed_state = ASP_SESSION_CLOSED_STATE_LOCAL_CLOSE;
+
        return SESSION_STATE_CLOSED;
 }
 
 gfsm_state_id_t _state_reject_session_sent_reaction_nack_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       _call_session_status_cb(0, session->session_mac, session->session_id,
-                               ASP_SESSION_CLOSED_STATE_LOCAL_CLOSE);
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       session->closed_state = ASP_SESSION_CLOSED_STATE_LOCAL_CLOSE;
+
        return SESSION_STATE_CLOSED;
 }
 
-void _state_remove_session_sent_entry_action(gpointer p_context_data)
+void _state_remove_session_sent_entry_action(void *p_context_data)
 {
        INFO_MSG;
 
-       /*asp_session_t* session = (asp_session_t*)p_context_data; */
+       /*asp_session_s* session = (asp_session_s*)p_context_data; */
 }
 
-void _state_remove_session_sent_exit_action(gpointer p_context_data)
+void _state_remove_session_sent_exit_action(void *p_context_data)
 {
-       INFO_MSG;
 }
 
 gfsm_state_id_t _state_remove_session_sent_reaction_ack_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       _call_session_status_cb(0, session->session_mac, session->session_id,
-                               ASP_SESSION_CLOSED_STATE_LOCAL_CLOSE);
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       session->closed_state = ASP_SESSION_CLOSED_STATE_LOCAL_CLOSE;
+
        return SESSION_STATE_CLOSED;
 }
 
 gfsm_state_id_t _state_remove_session_sent_reaction_nack_received(
-       gpointer p_context_data, gpointer p_event_data)
+       void *p_context_data, void *p_event_data)
 {
        INFO_MSG;
 
-       asp_session_t *session = (asp_session_t *) p_context_data;
-       _call_session_status_cb(0, session->session_mac, session->session_id,
-                               ASP_SESSION_CLOSED_STATE_LOCAL_CLOSE);
+       asp_session_s *session = (asp_session_s *)p_context_data;
+       session->closed_state = ASP_SESSION_CLOSED_STATE_LOCAL_CLOSE;
+
        return SESSION_STATE_CLOSED;
 }
index 7ebffb9..cc19275 100644 (file)
+/*finite state machine
+ *
+ * Copyright (c) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Hojeen Jee <hojeen.jee@samsung.com>, Jaejun Sim <jj.sim@samsung.com>,
+ * Jinho Ha <jinho89.ha@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
 #include <stdlib.h>
 #include <string.h>
 #include <assert.h>
-#include "gfsm.h"
 #include <stdio.h>
+#include "gfsm.h"
 
-#if 0
-gfsm_get_state_name_cb g_state_name_cb = NULL;
-gfsm_get_event_name_cb g_event_name_cb = NULL;
-#endif
-
-static void _gfsm_process_event(gfsm_context_t *p_context,
-                               gfsm_event_t *p_event);
-static void gfsm_process_transition(gfsm_context_t *p_context,
+typedef struct gfsm_event_queue {
+       gfsm_event_s *p_head;
+       gfsm_event_s *p_tail;
+} gfsm_event_queue_s;
+
+struct gfsm_event {
+       struct gfsm_event *p_next;
+       gfsm_event_id_t event_id;
+       void *p_event_data;
+       gfsm_event_data_destructor_cb destructor;
+};
+
+struct gfsm_state {
+       gfsm_state_id_t state_id;
+       gfsm_s *p_fsm;
+       gfsm_state_s *p_parent_state;
+       gfsm_state_s *p_internal_init_state;
+       gfsm_entry_action_cb entry_action_cb;
+       gfsm_exit_action_cb exit_action_cb;
+       gfsm_reaction_cb *reaction_table;
+};
+
+struct gfsm {
+       gfsm_state_s **pp_state_table;
+       gfsm_state_id_t max_state;
+       gfsm_event_id_t max_event;
+       gfsm_state_id_t init_state_id;
+       gfsm_log_func log_func;
+       gfsm_get_state_name_cb state_name_cb;
+       gfsm_get_event_name_cb event_name_cb;
+       char *p_header;
+};
+
+struct gfsm_context {
+       gfsm_s *p_fsm;
+       gfsm_state_id_t current_state_id;
+       gfsm_event_queue_s event_queue;
+       gfsm_event_queue_s defer_event_queue;
+       unsigned char processing_event; /*true or false; */
+       unsigned char terminating;      /*true or false; */
+       gfsm_context_termination_notifier_cb termination_notifier_cb;
+       void *p_context_data;
+};
+
+static void _gfsm_process_event(gfsm_context_s *p_context,
+                               gfsm_event_s *p_event);
+static void gfsm_process_transition(gfsm_context_s *p_context,
                                    gfsm_state_id_t next_state_id);
-static void gfsm_do_exit_action(gfsm_state_t *p_current_state,
-                               gfsm_state_t *p_common_ancesstor, gfsm_context_t *p_context);
-static void gfsm_do_entry_action(gfsm_state_t *p_common_ancesstor,
-                                gfsm_state_t *p_next_state, gfsm_context_t *p_context);
-static void gfsm_reenqueue_deferred_event(gfsm_context_t *p_context);
-static void gfsm_init_event_queue(gfsm_event_queue_t *p_queue);
-static void gfsm_destroy_event_queue(gfsm_event_queue_t *p_queue);
-static void gfsm_enqueue_event(gfsm_event_queue_t *p_queue,
-                              gfsm_event_t *p_event);
-static gfsm_event_t *gfsm_dequeue_event(gfsm_event_queue_t *p_queue);
-static gfsm_state_t *gfsm_find_last_child_state(gfsm_state_t *p_state);
-static gfsm_state_t *gfsm_find_common_ancesstor_state(gfsm_state_t *p_state_1,
-               gfsm_state_t *p_state_2);
-
-#if 0
-void gfsm_set_debugger(gfsm_get_state_name_cb state_name_cb,
-                      gfsm_get_event_name_cb event_name_cb)
+static void gfsm_do_exit_action(gfsm_state_s *p_current_state,
+                               gfsm_state_s *p_common_ancesstor, gfsm_context_s *p_context);
+static void gfsm_do_entry_action(gfsm_state_s *p_common_ancesstor,
+                                gfsm_state_s  *p_next_state, gfsm_context_s *p_context);
+static void gfsm_reenqueue_deferred_event(gfsm_context_s *p_context);
+static void gfsm_init_event_queue(gfsm_event_queue_s *p_queue);
+static void gfsm_destroy_event_queue(gfsm_event_queue_s *p_queue);
+static void gfsm_enqueue_event(gfsm_event_queue_s *p_queue,
+                              gfsm_event_s *p_event);
+static gfsm_event_s *gfsm_dequeue_event(gfsm_event_queue_s *p_queue);
+static gfsm_state_s *gfsm_find_last_child_state(gfsm_state_s *p_state);
+static gfsm_state_s *gfsm_find_common_ancesstor_state(gfsm_state_s *p_state_1,
+               gfsm_state_s *p_state_2);
+
+gfsm_s *gfsm_create_fsm(gfsm_state_id_t max_state, gfsm_event_id_t max_event,
+                       gfsm_state_id_t init_state)
 {
-       g_state_name_cb = state_name_cb;
-       g_event_name_cb = event_name_cb;
-}
-#endif
+       gfsm_s *p_fsm = (gfsm_s *)malloc(sizeof(gfsm_s));
 
-gfsm_t *gfsm_init_fsm(gfsm_t *p_fsm, gfsm_state_id_t max_state,
-                     gfsm_event_id_t max_event, gfsm_state_id_t init_state)
-{
        assert(p_fsm);
        assert(init_state < max_state);
 
-       size_t state_table_size = sizeof(gfsm_state_t *) *max_state;
+       size_t state_table_size = sizeof(gfsm_state_s *) * max_state;
 
-       p_fsm->pp_state_table = malloc(state_table_size);
+       p_fsm->pp_state_table = (gfsm_state_s **) malloc(state_table_size);
 
        assert(p_fsm->pp_state_table);
 
@@ -54,27 +107,34 @@ gfsm_t *gfsm_init_fsm(gfsm_t *p_fsm, gfsm_state_id_t max_state,
        p_fsm->max_event = max_event;
        p_fsm->init_state_id = init_state;
 
+       p_fsm->log_func = NULL;
+       p_fsm->state_name_cb = NULL;
+       p_fsm->event_name_cb = NULL;
+       p_fsm->p_header = NULL;
+
        return p_fsm;
 }
 
-void gfsm_terminate_fsm(gfsm_t *p_fsm)
+void gfsm_destroy_fsm(gfsm_s *p_fsm)
 {
        assert(p_fsm);
        assert(p_fsm->pp_state_table);
 
        free(p_fsm->pp_state_table);
-       p_fsm->pp_state_table = 0;
+       if (p_fsm->p_header)
+               free(p_fsm->p_header);
+       free(p_fsm);
 }
 
-gfsm_state_t *gfsm_init_state(gfsm_state_t *p_state, gfsm_state_id_t state_id,
-                             gfsm_t *p_fsm, gfsm_entry_action_cb entry_action,
-                             gfsm_exit_action_cb exit_action)
+gfsm_state_s *gfsm_create_state(gfsm_state_id_t state_id, gfsm_s *p_fsm,
+                               gfsm_entry_action_cb entry_action, gfsm_exit_action_cb exit_action)
 {
        size_t event_table_size;
+       gfsm_state_s *p_state = (gfsm_state_s *)malloc(sizeof(gfsm_state_s));
 
        assert(p_state);
        assert(p_fsm);
-       assert(entry_action && exit_action);
+       /*assert(entry_action && exit_action); */
 
        p_state->state_id = state_id;
        p_state->p_fsm = p_fsm;
@@ -85,7 +145,7 @@ gfsm_state_t *gfsm_init_state(gfsm_state_t *p_state, gfsm_state_id_t state_id,
 
        event_table_size = sizeof(gfsm_reaction_cb) * p_fsm->max_event;
 
-       p_state->reaction_table = malloc(event_table_size);
+       p_state->reaction_table = (gfsm_reaction_cb *) malloc(event_table_size);
 
        assert(p_state->reaction_table);
 
@@ -94,22 +154,25 @@ gfsm_state_t *gfsm_init_state(gfsm_state_t *p_state, gfsm_state_id_t state_id,
        return p_state;
 }
 
-void gfsm_terminate_state(gfsm_state_t *p_state)
+void gfsm_destroy_state(gfsm_state_s *p_state)
 {
        assert(p_state);
        assert(p_state->reaction_table);
 
        free(p_state->reaction_table);
-       p_state->reaction_table = 0;
+       free(p_state);
 }
 
-gfsm_context_t *gfsm_init_context(gfsm_context_t *p_context, gfsm_t *p_fsm,
-                                 gfsm_context_termination_notifier_cb termination_notifier,
-                                 gpointer p_context_data)
+gfsm_context_s *gfsm_create_context(gfsm_s *p_fsm,
+                                   gfsm_context_termination_notifier_cb termination_notifier_cb,
+                                   void *p_context_data)
 {
-       gfsm_state_t *p_next_state;
+       gfsm_state_s *p_next_state;
+       gfsm_context_s *p_context = (gfsm_context_s *)malloc(sizeof(gfsm_context_s));
+
+       assert(p_fsm);
+       assert(p_context);
 
-       assert(p_context && p_fsm);
        p_context->p_fsm = p_fsm;
        p_context->p_context_data = p_context_data;
        p_context->current_state_id = p_fsm->init_state_id;
@@ -121,7 +184,7 @@ gfsm_context_t *gfsm_init_context(gfsm_context_t *p_context, gfsm_t *p_fsm,
 
        p_context->processing_event = 0;
        p_context->terminating = 0;
-       p_context->termination_notifier = termination_notifier;
+       p_context->termination_notifier_cb = termination_notifier_cb;
 
        p_next_state = p_fsm->pp_state_table[p_context->current_state_id];
 
@@ -132,17 +195,21 @@ gfsm_context_t *gfsm_init_context(gfsm_context_t *p_context, gfsm_t *p_fsm,
        return p_context;
 }
 
-gfsm_state_id_t gfsm_get_current_state_id(gfsm_context_t *p_context)
+gfsm_state_id_t gfsm_get_current_state_id(gfsm_context_s *p_context)
 {
        assert(p_context);
        return p_context->current_state_id;
 }
 
-void gfsm_terminate_context(gfsm_context_t *p_context)
+void gfsm_destroy_context(gfsm_context_s *p_context)
 {
-       gfsm_state_t *p_current_state;
+       gfsm_state_s *p_current_state;
 
        if (p_context->processing_event) {
+               if (p_context->p_fsm->log_func)
+                       p_context->p_fsm->log_func("[%s] destroy_context is scheduled\n",
+                                                  p_context->p_fsm->p_header);
+
                p_context->terminating = 1;
                return;
        }
@@ -153,11 +220,17 @@ void gfsm_terminate_context(gfsm_context_t *p_context)
        gfsm_destroy_event_queue(&p_context->event_queue);
        gfsm_destroy_event_queue(&p_context->defer_event_queue);
 
-       if (p_context->termination_notifier)
-               p_context->termination_notifier(p_context->p_context_data);
+       if (p_context->termination_notifier_cb)
+               p_context->termination_notifier_cb(p_context->p_context_data);
+
+       if (p_context->p_fsm->log_func)
+               p_context->p_fsm->log_func("[%s] context is destroyed\n",
+                                          p_context->p_fsm->p_header);
+
+       free(p_context);
 }
 
-void gfsm_add_reaction(gfsm_state_t *p_state, gfsm_event_id_t event_id,
+void gfsm_add_reaction(gfsm_state_s *p_state, gfsm_event_id_t event_id,
                       gfsm_reaction_cb reaction_cb)
 {
        assert(p_state);
@@ -170,7 +243,7 @@ void gfsm_add_reaction(gfsm_state_t *p_state, gfsm_event_id_t event_id,
        p_state->reaction_table[event_id] = reaction_cb;
 }
 
-void gfsm_set_parent_state(gfsm_state_t *p_state, gfsm_state_t *p_parent_state)
+void gfsm_set_parent_state(gfsm_state_s *p_state, gfsm_state_s *p_parent_state)
 {
        assert(p_state && p_parent_state);
        assert(p_state->p_parent_state == NULL);
@@ -183,7 +256,7 @@ void gfsm_set_parent_state(gfsm_state_t *p_state, gfsm_state_t *p_parent_state)
 }
 
 /*
-void gfsm_set_internal_init_state(gfsm_state_t* p_state, gfsm_state_t* p_internal_init_state)
+void gfsm_set_internal_init_state(gfsm_state_s* p_state, gfsm_state_s* p_internal_init_state)
 {
        assert(p_state && p_internal_init_state);
        //assert(p_state->p_internal_init_state == NULL);
@@ -191,7 +264,7 @@ void gfsm_set_internal_init_state(gfsm_state_t* p_state, gfsm_state_t* p_interna
 }
 */
 
-void gfsm_add_state(gfsm_t *p_fsm, gfsm_state_t *p_state)
+void gfsm_add_state(gfsm_s *p_fsm, gfsm_state_s *p_state)
 {
        assert(p_fsm && p_state);
        assert(p_state->state_id < p_fsm->max_state);
@@ -200,10 +273,10 @@ void gfsm_add_state(gfsm_t *p_fsm, gfsm_state_t *p_state)
        p_fsm->pp_state_table[p_state->state_id] = p_state;
 }
 
-gfsm_event_t *gfsm_create_event(gfsm_event_id_t event_id, gpointer p_event_data,
+gfsm_event_s *gfsm_create_event(gfsm_event_id_t event_id, void *p_event_data,
                                gfsm_event_data_destructor_cb destructor)
 {
-       gfsm_event_t *p_event = malloc(sizeof(gfsm_event_t));
+       gfsm_event_s *p_event = (gfsm_event_s *)malloc(sizeof(gfsm_event_s));
 
        assert(p_event);
 
@@ -215,21 +288,21 @@ gfsm_event_t *gfsm_create_event(gfsm_event_id_t event_id, gpointer p_event_data,
        return p_event;
 }
 
-gfsm_t *gfsm_get_fsm_of_state(gfsm_state_t *p_state)
+gfsm_s *gfsm_get_fsm_of_state(gfsm_state_s *p_state)
 {
        assert(p_state);
        return p_state->p_fsm;
 }
 
-gfsm_t *gfsm_get_fsm_of_context(gfsm_context_t *p_context)
+gfsm_s *gfsm_get_fsm_of_context(gfsm_context_s *p_context)
 {
        assert(p_context);
        return p_context->p_fsm;
 }
 
-void gfsm_process_event(gfsm_context_t *p_context, gfsm_event_t *p_event)
+void gfsm_process_event(gfsm_context_s *p_context, gfsm_event_s *p_event)
 {
-       gfsm_t *p_fsm;
+       gfsm_s *p_fsm;
 
        assert(p_context && p_event);
 
@@ -239,8 +312,13 @@ void gfsm_process_event(gfsm_context_t *p_context, gfsm_event_t *p_event)
 
        gfsm_enqueue_event(&p_context->event_queue, p_event);
 
-       if (p_context->processing_event)        /*recursive check */
+       if (p_context->processing_event) {      /*recursive check */
+               if (p_fsm->log_func)
+                       p_fsm->log_func("[%s] event(%s) is posted\n", p_fsm->p_header,
+                                       p_fsm->event_name_cb(p_event->event_id));
+
                return;
+       }
 
        p_context->processing_event = 1;
 
@@ -249,32 +327,52 @@ void gfsm_process_event(gfsm_context_t *p_context, gfsm_event_t *p_event)
 
        p_context->processing_event = 0;
 
-       if (p_context->terminating)
-               gfsm_terminate_context(p_context);
+       if (p_context->terminating) {
+               if (p_fsm->log_func)
+                       p_fsm->log_func("[%s] destroy_context was scheduled\n", p_fsm->p_header);
+
+               gfsm_destroy_context(p_context);
+       }
 }
 
-void _gfsm_process_event(gfsm_context_t *p_context, gfsm_event_t *p_event)
+void _gfsm_process_event(gfsm_context_s *p_context, gfsm_event_s *p_event)
 {
-       gfsm_t *p_fsm;
-       gfsm_state_t *p_state;
+       gfsm_s *p_fsm;
+       gfsm_state_s *p_state;
        gfsm_state_id_t next_state_id = GFSM_DISCARD_EVENT;
+       gfsm_event_id_t event_id;
 
        assert(p_context && p_event);
 
+       event_id = p_event->event_id;
        p_fsm = p_context->p_fsm;
 
        assert(p_context->current_state_id < p_fsm->max_state);
 
+       if (p_fsm->log_func)
+               p_fsm->log_func("[%s] current state is (%s), event(%s) is received\n",
+                               p_fsm->p_header, p_fsm->state_name_cb(p_context->current_state_id),
+                               p_fsm->event_name_cb(event_id));
+
        for (p_state = p_fsm->pp_state_table[p_context->current_state_id];
             p_state != NULL; p_state = p_state->p_parent_state) {
-               if (p_state->reaction_table[p_event->event_id]) {
-                       next_state_id = p_state->reaction_table[p_event->event_id](p_context,
+               if (p_state->reaction_table[event_id]) {
+                       if (p_fsm->log_func)
+                               p_fsm->log_func("[%s] state(%s)'s reaction is called for event(%s)\n",
+                                               p_fsm->p_header, p_fsm->state_name_cb(p_state->state_id),
+                                               p_fsm->event_name_cb(event_id));
+
+                       next_state_id = p_state->reaction_table[event_id](p_context->p_context_data,
                                        p_event->p_event_data);
                        break;
                }
        }
 
        if (GFSM_DEFER_EVENT == next_state_id) {
+               if (p_fsm->log_func)
+                       p_fsm->log_func("[%s] event(%s) is defered\n", p_fsm->p_header,
+                                       p_fsm->event_name_cb(event_id));
+
                gfsm_enqueue_event(&p_context->defer_event_queue, p_event);
                return;
        }
@@ -284,21 +382,32 @@ void _gfsm_process_event(gfsm_context_t *p_context, gfsm_event_t *p_event)
 
        free(p_event);
 
-       if (NULL == p_state)
+       if (NULL == p_state) {
+               if (p_fsm->log_func)
+                       p_fsm->log_func("[%s] state(%s) have no reaction for event(%s)\n",
+                                       p_fsm->p_header, p_fsm->state_name_cb(p_context->current_state_id),
+                                       p_fsm->event_name_cb(event_id));
+
                return;
+       }
+
+       if (GFSM_DISCARD_EVENT == next_state_id) {
+               if (p_fsm->log_func)
+                       p_fsm->log_func("[%s] to stay in state(%s)\n", p_fsm->p_header,
+                                       p_fsm->state_name_cb(p_context->current_state_id));
 
-       if (GFSM_DISCARD_EVENT == next_state_id)
                return;
+       }
 
        gfsm_process_transition(p_context, next_state_id);
 }
 
-void gfsm_process_transition(gfsm_context_t *p_context,
+void gfsm_process_transition(gfsm_context_s *p_context,
                             gfsm_state_id_t next_state_id)
 {
-       gfsm_state_t *p_next_state;
-       gfsm_state_t *p_current_state;
-       gfsm_state_t *p_common_ancesstor;
+       gfsm_state_s *p_next_state;
+       gfsm_state_s *p_current_state;
+       gfsm_state_s *p_common_ancesstor;
 
        assert(next_state_id < p_context->p_fsm->max_state);
 
@@ -324,19 +433,25 @@ void gfsm_process_transition(gfsm_context_t *p_context,
        gfsm_do_entry_action(p_common_ancesstor, p_next_state, p_context);
 }
 
-void gfsm_do_exit_action(gfsm_state_t *p_current_state,
-                        gfsm_state_t *p_common_ancesstor, gfsm_context_t *p_context)
+void gfsm_do_exit_action(gfsm_state_s *p_current_state,
+                        gfsm_state_s *p_common_ancesstor, gfsm_context_s *p_context)
 {
-       gfsm_state_t *p_state = p_current_state;
+       gfsm_state_s *p_state = p_current_state;
 
        while (p_state && p_state != p_common_ancesstor) {
-               p_state->exit_action_cb(p_context->p_context_data);
+               if (p_state->exit_action_cb)
+                       p_state->exit_action_cb(p_context->p_context_data);
+
+               if (p_context->p_fsm->log_func)
+                       p_context->p_fsm->log_func("[%s] exiting state(%s)\n",
+                                                  p_context->p_fsm->p_header, p_context->p_fsm->state_name_cb(p_state->state_id));
+
                p_state = p_state->p_parent_state;
        }
 }
 
-void gfsm_do_entry_action(gfsm_state_t *p_common_ancesstor,
-                         gfsm_state_t *p_next_state, gfsm_context_t *p_context)
+void gfsm_do_entry_action(gfsm_state_s *p_common_ancesstor,
+                         gfsm_state_s *p_next_state, gfsm_context_s *p_context)
 {
        if (p_next_state == NULL || p_next_state == p_common_ancesstor)
                return;
@@ -344,33 +459,38 @@ void gfsm_do_entry_action(gfsm_state_t *p_common_ancesstor,
        gfsm_do_entry_action(p_common_ancesstor, p_next_state->p_parent_state,
                             p_context);
 
-       p_next_state->entry_action_cb(p_context->p_context_data);
+       if (p_context->p_fsm->log_func)
+               p_context->p_fsm->log_func("[%s] entering state(%s)\n",
+                                          p_context->p_fsm->p_header,
+                                          p_context->p_fsm->state_name_cb(p_next_state->state_id));
+
+       if (p_next_state->entry_action_cb)
+               p_next_state->entry_action_cb(p_context->p_context_data);
 }
 
-void gfsm_reenqueue_deferred_event(gfsm_context_t *p_context)
+void gfsm_reenqueue_deferred_event(gfsm_context_s *p_context)
 {
-       gfsm_event_t *p_event;
+       gfsm_event_s *p_event;
 
        while ((p_event = gfsm_dequeue_event(&p_context->defer_event_queue)))
                gfsm_enqueue_event(&p_context->event_queue, p_event);
 }
 
 /*gfsm_reaction_cb gfsm_deferral_reaction */
-gfsm_state_id_t gfsm_deferral_reaction(gpointer p_context_data,
-                                      gpointer p_event_data)
+gfsm_state_id_t gfsm_deferral_reaction(void *p_context_data, void *p_event_data)
 {
        return GFSM_DEFER_EVENT;
 }
 
-void gfsm_init_event_queue(gfsm_event_queue_t *p_queue)
+void gfsm_init_event_queue(gfsm_event_queue_s *p_queue)
 {
        assert(p_queue);
        p_queue->p_head = p_queue->p_tail = NULL;
 }
 
-void gfsm_destroy_event_queue(gfsm_event_queue_t *p_queue)
+void gfsm_destroy_event_queue(gfsm_event_queue_s *p_queue)
 {
-       gfsm_event_t *p_event;
+       gfsm_event_s *p_event;
 
        while ((p_event = gfsm_dequeue_event(p_queue)) != NULL) {
                if (p_event->destructor && p_event->p_event_data)
@@ -380,13 +500,12 @@ void gfsm_destroy_event_queue(gfsm_event_queue_t *p_queue)
        }
 }
 
-void gfsm_enqueue_event(gfsm_event_queue_t *p_queue, gfsm_event_t *p_event)
+void gfsm_enqueue_event(gfsm_event_queue_s *p_queue, gfsm_event_s *p_event)
 {
        assert(p_queue);
 
        if (p_queue->p_tail == NULL) {
                assert(p_queue->p_head == NULL);
-
                p_queue->p_head = p_queue->p_tail = p_event;
        } else {
                p_queue->p_tail->p_next = p_event;
@@ -395,11 +514,11 @@ void gfsm_enqueue_event(gfsm_event_queue_t *p_queue, gfsm_event_t *p_event)
 
 }
 
-gfsm_event_t *gfsm_dequeue_event(gfsm_event_queue_t *p_queue)
+gfsm_event_s *gfsm_dequeue_event(gfsm_event_queue_s *p_queue)
 {
        assert(p_queue);
 
-       gfsm_event_t *p_event = p_queue->p_head;
+       gfsm_event_s *p_event = p_queue->p_head;
 
        if (p_event == NULL)
                assert(p_queue->p_tail == NULL);
@@ -412,7 +531,7 @@ gfsm_event_t *gfsm_dequeue_event(gfsm_event_queue_t *p_queue)
        return p_event;
 }
 
-gfsm_state_t *gfsm_find_last_child_state(gfsm_state_t *p_state)
+gfsm_state_s *gfsm_find_last_child_state(gfsm_state_s *p_state)
 {
        assert(p_state);
 
@@ -422,10 +541,10 @@ gfsm_state_t *gfsm_find_last_child_state(gfsm_state_t *p_state)
        return p_state;
 }
 
-gfsm_state_t *gfsm_find_common_ancesstor_state(gfsm_state_t *p_state_l,
-               gfsm_state_t *p_state_r)
+gfsm_state_s *gfsm_find_common_ancesstor_state(gfsm_state_s *p_state_l,
+               gfsm_state_s *p_state_r)
 {
-       gfsm_state_t *p_state_1, *p_state_2;
+       gfsm_state_s *p_state_1, *p_state_2;
 
        assert(p_state_l && p_state_r);
 
@@ -442,3 +561,20 @@ gfsm_state_t *gfsm_find_common_ancesstor_state(gfsm_state_t *p_state_l,
 
        return NULL;
 }
+
+void gfsm_set_logger(gfsm_s *p_fsm, gfsm_log_func log_func, const char *header,
+                    gfsm_get_state_name_cb state_name_cb, gfsm_get_event_name_cb event_name_cb)
+{
+       int header_len = 0;
+
+       assert(p_fsm && log_func && header && state_name_cb && event_name_cb);
+
+       if (header)
+               header_len = strlen(header);
+
+       p_fsm->log_func = log_func;
+       p_fsm->state_name_cb = state_name_cb;
+       p_fsm->event_name_cb = event_name_cb;
+       p_fsm->p_header = (char *)malloc(header_len + 1);
+       strncpy(p_fsm->p_header, header, header_len + 1);
+}
index 92e699b..94af17b 100644 (file)
+/*finite state machine
+ *
+ * Copyright (c) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
+ *
+ * Contact: Hojeen Jee <hojeen.jee@samsung.com>, Jaejun Sim <jj.sim@samsung.com>,
+ * Jinho Ha <jinho89.ha@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
 #ifndef _GFSM_
 #define _GFSM_
 
-#include <glib.h>
-#include <stdint.h>
+/*****************************************************************************
+ * constants and Typedefs
+ *****************************************************************************/
+
+typedef unsigned int gfsm_state_id_t;
+typedef unsigned int gfsm_event_id_t;
+
+typedef struct gfsm_event gfsm_event_s;
+typedef struct gfsm_state gfsm_state_s;
+typedef struct gfsm gfsm_s;
+typedef struct gfsm_context gfsm_context_s;
 
-typedef guint32 gfsm_state_id_t;
-typedef guint32 gfsm_event_id_t;
+typedef void (*gfsm_entry_action_cb)(void *p_context_data);
+typedef void (*gfsm_exit_action_cb)(void *p_context_data);
+typedef gfsm_state_id_t(*gfsm_reaction_cb)(void *p_context_data,
+               void *p_event_data);
+typedef void (*gfsm_event_data_destructor_cb)(void *p_event_data);
+typedef void (*gfsm_context_termination_notifier_cb)(void *p_context_data);
 
-typedef gchar *(*gfsm_get_state_name_cb)(gfsm_state_id_t state_id);
-typedef gchar *(*gfsm_get_event_name_cb)(gfsm_event_id_t event_id);
+typedef const char *(*gfsm_get_state_name_cb)(gfsm_state_id_t state_id);
+typedef const char *(*gfsm_get_event_name_cb)(gfsm_event_id_t event_id);
+typedef int (*gfsm_log_func)(const char *format, ...);
 
 static const gfsm_state_id_t GFSM_DISCARD_EVENT = 0xFFFFFFFF;
 static const gfsm_state_id_t GFSM_DEFER_EVENT = 0xFFFFFFFE;
 
-typedef struct gfsm_event gfsm_event_t;
-typedef struct gfsm_state gfsm_state_t;
-typedef struct gfsm gfsm_t;
-typedef struct gfsm_context gfsm_context_t;
-
-typedef void (*gfsm_entry_action_cb)(gpointer p_context_data);
-typedef void (*gfsm_exit_action_cb)(gpointer p_context_data);
-typedef gfsm_state_id_t(*gfsm_reaction_cb)(gpointer p_context_data,
-               gpointer p_event_data);
-typedef void (*gfsm_event_data_destructor_cb)(gpointer p_event_data);
-typedef void (*gfsm_context_termination_notifier_cb)(gpointer p_context_data);
-
-typedef struct gfsm_event_queue {
-       gfsm_event_t *p_head;
-       gfsm_event_t *p_tail;
-} gfsm_event_queue_t;
-
-typedef struct gfsm_event {
-       struct gfsm_event *p_next;
-       gfsm_event_id_t event_id;
-       gpointer p_event_data;
-       gfsm_event_data_destructor_cb destructor;
-} gfsm_event_t;
-
-typedef struct gfsm_state {
-       gfsm_state_id_t state_id;
-       gfsm_t *p_fsm;
-       gfsm_state_t *p_parent_state;
-       gfsm_state_t *p_internal_init_state;
-       gfsm_entry_action_cb entry_action_cb;
-       gfsm_exit_action_cb exit_action_cb;
-       gfsm_reaction_cb *reaction_table;
-} gfsm_state_t;
-
-typedef struct gfsm {
-       gfsm_state_t **pp_state_table;
-       gfsm_state_id_t max_state;
-       gfsm_event_id_t max_event;
-       gfsm_state_id_t init_state_id;
-} gfsm_t;
-
-typedef struct gfsm_context {
-       gfsm_t *p_fsm;
-       gfsm_state_id_t current_state_id;
-       gfsm_event_queue_t event_queue;
-       gfsm_event_queue_t defer_event_queue;
-       uint8_t processing_event;       /*true or false; */
-       uint8_t terminating;            /*true or false; */
-       gfsm_context_termination_notifier_cb termination_notifier;
-       gpointer p_context_data;
-} gfsm_context_t;
-
-/*void gfsm_set_debugger(gint32 (*log)(const gchar *format, ...),gfsm_get_state_name_cb state_name_cb,gfsm_get_event_name_cb event_name_cb); */
-
-gfsm_t *gfsm_init_fsm(gfsm_t *p_fsm, gfsm_state_id_t max_state,
-                     gfsm_event_id_t max_event, gfsm_state_id_t init_state);
-void gfsm_terminate_fsm(gfsm_t *p_fsm);
-void gfsm_add_state(gfsm_t *p_fsm, gfsm_state_t *p_state);
-
-gfsm_state_t *gfsm_init_state(gfsm_state_t *state, gfsm_state_id_t state_id,
-                             gfsm_t *p_fsm, gfsm_entry_action_cb entry_action,
-                             gfsm_exit_action_cb exit_action);
-void gfsm_terminate_state(gfsm_state_t *state);
-void gfsm_set_parent_state(gfsm_state_t *state, gfsm_state_t *p_parent_state);
-/*void gfsm_set_internal_init_state(gfsm_state_t* state, gfsm_state_t* p_internal_init_state); */
-void gfsm_add_reaction(gfsm_state_t *p_state, gfsm_event_id_t event_id,
+/**
+ * @brief This function creates a generic fsm object
+ * @param [in] max_state       maximum num of state
+ * @param [in] max_event       maximum num of event
+ * @param [in] init_state      state id of initial state
+ * @return a pointer of gfsm object
+*/
+gfsm_s *gfsm_create_fsm(gfsm_state_id_t max_state, gfsm_event_id_t max_event,
+                       gfsm_state_id_t init_state);
+
+/**
+ * @brief This function destroys a generic fsm object
+ * @param [in] a pointer of gfsm object
+ * @return void
+*/
+void gfsm_destroy_fsm(gfsm_s *p_fsm);
+
+/**
+ * @brief This function add a state on a gfsm object
+ * @param [in] p_fsm a pointer of a gfsm
+ * @param [in] p_state a pointer of a gfsm_state
+ * @return void
+*/
+void gfsm_add_state(gfsm_s *p_fsm, gfsm_state_s *p_state);
+
+/**
+ * @brief This function create a state object
+ * @param [in] state_id state id of this state
+ * @param [in] p_fsm a pointer of gfsm
+ * @param [in] entry_action callback function that will be called when entering into this state.
+ * @param [in] exit_action callback function that will be called when exiting from this state.
+ * @return a pointer of state object
+*/
+gfsm_state_s *gfsm_create_state(gfsm_state_id_t state_id, gfsm_s *p_fsm,
+                               gfsm_entry_action_cb entry_action, gfsm_exit_action_cb exit_action);
+
+/**
+ * @brief This function destroys a state object
+ * @param [in] p_state a pointer of state object
+ * @return void
+*/
+void gfsm_destroy_state(gfsm_state_s *p_state);
+
+/**
+ * @brief This function set parent state of this state
+ * @param [in] p_state a pointer of child state
+ * @param [in] p_parent_state a pointer of parent state
+ * @return void
+*/
+void gfsm_set_parent_state(gfsm_state_s *p_state, gfsm_state_s *p_parent_state);
+
+/**
+ * @brief This function add reaction of event on a state
+ * @param [in] p_state a pointer of state
+ * @param [in] event_id ID of event that will be processed on this state
+ * @param [in] reacton_cb callback function that will be called when event is received.
+ * @return void
+*/
+void gfsm_add_reaction(gfsm_state_s *p_state, gfsm_event_id_t event_id,
                       gfsm_reaction_cb reaction_cb);
-gfsm_t *gfsm_get_fsm_of_state(gfsm_state_t *p_state);
 
-gfsm_context_t *gfsm_init_context(gfsm_context_t *p_context, gfsm_t *p_fsm,
-                                 gfsm_context_termination_notifier_cb termination_notifier,
-                                 gpointer p_context_data);
-void gfsm_terminate_context(gfsm_context_t *p_context);
-void gfsm_process_event(gfsm_context_t *p_context, gfsm_event_t *p_event);
-gfsm_state_id_t gfsm_get_current_state_id(gfsm_context_t *p_context);
-gfsm_t *gfsm_get_fsm_of_context(gfsm_context_t *p_context);
-
-gfsm_event_t *gfsm_create_event(gfsm_event_id_t event_id, gpointer p_event_data,
+/**
+ * @brief This function will return a pointer of fsm that has this state.
+ * @param [in] p_state a pointer of state
+ * @return a pointer of fsm that possess this state
+*/
+gfsm_s *gfsm_get_fsm_of_state(gfsm_state_s *p_state);
+
+/**
+ * @brief This function create a context object.
+ * @param [in] p_fsm a pointer of fsm
+ * @param [in] termination_notifier callback function that will be called when context is destroyed
+ * @param [in] p_context_data user data that will be passed to reaction action, entry action, exit action
+ * @return a pointer of context
+*/
+gfsm_context_s *gfsm_create_context(gfsm_s *p_fsm,
+                                   gfsm_context_termination_notifier_cb termination_notifier,
+                                   void *p_context_data);
+
+/**
+ * @brief This function detroy a context object.
+ * @param [in] p_context a pointer of context
+ * @return void
+*/
+void gfsm_destroy_context(gfsm_context_s *p_context);
+
+/**
+ * @brief this function process event
+ * @param [in] p_context a pointer of context
+ * @param [in] p_event a pointer of event that will be processed
+ * @return void
+*/
+void gfsm_process_event(gfsm_context_s *p_context, gfsm_event_s *p_event);
+
+/**
+ * @brief this function return a current state id
+ * @param [in] p_context a pointer of context
+ * @return current state id
+*/
+gfsm_state_id_t gfsm_get_current_state_id(gfsm_context_s *p_context);
+
+/**
+ * @brief This function will return a pointer of fsm that has this context.
+ * @param [in] p_context a pointer of context
+ * @return a pointer of fsm that possess this context
+*/
+gfsm_s *gfsm_get_fsm_of_context(gfsm_context_s *p_context);
+
+/**
+ * @brief this function create event object
+ * @param      [in] event_id id of event that will be created
+ * @param      [in] p_event_data user data that will be delivered to reaction functions
+ * @param      [in] destructor callback function that will be called in order to destroy p_event_data
+ * @return a pointer of event
+*/
+gfsm_event_s *gfsm_create_event(gfsm_event_id_t event_id, void *p_event_data,
                                gfsm_event_data_destructor_cb destructor);
 
-/*gfsm_reaction_cb gfsm_deferral_reaction; */
-gfsm_state_id_t gfsm_deferral_reaction(gpointer p_context_data,
-                                      gpointer p_event_data);
+/**
+ * @brief predefined reaction function to defer event
+ * @param [in] p_context_data user data of context
+ * @param [in] p_event_data user data of event
+ * @return a next state id
+ *
+ * @verbatim
+ * gfsm_add_reaction(state1,event1,gfsm_deferral_reaction);
+ * @endverbatim
+*/
+gfsm_state_id_t gfsm_deferral_reaction(void *p_context_data,
+                                      void *p_event_data);
+
+/**
+ * @brief this function will set logger function to help debugging
+ * @param [in] p_fsm a pointer of fsm object
+ * @param [in] log_func a function pointer to print log
+ * @param [in] header a string that will be shown at the head of every log
+ * @param [in] state_name_cb callback function that will pass string of state name
+ * @param [in] event_name_cb callback function that will pass string of event name
+ * @return void
+ *
+*/
+void gfsm_set_logger(gfsm_s *p_fsm, gfsm_log_func log_func, const char *header,
+                    gfsm_get_state_name_cb state_name_cb, gfsm_get_event_name_cb event_name_cb);
+
 #endif