* @retval #SOFTAP_ERROR_NOT_SUPPORTED API is not supported
*/
int softap_set_wps_pin(softap_h softap, const char *wps_pin);
+
+/**
+ * @brief Sets vendor specific elements for Beacon and Probe Response frames.
+ * @since_tizen 4.0
+ * @remarks The format for vendor parameter should be a hexadumpt of the raw information elements.
+ * @param[in] softap The softap handle
+ * @param[in] vendor_element The vendor specific elements
+ * @return 0 on success, otherwise negative error value
+ * @retval #SOFTAP_ERROR_NONE Successful
+ * @retval #SOFTAP_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SOFTAP_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SOFTAP_ERROR_NOT_SUPPORTED API is not supported
+ */
+int softap_set_vendor_element(softap_h softap, const char *vendor_element);
+
+/**
+ * @brief Gets vendor specific elements for Beacon and Probe Response frames.
+ * @since_tizen 4.0
+ * @remarks The format for vendor parameter should be a hexadumpt of the raw information elements.
+ * @param[in] softap The softap handle
+ * @param[out] vendor_element The vendor specific elements
+ * @return 0 on success, otherwise negative error value
+ * @retval #SOFTAP_ERROR_NONE Successful
+ * @retval #SOFTAP_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #SOFTAP_ERROR_PERMISSION_DENIED Permission denied
+ * @retval #SOFTAP_ERROR_NOT_SUPPORTED API is not supported
+ */
+int softap_get_vendor_element(softap_h softap, char **vendor_element);
/**
* @}
*/
#define SOFTAP_SSID_MAX_LEN 32 /**< Maximum length of ssid */
#define SOFTAP_KEY_MIN_LEN 8 /**< Minimum length of wifi key */
#define SOFTAP_KEY_MAX_LEN 64 /**< Maximum length of wifi key */
+#define SOFTAP_VENDOR_MAX_LEN 64 /**< Maximum length of vendor element */
#define SOFTAP_HASH_KEY_MAX_LEN 64
#define SOFTAP_MODE_MAX_LEN 10 /**< Maximum length of mode */
/* Settings */
char *ssid;
char passphrase[SOFTAP_KEY_MAX_LEN + 1];
+ char vendor[SOFTAP_VENDOR_MAX_LEN + 1];
bool visibility;
softap_security_type_e sec_type;
} __softap_h;
typedef struct {
char ssid[SOFTAP_SSID_MAX_LEN];
char key[SOFTAP_KEY_MAX_LEN + 1];
+ char vendor[SOFTAP_VENDOR_MAX_LEN + 1];
softap_security_type_e sec_type;
bool visibility;
} _softap_settings_t;
Name: capi-network-softap
Summary: Softap Framework
-Version: 0.0.12
+Version: 0.0.13
Release: 1
Group: System/Network
License: Apache-2.0
else
g_strlcpy(set->key, sa->passphrase, sizeof(set->key));
+ if (strlen(sa->vendor))
+ g_strlcpy(set->vendor, sa->vendor, sizeof(set->vendor));
+
DBG("-");
return SOFTAP_ERROR_NONE;
}
g_dbus_proxy_set_default_timeout(proxy, DBUS_TIMEOUT_INFINITE);
- _softap_settings_t set = {"", "", 0, false};
+ _softap_settings_t set = {"", "", "", 0, false};
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("(ssii)", set.ssid, set.key, set.visibility, set.sec_type),
+ g_variant_new("(sssii)", set.ssid, set.key, set.vendor, set.visibility, set.sec_type),
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};
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("(ssii)", set.ssid, set.key, set.visibility, set.sec_type),
+ g_variant_new("(sssii)", set.ssid, set.key, set.vendor, set.visibility, set.sec_type),
G_DBUS_CALL_FLAGS_NONE, -1, sa->cancellable,
(GAsyncReadyCallback) __settings_reloaded_cb, (gpointer)softap);
return SOFTAP_ERROR_NONE;
}
+
+API int softap_get_vendor_element(softap_h softap, char **vendor_element)
+{
+ CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
+ _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
+ "parameter(softap) is NULL\n");
+ _retvm_if(vendor_element == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
+ "parameter(vendor) is NULL\n");
+
+ __softap_h *sa = (__softap_h *)softap;
+
+ if (strlen(sa->vendor) == 0) {
+ DBG("vendor_element is not set");
+ return SOFTAP_ERROR_NONE;
+ }
+
+ *vendor_element = strdup(sa->vendor);
+ if (*vendor_element == NULL) {
+ ERR("strdup is failed");
+ return SOFTAP_ERROR_OUT_OF_MEMORY;
+ }
+
+ return SOFTAP_ERROR_NONE;
+}
+
+API int softap_set_vendor_element(softap_h softap, const char *vendor_element)
+{
+ CHECK_FEATURE_SUPPORTED(WIFI_FEATURE);
+ _retvm_if(softap == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
+ "parameter(softap) is NULL\n");
+ _retvm_if(vendor_element == NULL, SOFTAP_ERROR_INVALID_PARAMETER,
+ "parameter(vendor_element) is NULL\n");
+
+ __softap_h *sa = (__softap_h *)softap;
+ int vendor_len = 0;
+
+ vendor_len = strlen(vendor_element);
+ if (vendor_len > SOFTAP_VENDOR_MAX_LEN) {
+ ERR("parameter(vendor) is too long");
+ return SOFTAP_ERROR_INVALID_PARAMETER;
+ }
+
+ g_strlcpy(sa->vendor, vendor_element, sizeof(sa->vendor));
+
+ return SOFTAP_ERROR_NONE;
+}
char *ip_address = NULL;
char *gateway_address = NULL;
char *subnet_mask = NULL;
+ char *vendor = NULL;
bool visible = 0;
softap_security_type_e security_type = SOFTAP_SECURITY_TYPE_NONE;
if (ret != SOFTAP_ERROR_NONE)
return 0;
+ ret = softap_get_vendor_element(sa, &vendor);
+ if (ret != SOFTAP_ERROR_NONE)
+ return 0;
+
printf("* SSID: %s\n", ssid);
printf("* SSID visibility: %d\n", visible);
printf("* MAC address: %s\n", mac_address);
printf("* Network Interface: %s\n", interface_name);
printf("* IP address: %s\n", ip_address);
- printf("* gateway_address: %s\n", gateway_address);
- printf("* subnet_mask: %s\n", subnet_mask);
+ printf("* Ggateway address: %s\n", gateway_address);
+ printf("* subnetmask: %s\n", subnet_mask);
+ printf("* vendor element: %s\n", vendor);
- if (ssid) g_free(ssid);
+ if (ssid) g_free(ssid);
if (passphrase) g_free(passphrase);
- if (mac_address) g_free(mac_address);
+ if (mac_address) g_free(mac_address);
if (interface_name) g_free(interface_name);
- if (ip_address) g_free(ip_address);
- if (gateway_address) g_free(gateway_address);
- if (subnet_mask) g_free(subnet_mask);
+ if (ip_address) g_free(ip_address);
+ if (gateway_address) g_free(gateway_address);
+ if (subnet_mask) g_free(subnet_mask);
+ if (vendor) g_free(vendor);
return 1;
}
return 1;
}
+static int test_softap_set_vendor_element(void)
+{
+ int ret;
+ char vendor[65];
+
+ printf("Input vendor elements(hex): ");
+ ret = scanf("%64s", vendor);
+
+ ret = softap_set_vendor_element(sa, vendor);
+ 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("8 - Set Soft AP SSID visibility\n");
printf("9 - Set Soft AP security type\n");
printf("a - Set Soft AP passpharse\n");
- printf("b - Get Soft AP client information\n");
- printf("c - SoftAP reload settings\n");
- printf("d - Push WPS Button (WPS PBC)\n");
- printf("e - Set WPS PIN\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("0 - Exit \n");
printf("ENTER - Show options menu.......\n");
}
rv = test_softap_set_passphrase();
break;
case 'b':
- rv = test_softap_get_client_info();
+ rv = test_softap_set_vendor_element();
break;
case 'c':
- rv = test_softap_reload_settings();
+ rv = test_softap_get_client_info();
break;
case 'd':
- rv = test_softap_push_wps_button();
+ rv = test_softap_reload_settings();
break;
case 'e':
+ rv = test_softap_push_wps_button();
+ break;
+ case 'f':
rv = test_softap_set_wps_pin();
break;
}