From 1fdbd4c1ee70560f00040e5218cf492f9b3e84c0 Mon Sep 17 00:00:00 2001 From: Mohit Ghuley Date: Mon, 7 Nov 2016 11:46:17 +0530 Subject: [PATCH] [7570] wlbt : Adding support for android_net_wifi_set_Country_Code_Hal. Adding support for setting the country code in Wifi HAL. Change-Id: I5517158cd2fa95f088e902a4b60c6dabdae29558 SCSC-Bug-Id:SSB-22869 Signed-off-by: Mohit Ghuley --- common.h | 3 ++- wifi_hal.cpp | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/common.h b/common.h index b978f43..6799196 100755 --- a/common.h +++ b/common.h @@ -87,7 +87,8 @@ typedef enum { SLSI_NL80211_VENDOR_SUBCMD_LLS_SET_INFO, SLSI_NL80211_VENDOR_SUBCMD_LLS_GET_INFO, SLSI_NL80211_VENDOR_SUBCMD_LLS_CLEAR_INFO, - SLSI_NL80211_VENDOR_SUBCMD_GET_FEATURE_SET + SLSI_NL80211_VENDOR_SUBCMD_GET_FEATURE_SET, + SLSI_NL80211_VENDOR_SUBCMD_SET_COUNTRY_CODE } WIFI_SUB_COMMAND; typedef enum { diff --git a/wifi_hal.cpp b/wifi_hal.cpp index c984538..28512ed 100755 --- a/wifi_hal.cpp +++ b/wifi_hal.cpp @@ -37,6 +37,7 @@ #define FEATURE_SET 0 #define FEATURE_SET_MATRIX 1 #define ATTR_NODFS_VALUE 3 +#define ATTR_COUNTRY_CODE 4 static void internal_event_handler(wifi_handle handle, int events); static int internal_no_seq_check(nl_msg *msg, void *arg); @@ -130,6 +131,7 @@ wifi_error init_wifi_vendor_hal_func_table(wifi_hal_fn *fn) fn->wifi_set_link_stats = wifi_set_link_stats; fn->wifi_get_link_stats = wifi_get_link_stats; fn->wifi_clear_link_stats = wifi_clear_link_stats; + fn->wifi_set_country_code = wifi_set_country_code; return WIFI_SUCCESS; } @@ -728,6 +730,35 @@ public: }; +class SetCountryCodeCommand : public WifiCommand { +private: + const char *mCountryCode; +public: + SetCountryCodeCommand(wifi_interface_handle handle, const char *country_code) + : WifiCommand(handle, 0) { + mCountryCode = country_code; + } + virtual int create() { + int ret; + + ret = mMsg.create(GOOGLE_OUI, SLSI_NL80211_VENDOR_SUBCMD_SET_COUNTRY_CODE); + if (ret < 0) { + ALOGE("Can't create message to send to driver - %d", ret); + return ret; + } + + nlattr *data = mMsg.attr_start(NL80211_ATTR_VENDOR_DATA); + ret = mMsg.put_string(ATTR_COUNTRY_CODE, mCountryCode); + if (ret < 0) { + return ret; + } + + mMsg.attr_end(data); + return WIFI_SUCCESS; + + } +}; + class GetFeatureSetCommand : public WifiCommand { private: @@ -938,4 +969,10 @@ wifi_error wifi_get_supported_feature_set(wifi_interface_handle handle, feature_ return (wifi_error) command.requestResponse(); } +wifi_error wifi_set_country_code(wifi_interface_handle handle, const char *country_code) +{ + SetCountryCodeCommand command(handle, country_code); + return (wifi_error) command.requestResponse(); +} + ///////////////////////////////////////////////////////////////////////////// -- 2.20.1