sm8450-common: Import gps from LA.VENDOR.1.0.r1-12800-WAIPIO.0

Change-Id: Ia76265a8c3326f2b5f9f260ce98807276af80ee3
This commit is contained in:
Arian
2024-01-27 01:37:39 +01:00
parent 106355e12e
commit b9fdaff70a
286 changed files with 72332 additions and 0 deletions

View File

@@ -0,0 +1,925 @@
/* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation, nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#include "DataItemConcreteTypes.h"
#include <inttypes.h>
#include <log_util.h>
#define ENH_FIELD_ENABLED "IS_QUALCOMM_ENHANCED_PROVIDER_ENABLED"
#define AIRPLANEMODE_FIELD_MODE "IS_AIRPLANE_MODE_ON"
#define ENH_FIELD_ENABLED "IS_QUALCOMM_ENHANCED_PROVIDER_ENABLED"
#define GPSSTATE_FIELD_ENABLED "IS_GPS_PROVIDER_ENABLED"
#define NLPSTATUS_FIELD_ENABLED "IS_NETWORK_PROVIDER_ENABLED"
#define WIFIHARDWARESTATE_FIELD_ENABLED "IS_WIFI_HARDWARE_ON"
#define SCREENSTATE_FIELD_ENABLED "IS_SCREEN_ON"
#define POWERCONNECTSTATE_FIELD_ENABLED "IS_POWER_CONNECTED"
#define TIMEZONECHANGE_FIELD_ENABLED "IS_TIMEZONE_CHANGED"
#define TIMECHANGE_FIELD_ENABLED "IS_TIME_CHANGED"
#define TIMECHANGE_FIELD_CURRENT_TIME_MILLIS "CURR_TIME_MILLIS"
#define TIMECHANGE_FIELD_RAW_OFFSET_TZ "RAW_OFFSET_TZ"
#define TIMECHANGE_FIELD_DST_OFFSET_TZ "DST_OFFSET_TZ"
#define SHUTDOWN_FIELD_ENABLED "IS_SHUTDOWN"
#define ASSISTEDGPS_FIELD_ENABLED "IS_ASSISTED_GPS_ENABLED"
#define NETWORKINFO_CARD "ACTIVE_NETWORK_INFO"
#define NETWORKINFO_FIELD_TYPE "TYPE"
#define NETWORKINFO_FIELD_TYPENAME "TYPE_NAME"
#define NETWORKINFO_FIELD_SUBTYPENAME "SUB_TYPE_NAME"
#define NETWORKINFO_FIELD_AVAILABLE "IS_AVAILABLE"
#define NETWORKINFO_FIELD_CONNECTED "IS_CONNECTED"
#define NETWORKINFO_FIELD_ROAMING "IS_ROAMING"
#define NETWORKINFO_FIELD_NETWORKHANDLE_0 "NETWORK_HANDLE_0"
#define NETWORKINFO_FIELD_NETWORKHANDLE_1 "NETWORK_HANDLE_1"
#define NETWORKINFO_FIELD_NETWORKHANDLE_2 "NETWORK_HANDLE_2"
#define NETWORKINFO_FIELD_NETWORKHANDLE_3 "NETWORK_HANDLE_3"
#define NETWORKINFO_FIELD_NETWORKHANDLE_4 "NETWORK_HANDLE_4"
#define NETWORKINFO_FIELD_NETWORKHANDLE_5 "NETWORK_HANDLE_5"
#define NETWORKINFO_FIELD_NETWORKHANDLE_6 "NETWORK_HANDLE_6"
#define NETWORKINFO_FIELD_NETWORKHANDLE_7 "NETWORK_HANDLE_7"
#define NETWORKINFO_FIELD_NETWORKHANDLE_8 "NETWORK_HANDLE_8"
#define NETWORKINFO_FIELD_NETWORKHANDLE_9 "NETWORK_HANDLE_9"
#define NETWORKINFO_FIELD_APN_NAME "APN_NAME"
#define SERVICESTATUS_FIELD_STATE "CELL_NETWORK_STATUS"
#define MODEL_FIELD_NAME "MODEL"
#define MANUFACTURER_FIELD_NAME "MANUFACTURER"
#define OSSTATUS_CARD "ACTIVE_NETWORK_INFO"
#define RILSERVICEINFO_CARD "RIL-SERVICE-INFO"
#define RILSERVICEINFO_FIELD_ARIF_TYPE_MASK "SUPPORTED-AIRINTERFACE-TYPE-MASK"
#define RILSERVICEINFO_FIELD_CARRIER_ARIF_TYPE "CARRIER-AIRINTERFACE-TYPE"
#define RILSERVICEINFO_FIELD_CARRIER_MCC "MOBILE-COUNTRY-CODE"
#define RILSERVICEINFO_FIELD_CARRIER_MNC "MOBILE-NETWORK-CODE"
#define RILSERVICEINFO_FIELD_CARRIER_NAME "HOME-CARRIER-NAME"
#define RILCELLINFO_CARD "RIL-CELL-UPDATE"
#define RILCELLINFO_FIELD_NETWORK_STATUS "NETWORK-STATUS"
#define RILCELLINFO_FIELD_RIL_TECH_TYPE "RIL-TECH-TYPE"
#define RILLCELLINFO_FIELD_MCC "MOBILE-COUNTRY-CODE"
#define RILLCELLINFO_FIELD_MNC "MOBILE-NETWORK-CODE"
#define RILLCELLINFO_FIELD_LAC "LOCATION-AREA-CODE"
#define RILLCELLINFO_FIELD_CID "CELL-ID"
#define RILLCELLINFO_FIELD_SID "SYSTEM-ID"
#define RILLCELLINFO_FIELD_NID "NETWORK-ID"
#define RILLCELLINFO_FIELD_BSID "BASE-STATION-ID"
#define RILLCELLINFO_FIELD_BSLAT "BASE-STATION-LATITUDE"
#define RILLCELLINFO_FIELD_BSLON "BASE-STATION-LONGITUDE"
#define RILLCELLINFO_FIELD_UTC_TIME_OFFSET "TIME-ZONE-OFFSET"
#define RILLCELLINFO_FIELD_DAYLIGHT_TIMEZONE "IN-DAY-LIGHT-SAVING"
#define RILLCELLINFO_FIELD_TAC "TRACKING-AREA-CODE"
#define RILLCELLINFO_FIELD_PCI "PHYSICAL-CELL-ID"
#define RILLCELLINFO_FIELD_NB_MODE "NB-MODE"
#define RILLCELLINFO_FIELD_NB_EARFCN_OFFSET "NB-EARFCN-OFFSET"
#define WIFI_SUPPLICANT_FIELD_STATE "WIFI-SUPPLICANT-STATE"
#define TAC_FIELD_NAME "TAC"
#define MCCMNC_FIELD_NAME "MCCMNC"
#define BTLESCANDETAILS_FIELD_VALID "BTLE_VALID_DEV"
#define BTLESCANDETAILS_FIELD_RSSI "BTLE_DEV_RSSI"
#define BTLESCANDETAILS_FIELD_MAC "BTLE_DEV_MAC"
#define BTLESCANDETAILS_FIELD_SCANREQ "BTLE_SCAN_REQ_TIME"
#define BTLESCANDETAILS_FIELD_SCANSTART "BTLE_SCAN_START_TIME"
#define BTLESCANDETAILS_FIELD_SCANRECV "BTLE_SCAN_RECV_TIME"
#define BTLESCANDETAILS_FIELD_SCANERROR "BTLE_SCAN_ERR"
#define BTSCANDETAILS_FIELD_VALID "BT_VALID_DEV"
#define BTSCANDETAILS_FIELD_RSSI "BT_DEV_RSSI"
#define BTSCANDETAILS_FIELD_MAC "BT_DEV_MAC"
#define BTSCANDETAILS_FIELD_SCANREQ "BT_SCAN_REQ_TIME"
#define BTSCANDETAILS_FIELD_SCANSTART "BT_SCAN_START_TIME"
#define BTSCANDETAILS_FIELD_SCANRECV "BT_SCAN_RECV_TIME"
#define BTSCANDETAILS_FIELD_SCANERROR "BT_SCAN_ERR"
#define OEM_GTP_UPLAOD_TRIGGER_READY_FIELD_NAME "OEM-GTP-UPLOAD-TRIGGER-READY"
#define BATTERYLEVEL_FIELD_BATTERY_PCT "BATTERY_PCT"
#define IN_EMERGENCY_CALL_FIELD_NAME "IS_EMERGENCY"
namespace loc_core
{
// stringify
void AirplaneModeDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(AirplaneModeDataItem, AIRPLANEMODE_DATA_ITEM_ID);
valueStr.clear ();
valueStr = AIRPLANEMODE_FIELD_MODE;
valueStr += ": ";
valueStr += (d->mMode) ? ("true") : ("false");
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void ENHDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(ENHDataItem, ENH_DATA_ITEM_ID);
valueStr.clear ();
valueStr = ENH_FIELD_ENABLED;
valueStr += ": ";
valueStr += (d->mEnabled) ? ("true") : ("false");
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void GPSStateDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(GPSStateDataItem, GPSSTATE_DATA_ITEM_ID);
valueStr.clear ();
valueStr = GPSSTATE_FIELD_ENABLED;
valueStr += ": ";
valueStr += (d->mEnabled) ? ("true") : ("false");
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void NLPStatusDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(NLPStatusDataItem, NLPSTATUS_DATA_ITEM_ID);
valueStr.clear ();
valueStr = NLPSTATUS_FIELD_ENABLED;
valueStr += ": ";
valueStr += (d->mEnabled) ? ("true") : ("false");
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void WifiHardwareStateDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(WifiHardwareStateDataItem,
WIFIHARDWARESTATE_DATA_ITEM_ID);
valueStr.clear ();
valueStr = WIFIHARDWARESTATE_FIELD_ENABLED;
valueStr += ": ";
valueStr += (d->mEnabled) ? ("true") : ("false");
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void ScreenStateDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(ScreenStateDataItem, SCREEN_STATE_DATA_ITEM_ID);
valueStr.clear ();
valueStr = SCREENSTATE_FIELD_ENABLED;
valueStr += ": ";
valueStr += (d->mState) ? ("true") : ("false");
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void PowerConnectStateDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(PowerConnectStateDataItem,
POWER_CONNECTED_STATE_DATA_ITEM_ID);
valueStr.clear ();
valueStr = POWERCONNECTSTATE_FIELD_ENABLED;
valueStr += ": ";
valueStr += (d->mState) ? ("true") : ("false");
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void BatteryLevelDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(BatteryLevelDataItem, BATTERY_LEVEL_DATA_ITEM_ID);
valueStr.clear ();
valueStr += BATTERYLEVEL_FIELD_BATTERY_PCT;
valueStr += ": ";
char state [12];
snprintf (state, 12, "%d", d->mBatteryPct);
valueStr += string (state);
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void TimeZoneChangeDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(TimeZoneChangeDataItem, TIMEZONE_CHANGE_DATA_ITEM_ID);
valueStr.clear ();
valueStr = TIMEZONECHANGE_FIELD_ENABLED;
valueStr += ": ";
valueStr += "true";
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void TimeChangeDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(TimeChangeDataItem, TIME_CHANGE_DATA_ITEM_ID);
valueStr.clear ();
valueStr = TIMECHANGE_FIELD_ENABLED;
valueStr += ": ";
valueStr += "true";
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void ShutdownStateDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(ShutdownStateDataItem, SHUTDOWN_STATE_DATA_ITEM_ID);
valueStr.clear ();
valueStr = SHUTDOWN_FIELD_ENABLED;
valueStr += ": ";
valueStr += (d->mState) ? ("true") : ("false");
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void AssistedGpsDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(AssistedGpsDataItem, ASSISTED_GPS_DATA_ITEM_ID);
valueStr.clear ();
valueStr = ASSISTEDGPS_FIELD_ENABLED;
valueStr += ": ";
valueStr += (d->mEnabled) ? ("true") : ("false");
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void NetworkInfoDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(NetworkInfoDataItem, NETWORKINFO_DATA_ITEM_ID);
valueStr.clear ();
valueStr = NETWORKINFO_CARD;
valueStr += "::";
valueStr += NETWORKINFO_FIELD_TYPE;
valueStr += "s_MASK: ";
char type [12];
snprintf (type, 12, "%" PRIu64, mAllTypes);
valueStr += string (type);
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_TYPENAME;
valueStr += ": ";
valueStr += d->mTypeName;
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_SUBTYPENAME;
valueStr += ": ";
valueStr += d->mSubTypeName;
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_AVAILABLE;
valueStr += ": ";
valueStr += (d->mAvailable) ? ("true") : ("false");
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_CONNECTED;
valueStr += ": ";
valueStr += (d->mConnected) ? ("true") : ("false");
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_ROAMING;
valueStr += ": ";
valueStr += (d->mRoaming) ? ("true") : ("false");
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_NETWORKHANDLE_0;
valueStr += ": ";
valueStr += d->mAllNetworkHandles[0].toString();
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_NETWORKHANDLE_1;
valueStr += ": ";
valueStr += d->mAllNetworkHandles[1].toString();
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_NETWORKHANDLE_2;
valueStr += ": ";
valueStr += d->mAllNetworkHandles[2].toString();
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_NETWORKHANDLE_3;
valueStr += ": ";
valueStr += d->mAllNetworkHandles[3].toString();
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_NETWORKHANDLE_4;
valueStr += ": ";
valueStr += d->mAllNetworkHandles[4].toString();
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_NETWORKHANDLE_5;
valueStr += ": ";
valueStr += d->mAllNetworkHandles[5].toString();
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_NETWORKHANDLE_6;
valueStr += ": ";
valueStr += d->mAllNetworkHandles[6].toString();
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_NETWORKHANDLE_7;
valueStr += ": ";
valueStr += d->mAllNetworkHandles[7].toString();
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_NETWORKHANDLE_8;
valueStr += ": ";
valueStr += d->mAllNetworkHandles[8].toString();
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_NETWORKHANDLE_9;
valueStr += ": ";
valueStr += d->mAllNetworkHandles[9].toString();
valueStr += ", ";
valueStr += NETWORKINFO_FIELD_APN_NAME;
valueStr += ": ";
valueStr += d->mApn;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void ServiceStatusDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(ServiceStatusDataItem, SERVICESTATUS_DATA_ITEM_ID);
valueStr.clear ();
valueStr += SERVICESTATUS_FIELD_STATE;
valueStr += ": ";
char state [12];
snprintf (state, 12, "%d", d->mServiceState);
valueStr += string (state);
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void ModelDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(ModelDataItem, MODEL_DATA_ITEM_ID);
valueStr.clear ();
valueStr += MODEL_FIELD_NAME;
valueStr += ": ";
valueStr += d->mModel;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void ManufacturerDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(ManufacturerDataItem, MANUFACTURER_DATA_ITEM_ID);
valueStr.clear ();
valueStr += MANUFACTURER_FIELD_NAME;
valueStr += ": ";
valueStr += d->mManufacturer;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void WifiSupplicantStatusDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(WifiSupplicantStatusDataItem,
WIFI_SUPPLICANT_STATUS_DATA_ITEM_ID);
valueStr += "Attach state: ";
char t[50];
memset (t, '\0', 50);
snprintf (t, 50, "%d", d->mState);
valueStr += t;
valueStr += ", Mac address valid: ";
valueStr += (d->mApMacAddressValid) ? ("true") : ("false");
valueStr += ", AP MAC address: ";
memset (t, '\0', 50);
snprintf(t, 50, "[%02x:%02x:%02x:%02x:%02x:%02x]", d->mApMacAddress[0], d->mApMacAddress[1],
d->mApMacAddress[2], d->mApMacAddress[3], d->mApMacAddress[4], d->mApMacAddress[5]);
valueStr += t;
valueStr += ", Wifi-Ap SSID Valid: ";
valueStr += (d->mWifiApSsidValid) ? ("true") : ("false");
valueStr += ", SSID: ";
valueStr += d->mWifiApSsid;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void TacDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(TacDataItem, TAC_DATA_ITEM_ID);
valueStr.clear ();
valueStr += TAC_FIELD_NAME;
valueStr += ": ";
valueStr += d->mValue;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void MccmncDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(MccmncDataItem, MCCMNC_DATA_ITEM_ID);
valueStr.clear ();
valueStr += MCCMNC_FIELD_NAME;
valueStr += ": ";
valueStr += d->mValue;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void BtLeDeviceScanDetailsDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(BtLeDeviceScanDetailsDataItem, BTLE_SCAN_DATA_ITEM_ID);
valueStr.clear ();
valueStr += BTLESCANDETAILS_FIELD_VALID;
valueStr += ": ";
valueStr += d->mValidSrnData;
valueStr += ", ";
valueStr += BTLESCANDETAILS_FIELD_RSSI;
valueStr += ": ";
valueStr += d->mApSrnRssi;
valueStr += ", ";
char t[10];
memset (t, '\0', 10);
valueStr += BTLESCANDETAILS_FIELD_MAC;
valueStr += ": ";
snprintf(t, 10, "[%02x:%02x:%02x:%02x:%02x:%02x]", d->mApSrnMacAddress[0],
d->mApSrnMacAddress[1], d->mApSrnMacAddress[2], d->mApSrnMacAddress[3],
d->mApSrnMacAddress[4], d->mApSrnMacAddress[5]);
valueStr += t;
valueStr += ", ";
valueStr += BTLESCANDETAILS_FIELD_SCANREQ;
valueStr += ": ";
valueStr += d->mApSrnTimestamp;
valueStr += ", ";
valueStr += BTLESCANDETAILS_FIELD_SCANSTART;
valueStr += ": ";
valueStr += d->mRequestTimestamp;
valueStr += ", ";
valueStr += BTLESCANDETAILS_FIELD_SCANRECV;
valueStr += ": ";
valueStr += d->mReceiveTimestamp;
valueStr += ", ";
valueStr += BTLESCANDETAILS_FIELD_SCANERROR;
valueStr += ": ";
valueStr += d->mErrorCause;
valueStr += ", ";
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
void BtDeviceScanDetailsDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(BtDeviceScanDetailsDataItem, BT_SCAN_DATA_ITEM_ID);
valueStr.clear ();
valueStr += BTSCANDETAILS_FIELD_VALID;
valueStr += ": ";
valueStr += d->mValidSrnData;
valueStr += ", ";
valueStr += BTSCANDETAILS_FIELD_RSSI;
valueStr += ": ";
valueStr += d->mApSrnRssi;
valueStr += ", ";
char t[10];
memset (t, '\0', 10);
valueStr += BTSCANDETAILS_FIELD_MAC;
valueStr += ": ";
snprintf(t, 10, "[%02x:%02x:%02x:%02x:%02x:%02x]", d->mApSrnMacAddress[0],
d->mApSrnMacAddress[1], d->mApSrnMacAddress[2], d->mApSrnMacAddress[3],
d->mApSrnMacAddress[4], d->mApSrnMacAddress[5]);
valueStr += t;
valueStr += ", ";
valueStr += BTSCANDETAILS_FIELD_SCANREQ;
valueStr += ": ";
valueStr += d->mApSrnTimestamp;
valueStr += ", ";
valueStr += BTSCANDETAILS_FIELD_SCANSTART;
valueStr += ": ";
valueStr += d->mRequestTimestamp;
valueStr += ", ";
valueStr += BTSCANDETAILS_FIELD_SCANRECV;
valueStr += ": ";
valueStr += d->mReceiveTimestamp;
valueStr += ", ";
valueStr += BTSCANDETAILS_FIELD_SCANERROR;
valueStr += ": ";
valueStr += d->mErrorCause;
valueStr += ", ";
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
// copy
int32_t AirplaneModeDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(AirplaneModeDataItem, AIRPLANEMODE_DATA_ITEM_ID);
if (s->mMode == d->mMode) { result = 0; break; }
s->mMode = d->mMode;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
void InEmergencyCallDataItem::stringify(string& valueStr) {
int32_t result = 0;
ENTRY_LOG();
do {
STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(
InEmergencyCallDataItem, IN_EMERGENCY_CALL_DATA_ITEM_ID);
valueStr.clear ();
valueStr += IN_EMERGENCY_CALL_FIELD_NAME;
valueStr += ": ";
valueStr += (d->mIsEmergency) ? ("true") : ("false");
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
}
int32_t ENHDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(ENHDataItem, ENH_DATA_ITEM_ID);
if (s->mEnabled == d->mEnabled) { result = true; break; }
s->mEnabled = d->mEnabled;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t GPSStateDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(GPSStateDataItem, GPSSTATE_DATA_ITEM_ID);
if (s->mEnabled == d->mEnabled) { result = 0; break; }
s->mEnabled = d->mEnabled;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t NLPStatusDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(NLPStatusDataItem, NLPSTATUS_DATA_ITEM_ID);
if (s->mEnabled == d->mEnabled) { result = 0; break; }
s->mEnabled = d->mEnabled;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t WifiHardwareStateDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(WifiHardwareStateDataItem, WIFIHARDWARESTATE_DATA_ITEM_ID);
if (s->mEnabled == d->mEnabled) { result = 0; break; }
s->mEnabled = d->mEnabled;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t ScreenStateDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(ScreenStateDataItem, SCREEN_STATE_DATA_ITEM_ID);
if (s->mState == d->mState) { result = 0; break; }
s->mState = d->mState;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t PowerConnectStateDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(PowerConnectStateDataItem,
POWER_CONNECTED_STATE_DATA_ITEM_ID);
if (s->mState == d->mState) { result = 0; break; }
s->mState = d->mState;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t BatteryLevelDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(BatteryLevelDataItem, BATTERY_LEVEL_DATA_ITEM_ID);
if (s->mBatteryPct == d->mBatteryPct) { result = 0; break; }
s->mBatteryPct = d->mBatteryPct;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t TimeZoneChangeDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(TimeZoneChangeDataItem, TIMEZONE_CHANGE_DATA_ITEM_ID);
if (s->mCurrTimeMillis == d->mCurrTimeMillis &&
s->mRawOffsetTZ == d->mRawOffsetTZ &&
s->mDstOffsetTZ == d->mDstOffsetTZ) {
result = 0;
break;
}
s->mCurrTimeMillis = d->mCurrTimeMillis;
s->mRawOffsetTZ = d->mRawOffsetTZ;
s->mDstOffsetTZ = d->mDstOffsetTZ;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t TimeChangeDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(TimeChangeDataItem, TIME_CHANGE_DATA_ITEM_ID);
if (s->mCurrTimeMillis == d->mCurrTimeMillis &&
s->mRawOffsetTZ == d->mRawOffsetTZ &&
s->mDstOffsetTZ == d->mDstOffsetTZ) {
result = 0;
break;
}
s->mCurrTimeMillis = d->mCurrTimeMillis;
s->mRawOffsetTZ = d->mRawOffsetTZ;
s->mDstOffsetTZ = d->mDstOffsetTZ;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t ShutdownStateDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(ShutdownStateDataItem, SHUTDOWN_STATE_DATA_ITEM_ID);
if (s->mState == d->mState) { result = 0; break; }
s->mState = d->mState;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t AssistedGpsDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(AssistedGpsDataItem, ASSISTED_GPS_DATA_ITEM_ID);
if (s->mEnabled == d->mEnabled) { result = 0; break; }
s->mEnabled = d->mEnabled;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t NetworkInfoDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(NetworkInfoDataItem, NETWORKINFO_DATA_ITEM_ID);
NetworkType type = ((NetworkInfoDataItem*)d)->getType();
if ((s->mAllTypes == d->mAllTypes) &&
(s->getType() == type) && (0 == s->mTypeName.compare(d->mTypeName)) &&
(0 == s->mSubTypeName.compare(d->mSubTypeName)) &&
(s->mAvailable == d->mAvailable) &&
(s->mConnected == d->mConnected) &&
(s->mRoaming == d->mRoaming) &&
(memcmp(s->mAllNetworkHandles, d->mAllNetworkHandles,
sizeof(s->mAllNetworkHandles)) == 0) &&
(s->mNetworkHandle == d->mNetworkHandle) &&
(s->mApn.compare(d->mApn))) {
result = 0;
break;
}
s->mAllTypes = (d->mAllTypes == 0) ? typeToAllTypes(type) : d->mAllTypes;
if (s->getType() != type) { s->setType(type);}
if (0 != s->mTypeName.compare(d->mTypeName)) { s->mTypeName = d->mTypeName;}
if (0 != s->mSubTypeName.compare(d->mSubTypeName)) {s->mSubTypeName = d->mSubTypeName;}
if (0 != s->mApn.compare(d->mApn)) {s->mApn = d->mApn;}
if (s->mAvailable != d->mAvailable) {s->mAvailable = d->mAvailable;}
if (s->mConnected != d->mConnected) {s->mConnected = d->mConnected;}
if (s->mRoaming != d->mRoaming) {s->mRoaming = d->mRoaming;}
if (memcmp(s->mAllNetworkHandles, d->mAllNetworkHandles,
sizeof(s->mAllNetworkHandles)) != 0) {
memcpy(static_cast<void*>(s->mAllNetworkHandles),
static_cast<void *>(d->mAllNetworkHandles), sizeof(s->mAllNetworkHandles));
}
if (s->mNetworkHandle != d->mNetworkHandle) {s->mNetworkHandle = d->mNetworkHandle;}
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t ServiceStatusDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(ServiceStatusDataItem, SERVICESTATUS_DATA_ITEM_ID);
if (s->mServiceState == d->mServiceState) { result = 0; break; }
s->mServiceState = d->mServiceState;
result = 0;
} while (0);
EXIT_LOG("%d", result);
return result;
}
int32_t ModelDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(ModelDataItem, MODEL_DATA_ITEM_ID);
if (0 == s->mModel.compare(d->mModel)) { result = 0; break; }
s->mModel = d->mModel;
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t ManufacturerDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(ManufacturerDataItem, MANUFACTURER_DATA_ITEM_ID);
if (0 == s->mManufacturer.compare(d->mManufacturer)) { result = 0; break; }
s->mManufacturer = d->mManufacturer;
result = 0;
} while (0);
EXIT_LOG("%d", result);
return result;
}
int32_t WifiSupplicantStatusDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(WifiSupplicantStatusDataItem,
WIFI_SUPPLICANT_STATUS_DATA_ITEM_ID);
if ( (s->mState == d->mState) &&
(s->mApMacAddressValid == d->mApMacAddressValid) &&
(s->mWifiApSsidValid == d->mWifiApSsidValid)) {
// compare mac address
if (memcmp(s->mApMacAddress, d->mApMacAddress, sizeof(s->mApMacAddress)) == 0) {
// compare ssid
if (s->mWifiApSsid.compare(d->mWifiApSsid) == 0) {
result = 0;
break;
}
}
}
if (s->mState != d->mState) { s->mState = d->mState;}
if (s->mApMacAddressValid != d->mApMacAddressValid) {
s->mApMacAddressValid = d->mApMacAddressValid;
}
if (s->mWifiApSsidValid != d->mWifiApSsidValid) {s->mWifiApSsidValid = d->mWifiApSsidValid;}
if (memcmp(s->mApMacAddress, d->mApMacAddress, sizeof(s->mApMacAddress)) != 0) {
memcpy(static_cast<void*>(s->mApMacAddress), static_cast<void *>(d->mApMacAddress),
sizeof(s->mApMacAddress));
}
if (s->mWifiApSsid.compare(d->mWifiApSsid) != 0) {
s->mWifiApSsid = d->mWifiApSsid;
}
result = 0;
} while (0);
EXIT_LOG_WITH_ERROR("%d", result);
return result;
}
int32_t TacDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(TacDataItem, TAC_DATA_ITEM_ID);
if (0 == s->mValue.compare(d->mValue)) { result = 0; break; }
s->mValue = d->mValue;
result = 0;
} while (0);
EXIT_LOG("%d", result);
return result;
}
int32_t MccmncDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(MccmncDataItem, MCCMNC_DATA_ITEM_ID);
if (0 == s->mValue.compare(d->mValue)) { result = 0; break; }
s->mValue= d->mValue;
result = 0;
} while (0);
EXIT_LOG("%d", result);
return result;
}
int32_t BtLeDeviceScanDetailsDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(BtLeDeviceScanDetailsDataItem, BTLE_SCAN_DATA_ITEM_ID);
if (s->mValidSrnData != d->mValidSrnData) { s->mValidSrnData = d->mValidSrnData;}
if (s->mApSrnRssi != d->mApSrnRssi) { s->mApSrnRssi = d->mApSrnRssi;}
if (memcmp(s->mApSrnMacAddress, d->mApSrnMacAddress, sizeof(s->mApSrnMacAddress)) != 0) {
memcpy(static_cast<void*>(s->mApSrnMacAddress), static_cast<void*>(d->mApSrnMacAddress),
sizeof(s->mApSrnMacAddress));
}
if (s->mApSrnTimestamp != d->mApSrnTimestamp) {s->mApSrnTimestamp = d->mApSrnTimestamp;}
if (s->mRequestTimestamp != d->mRequestTimestamp) {
s->mRequestTimestamp = d->mRequestTimestamp;
}
if (s->mReceiveTimestamp != d->mReceiveTimestamp) {
s->mReceiveTimestamp = d->mReceiveTimestamp;
}
if (s->mErrorCause != d->mErrorCause) {s->mErrorCause = d->mErrorCause;}
result = 0;
} while (0);
EXIT_LOG("%d", result);
return result;
}
int32_t BtDeviceScanDetailsDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(BtDeviceScanDetailsDataItem, BT_SCAN_DATA_ITEM_ID);
if (s->mValidSrnData != d->mValidSrnData) { s->mValidSrnData = d->mValidSrnData;}
if (s->mApSrnRssi != d->mApSrnRssi) { s->mApSrnRssi = d->mApSrnRssi;}
if (memcmp(s->mApSrnMacAddress, d->mApSrnMacAddress, sizeof(s->mApSrnMacAddress)) != 0) {
memcpy(static_cast<void*>(s->mApSrnMacAddress), static_cast<void*>(d->mApSrnMacAddress),
sizeof(s->mApSrnMacAddress));
}
if (s->mApSrnTimestamp != d->mApSrnTimestamp) {s->mApSrnTimestamp = d->mApSrnTimestamp;}
if (s->mRequestTimestamp != d->mRequestTimestamp) {
s->mRequestTimestamp = d->mRequestTimestamp;
}
if (s->mReceiveTimestamp != d->mReceiveTimestamp) {
s->mReceiveTimestamp = d->mReceiveTimestamp;
}
if (s->mErrorCause != d->mErrorCause) {s->mErrorCause = d->mErrorCause;}
result = 0;
} while (0);
EXIT_LOG("%d", result);
return result;
}
int32_t InEmergencyCallDataItem::copyFrom(IDataItemCore* src) {
int32_t result = -1;
ENTRY_LOG();
do {
COPIER_ERROR_CHECK_AND_DOWN_CAST(
InEmergencyCallDataItem, IN_EMERGENCY_CALL_DATA_ITEM_ID);
s->mIsEmergency = d->mIsEmergency;
result = 0;
} while (0);
EXIT_LOG("%d", result);
return result;
}
} //namespace loc_core

View File

@@ -0,0 +1,617 @@
/* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation, nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef DATAITEM_CONCRETETYPES_H
#define DATAITEM_CONCRETETYPES_H
#include <string>
#include <cstring>
#include <sstream>
#include <DataItemId.h>
#include <IDataItemCore.h>
#include <gps_extended_c.h>
#include <inttypes.h>
#define MAC_ADDRESS_LENGTH 6
// MAC address length in bytes
// QMI_LOC_SRN_MAC_ADDR_LENGTH_V02
#define SRN_MAC_ADDRESS_LENGTH 6
#define WIFI_SUPPLICANT_DEFAULT_STATE 0
#define TIME_DEFAULT_CURRTIME 0
#define TIMEZONE_DEFAULT_RAWOFFSET 0
#define TIMEZONE_DEFAULT_DSTOFFSET 0
#define NETWORKINFO_DEFAULT_TYPE 300
#define NETWORKINFO_DEFAULT_APN_NAME ""
#define SERVICESTATUS_DEFAULT_STATE 3 /// OOO
#define BATTERY_PCT_DEFAULT 50
#define STRINGIFY_ERROR_CHECK_AND_DOWN_CAST(T, ID) \
if (getId() != ID) { result = 1; break; } \
T * d = static_cast<T *>(this);
// macro for copier
#define COPIER_ERROR_CHECK_AND_DOWN_CAST(T, ID) \
if (src == NULL) { result = 1; break; } \
if (getId() != src->getId()) { result = 2; break; } \
if (getId() != ID) { result = 3; break; } \
T * s = static_cast<T *>(this); \
T * d = static_cast<T *>(src);
static constexpr char sDelimit = ':';
namespace loc_core {
using namespace std;
enum NetworkType {
TYPE_MOBILE = 0,
TYPE_WIFI,
TYPE_ETHERNET,
TYPE_BLUETOOTH,
TYPE_MMS,
TYPE_SUPL,
TYPE_DUN,
TYPE_HIPRI,
TYPE_WIMAX,
TYPE_PROXY,
TYPE_UNKNOWN,
};
typedef struct NetworkInfoType {
// Unique network handle ID
uint64_t networkHandle;
// Type of network for corresponding network handle
NetworkType networkType;
NetworkInfoType() : networkHandle(NETWORK_HANDLE_UNKNOWN), networkType(TYPE_UNKNOWN) {}
NetworkInfoType(string strObj) {
size_t posDelimit = strObj.find(sDelimit);
if ( posDelimit != string::npos) {
int32_t type = TYPE_UNKNOWN;
string handleStr = strObj.substr(0, posDelimit);
string typeStr = strObj.substr(posDelimit + 1, strObj.length() - posDelimit - 1);
stringstream(handleStr) >> networkHandle;
stringstream(typeStr) >> type;
networkType = (NetworkType) type;
} else {
networkHandle = NETWORK_HANDLE_UNKNOWN;
networkType = TYPE_UNKNOWN;
}
}
bool operator== (const NetworkInfoType& other) {
return ((networkHandle == other.networkHandle) && (networkType == other.networkType));
}
string toString() {
string valueStr;
valueStr.clear ();
char nethandle [32];
memset (nethandle, 0, 32);
snprintf(nethandle, sizeof(nethandle), "%" PRIu64, networkHandle);
valueStr += string(nethandle);
valueStr += sDelimit;
char type [12];
memset (type, 0, 12);
snprintf (type, 12, "%u", networkType);
valueStr += string (type);
return valueStr;
}
} NetworkInfoType;
class AirplaneModeDataItem: public IDataItemCore {
public:
AirplaneModeDataItem(IDataItemCore* di):
AirplaneModeDataItem(((AirplaneModeDataItem*)di)->mMode) {}
AirplaneModeDataItem(bool mode = false):
mMode(mode) {mId = AIRPLANEMODE_DATA_ITEM_ID;}
virtual ~AirplaneModeDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
bool mMode;
};
class ENHDataItem: public IDataItemCore {
public:
ENHDataItem(bool enabled = false) :
mEnabled(enabled) {mId = ENH_DATA_ITEM_ID;}
virtual ~ENHDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
bool mEnabled;
};
class GPSStateDataItem: public IDataItemCore {
public:
GPSStateDataItem(bool enabled = false) :
mEnabled(enabled) {mId = GPSSTATE_DATA_ITEM_ID;}
virtual ~GPSStateDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
bool mEnabled;
};
class NLPStatusDataItem: public IDataItemCore {
public:
NLPStatusDataItem(bool enabled = false) :
mEnabled(enabled) {mId = NLPSTATUS_DATA_ITEM_ID;}
virtual ~NLPStatusDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
bool mEnabled;
};
class WifiHardwareStateDataItem: public IDataItemCore {
public:
WifiHardwareStateDataItem(bool enabled = false) :
mEnabled(enabled) {mId = WIFIHARDWARESTATE_DATA_ITEM_ID;}
virtual ~WifiHardwareStateDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
bool mEnabled;
};
class ScreenStateDataItem: public IDataItemCore {
public:
ScreenStateDataItem(bool state = false) :
mState(state) {mId = SCREEN_STATE_DATA_ITEM_ID;}
virtual ~ScreenStateDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
bool mState;
};
class PowerConnectStateDataItem: public IDataItemCore {
public:
PowerConnectStateDataItem(bool state = false) :
mState(state) {mId = POWER_CONNECTED_STATE_DATA_ITEM_ID;}
virtual ~PowerConnectStateDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
bool mState;
};
class TimeZoneChangeDataItem: public IDataItemCore {
public:
TimeZoneChangeDataItem(int64_t currTimeMillis = TIME_DEFAULT_CURRTIME,
int32_t rawOffset = TIMEZONE_DEFAULT_RAWOFFSET,
int32_t dstOffset = TIMEZONE_DEFAULT_DSTOFFSET) :
mCurrTimeMillis (currTimeMillis),
mRawOffsetTZ (rawOffset),
mDstOffsetTZ (dstOffset) {mId = TIMEZONE_CHANGE_DATA_ITEM_ID;}
virtual ~TimeZoneChangeDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
int64_t mCurrTimeMillis;
int32_t mRawOffsetTZ;
int32_t mDstOffsetTZ;
};
class TimeChangeDataItem: public IDataItemCore {
public:
TimeChangeDataItem(int64_t currTimeMillis = TIME_DEFAULT_CURRTIME,
int32_t rawOffset = TIMEZONE_DEFAULT_RAWOFFSET,
int32_t dstOffset = TIMEZONE_DEFAULT_DSTOFFSET) :
mCurrTimeMillis (currTimeMillis),
mRawOffsetTZ (rawOffset),
mDstOffsetTZ (dstOffset) {mId = TIME_CHANGE_DATA_ITEM_ID;}
virtual ~TimeChangeDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
int64_t mCurrTimeMillis;
int32_t mRawOffsetTZ;
int32_t mDstOffsetTZ;
};
class ShutdownStateDataItem: public IDataItemCore {
public:
ShutdownStateDataItem(bool state = false) :
mState (state) {mId = SHUTDOWN_STATE_DATA_ITEM_ID;}
virtual ~ShutdownStateDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
bool mState;
};
class AssistedGpsDataItem: public IDataItemCore {
public:
AssistedGpsDataItem(bool enabled = false) :
mEnabled(enabled) {mId = ASSISTED_GPS_DATA_ITEM_ID;}
virtual ~AssistedGpsDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
bool mEnabled;
};
class NetworkInfoDataItem: public IDataItemCore {
public:
NetworkInfoDataItem(
int32_t type = NETWORKINFO_DEFAULT_TYPE,
std::string typeName = "",
std::string subTypeName = "",
bool available = false,
bool connected = false,
bool roaming = false,
uint64_t networkHandle = NETWORK_HANDLE_UNKNOWN,
std::string apn = NETWORKINFO_DEFAULT_APN_NAME):
NetworkInfoDataItem(getNormalizedType(type), type, typeName, subTypeName, available,
connected, roaming, networkHandle, apn) {}
NetworkInfoDataItem(NetworkType initialType, int32_t type, string typeName,
string subTypeName, bool available, bool connected, bool roaming,
uint64_t networkHandle, std::string apn):
mAllTypes(typeToAllTypes(initialType)),
mType(type),
mTypeName(typeName),
mSubTypeName(subTypeName),
mAvailable(available),
mConnected(connected),
mRoaming(roaming),
mNetworkHandle(networkHandle),
mApn(apn) {
mId = NETWORKINFO_DATA_ITEM_ID;
mAllNetworkHandles[0].networkHandle = networkHandle;
mAllNetworkHandles[0].networkType = initialType;
}
virtual ~NetworkInfoDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
inline uint64_t getAllTypes() { return mAllTypes; }
inline NetworkInfoType* getNetworkHandle() {
return &mAllNetworkHandles[0];
}
inline virtual NetworkType getType(void) const {
return getNormalizedType(mType);
}
inline static NetworkType getNormalizedType(int32_t type) {
NetworkType typeout = TYPE_UNKNOWN;
switch (type) {
case 100:
typeout = TYPE_WIFI;
break;
case 101:
typeout = TYPE_ETHERNET;
break;
case 102:
typeout = TYPE_BLUETOOTH;
break;
case 201:
typeout = TYPE_MOBILE;
break;
case 202:
typeout = TYPE_DUN;
break;
case 203:
typeout = TYPE_HIPRI;
break;
case 204:
typeout = TYPE_MMS;
break;
case 205:
typeout = TYPE_SUPL;
break;
case 220:
typeout = TYPE_WIMAX;
break;
case 300:
default:
typeout = TYPE_UNKNOWN;
break;
}
return typeout;
}
// Data members
uint64_t mAllTypes;
int32_t mType;
string mTypeName;
string mSubTypeName;
bool mAvailable;
bool mConnected;
bool mRoaming;
NetworkInfoType mAllNetworkHandles[MAX_NETWORK_HANDLES];
uint64_t mNetworkHandle;
std::string mApn;
protected:
inline uint64_t typeToAllTypes(NetworkType type) {
return (type >= TYPE_UNKNOWN || type < TYPE_MOBILE) ? 0 : (1<<type);
}
private:
inline void setType(NetworkType type) {
switch (type) {
case TYPE_WIFI:
mType = 100;
break;
case TYPE_ETHERNET:
mType = 101;
break;
case TYPE_BLUETOOTH:
mType = 102;
break;
case TYPE_MOBILE:
mType = 201;
break;
case TYPE_DUN:
mType = 202;
break;
case TYPE_HIPRI:
mType = 203;
break;
case TYPE_MMS:
mType = 204;
break;
case TYPE_SUPL:
mType = 205;
break;
case TYPE_WIMAX:
mType = 220;
break;
default:
mType = 300;
break;
}
}
};
class ServiceStatusDataItem: public IDataItemCore {
public:
ServiceStatusDataItem(int32_t serviceState = SERVICESTATUS_DEFAULT_STATE) :
mServiceState (serviceState) {mId = SERVICESTATUS_DATA_ITEM_ID;}
virtual ~ServiceStatusDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
int32_t mServiceState;
};
class ModelDataItem: public IDataItemCore {
public:
ModelDataItem(const string & name = "") :
mModel (name) {mId = MODEL_DATA_ITEM_ID;}
virtual ~ModelDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
string mModel;
};
class ManufacturerDataItem: public IDataItemCore {
public:
ManufacturerDataItem(const string & name = "") :
mManufacturer (name) {mId = MANUFACTURER_DATA_ITEM_ID;}
virtual ~ManufacturerDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
string mManufacturer;
};
class RilServiceInfoDataItem : public IDataItemCore {
public:
inline RilServiceInfoDataItem() :
mData(nullptr) {mId = RILSERVICEINFO_DATA_ITEM_ID;}
inline virtual ~RilServiceInfoDataItem() { if (nullptr != mData) free(mData); }
virtual void stringify(string& /*valueStr*/) {}
virtual int32_t copyFrom(IDataItemCore* src) {
if (nullptr != mData && nullptr != src) {
memcpy(mData, ((RilServiceInfoDataItem*)src)->mData, mLength);
}
return 0;
}
inline RilServiceInfoDataItem(const RilServiceInfoDataItem& peer) :
RilServiceInfoDataItem() {
mLength = peer.mLength;
mData = malloc(mLength);
if (nullptr != mData) {
memcpy(mData, peer.mData, mLength);
}
peer.setPeerData(*this);
}
inline virtual bool operator==(const RilServiceInfoDataItem& other) const {
return other.mData == mData;
}
inline virtual void setPeerData(RilServiceInfoDataItem& /*peer*/) const {}
void* mData;
int mLength;
};
class RilCellInfoDataItem : public IDataItemCore {
public:
inline RilCellInfoDataItem() :
mData(nullptr) {mId = RILCELLINFO_DATA_ITEM_ID;}
inline virtual ~RilCellInfoDataItem() { if (nullptr != mData) free(mData); }
virtual void stringify(string& /*valueStr*/) {}
virtual int32_t copyFrom(IDataItemCore* src) {
if (nullptr != mData && nullptr != src) {
memcpy(mData, ((RilCellInfoDataItem*)src)->mData, mLength);
}
return 0;
}
inline RilCellInfoDataItem(const RilCellInfoDataItem& peer) :
RilCellInfoDataItem() {
mLength = peer.mLength;
mData = malloc(mLength);
if (nullptr != mData) {
memcpy(mData, peer.mData, mLength);
}
peer.setPeerData(*this);
}
inline virtual bool operator==(const RilCellInfoDataItem& other) const {
return other.mData == mData;
}
inline virtual void setPeerData(RilCellInfoDataItem& /*peer*/) const {}
void* mData;
int mLength;
};
class WifiSupplicantStatusDataItem: public IDataItemCore {
public:
WifiSupplicantStatusDataItem() :
mState((WifiSupplicantState)WIFI_SUPPLICANT_DEFAULT_STATE),
mApMacAddressValid(false),
mWifiApSsidValid(false) {
mId = WIFI_SUPPLICANT_STATUS_DATA_ITEM_ID;
memset (mApMacAddress, 0, sizeof (mApMacAddress));
mWifiApSsid.clear();
}
virtual ~WifiSupplicantStatusDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
typedef enum WifiSupplicantState {
DISCONNECTED,
INTERFACE_DISABLED,
INACTIVE,
SCANNING,
AUTHENTICATING,
ASSOCIATING,
ASSOCIATED,
FOUR_WAY_HANDSHAKE,
GROUP_HANDSHAKE,
COMPLETED,
DORMANT,
UNINITIALIZED,
INVALID
} WifiSupplicantState;
/* Represents whether access point attach state*/
WifiSupplicantState mState;
/* Represents info on whether ap mac address is valid */
bool mApMacAddressValid;
/* Represents mac address of the wifi access point*/
uint8_t mApMacAddress[MAC_ADDRESS_LENGTH];
/* Represents info on whether ap SSID is valid */
bool mWifiApSsidValid;
/* Represents Wifi SSID string*/
string mWifiApSsid;
};
class TacDataItem: public IDataItemCore {
public:
TacDataItem(const string & name = "") :
mValue (name) {mId = TAC_DATA_ITEM_ID;}
virtual ~TacDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
string mValue;
};
class MccmncDataItem: public IDataItemCore {
public:
MccmncDataItem(const string & name = "") :
mValue(name) {mId = MCCMNC_DATA_ITEM_ID;}
virtual ~MccmncDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
string mValue;
};
class SrnDeviceScanDetailsDataItem: public IDataItemCore {
public:
SrnDeviceScanDetailsDataItem(DataItemId Id) :
mValidSrnData(false),
mApSrnRssi(-1),
mApSrnTimestamp(0),
mRequestTimestamp(0),
mReceiveTimestamp(0),
mErrorCause(-1) {mId = Id;}
virtual ~SrnDeviceScanDetailsDataItem() {}
// Data members common to all SRN tech types
/* Represents info on whether SRN data is valid (no error)*/
bool mValidSrnData;
/* SRN device RSSI reported */
int32_t mApSrnRssi;
/* MAC adress of SRN device */
uint8_t mApSrnMacAddress[SRN_MAC_ADDRESS_LENGTH];
/* UTC timestamp at which the scan was requested.for this SRN device*/
int64_t mApSrnTimestamp;
/* UTC timestamp at which the scan was started. */
int64_t mRequestTimestamp;
/* UTC timestamp at which the scan was received.*/
int64_t mReceiveTimestamp;
/* Reason for the error/failure if SRN details are not valid */
int32_t mErrorCause;
};
class BtDeviceScanDetailsDataItem: public SrnDeviceScanDetailsDataItem {
public:
BtDeviceScanDetailsDataItem() :
SrnDeviceScanDetailsDataItem(BT_SCAN_DATA_ITEM_ID) {}
virtual ~BtDeviceScanDetailsDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
};
class BtLeDeviceScanDetailsDataItem: public SrnDeviceScanDetailsDataItem {
public:
BtLeDeviceScanDetailsDataItem() :
SrnDeviceScanDetailsDataItem(BTLE_SCAN_DATA_ITEM_ID) {}
virtual ~BtLeDeviceScanDetailsDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
};
class BatteryLevelDataItem: public IDataItemCore {
public:
inline BatteryLevelDataItem(uint8_t batteryPct = BATTERY_PCT_DEFAULT) :
mBatteryPct(batteryPct) {mId = BATTERY_LEVEL_DATA_ITEM_ID;}
inline ~BatteryLevelDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
uint8_t mBatteryPct;
};
class InEmergencyCallDataItem: public IDataItemCore {
public:
InEmergencyCallDataItem(bool isEmergency = false) :
mIsEmergency(isEmergency) {mId = IN_EMERGENCY_CALL_DATA_ITEM_ID;}
virtual ~InEmergencyCallDataItem() {}
virtual void stringify(string& /*valueStr*/) override;
virtual int32_t copyFrom(IDataItemCore* /*src*/) override;
// Data members
bool mIsEmergency;
};
} // namespace loc_core
#endif //DATAITEM_CONCRETETYPES_H

View File

@@ -0,0 +1,80 @@
/* Copyright (c) 2015-2017,2021 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation, nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __DATAITEMID_H__
#define __DATAITEMID_H__
/**
* Enumeration of Data Item types
* When add/remove/update changes are made to Data Items, this file needs to be updated
* accordingly
*/
typedef enum e_DataItemId {
INVALID_DATA_ITEM_ID = -1,
// 0 - 4
AIRPLANEMODE_DATA_ITEM_ID,
ENH_DATA_ITEM_ID,
GPSSTATE_DATA_ITEM_ID,
NLPSTATUS_DATA_ITEM_ID,
WIFIHARDWARESTATE_DATA_ITEM_ID,
// 5 - 9
NETWORKINFO_DATA_ITEM_ID,
RILVERSION_DATA_ITEM_ID,
RILSERVICEINFO_DATA_ITEM_ID,
RILCELLINFO_DATA_ITEM_ID,
SERVICESTATUS_DATA_ITEM_ID,
// 10 - 14
MODEL_DATA_ITEM_ID,
MANUFACTURER_DATA_ITEM_ID,
VOICECALL_DATA_ITEM,
ASSISTED_GPS_DATA_ITEM_ID,
SCREEN_STATE_DATA_ITEM_ID,
// 15 - 19
POWER_CONNECTED_STATE_DATA_ITEM_ID,
TIMEZONE_CHANGE_DATA_ITEM_ID,
TIME_CHANGE_DATA_ITEM_ID,
WIFI_SUPPLICANT_STATUS_DATA_ITEM_ID,
SHUTDOWN_STATE_DATA_ITEM_ID,
// 20 - 24
TAC_DATA_ITEM_ID,
MCCMNC_DATA_ITEM_ID,
BTLE_SCAN_DATA_ITEM_ID,
BT_SCAN_DATA_ITEM_ID,
OEM_GTP_UPLOAD_TRIGGER_READY_ITEM_ID,
MAX_DATA_ITEM_ID,
// 26 -
BATTERY_LEVEL_DATA_ITEM_ID,
IN_EMERGENCY_CALL_DATA_ITEM_ID,
MAX_DATA_ITEM_ID_1_1,
} DataItemId;
#endif // #ifndef __DATAITEMID_H__

View File

@@ -0,0 +1,130 @@
/* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation, nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#define LOG_TAG "DataItemsFactoryProxy"
#include <dlfcn.h>
#include <DataItemId.h>
#include <IDataItemCore.h>
#include <DataItemsFactoryProxy.h>
#include <DataItemConcreteTypes.h>
#include <loc_pla.h>
#include <log_util.h>
#include "loc_misc_utils.h"
namespace loc_core
{
IDataItemCore* DataItemsFactoryProxy::createNewDataItem(IDataItemCore* dataItem) {
IDataItemCore *mydi = nullptr;
switch (dataItem->getId()) {
case AIRPLANEMODE_DATA_ITEM_ID:
mydi = new AirplaneModeDataItem(*((AirplaneModeDataItem*)dataItem));
break;
case ENH_DATA_ITEM_ID:
mydi = new ENHDataItem(*((ENHDataItem*)dataItem));
break;
case GPSSTATE_DATA_ITEM_ID:
mydi = new GPSStateDataItem(*((GPSStateDataItem*)dataItem));
break;
case NLPSTATUS_DATA_ITEM_ID:
mydi = new NLPStatusDataItem(*((NLPStatusDataItem*)dataItem));
break;
case WIFIHARDWARESTATE_DATA_ITEM_ID:
mydi = new WifiHardwareStateDataItem(*((WifiHardwareStateDataItem*)dataItem));
break;
case NETWORKINFO_DATA_ITEM_ID:
mydi = new NetworkInfoDataItem(*((NetworkInfoDataItem*)dataItem));
break;
case SERVICESTATUS_DATA_ITEM_ID:
mydi = new ServiceStatusDataItem(*((ServiceStatusDataItem*)dataItem));
break;
case RILCELLINFO_DATA_ITEM_ID:
mydi = new RilCellInfoDataItem(*((RilCellInfoDataItem*)dataItem));
break;
case RILSERVICEINFO_DATA_ITEM_ID:
mydi = new RilServiceInfoDataItem(*((RilServiceInfoDataItem*)dataItem));
break;
case MODEL_DATA_ITEM_ID:
mydi = new ModelDataItem(*((ModelDataItem*)dataItem));
break;
case MANUFACTURER_DATA_ITEM_ID:
mydi = new ManufacturerDataItem(*((ManufacturerDataItem*)dataItem));
break;
case IN_EMERGENCY_CALL_DATA_ITEM_ID:
mydi = new InEmergencyCallDataItem(*((InEmergencyCallDataItem*)dataItem));
break;
case ASSISTED_GPS_DATA_ITEM_ID:
mydi = new AssistedGpsDataItem(*((AssistedGpsDataItem*)dataItem));
break;
case SCREEN_STATE_DATA_ITEM_ID:
mydi = new ScreenStateDataItem(*((ScreenStateDataItem*)dataItem));
break;
case POWER_CONNECTED_STATE_DATA_ITEM_ID:
mydi = new PowerConnectStateDataItem(*((PowerConnectStateDataItem*)dataItem));
break;
case TIMEZONE_CHANGE_DATA_ITEM_ID:
mydi = new TimeZoneChangeDataItem(*((TimeZoneChangeDataItem*)dataItem));
break;
case TIME_CHANGE_DATA_ITEM_ID:
mydi = new TimeChangeDataItem(*((TimeChangeDataItem*)dataItem));
break;
case WIFI_SUPPLICANT_STATUS_DATA_ITEM_ID:
mydi = new WifiSupplicantStatusDataItem(*((WifiSupplicantStatusDataItem*)dataItem));
break;
case SHUTDOWN_STATE_DATA_ITEM_ID:
mydi = new ShutdownStateDataItem(*((ShutdownStateDataItem*)dataItem));
break;
case TAC_DATA_ITEM_ID:
mydi = new TacDataItem(*((TacDataItem*)dataItem));
break;
case MCCMNC_DATA_ITEM_ID:
mydi = new MccmncDataItem(*((MccmncDataItem*)dataItem));
break;
case BTLE_SCAN_DATA_ITEM_ID:
mydi = new BtLeDeviceScanDetailsDataItem(*((BtLeDeviceScanDetailsDataItem*)dataItem));
break;
case BT_SCAN_DATA_ITEM_ID:
mydi = new BtDeviceScanDetailsDataItem(*((BtDeviceScanDetailsDataItem*)dataItem));
break;
case BATTERY_LEVEL_DATA_ITEM_ID:
mydi = new BatteryLevelDataItem(*((BatteryLevelDataItem*)dataItem));
break;
case INVALID_DATA_ITEM_ID:
case MAX_DATA_ITEM_ID:
default:
break;
};
return mydi;
}
} // namespace loc_core

View File

@@ -0,0 +1,46 @@
/* Copyright (c) 2017, 2020, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation, nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __DATAITEMFACTORYBASE__
#define __DATAITEMFACTORYBASE__
#include <DataItemId.h>
#include <IDataItemCore.h>
namespace loc_core
{
class DataItemsFactoryProxy {
public:
static IDataItemCore* createNewDataItem(IDataItemCore* di);
};
} // namespace loc_core
#endif //__DATAITEMFACTORYBASE__

View File

@@ -0,0 +1,84 @@
/* Copyright (c) 2015, 2017, 2020 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation, nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
#ifndef __IDATAITEMCORE_H__
#define __IDATAITEMCORE_H__
#include <string>
#include <DataItemId.h>
namespace loc_core {
using namespace std;
/**
* @brief IDataItemCore interface.
* @details IDataItemCore interface.
*
*/
class IDataItemCore {
public:
/**
* @brief Gets Data item id.
* @details Gets Data item id.
* @return Data item id.
*/
inline DataItemId getId() { return mId; }
/**
* @brief Stringify.
* @details Stringify.
*
* @param valueStr Reference to string.
*/
virtual void stringify (string & valueStr) = 0;
/**
* @brief copy.
* @details copy.
*
* @param src Where to copy from.
* @param dataItemCopied Boolean flag indicated whether or not copied.
*
* @return Zero for success or non zero for failure.
*/
virtual int32_t copyFrom(IDataItemCore * src) = 0;
/**
* @brief Destructor.
* @details Destructor.
*/
virtual ~IDataItemCore () {}
protected:
DataItemId mId = INVALID_DATA_ITEM_ID;
};
} // namespace loc_core
#endif // __IDATAITEMCORE_H__