DBG("-");
}
+static void __invoke_disabled_cb_with_reason(__softap_h *sa, softap_disabled_cause_e code)
+{
+ if (sa == NULL || sa->disabled_cb == NULL) {
+ ERR("sa or sa->disabled_cb is NULL");
+ return;
+ }
+
+ sa->disabled_cb(SOFTAP_ERROR_NONE, code, sa->disabled_user_data);
+}
+
static void __handle_low_battery_mode(GDBusConnection *connection, const gchar *sender_name,
const gchar *object_path, const gchar *interface_name, const gchar *signal_name,
{
DBG("+");
SOFTAP_LOCK;
-
- if (user_data == NULL) {
- ERR("parameter(user_data) is NULL");
- SOFTAP_UNLOCK;
- return;
- }
-
- __softap_h *sa = (__softap_h *)user_data;
- softap_disabled_cb dcb = NULL;
- void *data = NULL;
- softap_disabled_cause_e code = SOFTAP_DISABLED_BY_LOW_BATTERY;
-
- dcb = sa->disabled_cb;
- if (dcb == NULL) {
- SOFTAP_UNLOCK;
- return;
- }
-
- data = sa->disabled_user_data;
-
- dcb(SOFTAP_ERROR_NONE, code, data);
-
+ __invoke_disabled_cb_with_reason((__softap_h *)user_data, SOFTAP_DISABLED_BY_LOW_BATTERY);
SOFTAP_UNLOCK;
DBG("-");
}
{
DBG("+");
SOFTAP_LOCK;
-
- if (user_data == NULL) {
- ERR("parameter(user_data) is NULL");
- SOFTAP_UNLOCK;
- return;
- }
-
- __softap_h *sa = (__softap_h *)user_data;
- softap_disabled_cb dcb = NULL;
- void *data = NULL;
- softap_disabled_cause_e code = SOFTAP_DISABLED_BY_FLIGHT_MODE;
-
- dcb = sa->disabled_cb;
- if (dcb == NULL) {
- SOFTAP_UNLOCK;
- return;
- }
-
- data = sa->disabled_user_data;
-
- dcb(SOFTAP_ERROR_NONE, code, data);
-
+ __invoke_disabled_cb_with_reason((__softap_h *)user_data, SOFTAP_DISABLED_BY_FLIGHT_MODE);
SOFTAP_UNLOCK;
DBG("-");
}
DBG("+");
SOFTAP_LOCK;
- if (user_data == NULL) {
- ERR("parameter(user_data) is NULL");
- SOFTAP_UNLOCK;
- return;
- }
-
__softap_h *sa = (__softap_h *)user_data;
- softap_security_type_changed_cb scb = NULL;
- void *data = NULL;
- int security_type;
-
- scb = sa->security_type_changed_cb;
- if (scb == NULL) {
+ if (sa == NULL || sa->security_type_changed_cb == NULL) {
+ ERR("sa or callback is NULL");
SOFTAP_UNLOCK;
return;
}
+ int security_type = 0;
g_variant_get(parameters, "(i)", &security_type);
- data = sa->security_type_user_data;
- scb((softap_security_type_e)security_type, data);
+ sa->security_type_changed_cb((softap_security_type_e)security_type, sa->security_type_user_data);
SOFTAP_UNLOCK;
return;
DBG("+");
SOFTAP_LOCK;
- if (user_data == NULL) {
- ERR("parameter(user_data) is NULL");
+ __softap_h *sa = (__softap_h *)user_data;
+ if (sa == NULL || sa->ssid_visibility_changed_cb == NULL) {
+ ERR("sa or callback is NULL");
SOFTAP_UNLOCK;
return;
}
- __softap_h *sa = (__softap_h *)user_data;
- softap_ssid_visibility_changed_cb scb = NULL;
- void *data = NULL;
int visible = 0;
-
- scb = sa->ssid_visibility_changed_cb;
- if (scb == NULL) {
- SOFTAP_UNLOCK;
- DBG("-");
- return;
- }
g_variant_get(parameters, "(i)", &visible);
- data = sa->ssid_visibility_user_data;
- scb(visible, data);
+ sa->ssid_visibility_changed_cb(visible, sa->ssid_visibility_user_data);
SOFTAP_UNLOCK;
DBG("-");
DBG("+");
SOFTAP_LOCK;
- if (user_data == NULL) {
- ERR("parameter(user_data) is NULL");
- SOFTAP_UNLOCK;
- return;
- }
-
__softap_h *sa = (__softap_h *)user_data;
- softap_passphrase_changed_cb pcb = NULL;
- void *data = NULL;
-
- pcb = sa->passphrase_changed_cb;
- if (pcb == NULL) {
+ if (sa == NULL || sa->passphrase_changed_cb == NULL) {
+ ERR("sa or callback is NULL");
SOFTAP_UNLOCK;
return;
}
- data = sa->passphrase_user_data;
-
- pcb(data);
+ sa->passphrase_changed_cb(sa->passphrase_user_data);
SOFTAP_UNLOCK;
DBG("-");
return true;
}
+int __handle_dbus_error(GError *error)
+{
+ if (!error)
+ return SOFTAP_ERROR_NONE;
+
+ ERR("g_dbus_proxy_call_sync failed because %s\n", error->message);
+ return (error->code == G_DBUS_ERROR_ACCESS_DENIED) ?
+ SOFTAP_ERROR_PERMISSION_DENIED : SOFTAP_ERROR_OPERATION_FAILED;
+}
+
+int _softap_enable_dhcp(softap_h softap, char *rangestart, char *rangestop)
+{
+ GVariant *parameters;
+ GError *error = NULL;
+ guint result;
+
+ __softap_h *sa = (__softap_h *)softap;
+ GDBusProxy *proxy = sa->client_bus_proxy;
+
+ if (rangestart == NULL && rangestop == NULL)
+ parameters = g_dbus_proxy_call_sync(proxy, "enable_dhcp",
+ NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+ else
+ parameters = g_dbus_proxy_call_sync(proxy, "enable_dhcp_with_range",
+ g_variant_new("(ss)", rangestart, rangestop),
+ G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
+
+ result = __handle_dbus_error(error);
+ if (result != SOFTAP_ERROR_NONE) {
+ g_error_free(error);
+ sa->dhcp_enabled = FALSE;
+ return result;
+ }
+
+ g_variant_get(parameters, "(u)", &result);
+ g_variant_unref(parameters);
+
+ sa->dhcp_enabled = TRUE;
+ return SOFTAP_ERROR_NONE;
+}
+
API int softap_create(softap_h *softap)
{
DBG("+");
NULL, G_DBUS_CALL_FLAGS_NONE,
-1, sa->cancellable, &error);
- if (error) {
- ERR("g_dbus_proxy_call_sync is failed and error is %s\n", error->message);
- if (error->code == G_DBUS_ERROR_ACCESS_DENIED)
- ret = SOFTAP_ERROR_PERMISSION_DENIED;
- else
- ret = SOFTAP_ERROR_OPERATION_FAILED;
-
+ ret = __handle_dbus_error(error);
+ if (ret != SOFTAP_ERROR_NONE) {
g_error_free(error);
return ret;
}
+
g_variant_get(result, "(a(a{sv}))", &outer_iter);
while (g_variant_iter_loop(outer_iter, "(@a{sv})", &station)) {
parameters = g_dbus_proxy_call_sync(proxy, "get_passphrase",
NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
- if (error) {
- ERR("g_dbus_proxy_call_sync failed because %s\n", error->message);
-
- if (error->code == G_DBUS_ERROR_ACCESS_DENIED)
- ret = SOFTAP_ERROR_PERMISSION_DENIED;
- else
- ret = SOFTAP_ERROR_OPERATION_FAILED;
-
+ ret = __handle_dbus_error(error);
+ if (ret != SOFTAP_ERROR_NONE) {
g_error_free(error);
return ret;
}
parameters = g_dbus_proxy_call_sync(proxy, "push_wps_button",
NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
- if (error) {
- ERR("g_dbus_proxy_call_sync failed because %s\n", error->message);
-
- if (error->code == G_DBUS_ERROR_ACCESS_DENIED)
- ret = SOFTAP_ERROR_PERMISSION_DENIED;
- else
- ret = SOFTAP_ERROR_OPERATION_FAILED;
-
+ ret = __handle_dbus_error(error);
+ if (ret != SOFTAP_ERROR_NONE) {
g_error_free(error);
return ret;
}
parameters = g_dbus_proxy_call_sync(proxy, "set_wps_pin",
g_variant_new("(s)", wps_pin), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
- if (error) {
- ERR("g_dbus_proxy_call_sync failed because %s\n", error->message);
-
- if (error->code == G_DBUS_ERROR_ACCESS_DENIED)
- ret = SOFTAP_ERROR_PERMISSION_DENIED;
- else
- ret = SOFTAP_ERROR_OPERATION_FAILED;
-
+ ret = __handle_dbus_error(error);
+ if (ret != SOFTAP_ERROR_NONE) {
g_error_free(error);
return ret;
}
CHECK_FEATURE_SUPPORTED(SUPPORTED_FEATURE_SOFTAP);
_retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
"parameter(softap) is NULL\n");
-
- __softap_h *sa = (__softap_h *)softap;
- GError *error = NULL;
- GVariant *parameters = NULL;
- GDBusProxy *proxy = sa->client_bus_proxy;
- guint result;
-
- parameters = g_dbus_proxy_call_sync(proxy, "enable_dhcp",
- NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
-
- if (error) {
- ERR("g_dbus_proxy_call_sync failed because %s\n", error->message);
- if (error->code == G_DBUS_ERROR_ACCESS_DENIED)
- result = SOFTAP_ERROR_PERMISSION_DENIED;
- else
- result = SOFTAP_ERROR_OPERATION_FAILED;
-
- g_error_free(error);
- sa->dhcp_enabled = FALSE;
-
- return result;
- }
-
- g_variant_get(parameters, "(u)", &result);
- g_variant_unref(parameters);
-
- sa->dhcp_enabled = TRUE;
-
- return SOFTAP_ERROR_NONE;
+ return _softap_enable_dhcp(softap, NULL, NULL);
}
API int softap_disable_dhcp(softap_h softap)
GError *error = NULL;
GVariant *parameters = NULL;
GDBusProxy *proxy = sa->client_bus_proxy;
- guint result;
+ guint ret;
parameters = g_dbus_proxy_call_sync(proxy, "disable_dhcp",
NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
- if (error) {
- ERR("g_dbus_proxy_call_sync failed because %s\n", error->message);
- if (error->code == G_DBUS_ERROR_ACCESS_DENIED)
- result = SOFTAP_ERROR_PERMISSION_DENIED;
- else
- result = SOFTAP_ERROR_OPERATION_FAILED;
-
+ ret = __handle_dbus_error(error);
+ if (ret != SOFTAP_ERROR_NONE) {
g_error_free(error);
- return result;
+ return ret;
}
- g_variant_get(parameters, "(u)", &result);
+ g_variant_get(parameters, "(u)", &ret);
g_variant_unref(parameters);
sa->dhcp_enabled = FALSE;
parameters = g_dbus_proxy_call_sync(proxy, "get_dhcp_state",
NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
- if (error) {
- ERR("g_dbus_proxy_call_sync failed becuase %s\n", error->message);
-
- if (error->code == G_DBUS_ERROR_ACCESS_DENIED)
- ret = SOFTAP_ERROR_PERMISSION_DENIED;
- else
- ret = SOFTAP_ERROR_OPERATION_FAILED;
- }
+ ret = __handle_dbus_error(error);
+ if (ret != SOFTAP_ERROR_NONE)
+ g_error_free(error);
if (parameters != NULL) {
g_variant_get(parameters, "(b)", &enabled);
_retvm_if(rangestop == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
"parameter(rangestop) is NULL\n");
- GVariant *parameters;
- GError *error = NULL;
- guint result;
-
- __softap_h *sa = (__softap_h *)softap;
- GDBusProxy *proxy = sa->client_bus_proxy;
-
- parameters = g_dbus_proxy_call_sync(proxy, "enable_dhcp_with_range",
- g_variant_new("(ss)", rangestart, rangestop),
- G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
- if (error) {
- ERR("g_dbus_proxy_call_sync failed because %s\n", error->message);
-
- if (error->code == G_DBUS_ERROR_ACCESS_DENIED)
- result = SOFTAP_ERROR_PERMISSION_DENIED;
- else
- result = SOFTAP_ERROR_OPERATION_FAILED;
-
- g_error_free(error);
- sa->dhcp_enabled = FALSE;
-
- return result;
- }
-
- g_variant_get(parameters, "(u)", &result);
- g_variant_unref(parameters);
-
- sa->dhcp_enabled = TRUE;
-
- return SOFTAP_ERROR_NONE;
+ return _softap_enable_dhcp(softap, rangestart, rangestop);
}