From b1c4cb77522f80adbcd0fe8341b346de8b71ce1b Mon Sep 17 00:00:00 2001
From: Pawel Andruszkiewicz
Date: Fri, 24 Apr 2015 16:10:02 +0200
Subject: [PATCH] [SystemInfo] Added SystemInfoEthernetNetwork property.
[Verification] Code compiles, TCT pass rate 100%.
Change-Id: I2f5346ec62a438650642ed21534bf1b8916a3751
Signed-off-by: Pawel Andruszkiewicz
---
src/systeminfo/systeminfo-utils.cpp | 313 ++++++++++++++++++++------
src/systeminfo/systeminfo-utils.h | 4 +
src/systeminfo/systeminfo.gyp | 2 -
src/systeminfo/systeminfo_api.js | 34 +++
src/systeminfo/systeminfo_instance.cc | 22 ++
5 files changed, 310 insertions(+), 65 deletions(-)
diff --git a/src/systeminfo/systeminfo-utils.cpp b/src/systeminfo/systeminfo-utils.cpp
index cf20b232..841c722e 100644
--- a/src/systeminfo/systeminfo-utils.cpp
+++ b/src/systeminfo/systeminfo-utils.cpp
@@ -40,44 +40,25 @@
#include "common/platform_exception.h"
#include "common/dbus_operation.h"
-//Hardcoded values for Kiran Device
-#define FEATURE_OPTIONAL_TELEPHONY 1
-#define FEATURE_OPTIONAL_BT 1
-#define ENABLE_KIRAN 1
-#define FEATURE_OPTIONAL_WI_FI 1
+// TODO:: hardcoded value, only for IsBluetoothAlwaysOn
#define PROFILE_MOBILE 1
-#define DUID_KEY_STRING 28
-#define DUID_BUFFER_SIZE 100
-#define SEED_LENGTH 16
-#define CRYPT_KEY_SIZE 8
-
-#define TAPI_HANDLE_MAX 2
-#define DEFAULT_PROPERTY_COUNT 1
-
-#ifdef FEATURE_OPTIONAL_WI_FI
-#include
-#endif
-
-#ifdef FEATURE_OPTIONAL_TELEPHONY
-#include
-#endif
-
-#ifdef FEATURE_OPTIONAL_BT
-#include
-#endif
-
-
namespace extension {
namespace systeminfo {
namespace {
+
const std::string MEMORY_STATE_NORMAL = "NORMAL";
const std::string MEMORY_STATE_WARNING = "WARNING";
const int MEMORY_TO_BYTE = 1024;
const int BASE_GATHERING_INTERVAL = 100;
const double DISPLAY_INCH_TO_MILLIMETER = 2.54;
-}
+
+const int kTapiMaxHandle = 2;
+const int kDefaultPropertyCount = 1;
+
+} // namespace
+
using namespace common;
//Callback functions declarations
@@ -439,7 +420,7 @@ long SimDetailsManager::GetSimCount(TapiHandle **tapi_handle){
}
} else {
LoggerE("Failed to get cp list");
- sim_count_ = TAPI_HANDLE_MAX;
+ sim_count_ = kTapiMaxHandle;
}
g_strfreev(cp_list);
}
@@ -487,6 +468,9 @@ class SystemInfoListeners {
PlatformResult RegisterWifiNetworkListener(const SysteminfoUtilsCallback& callback,
SysteminfoInstance& instance);
PlatformResult UnregisterWifiNetworkListener();
+ PlatformResult RegisterEthernetNetworkListener(const SysteminfoUtilsCallback& callback,
+ SysteminfoInstance& instance);
+ PlatformResult UnregisterEthernetNetworkListener();
PlatformResult RegisterCellularNetworkListener(const SysteminfoUtilsCallback& callback,
SysteminfoInstance& instance);
PlatformResult UnregisterCellularNetworkListener();
@@ -533,6 +517,7 @@ class SystemInfoListeners {
static PlatformResult UnregisterVconfCallback(const char *in_key, vconf_callback_fn cb);
PlatformResult RegisterIpChangeCallback(SysteminfoInstance& instance);
PlatformResult UnregisterIpChangeCallback();
+ bool IsIpChangeCallbackInvalid();
void InitTapiHandles();
guint m_cpu_event_id;
@@ -553,12 +538,13 @@ class SystemInfoListeners {
SysteminfoUtilsCallback m_locale_listener;
SysteminfoUtilsCallback m_network_listener;
SysteminfoUtilsCallback m_wifi_network_listener;
+ SysteminfoUtilsCallback m_ethernet_network_listener;
SysteminfoUtilsCallback m_cellular_network_listener;
SysteminfoUtilsCallback m_peripheral_listener;
SysteminfoUtilsCallback m_memory_listener;
SysteminfoUtilsCallback m_camera_flash_listener;
- TapiHandle *m_tapi_handles[TAPI_HANDLE_MAX+1];
+ TapiHandle *m_tapi_handles[kTapiMaxHandle+1];
//for ip change callback
connection_h m_connection_handle;
//! Sensor handle for DeviceOrientation purposes
@@ -582,6 +568,7 @@ SystemInfoListeners::SystemInfoListeners():
m_locale_listener(nullptr),
m_network_listener(nullptr),
m_wifi_network_listener(nullptr),
+ m_ethernet_network_listener(nullptr),
m_cellular_network_listener(nullptr),
m_peripheral_listener(nullptr),
m_memory_listener(nullptr),
@@ -892,14 +879,17 @@ PlatformResult SystemInfoListeners::UnregisterNetworkListener()
PlatformResult SystemInfoListeners::RegisterWifiNetworkListener(const SysteminfoUtilsCallback& callback,
SysteminfoInstance& instance)
{
+ LoggerD("Entered");
+
+ if (IsIpChangeCallbackInvalid()) {
+ PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
+ CHECK_LISTENER_ERROR(RegisterIpChangeCallback(instance));
+ LoggerD("Registered IP change listener");
+ } else {
+ LoggerD("No need to register IP listener on platform, already registered");
+ }
+
if (nullptr == m_wifi_network_listener) {
- if (nullptr == m_cellular_network_listener){
- //register if there is no callback both for wifi and cellular
- PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
- CHECK_LISTENER_ERROR(RegisterIpChangeCallback(instance))
- } else {
- LoggerD("No need to register ip listener on platform, already registered");
- }
LoggerD("Added callback for WIFI_NETWORK");
m_wifi_network_listener = callback;
}
@@ -908,29 +898,73 @@ PlatformResult SystemInfoListeners::RegisterWifiNetworkListener(const Systeminfo
PlatformResult SystemInfoListeners::UnregisterWifiNetworkListener()
{
- //unregister if is wifi callback, but no cellular callback
- if (nullptr != m_wifi_network_listener && nullptr == m_cellular_network_listener) {
+ LoggerD("Entered");
+
+ m_wifi_network_listener = nullptr;
+
+ if (IsIpChangeCallbackInvalid()) {
PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
- CHECK_LISTENER_ERROR(UnregisterIpChangeCallback())
- LoggerD("Removed callback for WIFI_NETWORK");
+ CHECK_LISTENER_ERROR(UnregisterIpChangeCallback());
+ LoggerD("Removed IP change listener");
} else {
- LoggerD("Removed callback for WIFI_NETWORK, but cellular listener still works");
+ LoggerD("Removed callback for WIFI_NETWORK, but IP change listener still works");
}
- m_wifi_network_listener = nullptr;
+
+ return PlatformResult(ErrorCode::NO_ERROR);
+}
+
+PlatformResult SystemInfoListeners::RegisterEthernetNetworkListener(const SysteminfoUtilsCallback& callback,
+ SysteminfoInstance& instance)
+{
+ LoggerD("Entered");
+
+ if (IsIpChangeCallbackInvalid()) {
+ PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
+ CHECK_LISTENER_ERROR(RegisterIpChangeCallback(instance));
+ LoggerD("Registered IP change listener");
+ } else {
+ LoggerD("No need to register IP listener on platform, already registered");
+ }
+
+ if (nullptr == m_ethernet_network_listener) {
+ LoggerD("Added callback for ETHERNET_NETWORK");
+ m_ethernet_network_listener = callback;
+ }
+ return PlatformResult(ErrorCode::NO_ERROR);
+}
+
+PlatformResult SystemInfoListeners::UnregisterEthernetNetworkListener()
+{
+ LoggerD("Entered");
+
+ m_ethernet_network_listener = nullptr;
+
+ if (IsIpChangeCallbackInvalid()) {
+ PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
+ CHECK_LISTENER_ERROR(UnregisterIpChangeCallback());
+ LoggerD("Removed IP change listener");
+ } else {
+ LoggerD("Removed callback for ETHERNET_NETWORK, but IP change listener still works");
+ }
+
return PlatformResult(ErrorCode::NO_ERROR);
}
PlatformResult SystemInfoListeners::RegisterCellularNetworkListener(const SysteminfoUtilsCallback& callback,
SysteminfoInstance& instance)
{
+ LoggerD("Entered");
+
+ if (IsIpChangeCallbackInvalid()) {
+ PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
+ CHECK_LISTENER_ERROR(RegisterIpChangeCallback(instance));
+ LoggerD("Registered IP change listener");
+ } else {
+ LoggerD("No need to register IP listener on platform, already registered");
+ }
+
if (nullptr == m_cellular_network_listener) {
PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
- if (nullptr == m_wifi_network_listener){
- //register if there is no callback both for wifi and cellular
- CHECK_LISTENER_ERROR(RegisterIpChangeCallback(instance))
- } else {
- LoggerD("No need to register ip listener on platform, already registered");
- }
CHECK_LISTENER_ERROR(RegisterVconfCallback(VCONFKEY_TELEPHONY_FLIGHT_MODE,
OnCellularNetworkValueChangedCb, instance))
CHECK_LISTENER_ERROR(RegisterVconfCallback(VCONFKEY_TELEPHONY_CELLID,
@@ -947,6 +981,8 @@ PlatformResult SystemInfoListeners::RegisterCellularNetworkListener(const System
PlatformResult SystemInfoListeners::UnregisterCellularNetworkListener()
{
+ LoggerD("Entered");
+
if (nullptr != m_cellular_network_listener) {
PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
CHECK_LISTENER_ERROR(UnregisterVconfCallback(VCONFKEY_TELEPHONY_FLIGHT_MODE,
@@ -957,15 +993,17 @@ PlatformResult SystemInfoListeners::UnregisterCellularNetworkListener()
OnCellularNetworkValueChangedCb))
CHECK_LISTENER_ERROR(UnregisterVconfCallback(VCONFKEY_TELEPHONY_SVC_ROAM,
OnCellularNetworkValueChangedCb))
- if (nullptr == m_wifi_network_listener) {
- //register if there is no callback both for wifi and cellular
- CHECK_LISTENER_ERROR(UnregisterIpChangeCallback())
- LoggerD("Removed callback for CELLULAR_NETWORK");
- } else {
- LoggerD("Removed callback for CELLULAR_NETWORK, but cellular listener still works");
- }
}
m_cellular_network_listener = nullptr;
+
+ if (IsIpChangeCallbackInvalid()) {
+ PlatformResult ret = PlatformResult(ErrorCode::NO_ERROR);
+ CHECK_LISTENER_ERROR(UnregisterIpChangeCallback());
+ LoggerD("Removed IP change listener");
+ } else {
+ LoggerD("Removed callback for CELLULAR_NETWORK, but IP change listener still works");
+ }
+
return PlatformResult(ErrorCode::NO_ERROR);
}
@@ -1188,10 +1226,15 @@ void SystemInfoListeners::OnNetworkChangedCallback(connection_type_e /*type*/, v
void SystemInfoListeners::OnNetworkValueCallback(const char* /*ipv4_address*/,
const char* /*ipv6_address*/, void* event_ptr)
{
+ LoggerD("Entered");
+
SysteminfoInstance* instance = static_cast(event_ptr);
if (nullptr != m_wifi_network_listener) {
m_wifi_network_listener(*instance);
}
+ if (nullptr != m_ethernet_network_listener) {
+ m_ethernet_network_listener(*instance);
+ }
if (nullptr != m_cellular_network_listener) {
m_cellular_network_listener(*instance);
}
@@ -1248,7 +1291,7 @@ void SystemInfoListeners::InitTapiHandles()
}
} else {
LoggerE("Failed to get cp list");
- sim_count = TAPI_HANDLE_MAX;
+ sim_count = kTapiMaxHandle;
}
g_strfreev(cp_list);
}
@@ -1332,6 +1375,12 @@ PlatformResult SystemInfoListeners::UnregisterIpChangeCallback()
return PlatformResult(ErrorCode::NO_ERROR);
}
+bool SystemInfoListeners::IsIpChangeCallbackInvalid() {
+ LoggerD("Entered");
+ return (nullptr == m_wifi_network_listener &&
+ nullptr == m_ethernet_network_listener &&
+ nullptr == m_cellular_network_listener);
+}
/////////////////////////// system_info_listeners object ////////////////////////
@@ -1552,9 +1601,10 @@ PlatformResult SysteminfoUtils::GetCount(const std::string& property, unsigned l
if ("BATTERY" == property || "CPU" == property || "STORAGE" == property ||
"DISPLAY" == property || "DEVICE_ORIENTATION" == property ||
"BUILD" == property || "LOCALE" == property || "NETWORK" == property ||
- "WIFI_NETWORK" == property || "CELLULAR_NETWORK" == property ||
- "PERIPHERAL" == property || "MEMORY" == property) {
- count = DEFAULT_PROPERTY_COUNT;
+ "WIFI_NETWORK" == property || "ETHERNET_NETWORK" == property ||
+ "CELLULAR_NETWORK" == property || "PERIPHERAL" == property ||
+ "MEMORY" == property) {
+ count = kDefaultPropertyCount;
} else if ("SIM" == property) {
count = sim_mgr.GetSimCount(system_info_listeners.GetTapiHandles());
} else if ("CAMERA_FLASH" == property) {
@@ -1587,6 +1637,8 @@ PlatformResult SysteminfoUtils::ReportProperty(const std::string& property, int
return ReportNetwork(res_obj);
} else if ("WIFI_NETWORK" == property) {
return ReportWifiNetwork(res_obj);
+ } else if ("ETHERNET_NETWORK" == property) {
+ return ReportEthernetNetwork(res_obj);
} else if ("CELLULAR_NETWORK" == property) {
return ReportCellularNetwork(res_obj);
} else if ("SIM" == property) {
@@ -2038,6 +2090,8 @@ static PlatformResult GetIps(connection_profile_h profile_handle, std::string* i
}
PlatformResult SysteminfoUtils::ReportWifiNetwork(picojson::object& out) {
+ LoggerD("Entered");
+
bool result_status = false;
std::string result_ssid;
std::string result_ip_address;
@@ -2060,10 +2114,10 @@ PlatformResult SysteminfoUtils::ReportWifiNetwork(picojson::object& out) {
connection_handle_ptr(connection_handle, &connection_destroy);
// automatically release the memory
- char* mac = NULL;
- error = wifi_get_mac_address(&mac);
- if(WIFI_ERROR_NONE == error) {
- LoggerD("macAddress fetched: %s", mac);
+ char* mac = nullptr;
+ error = connection_get_mac_address(connection_handle, CONNECTION_TYPE_WIFI, &mac);
+ if (CONNECTION_ERROR_NONE == error && nullptr != mac) {
+ SLoggerD("MAC address fetched: %s", mac);
result_mac_address = mac;
free(mac);
} else {
@@ -2136,6 +2190,126 @@ PlatformResult SysteminfoUtils::ReportWifiNetwork(picojson::object& out) {
return PlatformResult(ErrorCode::NO_ERROR);
}
+PlatformResult SysteminfoUtils::ReportEthernetNetwork(picojson::object& out) {
+ LoggerD("Entered");
+
+ std::string result_cable;
+ std::string result_status;
+ std::string result_ip_address;
+ std::string result_ipv6_address;
+ std::string result_mac_address;
+
+ connection_h connection_handle = nullptr;
+ connection_ethernet_state_e connection_state = CONNECTION_ETHERNET_STATE_DEACTIVATED;
+ connection_type_e connection_type = CONNECTION_TYPE_DISCONNECTED;
+ connection_profile_h profile_handle = nullptr;
+
+ // connection must be created in every call, in other case error occurs
+ int error = connection_create(&connection_handle);
+ if (CONNECTION_ERROR_NONE != error) {
+ std::string log_msg = "Cannot create connection: " + std::to_string(error);
+ LoggerE("%s", log_msg.c_str());
+ return PlatformResult(ErrorCode::UNKNOWN_ERR, log_msg);
+ }
+ std::unique_ptr::type, int (*)(connection_h)> connection_handle_ptr(
+ connection_handle, &connection_destroy); // automatically release the memory
+
+ error = connection_get_ethernet_state(connection_handle, &connection_state);
+ if (CONNECTION_ERROR_NONE != error) {
+ std::string log_msg = "Cannot get ethernet connection state: " + std::to_string(error);
+ LoggerE("%s", log_msg.c_str());
+ return PlatformResult(ErrorCode::UNKNOWN_ERR, log_msg);
+ }
+
+ switch (connection_state) {
+ case CONNECTION_ETHERNET_STATE_DEACTIVATED:
+ result_status = "DEACTIVATED";
+ break;
+
+ case CONNECTION_ETHERNET_STATE_DISCONNECTED:
+ result_status = "DISCONNECTED";
+ break;
+
+ case CONNECTION_ETHERNET_STATE_CONNECTED:
+ result_status = "CONNECTED";
+ break;
+
+ default:
+ result_status = "UNKNOWN";
+ break;
+ }
+
+ connection_ethernet_cable_state_e cable_state = CONNECTION_ETHERNET_CABLE_DETACHED;
+ error = connection_get_ethernet_cable_state(connection_handle, &cable_state);
+ if (CONNECTION_ERROR_NONE != error) {
+ std::string log_msg = "Cannot get ethernet cable state: " + std::to_string(error);
+ LoggerE("%s", log_msg.c_str());
+ return PlatformResult(ErrorCode::UNKNOWN_ERR, log_msg);
+ }
+
+ switch (cable_state) {
+ case CONNECTION_ETHERNET_CABLE_DETACHED:
+ result_cable = "DETACHED";
+ break;
+
+ case CONNECTION_ETHERNET_CABLE_ATTACHED:
+ result_cable = "ATTACHED";
+ break;
+
+ default:
+ result_cable = "UNKNOWN";
+ break;
+ }
+
+ char* mac = nullptr;
+ error = connection_get_mac_address(connection_handle, CONNECTION_TYPE_ETHERNET, &mac);
+ if (CONNECTION_ERROR_NONE == error && nullptr != mac) {
+ SLoggerD("MAC address fetched: %s", mac);
+ result_mac_address = mac;
+ free(mac);
+ } else {
+ std::string log_msg = "Failed to get mac address: " + std::to_string(error);
+ LoggerE("%s", log_msg.c_str());
+ return PlatformResult(ErrorCode::UNKNOWN_ERR, log_msg);
+ }
+
+ error = connection_get_type(connection_handle, &connection_type);
+ if (CONNECTION_ERROR_NONE != error) {
+ std::string log_msg = "Cannot get connection type: " + std::to_string(error);
+ LoggerE("%s", log_msg.c_str());
+ return PlatformResult(ErrorCode::UNKNOWN_ERR, log_msg);
+ }
+
+ if (CONNECTION_TYPE_ETHERNET == connection_type) {
+ //gathering profile
+ error = connection_get_current_profile(connection_handle, &profile_handle);
+ if (CONNECTION_ERROR_NONE != error) {
+ std::string log_msg = "Cannot get connection profile: " + std::to_string(error);
+ LoggerE("%s", log_msg.c_str());
+ return PlatformResult(ErrorCode::UNKNOWN_ERR, log_msg);
+ }
+ std::unique_ptr::type,
+ int (*)(connection_profile_h)> profile_handle_ptr(
+ profile_handle, &connection_profile_destroy); // automatically release the memory
+
+ //gathering ips
+ PlatformResult ret = GetIps(profile_handle, &result_ip_address, &result_ipv6_address);
+ if (ret.IsError()) {
+ return ret;
+ }
+ } else {
+ LoggerD("Connection type = %d. ETHERNET is disabled", connection_type);
+ }
+
+ out.insert(std::make_pair("cable", picojson::value(result_cable)));
+ out.insert(std::make_pair("status", picojson::value(result_status)));
+ out.insert(std::make_pair("ipAddress", picojson::value(result_ip_address)));
+ out.insert(std::make_pair("ipv6Address", picojson::value(result_ipv6_address)));
+ out.insert(std::make_pair("macAddress", picojson::value(result_mac_address)));
+
+ return PlatformResult(ErrorCode::NO_ERROR);
+}
+
static PlatformResult FetchVconfSettings(
unsigned short *result_mcc,
unsigned short *result_mnc,
@@ -2562,6 +2736,19 @@ PlatformResult SysteminfoUtils::UnregisterWifiNetworkListener()
return system_info_listeners.UnregisterWifiNetworkListener();
}
+PlatformResult SysteminfoUtils::RegisterEthernetNetworkListener(const SysteminfoUtilsCallback& callback,
+ SysteminfoInstance& instance)
+{
+ LoggerD("Entered");
+ return system_info_listeners.RegisterEthernetNetworkListener(callback, instance);
+}
+
+PlatformResult SysteminfoUtils::UnregisterEthernetNetworkListener()
+{
+ LoggerD("Entered");
+ return system_info_listeners.UnregisterEthernetNetworkListener();
+}
+
PlatformResult SysteminfoUtils::RegisterCellularNetworkListener(const SysteminfoUtilsCallback& callback,
SysteminfoInstance& instance)
{
diff --git a/src/systeminfo/systeminfo-utils.h b/src/systeminfo/systeminfo-utils.h
index 73f657ea..4aa9b28e 100644
--- a/src/systeminfo/systeminfo-utils.h
+++ b/src/systeminfo/systeminfo-utils.h
@@ -69,6 +69,9 @@ class SysteminfoUtils {
static common::PlatformResult RegisterWifiNetworkListener(const SysteminfoUtilsCallback& callback,
SysteminfoInstance& instance);
static common::PlatformResult UnregisterWifiNetworkListener();
+ static common::PlatformResult RegisterEthernetNetworkListener(const SysteminfoUtilsCallback& callback,
+ SysteminfoInstance& instance);
+ static common::PlatformResult UnregisterEthernetNetworkListener();
static common::PlatformResult RegisterCellularNetworkListener(const SysteminfoUtilsCallback& callback,
SysteminfoInstance& instance);
static common::PlatformResult UnregisterCellularNetworkListener();
@@ -95,6 +98,7 @@ class SysteminfoUtils {
static common::PlatformResult ReportLocale(picojson::object& out);
static common::PlatformResult ReportNetwork(picojson::object& out);
static common::PlatformResult ReportWifiNetwork(picojson::object& out);
+ static common::PlatformResult ReportEthernetNetwork(picojson::object& out);
static common::PlatformResult ReportCellularNetwork(picojson::object& out);
static common::PlatformResult ReportSim(picojson::object& out, unsigned long count);
static common::PlatformResult ReportPeripheral(picojson::object& out);
diff --git a/src/systeminfo/systeminfo.gyp b/src/systeminfo/systeminfo.gyp
index 51e393bb..1137ebf4 100644
--- a/src/systeminfo/systeminfo.gyp
+++ b/src/systeminfo/systeminfo.gyp
@@ -32,8 +32,6 @@
'capi-network-connection',
'capi-system-device',
'capi-system-system-settings',
- 'capi-network-bluetooth',
- 'capi-network-wifi',
'tapi',
'sensor',
]
diff --git a/src/systeminfo/systeminfo_api.js b/src/systeminfo/systeminfo_api.js
index 1b55dbcc..98471759 100644
--- a/src/systeminfo/systeminfo_api.js
+++ b/src/systeminfo/systeminfo_api.js
@@ -32,6 +32,7 @@ var SystemInfoPropertyId = {
LOCALE : 'LOCALE',
NETWORK : 'NETWORK',
WIFI_NETWORK : 'WIFI_NETWORK',
+ ETHERNET_NETWORK : 'ETHERNET_NETWORK',
CELLULAR_NETWORK : 'CELLULAR_NETWORK',
SIM : 'SIM',
PERIPHERAL : 'PERIPHERAL',
@@ -552,6 +553,17 @@ function SystemInfoWifiNetwork(data) {
});
}
+//class SystemInfoEthernetNetwork ////////////////////////////////////////////////////
+function SystemInfoEthernetNetwork(data) {
+ Object.defineProperties(this, {
+ cable : {value: data.cable, writable: false, enumerable: true},
+ status : {value: data.status, writable: false, enumerable: true},
+ ipAddress : {value: data.ipAddress, writable: false, enumerable: true},
+ ipv6Address : {value: data.ipv6Address, writable: false, enumerable: true},
+ macAddress : {value: data.macAddress, writable: false, enumerable: true},
+ });
+}
+
//class SystemInfoCellularNetwork ////////////////////////////////////////////////////
function SystemInfoCellularNetwork(data) {
Object.defineProperties(this, {
@@ -817,6 +829,7 @@ var _deviceOrientationStr = SystemInfoPropertyId.DEVICE_ORIENTATION;
var _localeStr = SystemInfoPropertyId.LOCALE;
var _networkStr = SystemInfoPropertyId.NETWORK;
var _wifiNetworkStr = SystemInfoPropertyId.WIFI_NETWORK;
+var _ethernetNetworkStr = SystemInfoPropertyId.ETHERNET_NETWORK;
var _cellularNetworkStr = SystemInfoPropertyId.CELLULAR_NETWORK;
var _simStr = SystemInfoPropertyId.SIM;
var _peripheralStr = SystemInfoPropertyId.PERIPHERAL;
@@ -964,6 +977,21 @@ function _systeminfoWifiNetworkListenerCallback(eventObj) {
}
}
+function _systeminfoEthernetNetworkListenerCallback(eventObj) {
+ var property = _ethernetNetworkStr;
+ var callbacks = _propertyContainer[property].callbacks;
+
+ for (var watchId in callbacks) {
+ if (callbacks.hasOwnProperty(watchId)) {
+ var listener = callbacks[watchId];
+ var propObj = !listener.isArrayType ?
+ _createProperty(property, eventObj.result.array[0]) :
+ _createPropertyArray(property, eventObj.result);
+ callbacks[watchId].callback(propObj);
+ }
+ }
+}
+
function _systeminfoCellularNetworkListenerCallback(eventObj) {
var property = _cellularNetworkStr;
var callbacks = _propertyContainer[property].callbacks;
@@ -1094,6 +1122,12 @@ var _propertyContainer = {
broadcastFunction : _systeminfoWifiNetworkListenerCallback,
signalLabel : 'SystemInfoWifiNetworkChangeBroadcast'
},
+ 'ETHERNET_NETWORK' : {
+ callbacks : {},
+ constructor : SystemInfoEthernetNetwork,
+ broadcastFunction : _systeminfoEthernetNetworkListenerCallback,
+ signalLabel : 'SystemInfoEthernetNetworkChangeBroadcast'
+ },
'CELLULAR_NETWORK' : {
callbacks : {},
constructor : SystemInfoCellularNetwork,
diff --git a/src/systeminfo/systeminfo_instance.cc b/src/systeminfo/systeminfo_instance.cc
index 90d0a054..f09aaf5b 100644
--- a/src/systeminfo/systeminfo_instance.cc
+++ b/src/systeminfo/systeminfo_instance.cc
@@ -42,6 +42,7 @@ static void OnDeviceOrientationChangedCallback(SysteminfoInstance& instance);
static void OnLocaleChangedCallback(SysteminfoInstance& instance);
static void OnNetworkChangedCallback(SysteminfoInstance& instance);
static void OnWifiNetworkChangedCallback(SysteminfoInstance& instance);
+static void OnEthernetNetworkChangedCallback(SysteminfoInstance& instance);
static void OnCellularNetworkChangedCallback(SysteminfoInstance& instance);
static void OnPeripheralChangedCallback(SysteminfoInstance& instance);
static void OnMemoryChangedCallback(SysteminfoInstance& instance);
@@ -61,6 +62,7 @@ const std::string kPropertyIdBuild = "BUILD";
const std::string kPropertyIdLocale = "LOCALE";
const std::string kPropertyIdNetwork = "NETWORK";
const std::string kPropertyIdWifiNetwork = "WIFI_NETWORK";
+const std::string kPropertyIdEthernetNetwork = "ETHERNET_NETWORK";
const std::string kPropertyIdCellularNetwork = "CELLULAR_NETWORK";
const std::string kPropertyIdSim = "SIM";
const std::string kPropertyIdPeripheral = "PERIPHERAL";
@@ -349,6 +351,8 @@ void SysteminfoInstance::AddPropertyValueChangeListener(const picojson::value& a
ret = SysteminfoUtils::RegisterNetworkListener(OnNetworkChangedCallback, *this);
} else if (property_name == kPropertyIdWifiNetwork) {
ret = SysteminfoUtils::RegisterWifiNetworkListener(OnWifiNetworkChangedCallback, *this);
+ } else if (property_name == kPropertyIdEthernetNetwork) {
+ ret = SysteminfoUtils::RegisterEthernetNetworkListener(OnEthernetNetworkChangedCallback, *this);
} else if (property_name == kPropertyIdCellularNetwork) {
ret = SysteminfoUtils::RegisterCellularNetworkListener(OnCellularNetworkChangedCallback, *this);
} else if (property_name == kPropertyIdSim) {
@@ -461,6 +465,8 @@ void SysteminfoInstance::RemovePropertyValueChangeListener(const picojson::value
ret = SysteminfoUtils::UnregisterNetworkListener();
} else if (property_name == kPropertyIdWifiNetwork) {
ret = SysteminfoUtils::UnregisterWifiNetworkListener();
+ } else if (property_name == kPropertyIdEthernetNetwork) {
+ ret = SysteminfoUtils::UnregisterEthernetNetworkListener();
} else if (property_name == kPropertyIdCellularNetwork) {
ret = SysteminfoUtils::UnregisterCellularNetworkListener();
} else if (property_name == kPropertyIdSim) {
@@ -663,6 +669,22 @@ void OnWifiNetworkChangedCallback(SysteminfoInstance& instance)
}
}
+void OnEthernetNetworkChangedCallback(SysteminfoInstance& instance)
+{
+ LoggerD("Entered");
+ const std::shared_ptr& response =
+ std::shared_ptr(new picojson::value(picojson::object()));
+ response->get()[kPropertyIdString] = picojson::value(kPropertyIdEthernetNetwork);
+ response->get()[kListenerIdString] = picojson::value(kListenerConstValue);
+
+ picojson::value result = picojson::value(picojson::object());
+ PlatformResult ret = SysteminfoUtils::GetPropertyValue(kPropertyIdEthernetNetwork, true, result);
+ if (ret.IsSuccess()) {
+ ReportSuccess(result,response->get());
+ instance.PostMessage(response->serialize().c_str());
+ }
+}
+
void OnCellularNetworkChangedCallback(SysteminfoInstance& instance)
{
LoggerD("Enter");
--
2.34.1