OSDN Git Service

am 5476383b: am 4b3af3f6: Add scan-channels command support (http://b/2213691)
authorDmitry Shmidt <dimitrysh@google.com>
Thu, 12 Nov 2009 01:31:20 +0000 (17:31 -0800)
committerAndroid Git Automerger <android-git-automerger@android.com>
Thu, 12 Nov 2009 01:31:20 +0000 (17:31 -0800)
Merge commit '5476383b6e5ac5baec1cae3e88a1df5d214fb16d' into eclair-mr2-plus-aosp

* commit '5476383b6e5ac5baec1cae3e88a1df5d214fb16d':
  Add scan-channels command support (http://b/2213691)

driver_wext.c
driver_wext.h

index ed5c639..6e33de7 100644 (file)
@@ -2498,7 +2498,18 @@ int wpa_driver_wext_get_version(struct wpa_driver_wext_data *drv)
 }
 
 #ifdef ANDROID
-int wpa_driver_priv_driver_cmd( void *priv, char *cmd, char *buf, size_t buf_len )
+static char *wpa_driver_get_country_code(int channels)
+{
+       char *country = "US"; /* WEXT_NUMBER_SCAN_CHANNELS_FCC */
+
+       if (channels == WEXT_NUMBER_SCAN_CHANNELS_ETSI)
+               country = "EU";
+       else if( channels == WEXT_NUMBER_SCAN_CHANNELS_MKK1)
+               country = "JP";
+       return country;
+}
+
+static int wpa_driver_priv_driver_cmd( void *priv, char *cmd, char *buf, size_t buf_len )
 {
        struct wpa_driver_wext_data *drv = priv;
        struct wpa_supplicant *wpa_s = (struct wpa_supplicant *)(drv->ctx);
@@ -2518,7 +2529,13 @@ int wpa_driver_priv_driver_cmd( void *priv, char *cmd, char *buf, size_t buf_len
                        ret = -1;
                return ret;
        }
+       else if( os_strncasecmp(cmd, "SCAN-CHANNELS", 13) == 0 ) {
+               int no_of_chan;
 
+               no_of_chan = atoi(cmd + 13);
+               os_snprintf(cmd, MAX_DRV_CMD_SIZE, "COUNTRY %s",
+                       wpa_driver_get_country_code(no_of_chan));
+       }
        os_memset(&iwr, 0, sizeof(iwr));
        os_strncpy(iwr.ifr_name, drv->ifname, IFNAMSIZ);
        os_memcpy(buf, cmd, strlen(cmd) + 1);
index b93ddd5..4804ae5 100644 (file)
@@ -46,7 +46,12 @@ int wpa_driver_wext_set_operstate(void *priv, int state);
 int wpa_driver_wext_get_version(struct wpa_driver_wext_data *drv);
 
 #ifdef ANDROID
+#define WEXT_NUMBER_SCAN_CHANNELS_FCC  11
+#define WEXT_NUMBER_SCAN_CHANNELS_ETSI 13
+#define WEXT_NUMBER_SCAN_CHANNELS_MKK1 14
+
 #define WPA_DRIVER_WEXT_WAIT_US                400000
+#define MAX_DRV_CMD_SIZE               248
 #endif
 
 #endif /* DRIVER_WEXT_H */