Merge "Fixed a number of issues with NetworkInfoDataItemBase"
This commit is contained in:
commit
113b20c3fc
5 changed files with 107 additions and 117 deletions
|
@ -1250,8 +1250,7 @@ IOsObserver* SystemStatus::getOsObserver()
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemStatus::SystemStatus(const MsgTask* msgTask) :
|
SystemStatus::SystemStatus(const MsgTask* msgTask) :
|
||||||
mSysStatusObsvr(this, msgTask),
|
mSysStatusObsvr(this, msgTask)
|
||||||
mConnected(false)
|
|
||||||
{
|
{
|
||||||
int result = 0;
|
int result = 0;
|
||||||
ENTRY_LOG ();
|
ENTRY_LOG ();
|
||||||
|
@ -1301,17 +1300,10 @@ SystemStatus::SystemStatus(const MsgTask* msgTask) :
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
SystemStatus - storing dataitems
|
SystemStatus - storing dataitems
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
template <typename TYPE_SYSTEMSTATUS_ITEM, typename TYPE_REPORT, typename TYPE_ITEMBASE>
|
|
||||||
bool SystemStatus::setItemBaseinReport(TYPE_REPORT& report, const TYPE_ITEMBASE& s)
|
|
||||||
{
|
|
||||||
TYPE_SYSTEMSTATUS_ITEM sout(s);
|
|
||||||
return setIteminReport(report, sout);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename TYPE_REPORT, typename TYPE_ITEM>
|
template <typename TYPE_REPORT, typename TYPE_ITEM>
|
||||||
bool SystemStatus::setIteminReport(TYPE_REPORT& report, const TYPE_ITEM& s)
|
bool SystemStatus::setIteminReport(TYPE_REPORT& report, TYPE_ITEM&& s)
|
||||||
{
|
{
|
||||||
if (!report.empty() && report.back().equals(s)) {
|
if (!report.empty() && report.back().equals(static_cast<TYPE_ITEM&>(s.collate(report.back())))) {
|
||||||
// there is no change - just update reported timestamp
|
// there is no change - just update reported timestamp
|
||||||
report.back().mUtcReported = s.mUtcReported;
|
report.back().mUtcReported = s.mUtcReported;
|
||||||
return false;
|
return false;
|
||||||
|
@ -1449,94 +1441,92 @@ bool SystemStatus::eventDataItemNotify(IDataItemCore* dataitem)
|
||||||
switch(dataitem->getId())
|
switch(dataitem->getId())
|
||||||
{
|
{
|
||||||
case AIRPLANEMODE_DATA_ITEM_ID:
|
case AIRPLANEMODE_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusAirplaneMode>(mCache.mAirplaneMode,
|
ret = setIteminReport(mCache.mAirplaneMode,
|
||||||
*(static_cast<AirplaneModeDataItemBase*>(dataitem)));
|
SystemStatusAirplaneMode(*(static_cast<AirplaneModeDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case ENH_DATA_ITEM_ID:
|
case ENH_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusENH>(mCache.mENH,
|
ret = setIteminReport(mCache.mENH,
|
||||||
*(static_cast<ENHDataItemBase*>(dataitem)));
|
SystemStatusENH(*(static_cast<ENHDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case GPSSTATE_DATA_ITEM_ID:
|
case GPSSTATE_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusGpsState>(mCache.mGPSState,
|
ret = setIteminReport(mCache.mGPSState,
|
||||||
*(static_cast<GPSStateDataItemBase*>(dataitem)));
|
SystemStatusGpsState(*(static_cast<GPSStateDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case NLPSTATUS_DATA_ITEM_ID:
|
case NLPSTATUS_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusNLPStatus>(mCache.mNLPStatus,
|
ret = setIteminReport(mCache.mNLPStatus,
|
||||||
*(static_cast<NLPStatusDataItemBase*>(dataitem)));
|
SystemStatusNLPStatus(*(static_cast<NLPStatusDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case WIFIHARDWARESTATE_DATA_ITEM_ID:
|
case WIFIHARDWARESTATE_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusWifiHardwareState>(mCache.mWifiHardwareState,
|
ret = setIteminReport(mCache.mWifiHardwareState,
|
||||||
*(static_cast<WifiHardwareStateDataItemBase*>(dataitem)));
|
SystemStatusWifiHardwareState(*(static_cast<WifiHardwareStateDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case NETWORKINFO_DATA_ITEM_ID:
|
case NETWORKINFO_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusNetworkInfo>(mCache.mNetworkInfo,
|
ret = setIteminReport(mCache.mNetworkInfo,
|
||||||
*(static_cast<NetworkInfoDataItemBase*>(dataitem)));
|
SystemStatusNetworkInfo(*(static_cast<NetworkInfoDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case RILSERVICEINFO_DATA_ITEM_ID:
|
case RILSERVICEINFO_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusServiceInfo>(mCache.mRilServiceInfo,
|
ret = setIteminReport(mCache.mRilServiceInfo,
|
||||||
*(static_cast<RilServiceInfoDataItemBase*>(dataitem)));
|
SystemStatusServiceInfo(*(static_cast<RilServiceInfoDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case RILCELLINFO_DATA_ITEM_ID:
|
case RILCELLINFO_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusRilCellInfo>(mCache.mRilCellInfo,
|
ret = setIteminReport(mCache.mRilCellInfo,
|
||||||
*(static_cast<RilCellInfoDataItemBase*>(dataitem)));
|
SystemStatusRilCellInfo(*(static_cast<RilCellInfoDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case SERVICESTATUS_DATA_ITEM_ID:
|
case SERVICESTATUS_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusServiceStatus>(mCache.mServiceStatus,
|
ret = setIteminReport(mCache.mServiceStatus,
|
||||||
*(static_cast<ServiceStatusDataItemBase*>(dataitem)));
|
SystemStatusServiceStatus(*(static_cast<ServiceStatusDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case MODEL_DATA_ITEM_ID:
|
case MODEL_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusModel>(mCache.mModel,
|
ret = setIteminReport(mCache.mModel,
|
||||||
*(static_cast<ModelDataItemBase*>(dataitem)));
|
SystemStatusModel(*(static_cast<ModelDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case MANUFACTURER_DATA_ITEM_ID:
|
case MANUFACTURER_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusManufacturer>(mCache.mManufacturer,
|
ret = setIteminReport(mCache.mManufacturer,
|
||||||
*(static_cast<ManufacturerDataItemBase*>(dataitem)));
|
SystemStatusManufacturer(*(static_cast<ManufacturerDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case ASSISTED_GPS_DATA_ITEM_ID:
|
case ASSISTED_GPS_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusAssistedGps>(mCache.mAssistedGps,
|
ret = setIteminReport(mCache.mAssistedGps,
|
||||||
*(static_cast<AssistedGpsDataItemBase*>(dataitem)));
|
SystemStatusAssistedGps(*(static_cast<AssistedGpsDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case SCREEN_STATE_DATA_ITEM_ID:
|
case SCREEN_STATE_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusScreenState>(mCache.mScreenState,
|
ret = setIteminReport(mCache.mScreenState,
|
||||||
*(static_cast<ScreenStateDataItemBase*>(dataitem)));
|
SystemStatusScreenState(*(static_cast<ScreenStateDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case POWER_CONNECTED_STATE_DATA_ITEM_ID:
|
case POWER_CONNECTED_STATE_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusPowerConnectState>(mCache.mPowerConnectState,
|
ret = setIteminReport(mCache.mPowerConnectState,
|
||||||
*(static_cast<PowerConnectStateDataItemBase*>(dataitem)));
|
SystemStatusPowerConnectState(*(static_cast<PowerConnectStateDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case TIMEZONE_CHANGE_DATA_ITEM_ID:
|
case TIMEZONE_CHANGE_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusTimeZoneChange>(mCache.mTimeZoneChange,
|
ret = setIteminReport(mCache.mTimeZoneChange,
|
||||||
*(static_cast<TimeZoneChangeDataItemBase*>(dataitem)));
|
SystemStatusTimeZoneChange(*(static_cast<TimeZoneChangeDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case TIME_CHANGE_DATA_ITEM_ID:
|
case TIME_CHANGE_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusTimeChange>(mCache.mTimeChange,
|
ret = setIteminReport(mCache.mTimeChange,
|
||||||
*(static_cast<TimeChangeDataItemBase*>(dataitem)));
|
SystemStatusTimeChange(*(static_cast<TimeChangeDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case WIFI_SUPPLICANT_STATUS_DATA_ITEM_ID:
|
case WIFI_SUPPLICANT_STATUS_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusWifiSupplicantStatus>(
|
ret = setIteminReport(mCache.mWifiSupplicantStatus,
|
||||||
mCache.mWifiSupplicantStatus,
|
SystemStatusWifiSupplicantStatus(*(static_cast<WifiSupplicantStatusDataItemBase*>(dataitem))));
|
||||||
*(static_cast<WifiSupplicantStatusDataItemBase*>(dataitem)));
|
|
||||||
break;
|
break;
|
||||||
case SHUTDOWN_STATE_DATA_ITEM_ID:
|
case SHUTDOWN_STATE_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusShutdownState>(mCache.mShutdownState,
|
ret = setIteminReport(mCache.mShutdownState,
|
||||||
*(static_cast<ShutdownStateDataItemBase*>(dataitem)));
|
SystemStatusShutdownState(*(static_cast<ShutdownStateDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case TAC_DATA_ITEM_ID:
|
case TAC_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusTac>(mCache.mTac,
|
ret = setIteminReport(mCache.mTac,
|
||||||
*(static_cast<TacDataItemBase*>(dataitem)));
|
SystemStatusTac(*(static_cast<TacDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case MCCMNC_DATA_ITEM_ID:
|
case MCCMNC_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusMccMnc>(mCache.mMccMnc,
|
ret = setIteminReport(mCache.mMccMnc,
|
||||||
*(static_cast<MccmncDataItemBase*>(dataitem)));
|
SystemStatusMccMnc(*(static_cast<MccmncDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case BTLE_SCAN_DATA_ITEM_ID:
|
case BTLE_SCAN_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusBtDeviceScanDetail>(mCache.mBtDeviceScanDetail,
|
ret = setIteminReport(mCache.mBtDeviceScanDetail,
|
||||||
*(static_cast<BtDeviceScanDetailsDataItemBase*>(dataitem)));
|
SystemStatusBtDeviceScanDetail(*(static_cast<BtDeviceScanDetailsDataItemBase*>(dataitem))));
|
||||||
break;
|
break;
|
||||||
case BT_SCAN_DATA_ITEM_ID:
|
case BT_SCAN_DATA_ITEM_ID:
|
||||||
ret = setItemBaseinReport<SystemStatusBtleDeviceScanDetail>(
|
ret = setIteminReport(mCache.mBtLeDeviceScanDetail,
|
||||||
mCache.mBtLeDeviceScanDetail,
|
SystemStatusBtleDeviceScanDetail(*(static_cast<BtLeDeviceScanDetailsDataItemBase*>(dataitem))));
|
||||||
*(static_cast<BtLeDeviceScanDetailsDataItemBase*>(dataitem)));
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -1689,13 +1679,10 @@ bool SystemStatus::setDefaultGnssEngineStates(void)
|
||||||
******************************************************************************/
|
******************************************************************************/
|
||||||
bool SystemStatus::eventConnectionStatus(bool connected, int8_t type)
|
bool SystemStatus::eventConnectionStatus(bool connected, int8_t type)
|
||||||
{
|
{
|
||||||
if (connected != mConnected) {
|
// send networkinof dataitem to systemstatus observer clients
|
||||||
mConnected = connected;
|
SystemStatusNetworkInfo s(type, "", "", false, connected, false);
|
||||||
|
mSysStatusObsvr.notify({&s});
|
||||||
|
|
||||||
// send networkinof dataitem to systemstatus observer clients
|
|
||||||
SystemStatusNetworkInfo s(type, "", "", false, connected, false);
|
|
||||||
mSysStatusObsvr.notify({&s});
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,8 +77,11 @@ public:
|
||||||
mUtcTime.tv_nsec = tv.tv_nsec;
|
mUtcTime.tv_nsec = tv.tv_nsec;
|
||||||
mUtcReported = mUtcTime;
|
mUtcReported = mUtcTime;
|
||||||
};
|
};
|
||||||
virtual ~SystemStatusItemBase() { };
|
virtual ~SystemStatusItemBase() {};
|
||||||
virtual void dump(void) { };
|
inline virtual SystemStatusItemBase& collate(SystemStatusItemBase&) {
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
virtual void dump(void) {};
|
||||||
};
|
};
|
||||||
|
|
||||||
class SystemStatusLocation : public SystemStatusItemBase
|
class SystemStatusLocation : public SystemStatusItemBase
|
||||||
|
@ -93,7 +96,7 @@ public:
|
||||||
const GpsLocationExtended& locationEx) :
|
const GpsLocationExtended& locationEx) :
|
||||||
mValid(true),
|
mValid(true),
|
||||||
mLocation(location),
|
mLocation(location),
|
||||||
mLocationEx(locationEx) { }
|
mLocationEx(locationEx) {}
|
||||||
bool equals(const SystemStatusLocation& peer);
|
bool equals(const SystemStatusLocation& peer);
|
||||||
void dump(void);
|
void dump(void);
|
||||||
};
|
};
|
||||||
|
@ -457,6 +460,7 @@ public:
|
||||||
class SystemStatusNetworkInfo : public SystemStatusItemBase,
|
class SystemStatusNetworkInfo : public SystemStatusItemBase,
|
||||||
public NetworkInfoDataItemBase
|
public NetworkInfoDataItemBase
|
||||||
{
|
{
|
||||||
|
NetworkInfoDataItemBase* mSrcObjPtr;
|
||||||
public:
|
public:
|
||||||
inline SystemStatusNetworkInfo(
|
inline SystemStatusNetworkInfo(
|
||||||
int32_t type=0,
|
int32_t type=0,
|
||||||
|
@ -466,18 +470,21 @@ public:
|
||||||
bool connected=false,
|
bool connected=false,
|
||||||
bool roaming=false) :
|
bool roaming=false) :
|
||||||
NetworkInfoDataItemBase(
|
NetworkInfoDataItemBase(
|
||||||
|
(NetworkType)type,
|
||||||
type,
|
type,
|
||||||
typeName,
|
typeName,
|
||||||
subTypeName,
|
subTypeName,
|
||||||
available,
|
available,
|
||||||
connected,
|
connected,
|
||||||
roaming) {}
|
roaming),
|
||||||
|
mSrcObjPtr(nullptr) {}
|
||||||
inline SystemStatusNetworkInfo(const NetworkInfoDataItemBase& itemBase) :
|
inline SystemStatusNetworkInfo(const NetworkInfoDataItemBase& itemBase) :
|
||||||
NetworkInfoDataItemBase(itemBase) {
|
NetworkInfoDataItemBase(itemBase),
|
||||||
|
mSrcObjPtr((NetworkInfoDataItemBase*)&itemBase) {
|
||||||
mType = itemBase.getType();
|
mType = itemBase.getType();
|
||||||
}
|
}
|
||||||
inline bool equals(const SystemStatusNetworkInfo& peer) {
|
inline bool equals(const SystemStatusNetworkInfo& peer) {
|
||||||
if ((mType == peer.mType) &&
|
if ((mAllTypes == peer.mAllTypes) &&
|
||||||
(mTypeName == peer.mTypeName) &&
|
(mTypeName == peer.mTypeName) &&
|
||||||
(mSubTypeName == peer.mSubTypeName) &&
|
(mSubTypeName == peer.mSubTypeName) &&
|
||||||
(mAvailable == peer.mAvailable) &&
|
(mAvailable == peer.mAvailable) &&
|
||||||
|
@ -487,8 +494,24 @@ public:
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
inline virtual SystemStatusItemBase& collate(SystemStatusItemBase& curInfo) {
|
||||||
|
uint64_t allTypes = (static_cast<SystemStatusNetworkInfo&>(curInfo)).mAllTypes;
|
||||||
|
if (mConnected) {
|
||||||
|
mAllTypes |= allTypes;
|
||||||
|
} else if (0 != mAllTypes) {
|
||||||
|
mAllTypes = (allTypes & (~mAllTypes));
|
||||||
|
} // else (mConnected == false && mAllTypes == 0)
|
||||||
|
// we keep mAllTypes as 0, which means no more connections.
|
||||||
|
|
||||||
|
if (nullptr != mSrcObjPtr) {
|
||||||
|
// this is critical, changing mAllTypes of the original obj
|
||||||
|
mSrcObjPtr->mAllTypes = mAllTypes;
|
||||||
|
}
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
inline void dump(void) override {
|
inline void dump(void) override {
|
||||||
LOC_LOGD("NetworkInfo: type=%u connected=%u", mType, mConnected);
|
LOC_LOGD("NetworkInfo: mAllTypes=%" PRIx64 " connected=%u mType=%x",
|
||||||
|
mAllTypes, mConnected, mType);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -783,13 +806,9 @@ private:
|
||||||
// Data members
|
// Data members
|
||||||
static pthread_mutex_t mMutexSystemStatus;
|
static pthread_mutex_t mMutexSystemStatus;
|
||||||
SystemStatusReports mCache;
|
SystemStatusReports mCache;
|
||||||
bool mConnected;
|
|
||||||
|
|
||||||
template <typename TYPE_SYSTEMSTATUS_ITEM, typename TYPE_REPORT, typename TYPE_ITEMBASE>
|
|
||||||
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, TYPE_ITEM&& s);
|
||||||
|
|
||||||
// set default dataitem derived item in report cache
|
// set default dataitem derived item in report cache
|
||||||
template <typename TYPE_REPORT, typename TYPE_ITEM>
|
template <typename TYPE_REPORT, typename TYPE_ITEM>
|
||||||
|
|
|
@ -221,9 +221,23 @@ protected:
|
||||||
|
|
||||||
class NetworkInfoDataItemBase : public IDataItemCore {
|
class NetworkInfoDataItemBase : public IDataItemCore {
|
||||||
public:
|
public:
|
||||||
|
enum NetworkType {
|
||||||
|
TYPE_MOBILE,
|
||||||
|
TYPE_WIFI,
|
||||||
|
TYPE_ETHERNET,
|
||||||
|
TYPE_BLUETOOTH,
|
||||||
|
TYPE_MMS,
|
||||||
|
TYPE_SUPL,
|
||||||
|
TYPE_DUN,
|
||||||
|
TYPE_HIPRI,
|
||||||
|
TYPE_WIMAX,
|
||||||
|
TYPE_UNKNOWN,
|
||||||
|
};
|
||||||
NetworkInfoDataItemBase(
|
NetworkInfoDataItemBase(
|
||||||
int32_t type, string typeName, string subTypeName,
|
NetworkType initialType, int32_t type, string typeName, string subTypeName,
|
||||||
bool available, bool connected, bool roaming ):
|
bool available, bool connected, bool roaming ):
|
||||||
|
mAllTypes((initialType >= TYPE_UNKNOWN || initialType < TYPE_MOBILE) ?
|
||||||
|
0 : (1<<initialType)),
|
||||||
mType(type),
|
mType(type),
|
||||||
mTypeName(typeName),
|
mTypeName(typeName),
|
||||||
mSubTypeName(subTypeName),
|
mSubTypeName(subTypeName),
|
||||||
|
@ -235,22 +249,12 @@ public:
|
||||||
inline virtual DataItemId getId() { return mId; }
|
inline virtual DataItemId getId() { return mId; }
|
||||||
virtual void stringify(string& /*valueStr*/) {}
|
virtual void stringify(string& /*valueStr*/) {}
|
||||||
virtual int32_t copy(IDataItemCore* /*src*/, bool* /*dataItemCopied = NULL*/) {return 1;}
|
virtual int32_t copy(IDataItemCore* /*src*/, bool* /*dataItemCopied = NULL*/) {return 1;}
|
||||||
enum NetworkType {
|
|
||||||
TYPE_UNKNOWN,
|
|
||||||
TYPE_MOBILE,
|
|
||||||
TYPE_WIFI,
|
|
||||||
TYPE_ETHERNET,
|
|
||||||
TYPE_BLUETOOTH,
|
|
||||||
TYPE_MMS,
|
|
||||||
TYPE_SUPL,
|
|
||||||
TYPE_DUN,
|
|
||||||
TYPE_HIPRI,
|
|
||||||
TYPE_WIMAX
|
|
||||||
};
|
|
||||||
inline virtual NetworkType getType(void) const {
|
inline virtual NetworkType getType(void) const {
|
||||||
return (NetworkType)mType;
|
return (NetworkType)mType;
|
||||||
}
|
}
|
||||||
// Data members
|
inline uint64_t getAllTypes() { return mAllTypes; }
|
||||||
|
// Data members
|
||||||
|
uint64_t mAllTypes;
|
||||||
int32_t mType;
|
int32_t mType;
|
||||||
string mTypeName;
|
string mTypeName;
|
||||||
string mSubTypeName;
|
string mSubTypeName;
|
||||||
|
|
|
@ -69,18 +69,9 @@ bool XtraSystemStatusObserver::updateLockStatus(uint32_t lock) {
|
||||||
return ( send(LOC_IPC_XTRA, ss.str()) );
|
return ( send(LOC_IPC_XTRA, ss.str()) );
|
||||||
}
|
}
|
||||||
|
|
||||||
bool XtraSystemStatusObserver::updateConnectionStatus(bool connected, int32_t type) {
|
bool XtraSystemStatusObserver::updateConnections(uint64_t allConnections) {
|
||||||
mIsConnectivityStatusKnown = true;
|
mIsConnectivityStatusKnown = true;
|
||||||
|
mConnections = allConnections;
|
||||||
if (connected) {
|
|
||||||
mConnections.insert(type);
|
|
||||||
} else {
|
|
||||||
if (-1 == type) { // -1 for disconnecting all connections
|
|
||||||
mConnections.clear();
|
|
||||||
} else {
|
|
||||||
mConnections.erase(type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!mReqStatusReceived) {
|
if (!mReqStatusReceived) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -88,8 +79,7 @@ bool XtraSystemStatusObserver::updateConnectionStatus(bool connected, int32_t ty
|
||||||
|
|
||||||
stringstream ss;
|
stringstream ss;
|
||||||
ss << "connection";
|
ss << "connection";
|
||||||
ss << " " << (connected ? "1" : "0");
|
ss << " " << mConnections;
|
||||||
ss << " " << type;
|
|
||||||
return ( send(LOC_IPC_XTRA, ss.str()) );
|
return ( send(LOC_IPC_XTRA, ss.str()) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,13 +122,6 @@ bool XtraSystemStatusObserver::updateXtraThrottle(const bool enabled) {
|
||||||
return ( send(LOC_IPC_XTRA, ss.str()) );
|
return ( send(LOC_IPC_XTRA, ss.str()) );
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline ostream& operator<<(ostream& os, CONNECTIONS& data) {
|
|
||||||
for (auto elem : data) {
|
|
||||||
os << elem << ' ';
|
|
||||||
}
|
|
||||||
return os;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline bool XtraSystemStatusObserver::onStatusRequested(int32_t xtraStatusUpdated) {
|
inline bool XtraSystemStatusObserver::onStatusRequested(int32_t xtraStatusUpdated) {
|
||||||
mReqStatusReceived = true;
|
mReqStatusReceived = true;
|
||||||
|
|
||||||
|
@ -248,8 +231,7 @@ void XtraSystemStatusObserver::notify(const list<IDataItemCore*>& dlist)
|
||||||
{
|
{
|
||||||
NetworkInfoDataItemBase* networkInfo =
|
NetworkInfoDataItemBase* networkInfo =
|
||||||
static_cast<NetworkInfoDataItemBase*>(each);
|
static_cast<NetworkInfoDataItemBase*>(each);
|
||||||
mXtraSysStatObj->updateConnectionStatus(networkInfo->mConnected,
|
mXtraSysStatObj->updateConnections(networkInfo->getAllTypes());
|
||||||
networkInfo->mType);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -33,22 +33,20 @@
|
||||||
#include <MsgTask.h>
|
#include <MsgTask.h>
|
||||||
#include <LocIpc.h>
|
#include <LocIpc.h>
|
||||||
#include <LocTimer.h>
|
#include <LocTimer.h>
|
||||||
#include <set>
|
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using loc_core::IOsObserver;
|
using loc_core::IOsObserver;
|
||||||
using loc_core::IDataItemObserver;
|
using loc_core::IDataItemObserver;
|
||||||
using loc_core::IDataItemCore;
|
using loc_core::IDataItemCore;
|
||||||
using loc_util::LocIpc;
|
using loc_util::LocIpc;
|
||||||
using CONNECTIONS = set<int32_t>;
|
|
||||||
|
|
||||||
class XtraSystemStatusObserver : public IDataItemObserver, public LocIpc{
|
class XtraSystemStatusObserver : public IDataItemObserver, public LocIpc{
|
||||||
public :
|
public :
|
||||||
// constructor & destructor
|
// constructor & destructor
|
||||||
inline XtraSystemStatusObserver(IOsObserver* sysStatObs, const MsgTask* msgTask):
|
inline XtraSystemStatusObserver(IOsObserver* sysStatObs, const MsgTask* msgTask):
|
||||||
mSystemStatusObsrvr(sysStatObs), mMsgTask(msgTask),
|
mSystemStatusObsrvr(sysStatObs), mMsgTask(msgTask),
|
||||||
mGpsLock(-1), mXtraThrottle(true), mReqStatusReceived(false), mDelayLocTimer(*this),
|
mGpsLock(-1), mConnections(0), mXtraThrottle(true), mReqStatusReceived(false),
|
||||||
mIsConnectivityStatusKnown (false) {
|
mDelayLocTimer(*this), mIsConnectivityStatusKnown (false) {
|
||||||
subscribe(true);
|
subscribe(true);
|
||||||
startListeningNonBlocking(LOC_IPC_HAL);
|
startListeningNonBlocking(LOC_IPC_HAL);
|
||||||
mDelayLocTimer.start(100 /*.1 sec*/, false);
|
mDelayLocTimer.start(100 /*.1 sec*/, false);
|
||||||
|
@ -63,7 +61,7 @@ public :
|
||||||
virtual void notify(const list<IDataItemCore*>& dlist);
|
virtual void notify(const list<IDataItemCore*>& dlist);
|
||||||
|
|
||||||
bool updateLockStatus(uint32_t lock);
|
bool updateLockStatus(uint32_t lock);
|
||||||
bool updateConnectionStatus(bool connected, int32_t type);
|
bool updateConnections(uint64_t allConnections);
|
||||||
bool updateTac(const string& tac);
|
bool updateTac(const string& tac);
|
||||||
bool updateMccMnc(const string& mccmnc);
|
bool updateMccMnc(const string& mccmnc);
|
||||||
bool updateXtraThrottle(const bool enabled);
|
bool updateXtraThrottle(const bool enabled);
|
||||||
|
@ -77,7 +75,7 @@ private:
|
||||||
IOsObserver* mSystemStatusObsrvr;
|
IOsObserver* mSystemStatusObsrvr;
|
||||||
const MsgTask* mMsgTask;
|
const MsgTask* mMsgTask;
|
||||||
int32_t mGpsLock;
|
int32_t mGpsLock;
|
||||||
CONNECTIONS mConnections;
|
uint64_t mConnections;
|
||||||
string mTac;
|
string mTac;
|
||||||
string mMccmnc;
|
string mMccmnc;
|
||||||
bool mXtraThrottle;
|
bool mXtraThrottle;
|
||||||
|
|
Loading…
Reference in a new issue