1*84e33947SAndroid Build Coastguard Worker /*
2*84e33947SAndroid Build Coastguard Worker * Copyright (C) 2020 The Android Open Source Project
3*84e33947SAndroid Build Coastguard Worker *
4*84e33947SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*84e33947SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*84e33947SAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*84e33947SAndroid Build Coastguard Worker *
8*84e33947SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*84e33947SAndroid Build Coastguard Worker *
10*84e33947SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*84e33947SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*84e33947SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*84e33947SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*84e33947SAndroid Build Coastguard Worker * limitations under the License.
15*84e33947SAndroid Build Coastguard Worker */
16*84e33947SAndroid Build Coastguard Worker
17*84e33947SAndroid Build Coastguard Worker // This file was automatically generated by chre_api_to_chpp.py
18*84e33947SAndroid Build Coastguard Worker // Date: 2022-02-03 23:05:32 UTC
19*84e33947SAndroid Build Coastguard Worker // Source: chre_api/include/chre_api/chre/gnss.h @ commit b5a92e457
20*84e33947SAndroid Build Coastguard Worker
21*84e33947SAndroid Build Coastguard Worker // DO NOT modify this file directly, as those changes will be lost the next
22*84e33947SAndroid Build Coastguard Worker // time the script is executed
23*84e33947SAndroid Build Coastguard Worker
24*84e33947SAndroid Build Coastguard Worker #include "chpp/common/gnss_types.h"
25*84e33947SAndroid Build Coastguard Worker #include "chpp/macros.h"
26*84e33947SAndroid Build Coastguard Worker #include "chpp/memory.h"
27*84e33947SAndroid Build Coastguard Worker
28*84e33947SAndroid Build Coastguard Worker #include <stddef.h>
29*84e33947SAndroid Build Coastguard Worker #include <stdint.h>
30*84e33947SAndroid Build Coastguard Worker #include <string.h>
31*84e33947SAndroid Build Coastguard Worker
32*84e33947SAndroid Build Coastguard Worker // Encoding (CHRE --> CHPP) size functions
33*84e33947SAndroid Build Coastguard Worker
34*84e33947SAndroid Build Coastguard Worker //! @return number of bytes required to represent the given
35*84e33947SAndroid Build Coastguard Worker //! chreGnssDataEvent along with the CHPP header as
36*84e33947SAndroid Build Coastguard Worker //! struct ChppGnssDataEventWithHeader
chppGnssSizeOfDataEventFromChre(const struct chreGnssDataEvent * dataEvent)37*84e33947SAndroid Build Coastguard Worker static size_t chppGnssSizeOfDataEventFromChre(
38*84e33947SAndroid Build Coastguard Worker const struct chreGnssDataEvent *dataEvent) {
39*84e33947SAndroid Build Coastguard Worker size_t encodedSize = sizeof(struct ChppGnssDataEventWithHeader);
40*84e33947SAndroid Build Coastguard Worker encodedSize +=
41*84e33947SAndroid Build Coastguard Worker dataEvent->measurement_count * sizeof(struct ChppGnssMeasurement);
42*84e33947SAndroid Build Coastguard Worker return encodedSize;
43*84e33947SAndroid Build Coastguard Worker }
44*84e33947SAndroid Build Coastguard Worker
45*84e33947SAndroid Build Coastguard Worker // Encoding (CHRE --> CHPP) conversion functions
46*84e33947SAndroid Build Coastguard Worker
chppGnssConvertClockFromChre(const struct chreGnssClock * in,struct ChppGnssClock * out)47*84e33947SAndroid Build Coastguard Worker static void chppGnssConvertClockFromChre(const struct chreGnssClock *in,
48*84e33947SAndroid Build Coastguard Worker struct ChppGnssClock *out) {
49*84e33947SAndroid Build Coastguard Worker out->time_ns = in->time_ns;
50*84e33947SAndroid Build Coastguard Worker out->full_bias_ns = in->full_bias_ns;
51*84e33947SAndroid Build Coastguard Worker out->bias_ns = in->bias_ns;
52*84e33947SAndroid Build Coastguard Worker out->drift_nsps = in->drift_nsps;
53*84e33947SAndroid Build Coastguard Worker out->bias_uncertainty_ns = in->bias_uncertainty_ns;
54*84e33947SAndroid Build Coastguard Worker out->drift_uncertainty_nsps = in->drift_uncertainty_nsps;
55*84e33947SAndroid Build Coastguard Worker out->hw_clock_discontinuity_count = in->hw_clock_discontinuity_count;
56*84e33947SAndroid Build Coastguard Worker out->flags = in->flags;
57*84e33947SAndroid Build Coastguard Worker memset(&out->reserved, 0, sizeof(out->reserved));
58*84e33947SAndroid Build Coastguard Worker }
59*84e33947SAndroid Build Coastguard Worker
chppGnssConvertMeasurementFromChre(const struct chreGnssMeasurement * in,struct ChppGnssMeasurement * out)60*84e33947SAndroid Build Coastguard Worker static void chppGnssConvertMeasurementFromChre(
61*84e33947SAndroid Build Coastguard Worker const struct chreGnssMeasurement *in, struct ChppGnssMeasurement *out) {
62*84e33947SAndroid Build Coastguard Worker out->time_offset_ns = in->time_offset_ns;
63*84e33947SAndroid Build Coastguard Worker out->accumulated_delta_range_um = in->accumulated_delta_range_um;
64*84e33947SAndroid Build Coastguard Worker out->received_sv_time_in_ns = in->received_sv_time_in_ns;
65*84e33947SAndroid Build Coastguard Worker out->received_sv_time_uncertainty_in_ns =
66*84e33947SAndroid Build Coastguard Worker in->received_sv_time_uncertainty_in_ns;
67*84e33947SAndroid Build Coastguard Worker out->pseudorange_rate_mps = in->pseudorange_rate_mps;
68*84e33947SAndroid Build Coastguard Worker out->pseudorange_rate_uncertainty_mps = in->pseudorange_rate_uncertainty_mps;
69*84e33947SAndroid Build Coastguard Worker out->accumulated_delta_range_uncertainty_m =
70*84e33947SAndroid Build Coastguard Worker in->accumulated_delta_range_uncertainty_m;
71*84e33947SAndroid Build Coastguard Worker out->c_n0_dbhz = in->c_n0_dbhz;
72*84e33947SAndroid Build Coastguard Worker out->snr_db = in->snr_db;
73*84e33947SAndroid Build Coastguard Worker out->state = in->state;
74*84e33947SAndroid Build Coastguard Worker out->accumulated_delta_range_state = in->accumulated_delta_range_state;
75*84e33947SAndroid Build Coastguard Worker out->svid = in->svid;
76*84e33947SAndroid Build Coastguard Worker out->constellation = in->constellation;
77*84e33947SAndroid Build Coastguard Worker out->multipath_indicator = in->multipath_indicator;
78*84e33947SAndroid Build Coastguard Worker out->carrier_frequency_hz = in->carrier_frequency_hz;
79*84e33947SAndroid Build Coastguard Worker }
80*84e33947SAndroid Build Coastguard Worker
chppGnssConvertDataEventFromChre(const struct chreGnssDataEvent * in,struct ChppGnssDataEvent * out,uint8_t * payload,size_t payloadSize,uint16_t * vlaOffset)81*84e33947SAndroid Build Coastguard Worker static void chppGnssConvertDataEventFromChre(const struct chreGnssDataEvent *in,
82*84e33947SAndroid Build Coastguard Worker struct ChppGnssDataEvent *out,
83*84e33947SAndroid Build Coastguard Worker uint8_t *payload,
84*84e33947SAndroid Build Coastguard Worker size_t payloadSize,
85*84e33947SAndroid Build Coastguard Worker uint16_t *vlaOffset) {
86*84e33947SAndroid Build Coastguard Worker out->version = CHRE_GNSS_DATA_EVENT_VERSION;
87*84e33947SAndroid Build Coastguard Worker out->measurement_count = in->measurement_count;
88*84e33947SAndroid Build Coastguard Worker memset(&out->reserved, 0, sizeof(out->reserved));
89*84e33947SAndroid Build Coastguard Worker chppGnssConvertClockFromChre(&in->clock, &out->clock);
90*84e33947SAndroid Build Coastguard Worker
91*84e33947SAndroid Build Coastguard Worker struct ChppGnssMeasurement *measurements =
92*84e33947SAndroid Build Coastguard Worker (struct ChppGnssMeasurement *)&payload[*vlaOffset];
93*84e33947SAndroid Build Coastguard Worker out->measurements.length =
94*84e33947SAndroid Build Coastguard Worker (uint16_t)(in->measurement_count * sizeof(struct ChppGnssMeasurement));
95*84e33947SAndroid Build Coastguard Worker CHPP_ASSERT((size_t)(*vlaOffset + out->measurements.length) <= payloadSize);
96*84e33947SAndroid Build Coastguard Worker if (out->measurements.length > 0 &&
97*84e33947SAndroid Build Coastguard Worker *vlaOffset + out->measurements.length <= payloadSize) {
98*84e33947SAndroid Build Coastguard Worker for (size_t i = 0; i < in->measurement_count; i++) {
99*84e33947SAndroid Build Coastguard Worker chppGnssConvertMeasurementFromChre(&in->measurements[i],
100*84e33947SAndroid Build Coastguard Worker &measurements[i]);
101*84e33947SAndroid Build Coastguard Worker }
102*84e33947SAndroid Build Coastguard Worker out->measurements.offset = *vlaOffset;
103*84e33947SAndroid Build Coastguard Worker *vlaOffset += out->measurements.length;
104*84e33947SAndroid Build Coastguard Worker } else {
105*84e33947SAndroid Build Coastguard Worker out->measurements.offset = 0;
106*84e33947SAndroid Build Coastguard Worker }
107*84e33947SAndroid Build Coastguard Worker }
108*84e33947SAndroid Build Coastguard Worker
chppGnssConvertLocationEventFromChre(const struct chreGnssLocationEvent * in,struct ChppGnssLocationEvent * out)109*84e33947SAndroid Build Coastguard Worker static void chppGnssConvertLocationEventFromChre(
110*84e33947SAndroid Build Coastguard Worker const struct chreGnssLocationEvent *in, struct ChppGnssLocationEvent *out) {
111*84e33947SAndroid Build Coastguard Worker out->timestamp = in->timestamp;
112*84e33947SAndroid Build Coastguard Worker out->latitude_deg_e7 = in->latitude_deg_e7;
113*84e33947SAndroid Build Coastguard Worker out->longitude_deg_e7 = in->longitude_deg_e7;
114*84e33947SAndroid Build Coastguard Worker out->altitude = in->altitude;
115*84e33947SAndroid Build Coastguard Worker out->speed = in->speed;
116*84e33947SAndroid Build Coastguard Worker out->bearing = in->bearing;
117*84e33947SAndroid Build Coastguard Worker out->accuracy = in->accuracy;
118*84e33947SAndroid Build Coastguard Worker out->flags = in->flags;
119*84e33947SAndroid Build Coastguard Worker memset(&out->reserved, 0, sizeof(out->reserved));
120*84e33947SAndroid Build Coastguard Worker out->altitude_accuracy = in->altitude_accuracy;
121*84e33947SAndroid Build Coastguard Worker out->speed_accuracy = in->speed_accuracy;
122*84e33947SAndroid Build Coastguard Worker out->bearing_accuracy = in->bearing_accuracy;
123*84e33947SAndroid Build Coastguard Worker }
124*84e33947SAndroid Build Coastguard Worker
125*84e33947SAndroid Build Coastguard Worker // Encoding (CHRE --> CHPP) top-level functions
126*84e33947SAndroid Build Coastguard Worker
chppGnssDataEventFromChre(const struct chreGnssDataEvent * in,struct ChppGnssDataEventWithHeader ** out,size_t * outSize)127*84e33947SAndroid Build Coastguard Worker bool chppGnssDataEventFromChre(const struct chreGnssDataEvent *in,
128*84e33947SAndroid Build Coastguard Worker struct ChppGnssDataEventWithHeader **out,
129*84e33947SAndroid Build Coastguard Worker size_t *outSize) {
130*84e33947SAndroid Build Coastguard Worker CHPP_NOT_NULL(out);
131*84e33947SAndroid Build Coastguard Worker CHPP_NOT_NULL(outSize);
132*84e33947SAndroid Build Coastguard Worker
133*84e33947SAndroid Build Coastguard Worker size_t payloadSize = chppGnssSizeOfDataEventFromChre(in);
134*84e33947SAndroid Build Coastguard Worker *out = chppMalloc(payloadSize);
135*84e33947SAndroid Build Coastguard Worker if (*out != NULL) {
136*84e33947SAndroid Build Coastguard Worker uint8_t *payload = (uint8_t *)&(*out)->payload;
137*84e33947SAndroid Build Coastguard Worker uint16_t vlaOffset = sizeof(struct ChppGnssDataEvent);
138*84e33947SAndroid Build Coastguard Worker chppGnssConvertDataEventFromChre(in, &(*out)->payload, payload, payloadSize,
139*84e33947SAndroid Build Coastguard Worker &vlaOffset);
140*84e33947SAndroid Build Coastguard Worker *outSize = payloadSize;
141*84e33947SAndroid Build Coastguard Worker return true;
142*84e33947SAndroid Build Coastguard Worker }
143*84e33947SAndroid Build Coastguard Worker return false;
144*84e33947SAndroid Build Coastguard Worker }
145*84e33947SAndroid Build Coastguard Worker
chppGnssLocationEventFromChre(const struct chreGnssLocationEvent * in,struct ChppGnssLocationEventWithHeader ** out,size_t * outSize)146*84e33947SAndroid Build Coastguard Worker bool chppGnssLocationEventFromChre(const struct chreGnssLocationEvent *in,
147*84e33947SAndroid Build Coastguard Worker struct ChppGnssLocationEventWithHeader **out,
148*84e33947SAndroid Build Coastguard Worker size_t *outSize) {
149*84e33947SAndroid Build Coastguard Worker CHPP_NOT_NULL(out);
150*84e33947SAndroid Build Coastguard Worker CHPP_NOT_NULL(outSize);
151*84e33947SAndroid Build Coastguard Worker
152*84e33947SAndroid Build Coastguard Worker size_t payloadSize = sizeof(struct ChppGnssLocationEventWithHeader);
153*84e33947SAndroid Build Coastguard Worker *out = chppMalloc(payloadSize);
154*84e33947SAndroid Build Coastguard Worker if (*out != NULL) {
155*84e33947SAndroid Build Coastguard Worker chppGnssConvertLocationEventFromChre(in, &(*out)->payload);
156*84e33947SAndroid Build Coastguard Worker *outSize = payloadSize;
157*84e33947SAndroid Build Coastguard Worker return true;
158*84e33947SAndroid Build Coastguard Worker }
159*84e33947SAndroid Build Coastguard Worker return false;
160*84e33947SAndroid Build Coastguard Worker }
161*84e33947SAndroid Build Coastguard Worker
162*84e33947SAndroid Build Coastguard Worker // Decoding (CHPP --> CHRE) conversion functions
163*84e33947SAndroid Build Coastguard Worker
chppGnssConvertClockToChre(const struct ChppGnssClock * in,struct chreGnssClock * out)164*84e33947SAndroid Build Coastguard Worker static bool chppGnssConvertClockToChre(const struct ChppGnssClock *in,
165*84e33947SAndroid Build Coastguard Worker struct chreGnssClock *out) {
166*84e33947SAndroid Build Coastguard Worker out->time_ns = in->time_ns;
167*84e33947SAndroid Build Coastguard Worker out->full_bias_ns = in->full_bias_ns;
168*84e33947SAndroid Build Coastguard Worker out->bias_ns = in->bias_ns;
169*84e33947SAndroid Build Coastguard Worker out->drift_nsps = in->drift_nsps;
170*84e33947SAndroid Build Coastguard Worker out->bias_uncertainty_ns = in->bias_uncertainty_ns;
171*84e33947SAndroid Build Coastguard Worker out->drift_uncertainty_nsps = in->drift_uncertainty_nsps;
172*84e33947SAndroid Build Coastguard Worker out->hw_clock_discontinuity_count = in->hw_clock_discontinuity_count;
173*84e33947SAndroid Build Coastguard Worker out->flags = in->flags;
174*84e33947SAndroid Build Coastguard Worker memset(&out->reserved, 0, sizeof(out->reserved));
175*84e33947SAndroid Build Coastguard Worker
176*84e33947SAndroid Build Coastguard Worker return true;
177*84e33947SAndroid Build Coastguard Worker }
178*84e33947SAndroid Build Coastguard Worker
chppGnssConvertMeasurementToChre(const struct ChppGnssMeasurement * in,struct chreGnssMeasurement * out)179*84e33947SAndroid Build Coastguard Worker static bool chppGnssConvertMeasurementToChre(
180*84e33947SAndroid Build Coastguard Worker const struct ChppGnssMeasurement *in, struct chreGnssMeasurement *out) {
181*84e33947SAndroid Build Coastguard Worker out->time_offset_ns = in->time_offset_ns;
182*84e33947SAndroid Build Coastguard Worker out->accumulated_delta_range_um = in->accumulated_delta_range_um;
183*84e33947SAndroid Build Coastguard Worker out->received_sv_time_in_ns = in->received_sv_time_in_ns;
184*84e33947SAndroid Build Coastguard Worker out->received_sv_time_uncertainty_in_ns =
185*84e33947SAndroid Build Coastguard Worker in->received_sv_time_uncertainty_in_ns;
186*84e33947SAndroid Build Coastguard Worker out->pseudorange_rate_mps = in->pseudorange_rate_mps;
187*84e33947SAndroid Build Coastguard Worker out->pseudorange_rate_uncertainty_mps = in->pseudorange_rate_uncertainty_mps;
188*84e33947SAndroid Build Coastguard Worker out->accumulated_delta_range_uncertainty_m =
189*84e33947SAndroid Build Coastguard Worker in->accumulated_delta_range_uncertainty_m;
190*84e33947SAndroid Build Coastguard Worker out->c_n0_dbhz = in->c_n0_dbhz;
191*84e33947SAndroid Build Coastguard Worker out->snr_db = in->snr_db;
192*84e33947SAndroid Build Coastguard Worker out->state = in->state;
193*84e33947SAndroid Build Coastguard Worker out->accumulated_delta_range_state = in->accumulated_delta_range_state;
194*84e33947SAndroid Build Coastguard Worker out->svid = in->svid;
195*84e33947SAndroid Build Coastguard Worker out->constellation = in->constellation;
196*84e33947SAndroid Build Coastguard Worker out->multipath_indicator = in->multipath_indicator;
197*84e33947SAndroid Build Coastguard Worker out->carrier_frequency_hz = in->carrier_frequency_hz;
198*84e33947SAndroid Build Coastguard Worker
199*84e33947SAndroid Build Coastguard Worker return true;
200*84e33947SAndroid Build Coastguard Worker }
201*84e33947SAndroid Build Coastguard Worker
chppGnssConvertDataEventToChre(const struct ChppGnssDataEvent * in,struct chreGnssDataEvent * out,size_t inSize)202*84e33947SAndroid Build Coastguard Worker static bool chppGnssConvertDataEventToChre(const struct ChppGnssDataEvent *in,
203*84e33947SAndroid Build Coastguard Worker struct chreGnssDataEvent *out,
204*84e33947SAndroid Build Coastguard Worker size_t inSize) {
205*84e33947SAndroid Build Coastguard Worker out->version = CHRE_GNSS_DATA_EVENT_VERSION;
206*84e33947SAndroid Build Coastguard Worker out->measurement_count = in->measurement_count;
207*84e33947SAndroid Build Coastguard Worker memset(&out->reserved, 0, sizeof(out->reserved));
208*84e33947SAndroid Build Coastguard Worker if (!chppGnssConvertClockToChre(&in->clock, &out->clock)) {
209*84e33947SAndroid Build Coastguard Worker return false;
210*84e33947SAndroid Build Coastguard Worker }
211*84e33947SAndroid Build Coastguard Worker
212*84e33947SAndroid Build Coastguard Worker if (in->measurements.length == 0) {
213*84e33947SAndroid Build Coastguard Worker out->measurements = NULL;
214*84e33947SAndroid Build Coastguard Worker } else {
215*84e33947SAndroid Build Coastguard Worker if (in->measurements.offset + in->measurements.length > inSize ||
216*84e33947SAndroid Build Coastguard Worker in->measurements.length !=
217*84e33947SAndroid Build Coastguard Worker in->measurement_count * sizeof(struct ChppGnssMeasurement)) {
218*84e33947SAndroid Build Coastguard Worker return false;
219*84e33947SAndroid Build Coastguard Worker }
220*84e33947SAndroid Build Coastguard Worker
221*84e33947SAndroid Build Coastguard Worker const struct ChppGnssMeasurement *measurementsIn =
222*84e33947SAndroid Build Coastguard Worker (const struct ChppGnssMeasurement *)&(
223*84e33947SAndroid Build Coastguard Worker (const uint8_t *)in)[in->measurements.offset];
224*84e33947SAndroid Build Coastguard Worker
225*84e33947SAndroid Build Coastguard Worker struct chreGnssMeasurement *measurementsOut =
226*84e33947SAndroid Build Coastguard Worker chppMalloc(in->measurement_count * sizeof(struct chreGnssMeasurement));
227*84e33947SAndroid Build Coastguard Worker if (measurementsOut == NULL) {
228*84e33947SAndroid Build Coastguard Worker return false;
229*84e33947SAndroid Build Coastguard Worker }
230*84e33947SAndroid Build Coastguard Worker
231*84e33947SAndroid Build Coastguard Worker for (size_t i = 0; i < in->measurement_count; i++) {
232*84e33947SAndroid Build Coastguard Worker if (!chppGnssConvertMeasurementToChre(&measurementsIn[i],
233*84e33947SAndroid Build Coastguard Worker &measurementsOut[i])) {
234*84e33947SAndroid Build Coastguard Worker return false;
235*84e33947SAndroid Build Coastguard Worker }
236*84e33947SAndroid Build Coastguard Worker }
237*84e33947SAndroid Build Coastguard Worker out->measurements = measurementsOut;
238*84e33947SAndroid Build Coastguard Worker }
239*84e33947SAndroid Build Coastguard Worker
240*84e33947SAndroid Build Coastguard Worker return true;
241*84e33947SAndroid Build Coastguard Worker }
242*84e33947SAndroid Build Coastguard Worker
chppGnssConvertLocationEventToChre(const struct ChppGnssLocationEvent * in,struct chreGnssLocationEvent * out)243*84e33947SAndroid Build Coastguard Worker static bool chppGnssConvertLocationEventToChre(
244*84e33947SAndroid Build Coastguard Worker const struct ChppGnssLocationEvent *in, struct chreGnssLocationEvent *out) {
245*84e33947SAndroid Build Coastguard Worker out->timestamp = in->timestamp;
246*84e33947SAndroid Build Coastguard Worker out->latitude_deg_e7 = in->latitude_deg_e7;
247*84e33947SAndroid Build Coastguard Worker out->longitude_deg_e7 = in->longitude_deg_e7;
248*84e33947SAndroid Build Coastguard Worker out->altitude = in->altitude;
249*84e33947SAndroid Build Coastguard Worker out->speed = in->speed;
250*84e33947SAndroid Build Coastguard Worker out->bearing = in->bearing;
251*84e33947SAndroid Build Coastguard Worker out->accuracy = in->accuracy;
252*84e33947SAndroid Build Coastguard Worker out->flags = in->flags;
253*84e33947SAndroid Build Coastguard Worker memset(&out->reserved, 0, sizeof(out->reserved));
254*84e33947SAndroid Build Coastguard Worker out->altitude_accuracy = in->altitude_accuracy;
255*84e33947SAndroid Build Coastguard Worker out->speed_accuracy = in->speed_accuracy;
256*84e33947SAndroid Build Coastguard Worker out->bearing_accuracy = in->bearing_accuracy;
257*84e33947SAndroid Build Coastguard Worker
258*84e33947SAndroid Build Coastguard Worker return true;
259*84e33947SAndroid Build Coastguard Worker }
260*84e33947SAndroid Build Coastguard Worker
261*84e33947SAndroid Build Coastguard Worker // Decoding (CHPP --> CHRE) top-level functions
262*84e33947SAndroid Build Coastguard Worker
chppGnssDataEventToChre(const struct ChppGnssDataEvent * in,size_t inSize)263*84e33947SAndroid Build Coastguard Worker struct chreGnssDataEvent *chppGnssDataEventToChre(
264*84e33947SAndroid Build Coastguard Worker const struct ChppGnssDataEvent *in, size_t inSize) {
265*84e33947SAndroid Build Coastguard Worker struct chreGnssDataEvent *out = NULL;
266*84e33947SAndroid Build Coastguard Worker
267*84e33947SAndroid Build Coastguard Worker if (inSize >= sizeof(struct ChppGnssDataEvent)) {
268*84e33947SAndroid Build Coastguard Worker out = chppMalloc(sizeof(struct chreGnssDataEvent));
269*84e33947SAndroid Build Coastguard Worker if (out != NULL) {
270*84e33947SAndroid Build Coastguard Worker if (!chppGnssConvertDataEventToChre(in, out, inSize)) {
271*84e33947SAndroid Build Coastguard Worker CHPP_FREE_AND_NULLIFY(out);
272*84e33947SAndroid Build Coastguard Worker }
273*84e33947SAndroid Build Coastguard Worker }
274*84e33947SAndroid Build Coastguard Worker }
275*84e33947SAndroid Build Coastguard Worker
276*84e33947SAndroid Build Coastguard Worker return out;
277*84e33947SAndroid Build Coastguard Worker }
chppGnssLocationEventToChre(const struct ChppGnssLocationEvent * in,size_t inSize)278*84e33947SAndroid Build Coastguard Worker struct chreGnssLocationEvent *chppGnssLocationEventToChre(
279*84e33947SAndroid Build Coastguard Worker const struct ChppGnssLocationEvent *in, size_t inSize) {
280*84e33947SAndroid Build Coastguard Worker struct chreGnssLocationEvent *out = NULL;
281*84e33947SAndroid Build Coastguard Worker
282*84e33947SAndroid Build Coastguard Worker if (inSize >= sizeof(struct ChppGnssLocationEvent)) {
283*84e33947SAndroid Build Coastguard Worker out = chppMalloc(sizeof(struct chreGnssLocationEvent));
284*84e33947SAndroid Build Coastguard Worker if (out != NULL) {
285*84e33947SAndroid Build Coastguard Worker if (!chppGnssConvertLocationEventToChre(in, out)) {
286*84e33947SAndroid Build Coastguard Worker CHPP_FREE_AND_NULLIFY(out);
287*84e33947SAndroid Build Coastguard Worker }
288*84e33947SAndroid Build Coastguard Worker }
289*84e33947SAndroid Build Coastguard Worker }
290*84e33947SAndroid Build Coastguard Worker
291*84e33947SAndroid Build Coastguard Worker return out;
292*84e33947SAndroid Build Coastguard Worker }
293