if (!g_strcmp0(key, "service_mac")) {
g_variant_get(var, "&s", &mac_str);
if (mac_str == NULL)
- memset(prov_params->session_mac, 0, sizeof(prov_params->service_mac));
+ memset(prov_params->service_mac, 0, sizeof(prov_params->service_mac));
else
macaddr_atoe(mac_str, prov_params->service_mac);
} else if (!g_strcmp0(key, "adv_id")) {
if (!g_strcmp0(key, "service_mac")) {
g_variant_get(var, "&s", &mac_str);
if (mac_str == NULL)
- memset(prov_params->session_mac, 0, sizeof(prov_params->service_mac));
+ memset(prov_params->service_mac, 0, sizeof(prov_params->service_mac));
else
macaddr_atoe(mac_str, prov_params->service_mac);
} else if (!g_strcmp0(key, "adv_id")) {
#endif
#define COUNTRY_CODE_FILE tzplatform_mkpath(TZ_SYS_RO_ETC, "wifi-direct/ccode.conf")
+#define WFD_MANGER_CONF_FILE tzplatform_mkpath(TZ_SYS_RO_ETC, "wifi-direct/wifi-direct-manager.conf")
+#define WFD_CONF_GROUP_NAME "wfd-manager"
+
+enum wfd_util_conf_key {
+ WFD_CONF_ON_DEMAND,
+ WFD_CONF_CONNECTION_AGENT,
+ WFD_CONF_IP_OVER_EAPOL,
+ WFD_CONF_MAX,
+};
+
+struct key_value {
+ int num;
+ const char *key;
+ char *value;
+};
+
+static GKeyFile *__load_key_file()
+{
+ __WDS_LOG_FUNC_ENTER__;
+ GKeyFile *key_file = NULL;
+ GError *error = NULL;
+
+ key_file = g_key_file_new();
+ if (!g_key_file_load_from_file(key_file, WFD_MANGER_CONF_FILE, 0, &error)) {
+ WDS_LOGE("Unable to load %s: %s", WFD_MANGER_CONF_FILE, error->message);
+ g_clear_error(&error);
+ g_key_file_free(key_file);
+ key_file = NULL;
+ }
+
+ __WDS_LOG_FUNC_EXIT__;
+ return key_file;
+}
+
+
+static void __load_wfd_config(GKeyFile *key_file, struct key_value *conf_key_val)
+{
+ __WDS_LOG_FUNC_ENTER__;
+ GError *error = NULL;
+ int i = 0;
+ if (!conf_key_val) {
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+ }
+
+ key_file = __load_key_file();
+ if (!key_file) {
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+ }
+
+ for (i = 0; i < WFD_CONF_MAX; i++) {
+ conf_key_val[i].value = g_key_file_get_string(key_file,
+ WFD_CONF_GROUP_NAME, conf_key_val[i].key, &error);
+ if (!conf_key_val[i].value) {
+ WDS_LOGE("Unable to load %s : %s", conf_key_val[i].key, error->message);
+ g_clear_error(&error);
+
+ } else {
+ WDS_LOGD("key [%s] value [%s]\n",
+ conf_key_val[i].key, conf_key_val[i].value);
+ }
+ if (conf_key_val[i].value && strlen(conf_key_val[i].value) == 0) {
+ g_free(conf_key_val[i].value);
+ conf_key_val[i].value = NULL;
+ }
+ }
+
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
+
+static void __unload_wfd_config(GKeyFile *key_file, struct key_value *conf_key_val)
+{
+ __WDS_LOG_FUNC_ENTER__;
+ int i = 0;
+ if (!key_file || !conf_key_val) {
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+ }
+
+ for (i = 0; i < WFD_CONF_MAX; i++) {
+ g_free(conf_key_val[i].value);
+ }
+
+ g_key_file_free(key_file);
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
+
+void wfd_util_load_wfd_conf(wfd_manager_s * manager)
+{
+ __WDS_LOG_FUNC_ENTER__;
+
+ GKeyFile *key_file = NULL;
+ struct key_value wfd_conf[] = {
+ {WFD_CONF_ON_DEMAND, "on_demand", NULL},
+ {WFD_CONF_CONNECTION_AGENT, "connection_agent", NULL},
+ {WFD_CONF_IP_OVER_EAPOL, "ip_over_eapol", NULL},
+ {WFD_CONF_MAX, NULL, NULL},
+ };
+
+ if (!manager) {
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+ }
+
+ __load_wfd_config(key_file, wfd_conf);
+
+ if (wfd_conf[WFD_CONF_ON_DEMAND].value &&
+ g_strcmp0(wfd_conf[WFD_CONF_ON_DEMAND].value, "yes") == 0)
+ manager->is_on_demand = true;
+ else
+ manager->is_on_demand = false;
+
+ if (wfd_conf[WFD_CONF_CONNECTION_AGENT].value &&
+ g_strcmp0(wfd_conf[WFD_CONF_CONNECTION_AGENT].value, "yes") == 0)
+ manager->is_connection_agent = true;
+ else
+ manager->is_connection_agent = false;
+
+ if (wfd_conf[WFD_CONF_IP_OVER_EAPOL].value &&
+ g_strcmp0(wfd_conf[WFD_CONF_IP_OVER_EAPOL].value, "yes") == 0)
+ manager->is_ip_over_eapol = true;
+ else
+ manager->is_ip_over_eapol = false;
+
+ __unload_wfd_config(key_file, wfd_conf);
+
+ __WDS_LOG_FUNC_EXIT__;
+ return;
+}
static int _txt_to_mac(char *txt, unsigned char *mac)
{
static bool __is_wifi_direct_display_feature_supported()
{
+ __WDS_LOG_FUNC_ENTER__;
bool supported;
__check_feature_supported(WIFI_DIRECT_DISPLAY_FEATURE, &supported);
+ __WDS_LOG_FUNC_EXIT__;
return supported;
}
static bool __is_wifi_direct_service_discovery_feature_supported()
{
+ __WDS_LOG_FUNC_ENTER__;
bool supported;
__check_feature_supported(WIFI_DIRECT_SERVICE_DISCOVERY_FEATURE, &supported);
+ __WDS_LOG_FUNC_EXIT__;
return supported;
}
static bool __is_asp_feature_supported()
{
+ __WDS_LOG_FUNC_ENTER__;
bool supported;
__check_feature_supported(ASP_FEATURE, &supported);
+ __WDS_LOG_FUNC_EXIT__;
return supported;
}
static bool __is_tethering_wifi_feature_supported()
{
+ __WDS_LOG_FUNC_ENTER__;
bool supported;
__check_feature_supported(TETHERING_WIFI_FEATURE, &supported);
+ __WDS_LOG_FUNC_EXIT__;
return supported;
}
static bool __is_tethering_wifi_direct_feature_supported()
{
+ __WDS_LOG_FUNC_ENTER__;
bool supported;
__check_feature_supported(TETHERING_WIFI_DIRECT_FEATURE, &supported);
+ __WDS_LOG_FUNC_EXIT__;
return supported;
}
-void wfd_util_check_features()
+void wfd_util_check_features(wfd_manager_s * manager)
{
__WDS_LOG_FUNC_ENTER__;
- wfd_manager_s * manager = NULL;
- manager = wfd_get_manager();
- if (!manager)
+ if (!manager) {
+ __WDS_LOG_FUNC_EXIT__;
return;
+ }
manager->is_on_demand_supported = TRUE;
else
manager->is_tethering_wifi_direct_supported = FALSE;
+ __WDS_LOG_FUNC_EXIT__;
return;
}