/*GSocketFamily sock_family; // ipv4 or ipv6 */
asp_session_closed_state_e closed_state;
gboolean over_p2p; /*p2p or infra */
+ gboolean confirmed;
} asp_session_s;
typedef struct session_request_cb {
sizeof(confirm_session_param_s));
confirmed_param->confirmed = confirmed;
confirmed_param->pin = pin;
+ session->confirmed = confirmed;
gfsm_process_event(session->context,
gfsm_create_event(SESSION_EVENT_CONFIRM_SESSION_CALLED, confirmed_param,
return;
}
+ if(session->over_p2p && session->sock_addr == NULL) {
+ ASP_LOGD("IpAssigned signal isn't yet received, discard event");
+ return;
+ }
+
switch (p_header->opcode) {
case ASP_OPCODE_REQUEST_SESSION: {
gchar peer_ip[ASP_SESSION_IPV4_STR_LEN];
void *p_context_data, void *p_event_data)
{
INFO_MSG;
+ gfsm_state_id_t ret_state = GFSM_DISCARD_EVENT;
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_s *p_ip_assigned_param = (ip_assigned_param_s *)p_event_data;
g_assert(p_ip_assigned_param);
ASP_LOGD("peer IP %s", p_ip_assigned_param->peer_ip_addr);
_store_peer_ip_addr(session, p_ip_assigned_param->peer_ip_addr,
p_ip_assigned_param->length);
+ if (session->asp_role == ASP_ROLE_SEEKER) {
+ _send_request_session(session, NULL, 0);
+ ret_state = SESSION_STATE_REQUEST_SESSION_SENT;
+ } else {
+ ret_state = GFSM_DISCARD_EVENT;
+ }
- _send_request_session(session, NULL, 0);
-
- return SESSION_STATE_REQUEST_SESSION_SENT;
+ return ret_state;
}
gfsm_state_id_t
INFO_MSG;
asp_session_s *session = (asp_session_s *)p_context_data;
-
- /* session_request_cb */
- /* what is user data ? */
- _call_session_status_cb(0, session->session_mac, session->session_id,
- ASP_SESSION_CLOSED_STATE_NONE);
- _call_connect_status_cb(0, session->session_mac, session->session_id,
- ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_RECEIVED);
+ g_assert(session);
+ if (session->over_p2p && session->confirmed &&
+ session->asp_role == ASP_ROLE_ADVERTIZER ) {
+ /* TODO: Set Session should done after this event*/
+ } else {
+ /* session_request_cb */
+ /* what is user data ? */
+ _call_session_status_cb(0, session->session_mac, session->session_id,
+ ASP_SESSION_CLOSED_STATE_NONE);
+ _call_connect_status_cb(0, session->session_mac, session->session_id,
+ ASP_SESSION_CONNECT_STATUS_SESSION_REQUEST_RECEIVED);
+ }
}
void _state_request_session_received_exit_action(void *p_context_data)
#include <string.h>
#include <assert.h>
#include <stdio.h>
+#include <glib.h>
#include "gfsm.h"
+#include "asp-manager-util.h"
+
typedef struct gfsm_event_queue {
gfsm_event_s *p_head;
{
gfsm_s *p_fsm;
+ ASP_LOGD("process event");
+ if(p_context == NULL)
+ ASP_LOGD("context is NULL");
assert(p_context && p_event);
p_fsm = p_context->p_fsm;
gfsm_state_id_t next_state_id = GFSM_DISCARD_EVENT;
gfsm_event_id_t event_id;
+ ASP_LOGD("inner process event");
assert(p_context && p_event);
event_id = p_event->event_id;
void gfsm_enqueue_event(gfsm_event_queue_s *p_queue, gfsm_event_s *p_event)
{
+ ASP_LOGD("enqueue");
assert(p_queue);
if (p_queue->p_tail == NULL) {