* @retval #SOFTAP_ERROR_NOT_SUPPORTED API is not supported
*/
int softap_get_vendor_element(softap_h softap, char **vendor_element);
+
+/**
+ * @brief Sets the channel for Soft AP.
+ * @details If channel is not set, Wi-Fi sets default channel.
+ * @since_tizen 4.0
+ * @param[in] softap The softap handle
+ * @param[in] channel The channel number
+ * @return 0 on success, otherwise negative error value
+ * @retval #SOFTAP_ERROR_NONE Successful
+ * @retval #SOFTAP_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SOFTAP_ERROR_NOT_SUPPORTED API is not supported
+ */
+int softap_set_channel(softap_h softap, int channel);
+
+/**
+ * @brief Gets the channel for Soft AP.
+ * details If channel is not set, it gets default channel.
+ * @since_tizen 4.0
+ * @param[in] softap The softap handle
+ * @param[out] channel The channel number
+ * @return 0 on success, otherwise negative error value
+ * @retval #SOFTAP_ERROR_NONE Successful
+ * @retval #SOFTAP_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SOFTAP_ERROR_NOT_SUPPORTED API is not supported
+ * @see softap_set_channel()
+ */
+int softap_get_channel(softap_h softap, int *channel);
+
/**
* @}
*/
return SOFTAP_ERROR_NONE;
}
+static softap_error_e __set_channel(int channel)
+{
+ if (vconf_set_int(VCONFKEY_SOFTAP_CHANNEL, channel) < 0) {
+ ERR("vconf_set_int is failed\n");
+ return SOFTAP_ERROR_OPERATION_FAILED;
+ }
+
+ return SOFTAP_ERROR_NONE;
+}
+
+static softap_error_e __get_channel(int *channel)
+{
+ if (channel == NULL) {
+ ERR("Invalid param\n");
+ return SOFTAP_ERROR_INVALID_PARAMETER;
+ }
+
+ if (vconf_get_int(VCONFKEY_SOFTAP_CHANNEL, channel) < 0) {
+ ERR("vconf_get_int is failed\n");
+ return SOFTAP_ERROR_OPERATION_FAILED;
+ }
+
+ return SOFTAP_ERROR_NONE;
+}
+
static int __get_initial_passphrase(char *passphrase, unsigned int size)
{
if (passphrase == NULL ||
g_strlcpy(set->ssid, sa->ssid, sizeof(set->ssid));
set->sec_type = sa->sec_type;
set->visibility = sa->visibility;
+ set->channel = sa->channel;
if (set->sec_type == SOFTAP_SECURITY_TYPE_NONE)
g_strlcpy(set->key, "", sizeof(set->key));
__softap_h *sa = NULL;
GError *error = NULL;
char ssid[SOFTAP_SSID_MAX_LEN + 1] = {0, };
+ int channel;
sa = (__softap_h *) malloc(sizeof(__softap_h));
return SOFTAP_ERROR_OPERATION_FAILED;
}
- if (__get_initial_passphrase(sa->passphrase, sizeof(sa->passphrase)) == 0) {
- ERR("Fail to generate random passphrase!!");
+ sa->ssid = g_strdup(ssid);
+ if (sa->ssid == NULL) {
+ ERR("Fail to get default ssid!!");
free(sa);
return SOFTAP_ERROR_OPERATION_FAILED;
}
- sa->ssid = g_strdup(ssid);
- if (sa->ssid == NULL) {
- ERR("Fail to get default ssid!!");
+ if (__get_initial_passphrase(sa->passphrase, sizeof(sa->passphrase)) == 0) {
+ ERR("Fail to generate random passphrase!!");
free(sa);
return SOFTAP_ERROR_OPERATION_FAILED;
}
+ if (__get_channel(&channel) != SOFTAP_ERROR_NONE) {
+ ERR("Fail to get saved channel!!");
+ if (__set_channel(1) != SOFTAP_ERROR_NONE) {
+ ERR("Fail to set channel");
+ free(sa);
+ return SOFTAP_ERROR_OPERATION_FAILED;
+ }
+ channel = 1;
+ }
+
+ sa->channel = channel;
+
/* GDbus Setting */
#if !GLIB_CHECK_VERSION(2, 36, 0)
g_type_init();
g_dbus_proxy_set_default_timeout(proxy, DBUS_TIMEOUT_INFINITE);
- _softap_settings_t set = {"", "", "", 0, false};
+ _softap_settings_t set = {"", "", "", 0, false, 0};
ret = __prepare_softap_settings(softap, &set);
if (ret != SOFTAP_ERROR_NONE) {
g_dbus_connection_signal_unsubscribe(connection, sigs[E_SIGNAL_SOFTAP_ON].sig_id);
g_dbus_proxy_call(proxy, "enable",
- g_variant_new("(sssii)", set.ssid, set.key, set.vendor, set.visibility, set.sec_type),
+ g_variant_new("(sssiii)", set.ssid, set.key, set.vendor, set.visibility, set.sec_type, set.channel),
G_DBUS_CALL_FLAGS_NONE, -1, sa->cancellable, (GAsyncReadyCallback) __enabled_cfm_cb, (gpointer)softap);
g_dbus_proxy_set_default_timeout(proxy, DBUS_TIMEOUT_USE_DEFAULT);
"parameter(callback) is NULL\n");
__softap_h *sa = (__softap_h *)softap;
- _softap_settings_t set = {"", "", "", 0, false};
+ _softap_settings_t set = {"", "", "", 0, false, 0};
GDBusProxy *proxy = sa->client_bus_proxy;
int ret = 0;
sa->settings_reloaded_user_data = user_data;
g_dbus_proxy_call(proxy, "reload_settings",
- g_variant_new("(sssii)", set.ssid, set.key, set.vendor, set.visibility, set.sec_type),
+ g_variant_new("(sssiii)", set.ssid, set.key, set.vendor, set.visibility, set.sec_type, set.channel),
G_DBUS_CALL_FLAGS_NONE, -1, sa->cancellable,
(GAsyncReadyCallback) __settings_reloaded_cb, (gpointer)softap);
ret = __set_security_type(type);
if (ret == SOFTAP_ERROR_NONE) {
-
__send_dbus_signal(sa->client_bus,
SIGNAL_NAME_SECURITY_TYPE_CHANGED, sec_str);
}
return SOFTAP_ERROR_NONE;
}
+
+API int softap_set_channel(softap_h softap, int channel)
+{
+ CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
+ _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
+ "parameter(softap) is NULL\n");
+
+ __softap_h *sa = (__softap_h *) softap;
+ sa->channel = channel;
+
+ return __set_channel(channel);
+}
+
+
+API int softap_get_channel(softap_h softap, int *channel)
+{
+ CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
+ _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
+ "parameter(softap) is NULL\n");
+ _retvm_if(channel == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
+ "parameter(channel) is NULL\n");
+
+ return __get_channel(channel);
+}
+
char *vendor = NULL;
bool visible = 0;
softap_security_type_e security_type = SOFTAP_SECURITY_TYPE_NONE;
+ int channel;
ret = softap_get_ssid(sa, &ssid);
if (ret != SOFTAP_ERROR_NONE)
if (ret != SOFTAP_ERROR_NONE)
return 0;
+ ret = softap_get_channel(sa, &channel);
+ if (ret != SOFTAP_ERROR_NONE)
+ return 0;
+
ret = softap_get_mac_address(sa, &mac_address);
if (ret != SOFTAP_ERROR_NONE)
return 0;
printf("* SSID visibility: %d\n", visible);
printf("* Security type: %d\n", security_type);
printf("* Passphrase: %s\n", passphrase);
+ printf("* Channel: %d\n", channel);
printf("* MAC address: %s\n", mac_address);
printf("* Network Interface: %s\n", interface_name);
printf("* IP address: %s\n", ip_address);
return 1;
}
+static int test_softap_set_channel(void)
+{
+ int ret;
+ int channel;
+
+ printf("Input channel for Soft AP: ");
+ ret = scanf("%9d", &channel);
+ if (ret < 0) {
+ printf("scanf is failed!!\n");
+ return -1;
+ }
+
+ ret = softap_set_channel(sa, channel);
+ if (ret != SOFTAP_ERROR_NONE)
+ return 0;
+
+ return 1;
+}
+
static int test_softap_reload_settings(void)
{
int ret = softap_reload_settings(sa, __settings_reloaded_cb, NULL);
printf("9 - Set Soft AP security type\n");
printf("a - Set Soft AP passpharse\n");
printf("b - Set Soft AP vendor element\n");
- printf("c - Get Soft AP client information\n");
- printf("d - SoftAP reload settings\n");
- printf("e - Push WPS Button (WPS PBC)\n");
- printf("f - Set WPS PIN\n");
+ printf("c - Set Soft AP channel\n");
+ printf("d - Get Soft AP client information\n");
+ printf("e - SoftAP reload settings\n");
+ printf("f - Push WPS Button (WPS PBC)\n");
+ printf("g - Set WPS PIN\n");
printf("0 - Exit \n");
printf("ENTER - Show options menu.......\n");
}
rv = test_softap_set_vendor_element();
break;
case 'c':
- rv = test_softap_get_client_info();
+ rv = test_softap_set_channel();
break;
case 'd':
- rv = test_softap_reload_settings();
+ rv = test_softap_get_client_info();
break;
case 'e':
- rv = test_softap_push_wps_button();
+ rv = test_softap_reload_settings();
break;
case 'f':
+ rv = test_softap_push_wps_button();
+ break;
+ case 'g':
rv = test_softap_set_wps_pin();
break;
}