Fixed incorrect casting for SystemStatus::setNetworkInfo call

An incorrect casting at SystemStatus::eventDataItemNotify was causing a
heap overflow when trying to cast NetworkInfoDataItem into
SystemStatusNetworkInfo, that is bigger.

Change-Id: I3fbd88a1daf210c3c687a6f49ad868968a6efd96
CRs-fixed: 2137958
This commit is contained in:
Kevin Tang 2017-12-08 18:18:03 -08:00
parent bac0979ae6
commit 53a1aa5ed5
2 changed files with 100 additions and 55 deletions

View file

@ -1301,12 +1301,11 @@ SystemStatus::SystemStatus(const MsgTask* msgTask) :
/****************************************************************************** /******************************************************************************
SystemStatus - storing dataitems SystemStatus - storing dataitems
******************************************************************************/ ******************************************************************************/
bool SystemStatus::setNetworkInfo(const SystemStatusNetworkInfo& s) template <typename TYPE_SYSTEMSTATUS_ITEM, typename TYPE_REPORT, typename TYPE_ITEMBASE>
bool SystemStatus::setItemBaseinReport(TYPE_REPORT& report, const TYPE_ITEMBASE& s)
{ {
mConnected = s.mConnected; TYPE_SYSTEMSTATUS_ITEM sout(s);
SystemStatusNetworkInfo sout = s; return setIteminReport(report, sout);
sout.mType = s.getType();
return setIteminReport(mCache.mNetworkInfo, sout);
} }
template <typename TYPE_REPORT, typename TYPE_ITEM> template <typename TYPE_REPORT, typename TYPE_ITEM>
@ -1451,93 +1450,94 @@ bool SystemStatus::eventDataItemNotify(IDataItemCore* dataitem)
switch(dataitem->getId()) switch(dataitem->getId())
{ {
case AIRPLANEMODE_DATA_ITEM_ID: case AIRPLANEMODE_DATA_ITEM_ID:
ret = setIteminReport(mCache.mAirplaneMode, ret = setItemBaseinReport<SystemStatusAirplaneMode>(mCache.mAirplaneMode,
*(static_cast<SystemStatusAirplaneMode*>(dataitem))); *(static_cast<AirplaneModeDataItemBase*>(dataitem)));
break; break;
case ENH_DATA_ITEM_ID: case ENH_DATA_ITEM_ID:
ret = setIteminReport(mCache.mENH, ret = setItemBaseinReport<SystemStatusENH>(mCache.mENH,
*(static_cast<SystemStatusENH*>(dataitem))); *(static_cast<ENHDataItemBase*>(dataitem)));
break; break;
case GPSSTATE_DATA_ITEM_ID: case GPSSTATE_DATA_ITEM_ID:
ret = setIteminReport(mCache.mGPSState, ret = setItemBaseinReport<SystemStatusGpsState>(mCache.mGPSState,
*(static_cast<SystemStatusGpsState*>(dataitem))); *(static_cast<GPSStateDataItemBase*>(dataitem)));
break; break;
case NLPSTATUS_DATA_ITEM_ID: case NLPSTATUS_DATA_ITEM_ID:
ret = setIteminReport(mCache.mNLPStatus, ret = setItemBaseinReport<SystemStatusNLPStatus>(mCache.mNLPStatus,
*(static_cast<SystemStatusNLPStatus*>(dataitem))); *(static_cast<NLPStatusDataItemBase*>(dataitem)));
break; break;
case WIFIHARDWARESTATE_DATA_ITEM_ID: case WIFIHARDWARESTATE_DATA_ITEM_ID:
ret = setIteminReport(mCache.mWifiHardwareState, ret = setItemBaseinReport<SystemStatusWifiHardwareState>(mCache.mWifiHardwareState,
*(static_cast<SystemStatusWifiHardwareState*>(dataitem))); *(static_cast<WifiHardwareStateDataItemBase*>(dataitem)));
break; break;
case NETWORKINFO_DATA_ITEM_ID: case NETWORKINFO_DATA_ITEM_ID:
// need special handling for this item to map emums ret = setItemBaseinReport<SystemStatusNetworkInfo>(mCache.mNetworkInfo,
ret = setNetworkInfo( *(static_cast<NetworkInfoDataItemBase*>(dataitem)));
*(static_cast<SystemStatusNetworkInfo*>(dataitem)));
break; break;
case RILSERVICEINFO_DATA_ITEM_ID: case RILSERVICEINFO_DATA_ITEM_ID:
ret = setIteminReport(mCache.mRilServiceInfo, ret = setItemBaseinReport<SystemStatusServiceInfo>(mCache.mRilServiceInfo,
*(static_cast<SystemStatusServiceInfo*>(dataitem))); *(static_cast<RilServiceInfoDataItemBase*>(dataitem)));
break; break;
case RILCELLINFO_DATA_ITEM_ID: case RILCELLINFO_DATA_ITEM_ID:
ret = setIteminReport(mCache.mRilCellInfo, ret = setItemBaseinReport<SystemStatusRilCellInfo>(mCache.mRilCellInfo,
*(static_cast<SystemStatusRilCellInfo*>(dataitem))); *(static_cast<RilCellInfoDataItemBase*>(dataitem)));
break; break;
case SERVICESTATUS_DATA_ITEM_ID: case SERVICESTATUS_DATA_ITEM_ID:
ret = setIteminReport(mCache.mServiceStatus, ret = setItemBaseinReport<SystemStatusServiceStatus>(mCache.mServiceStatus,
*(static_cast<SystemStatusServiceStatus*>(dataitem))); *(static_cast<ServiceStatusDataItemBase*>(dataitem)));
break; break;
case MODEL_DATA_ITEM_ID: case MODEL_DATA_ITEM_ID:
ret = setIteminReport(mCache.mModel, ret = setItemBaseinReport<SystemStatusModel>(mCache.mModel,
*(static_cast<SystemStatusModel*>(dataitem))); *(static_cast<ModelDataItemBase*>(dataitem)));
break; break;
case MANUFACTURER_DATA_ITEM_ID: case MANUFACTURER_DATA_ITEM_ID:
ret = setIteminReport(mCache.mManufacturer, ret = setItemBaseinReport<SystemStatusManufacturer>(mCache.mManufacturer,
*(static_cast<SystemStatusManufacturer*>(dataitem))); *(static_cast<ManufacturerDataItemBase*>(dataitem)));
break; break;
case ASSISTED_GPS_DATA_ITEM_ID: case ASSISTED_GPS_DATA_ITEM_ID:
ret = setIteminReport(mCache.mAssistedGps, ret = setItemBaseinReport<SystemStatusAssistedGps>(mCache.mAssistedGps,
*(static_cast<SystemStatusAssistedGps*>(dataitem))); *(static_cast<AssistedGpsDataItemBase*>(dataitem)));
break; break;
case SCREEN_STATE_DATA_ITEM_ID: case SCREEN_STATE_DATA_ITEM_ID:
ret = setIteminReport(mCache.mScreenState, ret = setItemBaseinReport<SystemStatusScreenState>(mCache.mScreenState,
*(static_cast<SystemStatusScreenState*>(dataitem))); *(static_cast<ScreenStateDataItemBase*>(dataitem)));
break; break;
case POWER_CONNECTED_STATE_DATA_ITEM_ID: case POWER_CONNECTED_STATE_DATA_ITEM_ID:
ret = setIteminReport(mCache.mPowerConnectState, ret = setItemBaseinReport<SystemStatusPowerConnectState>(mCache.mPowerConnectState,
*(static_cast<SystemStatusPowerConnectState*>(dataitem))); *(static_cast<PowerConnectStateDataItemBase*>(dataitem)));
break; break;
case TIMEZONE_CHANGE_DATA_ITEM_ID: case TIMEZONE_CHANGE_DATA_ITEM_ID:
ret = setIteminReport(mCache.mTimeZoneChange, ret = setItemBaseinReport<SystemStatusTimeZoneChange>(mCache.mTimeZoneChange,
*(static_cast<SystemStatusTimeZoneChange*>(dataitem))); *(static_cast<TimeZoneChangeDataItemBase*>(dataitem)));
break; break;
case TIME_CHANGE_DATA_ITEM_ID: case TIME_CHANGE_DATA_ITEM_ID:
ret = setIteminReport(mCache.mTimeChange, ret = setItemBaseinReport<SystemStatusTimeChange>(mCache.mTimeChange,
*(static_cast<SystemStatusTimeChange*>(dataitem))); *(static_cast<TimeChangeDataItemBase*>(dataitem)));
break; break;
case WIFI_SUPPLICANT_STATUS_DATA_ITEM_ID: case WIFI_SUPPLICANT_STATUS_DATA_ITEM_ID:
ret = setIteminReport(mCache.mWifiSupplicantStatus, ret = setItemBaseinReport<SystemStatusWifiSupplicantStatus>(
*(static_cast<SystemStatusWifiSupplicantStatus*>(dataitem))); mCache.mWifiSupplicantStatus,
*(static_cast<WifiSupplicantStatusDataItemBase*>(dataitem)));
break; break;
case SHUTDOWN_STATE_DATA_ITEM_ID: case SHUTDOWN_STATE_DATA_ITEM_ID:
ret = setIteminReport(mCache.mShutdownState, ret = setItemBaseinReport<SystemStatusShutdownState>(mCache.mShutdownState,
*(static_cast<SystemStatusShutdownState*>(dataitem))); *(static_cast<ShutdownStateDataItemBase*>(dataitem)));
break; break;
case TAC_DATA_ITEM_ID: case TAC_DATA_ITEM_ID:
ret = setIteminReport(mCache.mTac, ret = setItemBaseinReport<SystemStatusTac>(mCache.mTac,
*(static_cast<SystemStatusTac*>(dataitem))); *(static_cast<TacDataItemBase*>(dataitem)));
break; break;
case MCCMNC_DATA_ITEM_ID: case MCCMNC_DATA_ITEM_ID:
ret = setIteminReport(mCache.mMccMnc, ret = setItemBaseinReport<SystemStatusMccMnc>(mCache.mMccMnc,
*(static_cast<SystemStatusMccMnc*>(dataitem))); *(static_cast<MccmncDataItemBase*>(dataitem)));
break; break;
case BTLE_SCAN_DATA_ITEM_ID: case BTLE_SCAN_DATA_ITEM_ID:
ret = setIteminReport(mCache.mBtDeviceScanDetail, ret = setItemBaseinReport<SystemStatusBtDeviceScanDetail>(mCache.mBtDeviceScanDetail,
*(static_cast<SystemStatusBtDeviceScanDetail*>(dataitem))); *(static_cast<BtDeviceScanDetailsDataItemBase*>(dataitem)));
break; break;
case BT_SCAN_DATA_ITEM_ID: case BT_SCAN_DATA_ITEM_ID:
ret = setIteminReport(mCache.mBtLeDeviceScanDetail, ret = setItemBaseinReport<SystemStatusBtleDeviceScanDetail>(
*(static_cast<SystemStatusBtleDeviceScanDetail*>(dataitem))); mCache.mBtLeDeviceScanDetail,
*(static_cast<BtLeDeviceScanDetailsDataItemBase*>(dataitem)));
break; break;
default: default:
break; break;

View file

@ -391,6 +391,8 @@ class SystemStatusAirplaneMode : public SystemStatusItemBase,
public: public:
inline SystemStatusAirplaneMode(bool mode=false) : inline SystemStatusAirplaneMode(bool mode=false) :
AirplaneModeDataItemBase(mode) {} AirplaneModeDataItemBase(mode) {}
inline SystemStatusAirplaneMode(const AirplaneModeDataItemBase& itemBase) :
AirplaneModeDataItemBase(itemBase) {}
inline bool equals(const SystemStatusAirplaneMode& peer) { inline bool equals(const SystemStatusAirplaneMode& peer) {
return (mMode == peer.mMode); return (mMode == peer.mMode);
} }
@ -402,6 +404,8 @@ class SystemStatusENH : public SystemStatusItemBase,
public: public:
inline SystemStatusENH(bool enabled=false) : inline SystemStatusENH(bool enabled=false) :
ENHDataItemBase(enabled) {} ENHDataItemBase(enabled) {}
inline SystemStatusENH(const ENHDataItemBase& itemBase) :
ENHDataItemBase(itemBase) {}
inline bool equals(const SystemStatusENH& peer) { inline bool equals(const SystemStatusENH& peer) {
return (mEnabled == peer.mEnabled); return (mEnabled == peer.mEnabled);
} }
@ -413,6 +417,8 @@ class SystemStatusGpsState : public SystemStatusItemBase,
public: public:
inline SystemStatusGpsState(bool enabled=false) : inline SystemStatusGpsState(bool enabled=false) :
GPSStateDataItemBase(enabled) {} GPSStateDataItemBase(enabled) {}
inline SystemStatusGpsState(const GPSStateDataItemBase& itemBase) :
GPSStateDataItemBase(itemBase) {}
inline bool equals(const SystemStatusGpsState& peer) { inline bool equals(const SystemStatusGpsState& peer) {
return (mEnabled == peer.mEnabled); return (mEnabled == peer.mEnabled);
} }
@ -427,6 +433,8 @@ class SystemStatusNLPStatus : public SystemStatusItemBase,
public: public:
inline SystemStatusNLPStatus(bool enabled=false) : inline SystemStatusNLPStatus(bool enabled=false) :
NLPStatusDataItemBase(enabled) {} NLPStatusDataItemBase(enabled) {}
inline SystemStatusNLPStatus(const NLPStatusDataItemBase& itemBase) :
NLPStatusDataItemBase(itemBase) {}
inline bool equals(const SystemStatusNLPStatus& peer) { inline bool equals(const SystemStatusNLPStatus& peer) {
return (mEnabled == peer.mEnabled); return (mEnabled == peer.mEnabled);
} }
@ -438,6 +446,8 @@ class SystemStatusWifiHardwareState : public SystemStatusItemBase,
public: public:
inline SystemStatusWifiHardwareState(bool enabled=false) : inline SystemStatusWifiHardwareState(bool enabled=false) :
WifiHardwareStateDataItemBase(enabled) {} WifiHardwareStateDataItemBase(enabled) {}
inline SystemStatusWifiHardwareState(const WifiHardwareStateDataItemBase& itemBase) :
WifiHardwareStateDataItemBase(itemBase) {}
inline bool equals(const SystemStatusWifiHardwareState& peer) { inline bool equals(const SystemStatusWifiHardwareState& peer) {
return (mEnabled == peer.mEnabled); return (mEnabled == peer.mEnabled);
} }
@ -461,6 +471,10 @@ public:
available, available,
connected, connected,
roaming) {} roaming) {}
inline SystemStatusNetworkInfo(const NetworkInfoDataItemBase& itemBase) :
NetworkInfoDataItemBase(itemBase) {
mType = itemBase.getType();
}
inline bool equals(const SystemStatusNetworkInfo& peer) { inline bool equals(const SystemStatusNetworkInfo& peer) {
if ((mType == peer.mType) && if ((mType == peer.mType) &&
(mTypeName == peer.mTypeName) && (mTypeName == peer.mTypeName) &&
@ -470,8 +484,8 @@ public:
(mRoaming == peer.mRoaming)) { (mRoaming == peer.mRoaming)) {
return true; return true;
} }
return false; return false;
} }
inline void dump(void) override { inline void dump(void) override {
LOC_LOGD("NetworkInfo: type=%u connected=%u", mType, mConnected); LOC_LOGD("NetworkInfo: type=%u connected=%u", mType, mConnected);
} }
@ -483,6 +497,8 @@ class SystemStatusServiceInfo : public SystemStatusItemBase,
public: public:
inline SystemStatusServiceInfo() : inline SystemStatusServiceInfo() :
RilServiceInfoDataItemBase() {} RilServiceInfoDataItemBase() {}
inline SystemStatusServiceInfo(const RilServiceInfoDataItemBase& itemBase) :
RilServiceInfoDataItemBase(itemBase) {}
inline bool equals(const SystemStatusServiceInfo& /*peer*/) { inline bool equals(const SystemStatusServiceInfo& /*peer*/) {
return true; return true;
} }
@ -494,6 +510,8 @@ class SystemStatusRilCellInfo : public SystemStatusItemBase,
public: public:
inline SystemStatusRilCellInfo() : inline SystemStatusRilCellInfo() :
RilCellInfoDataItemBase() {} RilCellInfoDataItemBase() {}
inline SystemStatusRilCellInfo(const RilCellInfoDataItemBase& itemBase) :
RilCellInfoDataItemBase(itemBase) {}
inline bool equals(const SystemStatusRilCellInfo& /*peer*/) { inline bool equals(const SystemStatusRilCellInfo& /*peer*/) {
return true; return true;
} }
@ -505,6 +523,8 @@ class SystemStatusServiceStatus : public SystemStatusItemBase,
public: public:
inline SystemStatusServiceStatus(int32_t mServiceState=0) : inline SystemStatusServiceStatus(int32_t mServiceState=0) :
ServiceStatusDataItemBase(mServiceState) {} ServiceStatusDataItemBase(mServiceState) {}
inline SystemStatusServiceStatus(const ServiceStatusDataItemBase& itemBase) :
ServiceStatusDataItemBase(itemBase) {}
inline bool equals(const SystemStatusServiceStatus& peer) { inline bool equals(const SystemStatusServiceStatus& peer) {
return (mServiceState == peer.mServiceState); return (mServiceState == peer.mServiceState);
} }
@ -516,6 +536,8 @@ class SystemStatusModel : public SystemStatusItemBase,
public: public:
inline SystemStatusModel(string name="") : inline SystemStatusModel(string name="") :
ModelDataItemBase(name) {} ModelDataItemBase(name) {}
inline SystemStatusModel(const ModelDataItemBase& itemBase) :
ModelDataItemBase(itemBase) {}
inline bool equals(const SystemStatusModel& peer) { inline bool equals(const SystemStatusModel& peer) {
return (mModel == peer.mModel); return (mModel == peer.mModel);
} }
@ -527,6 +549,8 @@ class SystemStatusManufacturer : public SystemStatusItemBase,
public: public:
inline SystemStatusManufacturer(string name="") : inline SystemStatusManufacturer(string name="") :
ManufacturerDataItemBase(name) {} ManufacturerDataItemBase(name) {}
inline SystemStatusManufacturer(const ManufacturerDataItemBase& itemBase) :
ManufacturerDataItemBase(itemBase) {}
inline bool equals(const SystemStatusManufacturer& peer) { inline bool equals(const SystemStatusManufacturer& peer) {
return (mManufacturer == peer.mManufacturer); return (mManufacturer == peer.mManufacturer);
} }
@ -538,6 +562,8 @@ class SystemStatusAssistedGps : public SystemStatusItemBase,
public: public:
inline SystemStatusAssistedGps(bool enabled=false) : inline SystemStatusAssistedGps(bool enabled=false) :
AssistedGpsDataItemBase(enabled) {} AssistedGpsDataItemBase(enabled) {}
inline SystemStatusAssistedGps(const AssistedGpsDataItemBase& itemBase) :
AssistedGpsDataItemBase(itemBase) {}
inline bool equals(const SystemStatusAssistedGps& peer) { inline bool equals(const SystemStatusAssistedGps& peer) {
return (mEnabled == peer.mEnabled); return (mEnabled == peer.mEnabled);
} }
@ -549,6 +575,8 @@ class SystemStatusScreenState : public SystemStatusItemBase,
public: public:
inline SystemStatusScreenState(bool state=false) : inline SystemStatusScreenState(bool state=false) :
ScreenStateDataItemBase(state) {} ScreenStateDataItemBase(state) {}
inline SystemStatusScreenState(const ScreenStateDataItemBase& itemBase) :
ScreenStateDataItemBase(itemBase) {}
inline bool equals(const SystemStatusScreenState& peer) { inline bool equals(const SystemStatusScreenState& peer) {
return (mState == peer.mState); return (mState == peer.mState);
} }
@ -560,6 +588,8 @@ class SystemStatusPowerConnectState : public SystemStatusItemBase,
public: public:
inline SystemStatusPowerConnectState(bool state=false) : inline SystemStatusPowerConnectState(bool state=false) :
PowerConnectStateDataItemBase(state) {} PowerConnectStateDataItemBase(state) {}
inline SystemStatusPowerConnectState(const PowerConnectStateDataItemBase& itemBase) :
PowerConnectStateDataItemBase(itemBase) {}
inline bool equals(const SystemStatusPowerConnectState& peer) { inline bool equals(const SystemStatusPowerConnectState& peer) {
return (mState == peer.mState); return (mState == peer.mState);
} }
@ -572,6 +602,8 @@ public:
inline SystemStatusTimeZoneChange( inline SystemStatusTimeZoneChange(
int64_t currTimeMillis=0ULL, int32_t rawOffset=0, int32_t dstOffset=0) : int64_t currTimeMillis=0ULL, int32_t rawOffset=0, int32_t dstOffset=0) :
TimeZoneChangeDataItemBase(currTimeMillis, rawOffset, dstOffset) {} TimeZoneChangeDataItemBase(currTimeMillis, rawOffset, dstOffset) {}
inline SystemStatusTimeZoneChange(const TimeZoneChangeDataItemBase& itemBase) :
TimeZoneChangeDataItemBase(itemBase) {}
inline bool equals(const SystemStatusTimeZoneChange& peer) { inline bool equals(const SystemStatusTimeZoneChange& peer) {
return ((mCurrTimeMillis == peer.mCurrTimeMillis) && return ((mCurrTimeMillis == peer.mCurrTimeMillis) &&
(mRawOffsetTZ == peer.mRawOffsetTZ) && (mRawOffsetTZ == peer.mRawOffsetTZ) &&
@ -586,6 +618,8 @@ public:
inline SystemStatusTimeChange( inline SystemStatusTimeChange(
int64_t currTimeMillis=0ULL, int32_t rawOffset=0, int32_t dstOffset=0) : int64_t currTimeMillis=0ULL, int32_t rawOffset=0, int32_t dstOffset=0) :
TimeChangeDataItemBase(currTimeMillis, rawOffset, dstOffset) {} TimeChangeDataItemBase(currTimeMillis, rawOffset, dstOffset) {}
inline SystemStatusTimeChange(const TimeChangeDataItemBase& itemBase) :
TimeChangeDataItemBase(itemBase) {}
inline bool equals(const SystemStatusTimeChange& peer) { inline bool equals(const SystemStatusTimeChange& peer) {
return ((mCurrTimeMillis == peer.mCurrTimeMillis) && return ((mCurrTimeMillis == peer.mCurrTimeMillis) &&
(mRawOffsetTZ == peer.mRawOffsetTZ) && (mRawOffsetTZ == peer.mRawOffsetTZ) &&
@ -599,6 +633,8 @@ class SystemStatusWifiSupplicantStatus : public SystemStatusItemBase,
public: public:
inline SystemStatusWifiSupplicantStatus() : inline SystemStatusWifiSupplicantStatus() :
WifiSupplicantStatusDataItemBase() {} WifiSupplicantStatusDataItemBase() {}
inline SystemStatusWifiSupplicantStatus(const WifiSupplicantStatusDataItemBase& itemBase) :
WifiSupplicantStatusDataItemBase(itemBase) {}
inline bool equals(const SystemStatusWifiSupplicantStatus& peer) { inline bool equals(const SystemStatusWifiSupplicantStatus& peer) {
return ((mState == peer.mState) && return ((mState == peer.mState) &&
(mApMacAddressValid == peer.mApMacAddressValid) && (mApMacAddressValid == peer.mApMacAddressValid) &&
@ -613,6 +649,8 @@ class SystemStatusShutdownState : public SystemStatusItemBase,
public: public:
inline SystemStatusShutdownState(bool state=false) : inline SystemStatusShutdownState(bool state=false) :
ShutdownStateDataItemBase(state) {} ShutdownStateDataItemBase(state) {}
inline SystemStatusShutdownState(const ShutdownStateDataItemBase& itemBase) :
ShutdownStateDataItemBase(itemBase) {}
inline bool equals(const SystemStatusShutdownState& peer) { inline bool equals(const SystemStatusShutdownState& peer) {
return (mState == peer.mState); return (mState == peer.mState);
} }
@ -624,7 +662,8 @@ class SystemStatusTac : public SystemStatusItemBase,
public: public:
inline SystemStatusTac(std::string value="") : inline SystemStatusTac(std::string value="") :
TacDataItemBase(value) {} TacDataItemBase(value) {}
inline SystemStatusTac(const TacDataItemBase& itemBase) :
TacDataItemBase(itemBase) {}
inline bool equals(const SystemStatusTac& peer) { inline bool equals(const SystemStatusTac& peer) {
return (mValue == peer.mValue); return (mValue == peer.mValue);
} }
@ -639,6 +678,8 @@ class SystemStatusMccMnc : public SystemStatusItemBase,
public: public:
inline SystemStatusMccMnc(std::string value="") : inline SystemStatusMccMnc(std::string value="") :
MccmncDataItemBase(value) {} MccmncDataItemBase(value) {}
inline SystemStatusMccMnc(const MccmncDataItemBase& itemBase) :
MccmncDataItemBase(itemBase) {}
inline bool equals(const SystemStatusMccMnc& peer) { inline bool equals(const SystemStatusMccMnc& peer) {
return (mValue == peer.mValue); return (mValue == peer.mValue);
} }
@ -653,6 +694,8 @@ class SystemStatusBtDeviceScanDetail : public SystemStatusItemBase,
public: public:
inline SystemStatusBtDeviceScanDetail() : inline SystemStatusBtDeviceScanDetail() :
BtDeviceScanDetailsDataItemBase() {} BtDeviceScanDetailsDataItemBase() {}
inline SystemStatusBtDeviceScanDetail(const BtDeviceScanDetailsDataItemBase& itemBase) :
BtDeviceScanDetailsDataItemBase(itemBase) {}
inline bool equals(const SystemStatusBtDeviceScanDetail& /*peer*/) { inline bool equals(const SystemStatusBtDeviceScanDetail& /*peer*/) {
return true; return true;
} }
@ -664,6 +707,8 @@ class SystemStatusBtleDeviceScanDetail : public SystemStatusItemBase,
public: public:
inline SystemStatusBtleDeviceScanDetail() : inline SystemStatusBtleDeviceScanDetail() :
BtLeDeviceScanDetailsDataItemBase() {} BtLeDeviceScanDetailsDataItemBase() {}
inline SystemStatusBtleDeviceScanDetail(const BtLeDeviceScanDetailsDataItemBase& itemBase) :
BtLeDeviceScanDetailsDataItemBase(itemBase) {}
inline bool equals(const SystemStatusBtleDeviceScanDetail& /*peer*/) { inline bool equals(const SystemStatusBtleDeviceScanDetail& /*peer*/) {
return true; return true;
} }
@ -739,8 +784,8 @@ private:
SystemStatusReports mCache; SystemStatusReports mCache;
bool mConnected; bool mConnected;
// set dataitem derived item in report cache template <typename TYPE_SYSTEMSTATUS_ITEM, typename TYPE_REPORT, typename TYPE_ITEMBASE>
bool setNetworkInfo(const SystemStatusNetworkInfo& s); bool setItemBaseinReport(TYPE_REPORT& report, const TYPE_ITEMBASE& s);
template <typename TYPE_REPORT, typename TYPE_ITEM> template <typename TYPE_REPORT, typename TYPE_ITEM>
bool setIteminReport(TYPE_REPORT& report, const TYPE_ITEM& s); bool setIteminReport(TYPE_REPORT& report, const TYPE_ITEM& s);