|
36 | 36 | # include "../objects/objects.h"
|
37 | 37 | #endif // CONFIG_ANJAY_ZEPHYR_GPS_NRF_A_GPS
|
38 | 38 |
|
| 39 | +#if __has_include("ncs_version.h") |
| 40 | +# include "ncs_version.h" |
| 41 | +#endif // __has_include("ncs_version.h") |
| 42 | + |
39 | 43 | LOG_MODULE_REGISTER(anjay_zephyr_gps_nrf);
|
40 | 44 |
|
41 | 45 | #define INTERRUPTED_FIXES_WARN_THRESHOLD 10
|
@@ -185,35 +189,62 @@ static void incoming_pvt_work_handler(struct k_work *work) {
|
185 | 189 | }
|
186 | 190 |
|
187 | 191 | #ifdef CONFIG_ANJAY_ZEPHYR_GPS_NRF_A_GPS
|
| 192 | +# if NCS_VERSION_NUMBER < 0x20463 |
| 193 | +# define nrf_modem_gnss_agnss_data_frame nrf_modem_gnss_agps_data_frame |
| 194 | +# define NRF_MODEM_GNSS_AGNSS_GPS_UTC_REQUEST \ |
| 195 | + NRF_MODEM_GNSS_AGPS_GPS_UTC_REQUEST |
| 196 | +# define NRF_MODEM_GNSS_AGNSS_KLOBUCHAR_REQUEST \ |
| 197 | + NRF_MODEM_GNSS_AGPS_KLOBUCHAR_REQUEST |
| 198 | +# define NRF_MODEM_GNSS_AGNSS_NEQUICK_REQUEST \ |
| 199 | + NRF_MODEM_GNSS_AGPS_NEQUICK_REQUEST |
| 200 | +# define NRF_MODEM_GNSS_AGNSS_GPS_SYS_TIME_AND_SV_TOW_REQUEST \ |
| 201 | + NRF_MODEM_GNSS_AGPS_SYS_TIME_AND_SV_TOW_REQUEST |
| 202 | +# define NRF_MODEM_GNSS_AGNSS_POSITION_REQUEST \ |
| 203 | + NRF_MODEM_GNSS_AGPS_POSITION_REQUEST |
| 204 | +# define NRF_MODEM_GNSS_AGNSS_INTEGRITY_REQUEST \ |
| 205 | + NRF_MODEM_GNSS_AGPS_INTEGRITY_REQUEST |
| 206 | +# define NRF_MODEM_GNSS_EVT_AGNSS_REQ NRF_MODEM_GNSS_EVT_AGPS_REQ |
| 207 | +# define NRF_MODEM_GNSS_DATA_AGNSS_REQ NRF_MODEM_GNSS_DATA_AGPS_REQ |
| 208 | +# endif // NCS_VERSION_NUMBER < 0x20463 |
| 209 | + |
188 | 210 | static void
|
189 |
| -handle_modem_agps_request_evt(struct nrf_modem_gnss_agps_data_frame req) { |
| 211 | +handle_modem_agps_request_evt(struct nrf_modem_gnss_agnss_data_frame req) { |
190 | 212 | uint32_t request_mask = 0;
|
191 | 213 |
|
192 |
| - if (req.data_flags & NRF_MODEM_GNSS_AGPS_GPS_UTC_REQUEST) { |
| 214 | + if (req.data_flags & NRF_MODEM_GNSS_AGNSS_GPS_UTC_REQUEST) { |
193 | 215 | request_mask |= LOC_SERVICES_A_GPS_MASK_UTC;
|
194 | 216 | }
|
195 |
| - if (req.data_flags & NRF_MODEM_GNSS_AGPS_KLOBUCHAR_REQUEST) { |
| 217 | + if (req.data_flags & NRF_MODEM_GNSS_AGNSS_KLOBUCHAR_REQUEST) { |
196 | 218 | request_mask |= LOC_SERVICES_A_GPS_MASK_KLOBUCHAR;
|
197 | 219 | }
|
198 |
| - if (req.data_flags & NRF_MODEM_GNSS_AGPS_NEQUICK_REQUEST) { |
| 220 | + if (req.data_flags & NRF_MODEM_GNSS_AGNSS_NEQUICK_REQUEST) { |
199 | 221 | request_mask |= LOC_SERVICES_A_GPS_MASK_NEQUICK;
|
200 | 222 | }
|
201 |
| - if (req.data_flags & NRF_MODEM_GNSS_AGPS_SYS_TIME_AND_SV_TOW_REQUEST) { |
| 223 | + if (req.data_flags & NRF_MODEM_GNSS_AGNSS_GPS_SYS_TIME_AND_SV_TOW_REQUEST) { |
202 | 224 | request_mask |=
|
203 | 225 | LOC_SERVICES_A_GPS_MASK_TOW | LOC_SERVICES_A_GPS_MASK_CLOCK;
|
204 | 226 | }
|
205 |
| - if (req.data_flags & NRF_MODEM_GNSS_AGPS_POSITION_REQUEST) { |
| 227 | + if (req.data_flags & NRF_MODEM_GNSS_AGNSS_POSITION_REQUEST) { |
206 | 228 | request_mask |= LOC_SERVICES_A_GPS_MASK_LOCATION;
|
207 | 229 | }
|
208 |
| - if (req.data_flags & NRF_MODEM_GNSS_AGPS_INTEGRITY_REQUEST) { |
| 230 | + if (req.data_flags & NRF_MODEM_GNSS_AGNSS_INTEGRITY_REQUEST) { |
209 | 231 | request_mask |= LOC_SERVICES_A_GPS_MASK_INTEGRITY;
|
210 | 232 | }
|
| 233 | +# if NCS_VERSION_NUMBER >= 0x20463 |
| 234 | + if (req.system[0].sv_mask_ephe) { |
| 235 | + request_mask |= LOC_SERVICES_A_GPS_MASK_EPHEMERIS; |
| 236 | + } |
| 237 | + if (req.system[0].sv_mask_alm) { |
| 238 | + request_mask |= LOC_SERVICES_A_GPS_MASK_ALMANAC; |
| 239 | + } |
| 240 | +# else // NCS_VERSION_NUMBER >= 0x20463 |
211 | 241 | if (req.sv_mask_ephe) {
|
212 | 242 | request_mask |= LOC_SERVICES_A_GPS_MASK_EPHEMERIS;
|
213 | 243 | }
|
214 | 244 | if (req.sv_mask_alm) {
|
215 | 245 | request_mask |= LOC_SERVICES_A_GPS_MASK_ALMANAC;
|
216 | 246 | }
|
| 247 | +# endif // NCS_VERSION_NUMBER >= 0x20463 |
217 | 248 |
|
218 | 249 | SYNCHRONIZED(anjay_zephyr_gps_read_last_mtx) {
|
219 | 250 | // We're reassigning the mask instead of ORing it with previous state,
|
@@ -242,11 +273,11 @@ static void gnss_event_handler(int event) {
|
242 | 273 | _anjay_zephyr_k_work_submit(&incoming_pvt_work);
|
243 | 274 | }
|
244 | 275 | #ifdef CONFIG_ANJAY_ZEPHYR_GPS_NRF_A_GPS
|
245 |
| - if (event == NRF_MODEM_GNSS_EVT_AGPS_REQ) { |
246 |
| - struct nrf_modem_gnss_agps_data_frame req; |
| 276 | + if (event == NRF_MODEM_GNSS_EVT_AGNSS_REQ) { |
| 277 | + struct nrf_modem_gnss_agnss_data_frame req; |
247 | 278 |
|
248 | 279 | if (nrf_modem_gnss_read(
|
249 |
| - &req, sizeof(req), NRF_MODEM_GNSS_DATA_AGPS_REQ)) { |
| 280 | + &req, sizeof(req), NRF_MODEM_GNSS_DATA_AGNSS_REQ)) { |
250 | 281 | LOG_ERR("Failed to retrieve a A-GPS REQ event");
|
251 | 282 | return;
|
252 | 283 | }
|
|
0 commit comments