1eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh/* Copyright (c) 2017, The Linux Foundation. All rights reserved. 2eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * 3eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * Redistribution and use in source and binary forms, with or without 4eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * modification, are permitted provided that the following conditions are 5eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * met: 6eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * * Redistributions of source code must retain the above copyright 7eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * notice, this list of conditions and the following disclaimer. 8eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * * Redistributions in binary form must reproduce the above 9eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * copyright notice, this list of conditions and the following 10eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * disclaimer in the documentation and/or other materials provided 11eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * with the distribution. 12eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * * Neither the name of The Linux Foundation, nor the names of its 13eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * contributors may be used to endorse or promote products derived 14eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * from this software without specific prior written permission. 15eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * 16eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 17eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 19eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 20eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh * 28eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh */ 29eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#ifndef __SYSTEM_STATUS__ 30eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define __SYSTEM_STATUS__ 31eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 32eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#include <stdint.h> 33eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#include <string> 34eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#include <vector> 35eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#include <platform_lib_log_util.h> 36eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#include <MsgTask.h> 378f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan#include <IDataItemCore.h> 38eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#include <IOsObserver.h> 39eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#include <SystemStatusOsObserver.h> 40eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 41eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#include <gps_extended_c.h> 42eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 43eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define GPS_MIN (1) //1-32 44eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define SBAS_MIN (33) 45eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define GLO_MIN (65) //65-88 46eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define QZSS_MIN (193) //193-197 47eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define BDS_MIN (201) //201-237 48eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define GAL_MIN (301) //301-336 49eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 50eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define GPS_NUM (32) 51eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define SBAS_NUM (32) 52eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define GLO_NUM (24) 53eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define QZSS_NUM (5) 54eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define BDS_NUM (37) 55eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define GAL_NUM (36) 56eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#define SV_ALL_NUM (GPS_NUM+GLO_NUM+QZSS_NUM+BDS_NUM+GAL_NUM) //=134 57eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 58eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhnamespace loc_core 59eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 60eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 61eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh/****************************************************************************** 62eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh SystemStatus report data structure 63eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh******************************************************************************/ 64eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusItemBase 65eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 66eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 67eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh timespec mUtcTime; // UTC timestamp when this info was last updated 68eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh timespec mUtcReported; // UTC timestamp when this info was reported 69eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 70eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh SystemStatusItemBase() { 71eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh timeval tv; 72eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh gettimeofday(&tv, NULL); 73eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mUtcTime.tv_sec = tv.tv_sec; 74eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mUtcTime.tv_nsec = tv.tv_usec *1000ULL; 75eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mUtcReported = mUtcTime; 76eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh }; 77eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh virtual ~SystemStatusItemBase() { }; 78eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh virtual void dump(void) { }; 79eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 80eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 81eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusLocation : public SystemStatusItemBase 82eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 83eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 84eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool mValid; 85eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh UlpLocation mLocation; 86eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh GpsLocationExtended mLocationEx; 87eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusLocation() : 88eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mValid(false) {} 89eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusLocation(const UlpLocation& location, 90eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh const GpsLocationExtended& locationEx) : 91eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mValid(true), 92eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mLocation(location), 93eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mLocationEx(locationEx) { } 94eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusLocation& peer); 95eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 96eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 97eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 98eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPQWM1; 99eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusTimeAndClock : public SystemStatusItemBase 100eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 101eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 102eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint16_t mGpsWeek; 103eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGpsTowMs; 104eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mTimeValid; 105eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mTimeSource; 106eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh int32_t mTimeUnc; 107eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh int32_t mClockFreqBias; 108eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh int32_t mClockFreqBiasUnc; 109eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh int32_t mLeapSeconds; 110eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh int32_t mLeapSecUnc; 111eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusTimeAndClock() : 112eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGpsWeek(0), 113eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGpsTowMs(0), 114eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mTimeValid(0), 115eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mTimeSource(0), 116eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mTimeUnc(0), 117eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mClockFreqBias(0), 118eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mClockFreqBiasUnc(0), 119eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mLeapSeconds(0), 120eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mLeapSecUnc(0) {} 121eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusTimeAndClock(const SystemStatusPQWM1& nmea); 122eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusTimeAndClock& peer); 123eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 124eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 125eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 126eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusXoState : public SystemStatusItemBase 127eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 128eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 129eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mXoState; 130eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusXoState() : 131eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mXoState(0) {} 132eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusXoState(const SystemStatusPQWM1& nmea); 133eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusXoState& peer); 134eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 135eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 136eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 137eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusRfAndParams : public SystemStatusItemBase 138eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 139eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 140eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh int32_t mPgaGain; 141eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGpsBpAmpI; 142eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGpsBpAmpQ; 143eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mAdcI; 144eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mAdcQ; 145eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mJammerGps; 146eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mJammerGlo; 147eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mJammerBds; 148eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mJammerGal; 149eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh double mAgcGps; 150eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh double mAgcGlo; 151eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh double mAgcBds; 152eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh double mAgcGal; 153eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusRfAndParams() : 154eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mPgaGain(0), 155eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGpsBpAmpI(0), 156eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGpsBpAmpQ(0), 157eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mAdcI(0), 158eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mAdcQ(0), 159eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mJammerGps(0), 160eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mJammerGlo(0), 161eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mJammerBds(0), 162eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mJammerGal(0), 163eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mAgcGps(0), 164eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mAgcGlo(0), 165eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mAgcBds(0), 166eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mAgcGal(0) {} 167eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusRfAndParams(const SystemStatusPQWM1& nmea); 168eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusRfAndParams& peer); 169eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 170eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 171eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 172eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusErrRecovery : public SystemStatusItemBase 173eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 174eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 175eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mRecErrorRecovery; 176eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusErrRecovery() : 177eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mRecErrorRecovery(0) {}; 178eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusErrRecovery(const SystemStatusPQWM1& nmea); 179eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusErrRecovery& peer); 180eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 181eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 182eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 183eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPQWP1; 184eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusInjectedPosition : public SystemStatusItemBase 185eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 186eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 187eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mEpiValidity; 188eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh float mEpiLat; 189eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh float mEpiLon; 190eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh float mEpiAlt; 191eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh float mEpiHepe; 192eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh float mEpiAltUnc; 193eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mEpiSrc; 194eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusInjectedPosition() : 195eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mEpiValidity(0), 196eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mEpiLat(0), 197eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mEpiLon(0), 198eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mEpiAlt(0), 199eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mEpiHepe(0), 200eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mEpiAltUnc(0), 201eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mEpiSrc(0) {} 202eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusInjectedPosition(const SystemStatusPQWP1& nmea); 203eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusInjectedPosition& peer); 204eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 205eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 206eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 207eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPQWP2; 208eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusBestPosition : public SystemStatusItemBase 209eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 210eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 211eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool mValid; 212eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh float mBestLat; 213eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh float mBestLon; 214eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh float mBestAlt; 215eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh float mBestHepe; 216eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh float mBestAltUnc; 217eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusBestPosition() : 218eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mValid(false), 219eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBestLat(0), 220eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBestLon(0), 221eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBestAlt(0), 222eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBestHepe(0), 223eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBestAltUnc(0) {} 224eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusBestPosition(const SystemStatusPQWP2& nmea); 225eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusBestPosition& peer); 226eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 227eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 228eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 229eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPQWP3; 230eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusXtra : public SystemStatusItemBase 231eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 232eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 233eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mXtraValidMask; 234eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGpsXtraAge; 235eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGloXtraAge; 236eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mBdsXtraAge; 237eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGalXtraAge; 238eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mQzssXtraAge; 239eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGpsXtraValid; 240eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGloXtraValid; 241eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint64_t mBdsXtraValid; 242eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint64_t mGalXtraValid; 243eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mQzssXtraValid; 244eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusXtra() : 245eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mXtraValidMask(0), 246eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGpsXtraAge(0), 247eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGloXtraAge(0), 248eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBdsXtraAge(0), 249eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGalXtraAge(0), 250eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mQzssXtraAge(0), 251eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGpsXtraValid(0), 252eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGloXtraValid(0), 253eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBdsXtraValid(0ULL), 254eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGalXtraValid(0ULL), 255eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mQzssXtraValid(0) {} 256eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusXtra(const SystemStatusPQWP3& nmea); 257eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusXtra& peer); 258eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 259eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 260eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 261eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPQWP4; 262eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusEphemeris : public SystemStatusItemBase 263eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 264eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 265eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGpsEpheValid; 266eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGloEpheValid; 267eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint64_t mBdsEpheValid; 268eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint64_t mGalEpheValid; 269eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mQzssEpheValid; 270eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusEphemeris() : 271eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGpsEpheValid(0), 272eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGloEpheValid(0), 273eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBdsEpheValid(0ULL), 274eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGalEpheValid(0ULL), 275eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mQzssEpheValid(0) {} 276eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusEphemeris(const SystemStatusPQWP4& nmea); 277eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusEphemeris& peer); 278eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 279eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 280eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 281eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPQWP5; 282eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusSvHealth : public SystemStatusItemBase 283eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 284eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 285eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGpsUnknownMask; 286eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGloUnknownMask; 287eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint64_t mBdsUnknownMask; 288eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint64_t mGalUnknownMask; 289eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mQzssUnknownMask; 290eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGpsGoodMask; 291eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGloGoodMask; 292eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint64_t mBdsGoodMask; 293eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint64_t mGalGoodMask; 294eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mQzssGoodMask; 295eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGpsBadMask; 296eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mGloBadMask; 297eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint64_t mBdsBadMask; 298eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint64_t mGalBadMask; 299eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint8_t mQzssBadMask; 300eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusSvHealth() : 301eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGpsUnknownMask(0), 302eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGloUnknownMask(0), 303eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBdsUnknownMask(0ULL), 304eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGalUnknownMask(0ULL), 305eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mQzssUnknownMask(0), 306eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGpsGoodMask(0), 307eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGloGoodMask(0), 308eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBdsGoodMask(0ULL), 309eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGalGoodMask(0ULL), 310eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mQzssGoodMask(0), 311eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGpsBadMask(0), 312eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGloBadMask(0), 313eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mBdsBadMask(0ULL), 314eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mGalBadMask(0ULL), 315eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mQzssBadMask(0) {} 316eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusSvHealth(const SystemStatusPQWP5& nmea); 317eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusSvHealth& peer); 318eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 319eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 320eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 321eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPQWP6; 322eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPdr : public SystemStatusItemBase 323eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 324eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 325eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mFixInfoMask; 326eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusPdr() : 327eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mFixInfoMask(0) {} 328eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusPdr(const SystemStatusPQWP6& nmea); 329eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusPdr& peer); 330eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 331eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 332eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 333eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPQWP7; 334eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhstruct SystemStatusNav 335eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 336eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh GnssEphemerisType mType; 337eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh GnssEphemerisSource mSource; 338eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh int32_t mAgeSec; 339eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 340eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 341eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusNavData : public SystemStatusItemBase 342eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 343eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 344eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh SystemStatusNav mNav[SV_ALL_NUM]; 345eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusNavData() { 346eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh for (uint32_t i=0; i<SV_ALL_NUM; i++) { 347eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mNav[i].mType = GNSS_EPH_TYPE_UNKNOWN; 348eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mNav[i].mSource = GNSS_EPH_SOURCE_UNKNOWN; 349eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mNav[i].mAgeSec = 0; 350eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh } 351eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh } 352eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusNavData(const SystemStatusPQWP7& nmea); 353eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusNavData& peer); 354eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 355eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 356eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 357eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPQWS1; 358eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusPositionFailure : public SystemStatusItemBase 359eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 360eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 361eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mFixInfoMask; 362eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh uint32_t mHepeLimit; 363eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusPositionFailure() : 364eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mFixInfoMask(0), 365eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh mHepeLimit(0) {} 366eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline SystemStatusPositionFailure(const SystemStatusPQWS1& nmea); 367eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool equals(SystemStatusPositionFailure& peer); 368eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh void dump(void); 369eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 370eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 371eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh/****************************************************************************** 3728f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan SystemStatus report data structure - from DataItem observer 3738f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan******************************************************************************/ 3748f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharanclass SystemStatusGpsState : public SystemStatusItemBase, public IDataItemCore 3758f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan{ 3768f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharanpublic: 3778f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline SystemStatusGpsState() : 3788f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mEnabled(false) {} 3798f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline SystemStatusGpsState(bool enabled) : 3808f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mEnabled(enabled) {} 3818f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 3828f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool mEnabled; 3838f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 3848f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline bool equals(SystemStatusGpsState& peer) { 3858f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return (mEnabled == peer.mEnabled); 3868f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 3878f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline void dump(void) { 3888f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan LOC_LOGD("GpsState: state=%u", mEnabled); 3898f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 3908f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline DataItemId getId() { 3918f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return GPSSTATE_DATA_ITEM_ID; 3928f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 3938f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline void stringify(string& valueStr) { 3948f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan valueStr.clear(); 3958f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan valueStr += "GpsState: enabled="; 3968f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan valueStr += to_string(mEnabled); 3978f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 3988f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline int32_t copy(IDataItemCore* src, bool* dataItemCopied = nullptr) { 3998f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan SystemStatusGpsState* gpsstate = static_cast<SystemStatusGpsState*>(src); 4008f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mEnabled = gpsstate->mEnabled; 4018f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan if (dataItemCopied) { 4028f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan *dataItemCopied = true; 4038f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4048f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return 1; 4058f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4068f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan}; 4078f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 4088f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharanclass SystemStatusNetworkInfo : public SystemStatusItemBase, public IDataItemCore 4098f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan{ 4108f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharanpublic: 4118f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline SystemStatusNetworkInfo() : 4128f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mType(0), 4138f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mTypeName(""), 4148f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mSubTypeName(""), 4158f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mAvailable(false), 4168f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mConnected(false), 4178f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mRoaming(false) {} 4188f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline SystemStatusNetworkInfo( 4198f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan uint32_t type, 4208f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan std::string typeName, 4218f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan std::string subTypeName, 4228f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool available, 4238f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool connected, 4248f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool roaming) : 4258f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mType(type), 4268f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mTypeName(typeName), 4278f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mSubTypeName(subTypeName), 4288f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mAvailable(available), 4298f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mConnected(connected), 4308f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mRoaming(roaming) {} 4318f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 4328f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan uint32_t mType; 4338f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan std::string mTypeName; 4348f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan std::string mSubTypeName; 4358f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool mAvailable; 4368f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool mConnected; 4378f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool mRoaming; 4388f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 4398f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline bool equals(SystemStatusNetworkInfo& peer) { 4408f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan if ((mType != peer.mType) || 4418f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan (mTypeName != peer.mTypeName) || 4428f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan (mSubTypeName != peer.mSubTypeName) || 4438f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan (mAvailable != peer.mAvailable) || 4448f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan (mConnected != peer.mConnected) || 4458f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan (mRoaming != peer.mRoaming)) { 4468f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return false; 4478f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4488f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return true; 4498f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4508f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline void dump(void) { 4518f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan LOC_LOGD("NetworkInfo: type=%u connected=%u", mType, mConnected); 4528f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4538f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline DataItemId getId() { 4548f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return NETWORKINFO_DATA_ITEM_ID; 4558f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4568f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline void stringify(string& /*valueStr*/) { } 4578f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline int32_t copy(IDataItemCore* src, bool* dataItemCopied = nullptr) { 4588f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan SystemStatusNetworkInfo* networkinfo = static_cast<SystemStatusNetworkInfo*>(src); 4598f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mType = networkinfo->mType; 4608f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mTypeName = networkinfo->mTypeName; 4618f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mSubTypeName = networkinfo->mSubTypeName; 4628f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mAvailable = networkinfo->mAvailable; 4638f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mConnected = networkinfo->mConnected; 4648f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mRoaming = networkinfo->mRoaming; 4658f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan if (dataItemCopied) { 4668f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan *dataItemCopied = true; 4678f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4688f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return 1; 4698f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4708f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan}; 4718f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 4728f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharanclass SystemStatusTac : public SystemStatusItemBase, public IDataItemCore 4738f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan{ 4748f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharanpublic: 4758f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline SystemStatusTac() : 4768f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mValue("") {} 4778f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline SystemStatusTac(std::string value) : 4788f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mValue(value) {} 4798f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 4808f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan std::string mValue; 4818f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 4828f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline bool equals(SystemStatusTac& peer) { 4838f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return (mValue == peer.mValue); 4848f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4858f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline void dump(void) { 4868f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan LOC_LOGD("Tac: value=%s", mValue.c_str()); 4878f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4888f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline DataItemId getId() { 4898f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return TAC_DATA_ITEM_ID; 4908f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4918f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline void stringify(string& /*valueStr*/) { } 4928f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline int32_t copy(IDataItemCore* src, bool* dataItemCopied = nullptr) { 4938f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan SystemStatusTac* tac = static_cast<SystemStatusTac*>(src); 4948f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mValue = tac->mValue; 4958f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan if (dataItemCopied) { 4968f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan *dataItemCopied = true; 4978f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 4988f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return 1; 4998f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 5008f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan}; 5018f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 5028f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharanclass SystemStatusMccMnc : public SystemStatusItemBase, public IDataItemCore 5038f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan{ 5048f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharanpublic: 5058f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline SystemStatusMccMnc() : 5068f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mValue("") {} 5078f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline SystemStatusMccMnc(std::string value) : 5088f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mValue(value) {} 5098f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 5108f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan std::string mValue; 5118f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 5128f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline bool equals(SystemStatusMccMnc& peer) { 5138f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return (mValue == peer.mValue); 5148f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 5158f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline void dump(void) { 5168f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan LOC_LOGD("TacMccMnc value=%s", mValue.c_str()); 5178f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 5188f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline DataItemId getId() { 5198f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return MCCMNC_DATA_ITEM_ID; 5208f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 5218f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline void stringify(string& /*valueStr*/) { } 5228f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan inline int32_t copy(IDataItemCore* src, bool* dataItemCopied = nullptr) { 5238f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan SystemStatusMccMnc* mccmnc = static_cast<SystemStatusMccMnc*>(src); 5248f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan mValue = mccmnc->mValue; 5258f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan if (dataItemCopied) { 5268f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan *dataItemCopied = true; 5278f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 5288f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan return 1; 5298f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan } 5308f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan}; 5318f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 5328f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan/****************************************************************************** 533eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh SystemStatusReports 534eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh******************************************************************************/ 535eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatusReports 536eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 537eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 5388f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan // from QMI_LOC indication 539eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusLocation> mLocation; 540eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 5418f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan // from ME debug NMEA 542eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusTimeAndClock> mTimeAndClock; 543eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusXoState> mXoState; 544eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusRfAndParams> mRfAndParams; 545eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusErrRecovery> mErrRecovery; 546eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 5478f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan // from PE debug NMEA 548eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusInjectedPosition> mInjectedPosition; 549eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusBestPosition> mBestPosition; 550eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusXtra> mXtra; 551eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusEphemeris> mEphemeris; 552eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusSvHealth> mSvHealth; 553eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusPdr> mPdr; 554eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusNavData> mNavData; 555eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 5568f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan // from SM debug NMEA 557eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh std::vector<SystemStatusPositionFailure> mPositionFailure; 5588f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 5598f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan // from dataitems observer 5608f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan std::vector<SystemStatusGpsState> mGpsState; 5618f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan std::vector<SystemStatusNetworkInfo> mNetworkInfo; 5628f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan std::vector<SystemStatusTac> mTac; 5638f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan std::vector<SystemStatusMccMnc> mMccMnc; 564eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 565eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 566eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh/****************************************************************************** 567eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh SystemStatus 568eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh******************************************************************************/ 569eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhclass SystemStatus 570eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh{ 571eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhprivate: 572eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static SystemStatus *mInstance; 573eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh SystemStatusOsObserver mSysStatusObsvr; 574eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh // ctor 575eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh SystemStatus(const MsgTask* msgTask); 576eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh // dtor 577eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh inline ~SystemStatus() {} 578eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 579eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh // Data members 580eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static pthread_mutex_t mMutexSystemStatus; 581eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 582eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxLocation = 5; 583eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 584eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxTimeAndClock = 5; 585eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxXoState = 5; 586eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxRfAndParams = 5; 587eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxErrRecovery = 5; 588eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 589eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxInjectedPosition = 5; 590eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxBestPosition = 5; 591eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxXtra = 5; 592eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxEphemeris = 5; 593eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxSvHealth = 5; 594eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxPdr = 5; 595eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxNavData = 5; 596eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 597eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static const uint32_t maxPositionFailure = 5; 598eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 5998f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan static const uint32_t maxGpsState = 5; 6008f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan static const uint32_t maxNetworkInfo = 5; 6018f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan static const uint32_t maxTac = 5; 6028f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan static const uint32_t maxMccMnc = 5; 6038f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 604eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh SystemStatusReports mCache; 6058f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool mConnected; 606eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 607eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setLocation(const UlpLocation& location); 608eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 609eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setTimeAndCLock(const SystemStatusPQWM1& nmea); 610eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setXoState(const SystemStatusPQWM1& nmea); 611eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setRfAndParams(const SystemStatusPQWM1& nmea); 612eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setErrRecovery(const SystemStatusPQWM1& nmea); 613eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 614eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setInjectedPosition(const SystemStatusPQWP1& nmea); 615eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setBestPosition(const SystemStatusPQWP2& nmea); 616eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setXtra(const SystemStatusPQWP3& nmea); 617eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setEphemeris(const SystemStatusPQWP4& nmea); 618eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setSvHealth(const SystemStatusPQWP5& nmea); 619eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setPdr(const SystemStatusPQWP6& nmea); 620eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setNavData(const SystemStatusPQWP7& nmea); 621eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 622eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setPositionFailure(const SystemStatusPQWS1& nmea); 623eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 6248f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool setNetworkInfo(IDataItemCore* dataitem); 6258f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan 626eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanhpublic: 627eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh // Static methods 628eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static SystemStatus* getInstance(const MsgTask* msgTask); 629eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh static void destroyInstance(); 630eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh IOsObserver* getOsObserver(); 631eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 632eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh // Helpers 633eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool eventPosition(const UlpLocation& location,const GpsLocationExtended& locationEx); 6348f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool eventDataItemNotify(IDataItemCore* dataitem); 635eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setNmeaString(const char *data, uint32_t len); 636eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool getReport(SystemStatusReports& reports, bool isLatestonly = false) const; 637eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh bool setDefaultReport(void); 6388f362b95bd587923b1168244ea6a65d8938b0449Harikrishnan Hariharan bool eventConnectionStatus(bool connected, uint8_t type); 639eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh}; 640eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 641eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh} // namespace loc_core 642eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 643eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh#endif //__SYSTEM_STATUS__ 644eee4b7537bec1ef4198a5c0c9cfb8ba232ad60cbAlain Vongsouvanh 645