Added set/get vendor element API 93/138893/3 accepted/tizen/4.0/unified/20170816.010647 accepted/tizen/unified/20170724.020254 submit/tizen/20170717.234028 submit/tizen/20170721.063342 submit/tizen/20170721.063811 submit/tizen_4.0/20170811.094300
authorSeonah Moon <seonah1.moon@samsung.com>
Fri, 14 Jul 2017 07:06:37 +0000 (16:06 +0900)
committerseonah moon <seonah1.moon@samsung.com>
Fri, 14 Jul 2017 07:08:28 +0000 (07:08 +0000)
Change-Id: I0fedbc68ab6e06bda82ddf8bf5d5ac5b8b815ae6
Signed-off-by: Seonah Moon <seonah1.moon@samsung.com>
include/softap.h
include/softap_private.h
packaging/capi-network-softap.spec
src/softap.c
test/softap_test.c

index d3d3f851efef269f34ec464d1daf51b5b1f713ef..696c8e3305042c75b6b3adb65193e3140b082514 100644 (file)
@@ -727,6 +727,34 @@ int softap_push_wps_button(softap_h softap);
  * @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);
 /**
  * @}
  */
index 7c7e5ecaa54b928205cd9892ba4f652fff217ce0..f971e6e7d6600565059191938fc4832bc8a5f32e 100644 (file)
@@ -180,6 +180,7 @@ typedef enum {
 #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 */
@@ -234,6 +235,7 @@ typedef struct {
        /* 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;
@@ -248,6 +250,7 @@ typedef struct {
 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;
index 01aa0db5f557e359b6e6187ad1352a4be694cace..c3d50fdd06f36174a59f7556a7662cc3deab42ae 100644 (file)
@@ -1,6 +1,6 @@
 Name:          capi-network-softap
 Summary:       Softap Framework
-Version:       0.0.12
+Version:       0.0.13
 Release:       1
 Group:         System/Network
 License:       Apache-2.0
index c4bccce17fede26a9df43084fcdb0a9b9a9f09d4..f7309b579f4714f8509370e77d73605475ffe2cf 100755 (executable)
@@ -636,6 +636,9 @@ static int __prepare_softap_settings(softap_h softap, _softap_settings_t *set)
        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;
 }
@@ -834,7 +837,7 @@ API int softap_enable(softap_h softap)
 
         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) {
@@ -845,7 +848,7 @@ API int softap_enable(softap_h softap)
        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);
@@ -884,7 +887,7 @@ API int softap_reload_settings(softap_h softap, softap_settings_reloaded_cb call
                        "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;
 
@@ -905,7 +908,7 @@ API int softap_reload_settings(softap_h softap, softap_settings_reloaded_cb call
        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);
 
@@ -1628,3 +1631,49 @@ API int softap_set_wps_pin(softap_h softap, const char *wps_pin)
 
        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;
+}
index 087bdb1cbdd4e5a4495c53e319a9a9be33c38756..aeeade91cd8d3abeaa2cf26495676ac5e05863fb 100755 (executable)
@@ -348,6 +348,7 @@ static int test_softap_get_settings(void)
        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;
 
@@ -387,6 +388,10 @@ static int test_softap_get_settings(void)
        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);
@@ -395,16 +400,18 @@ static int test_softap_get_settings(void)
        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;
 }
@@ -485,6 +492,21 @@ static int test_softap_set_passphrase(void)
        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);
@@ -580,10 +602,11 @@ gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
                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");
        }
@@ -620,15 +643,18 @@ gboolean test_thread(GIOChannel *source, GIOCondition condition, gpointer data)
                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;
        }