1 /*
2  * Copyright (C) 2021 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #define LOG_TAG "GnssDebugAidl"
18 
19 #include "GnssDebug.h"
20 #include <log/log.h>
21 #include <utils/SystemClock.h>
22 #include "Constants.h"
23 #include "Gnss.h"
24 #include "MockLocation.h"
25 
26 namespace aidl::android::hardware::gnss {
27 
28 using ::android::hardware::gnss::common::kMockTimestamp;
29 
getDebugData(DebugData * debugData)30 ndk::ScopedAStatus GnssDebug::getDebugData(DebugData* debugData) {
31     ALOGD("GnssDebug::getDebugData");
32 
33     PositionDebug positionDebug = {.valid = true,
34                                    .latitudeDegrees = 37.4219999,
35                                    .longitudeDegrees = -122.0840575,
36                                    .altitudeMeters = 1.60062531,
37                                    .speedMetersPerSec = 0,
38                                    .bearingDegrees = 0,
39                                    .horizontalAccuracyMeters = 5,
40                                    .verticalAccuracyMeters = 5,
41                                    .speedAccuracyMetersPerSecond = 1,
42                                    .bearingAccuracyDegrees = 90,
43                                    .ageSeconds = 0.99};
44     TimeDebug timeDebug = {.timeEstimateMs = static_cast<int64_t>(
45                                    kMockTimestamp + ::android::elapsedRealtimeNano() / 1e6),
46                            .timeUncertaintyNs = 1000,
47                            .frequencyUncertaintyNsPerSec = 800};
48     SatelliteData satelliteData1 = {
49             .svid = 3,
50             .constellation = GnssConstellationType::GPS,
51             .ephemerisType = SatelliteEphemerisType::EPHEMERIS,
52             .ephemerisSource = SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
53             .ephemerisHealth = SatelliteEphemerisHealth::GOOD,
54             .ephemerisAgeSeconds = 12,
55             .serverPredictionIsAvailable = true,
56             .serverPredictionAgeSeconds = 30};
57     SatelliteData satelliteData2 = {
58             .svid = 5,
59             .constellation = GnssConstellationType::GPS,
60             .ephemerisType = SatelliteEphemerisType::EPHEMERIS,
61             .ephemerisSource = SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
62             .ephemerisHealth = SatelliteEphemerisHealth::GOOD,
63             .ephemerisAgeSeconds = 12,
64             .serverPredictionIsAvailable = true,
65             .serverPredictionAgeSeconds = 30};
66     SatelliteData satelliteData3 = {
67             .svid = 17,
68             .constellation = GnssConstellationType::GPS,
69             .ephemerisType = SatelliteEphemerisType::EPHEMERIS,
70             .ephemerisSource = SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
71             .ephemerisHealth = SatelliteEphemerisHealth::GOOD,
72             .ephemerisAgeSeconds = 12,
73             .serverPredictionIsAvailable = true,
74             .serverPredictionAgeSeconds = 30};
75     SatelliteData satelliteData4 = {
76             .svid = 26,
77             .constellation = GnssConstellationType::GPS,
78             .ephemerisType = SatelliteEphemerisType::EPHEMERIS,
79             .ephemerisSource = SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
80             .ephemerisHealth = SatelliteEphemerisHealth::GOOD,
81             .ephemerisAgeSeconds = 12,
82             .serverPredictionIsAvailable = true,
83             .serverPredictionAgeSeconds = 30};
84     SatelliteData satelliteData5 = {
85             .svid = 5,
86             .constellation = GnssConstellationType::GLONASS,
87             .ephemerisType = SatelliteEphemerisType::EPHEMERIS,
88             .ephemerisSource = SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
89             .ephemerisHealth = SatelliteEphemerisHealth::GOOD,
90             .ephemerisAgeSeconds = 12,
91             .serverPredictionIsAvailable = true,
92             .serverPredictionAgeSeconds = 30};
93     SatelliteData satelliteData6 = {
94             .svid = 17,
95             .constellation = GnssConstellationType::GLONASS,
96             .ephemerisType = SatelliteEphemerisType::EPHEMERIS,
97             .ephemerisSource = SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
98             .ephemerisHealth = SatelliteEphemerisHealth::GOOD,
99             .ephemerisAgeSeconds = 12,
100             .serverPredictionIsAvailable = true,
101             .serverPredictionAgeSeconds = 30};
102     SatelliteData satelliteData7 = {
103             .svid = 18,
104             .constellation = GnssConstellationType::GLONASS,
105             .ephemerisType = SatelliteEphemerisType::EPHEMERIS,
106             .ephemerisSource = SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
107             .ephemerisHealth = SatelliteEphemerisHealth::GOOD,
108             .ephemerisAgeSeconds = 12,
109             .serverPredictionIsAvailable = true,
110             .serverPredictionAgeSeconds = 30};
111     SatelliteData satelliteData8 = {
112             .svid = 10,
113             .constellation = GnssConstellationType::GLONASS,
114             .ephemerisType = SatelliteEphemerisType::EPHEMERIS,
115             .ephemerisSource = SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
116             .ephemerisHealth = SatelliteEphemerisHealth::GOOD,
117             .ephemerisAgeSeconds = 12,
118             .serverPredictionIsAvailable = true,
119             .serverPredictionAgeSeconds = 30};
120     SatelliteData satelliteData9 = {
121             .svid = 3,
122             .constellation = GnssConstellationType::IRNSS,
123             .ephemerisType = SatelliteEphemerisType::EPHEMERIS,
124             .ephemerisSource = SatellitePvt::SatelliteEphemerisSource::SERVER_LONG_TERM,
125             .ephemerisHealth = SatelliteEphemerisHealth::GOOD,
126             .ephemerisAgeSeconds = 12,
127             .serverPredictionIsAvailable = true,
128             .serverPredictionAgeSeconds = 30};
129     std::vector<SatelliteData> satelliteDataArrayDebug = {
130             satelliteData1, satelliteData2, satelliteData3, satelliteData4, satelliteData5,
131             satelliteData6, satelliteData7, satelliteData8, satelliteData9};
132     debugData->position = positionDebug;
133     debugData->time = timeDebug;
134     debugData->satelliteDataArray = satelliteDataArrayDebug;
135 
136     return ndk::ScopedAStatus::ok();
137 }
138 
139 }  // namespace aidl::android::hardware::gnss
140