return ASP_ERROR_OPERATION_FAILED;
}
+static asp_client_advert_s *get_advert_by_id(unsigned int adv_id)
+{
+ asp_client_advert_s *advert = NULL;
+ GList *temp = NULL;
+
+ for (temp = g_list_first(asp_adverts);
+ temp != NULL; temp = g_list_next(temp)) {
+ advert = temp->data;
+ if (advert != NULL && advert->adv_id == adv_id)
+ break;
+ advert = NULL;
+ }
+
+ return advert;
+
+}
+
+static asp_client_seek_s *get_seek_by_id(long long unsigned search_id)
+{
+ asp_client_seek_s *seek = NULL;
+ GList *temp = NULL;
+
+ for (temp = g_list_first(asp_seeks);
+ temp != NULL; temp = g_list_next(temp)) {
+ seek = temp->data;
+ if (seek != NULL && seek->search_id == search_id)
+ break;
+ seek = NULL;
+ }
+
+ return seek;
+
+}
+
+static asp_client_session_s *get_session_by_id_mac(const char *session_mac, unsigned int session_id)
+{
+ asp_client_session_s *session = NULL;
+ GList *temp = NULL;
+
+ for (temp = g_list_first(asp_sessions);
+ temp != NULL; temp = g_list_next(temp)) {
+ session = temp->data;
+ if (session != NULL && session->session_id == session_id &&
+ memcmp(session->session_mac, session_mac, MACSTR_LEN) == 0)
+ break;
+ session = NULL;
+ }
+
+ return session;
+}
+
static char* __asp_create_service_info_from_g_variant(GVariant *variant)
{
GVariantIter *iter = NULL;
GVariantIter *iter = NULL;
GVariant *var = NULL;
+ asp_client_seek_s *seek = NULL;
const char *key = NULL;
unsigned int search_id = 0;
const char *service_mac = NULL;
unsigned int config_method = 0;
const char *instance_name = NULL;
char *service_info = NULL;
+ int service_info_len = 0;
unsigned char status = 0;
+ int error_code = ASP_ERROR_NONE;
if (!client->seek_search_result_cb) {
- ASP_LOGE("search_result_cb is NULL!!");
+ ASP_LOGD("search_result_cb is NULL!!");
return;
}
} else if (!g_strcmp0(key, "service_info")) {
g_free(service_info);
service_info = __asp_create_service_info_from_g_variant(var);
- if (service_info)
+ if (service_info) {
ASP_LOGD("Service Info: %s", service_info);
+ service_info_len = strlen(service_info);
+ }
} else if (!g_strcmp0(key, "service_status")) {
g_variant_get(var, "y", &status);
} else {
}
}
- //TODO :client->search_result_cb
+ seek = get_seek_by_id(search_id);
+ if (!seek) {
+ ASP_LOGD("There's no related seek");
+ return;
+ }
+
+ client->seek_search_result_cb(error_code,(asp_seek_service_h)seek, service_mac,
+ advertisement_id, (asp_wps_type_e)config_method, instance_name, service_info,
+ service_info_len, status, client->user_data_for_cb_seek_search_result);
g_variant_iter_free(iter);
g_free(service_info);
__ASP_LOG_FUNC_END__;
__ASP_LOG_FUNC_START__;
asp_client_info_s *client = &g_client_info;
+ asp_client_advert_s *advert = NULL;
unsigned int advertisement_id = 0;
unsigned char status = 0;
int reason = 0;
if (!client->advert_status_changed_cb) {
- ASP_LOGE("search_result_cb is NULL!!");
+ ASP_LOGD("search_result_cb is NULL!!");
return;
}
g_variant_get(parameters, "(uyi)", &advertisement_id, &status, &reason);
- //TODO :client->advert_status_changed_cb
+ advert = get_advert_by_id(advertisement_id);
+ if (!advert) {
+ ASP_LOGD("There's no related advert");
+ return;
+ }
+
+ client->advert_status_changed_cb(
+ (asp_advert_service_h)advert, (asp_service_status_e)status,
+ (asp_advert_status_reason_e)reason,
+ client->user_data_for_cb_advert_status_changed);
__ASP_LOG_FUNC_END__;
return;
return -1;
}
- if (service->auto_accept == FALSE) {
- ASP_LOGD("Don't accept request automatically");
- __ASP_LOG_FUNC_END__;
- return 0;
-
- }
-
ASP_LOGD("Process auto accept service");
temp = NULL;
asp_sessions = g_list_prepend(asp_sessions, session);
}
+ if (service->auto_accept == FALSE) {
+ ASP_LOGD("Don't accept request automatically");
+ __ASP_LOG_FUNC_END__;
+ return 0;
+ }
+
asp_session_confirm(session, TRUE, NULL);
ASP_LOGD("asp_confirm_session");
__ASP_LOG_FUNC_END__;
__ASP_LOG_FUNC_START__;
asp_client_info_s *client = &g_client_info;
+ asp_client_advert_s *advert = NULL;
+ asp_client_session_s *session = NULL;
GVariantIter *iter = NULL;
GVariant *var = NULL;
const char * device_name = NULL;
unsigned int session_id = 0;
const char *session_info = NULL;
+ int info_size = 0;
gboolean get_network_config_pin = FALSE;
const char *network_config_pin = NULL;
+ int error_code = ASP_ERROR_NONE;
if (!client->session_request_cb) {
ASP_LOGE("session_request_cb is NULL!!");
g_variant_get(var, "u", &adv_id);
} else if (!g_strcmp0(key, "session_id")) {
g_variant_get(var, "u", &session_id);
- } else if (!g_strcmp0(key, "session_mac")) {
+ } else if (!g_strcmp0(key, "session_mac")) {
g_variant_get(var, "&s", &session_mac);
} else if (!g_strcmp0(key, "device_name")) {
g_variant_get(var, "&s", &device_name);
} else if (!g_strcmp0(key, "session_info")) {
g_variant_get(var, "&s", &session_info);
+ if (session_info)
+ info_size = strlen(session_info);
} else if (!g_strcmp0(key, "get_pin")) {
g_variant_get(var, "b", &get_network_config_pin);
} else if (!g_strcmp0(key, "pin")) {
}
}
- if (session_mac == NULL)
- {
+ if (session_mac == NULL) {
ASP_LOGE("session_mac is NULL");
g_variant_iter_free(iter);
__ASP_LOG_FUNC_END__;
if (__handle_session_request(adv_id, session_mac,
session_id, session_info) == 0) {
- //TODO :client->session_request_cb
- }
+ advert = get_advert_by_id(adv_id);
+ if (!advert) {
+ ASP_LOGD("There's no related advert");
+ return;
+ }
+
+ session = get_session_by_id_mac(session_mac, session_id);
+ if (!advert) {
+ ASP_LOGD("There's no related advert");
+ return;
+ }
+
+ client->session_request_cb(error_code, advert, session,
+ device_name, session_info, info_size,
+ (bool)get_network_config_pin, network_config_pin,
+ client->user_data_for_cb_session_config_request);
+ }
g_variant_iter_free(iter);
__ASP_LOG_FUNC_END__;
__ASP_LOG_FUNC_START__;
asp_client_info_s *client = &g_client_info;
+ asp_client_session_s *session = NULL;
GVariantIter *iter = NULL;
GVariant *var = NULL;
const char *key = NULL;
+ const char *session_mac = NULL;
unsigned int session_id = 0;
gboolean get_pin = false;
const char *config_pin = NULL;
+ int error_code = ASP_ERROR_NONE;
if (!client->session_config_request_cb) {
ASP_LOGE("session_config_request_cb is NULL!!");
while (g_variant_iter_loop(iter, "{sv}", &key, &var)) {
if (!g_strcmp0(key, "session_id")) {
g_variant_get(var, "u", &session_id);
+ } else if (!g_strcmp0(key, "session_mac")) {
+ g_variant_get(var, "&s", &session_mac);
} else if (!g_strcmp0(key, "get_pin")) {
g_variant_get(var, "b", &get_pin);
} else if (!g_strcmp0(key, "pin")) {
}
}
- //TODO :client->session_config_request_cb
+ if (session_mac == NULL) {
+ ASP_LOGE("session_mac is NULL");
+ g_variant_iter_free(iter);
+ __ASP_LOG_FUNC_END__;
+ return;
+ }
+
+ session = get_session_by_id_mac(session_mac, session_id);
+ if (!session) {
+ ASP_LOGD("There's no related session");
+ return;
+ }
+
+ client->session_config_request_cb(error_code, (asp_session_h)session,
+ (bool)get_pin, config_pin,
+ client->user_data_for_cb_session_config_request);
g_variant_iter_free(iter);
__ASP_LOG_FUNC_END__;
__ASP_LOG_FUNC_START__;
asp_client_info_s *client = &g_client_info;
+ asp_client_session_s *session = NULL;
GVariantIter *iter = NULL;
GVariant *var = NULL;
unsigned int session_id = 0;
int status = 0;
const char *deferred_resp = NULL;
+ int res_len = 0;
+ int error_code = ASP_ERROR_NONE;
if (!client->session_connect_status_cb) {
ASP_LOGE("connect_status_cb is NULL!!");
g_variant_get(var, "i", &status);
} else if (!g_strcmp0(key, "deferred_resp")) {
g_variant_get(var, "&s", &deferred_resp);
+ if (deferred_resp)
+ res_len = strlen(deferred_resp);
} else {
;/* Do Nothing */
}
}
- //TODO :client->session_connect_status_cb
+ if (session_mac == NULL) {
+ ASP_LOGE("session_mac is NULL");
+ g_variant_iter_free(iter);
+ __ASP_LOG_FUNC_END__;
+ return;
+ }
+
+ session = get_session_by_id_mac(session_mac, session_id);
+ if (!session) {
+ ASP_LOGD("There's no related session");
+ return;
+ }
+
+ client->session_connect_status_cb(error_code, (asp_session_h)session,
+ (asp_connect_status_e)status, deferred_resp, res_len,
+ client->user_data_for_cb_session_connect_status);
g_variant_iter_free(iter);
__ASP_LOG_FUNC_END__;
__ASP_LOG_FUNC_START__;
asp_client_info_s *client = &g_client_info;
+ asp_client_session_s *session = NULL;
GVariantIter *iter = NULL;
GVariant *var = NULL;
int state = 0;
int status = 0;
const char *requested_info = NULL;
+ int error_code = ASP_ERROR_NONE;
if (!client->session_status_cb) {
ASP_LOGE("session_status_cb is NULL!!");
}
}
- //TODO :client->session_status_cb
+ if (session_mac == NULL) {
+ ASP_LOGE("session_mac is NULL");
+ g_variant_iter_free(iter);
+ __ASP_LOG_FUNC_END__;
+ return;
+ }
+
+ session = get_session_by_id_mac(session_mac, session_id);
+ if (!session) {
+ ASP_LOGD("There's no related session");
+ return;
+ }
+
+ client->session_status_cb(error_code, (asp_session_h)session,
+ (asp_session_state_e) state, requested_info,
+ client->user_data_for_cb_session_status);
__ASP_LOG_FUNC_END__;
return;
__ASP_LOG_FUNC_START__;
asp_client_info_s *client = &g_client_info;
+ asp_client_session_s *session = NULL;
GVariantIter *iter = NULL;
GVariant *var = NULL;
int port = 0;
int proto = 0;
int status = 0;
+ int error_code = ASP_ERROR_NONE;
if (!client->session_port_status_cb) {
ASP_LOGE("port_status_cb is NULL!!");
}
}
- //TODO :client->session_port_status_cb
+ if (session_mac == NULL) {
+ ASP_LOGE("session_mac is NULL");
+ g_variant_iter_free(iter);
+ __ASP_LOG_FUNC_END__;
+ return;
+ }
+
+ session = get_session_by_id_mac(session_mac, session_id);
+ if (!session) {
+ ASP_LOGD("There's no related session");
+ return;
+ }
+
+ client->session_port_status_cb(error_code, (asp_session_h)session,
+ ip_address, port, proto, (asp_port_status_e)status,
+ client->user_data_for_cb_session_port_status);
__ASP_LOG_FUNC_END__;
return;