Skip to content
This repository was archived by the owner on Apr 13, 2021. It is now read-only.

Commit 44d1430

Browse files
committed
Merge pull request #305 from ljbade/improve-dgnss-python
Improve dgnss python bindings
2 parents 5997479 + dd0483f commit 44d1430

File tree

2 files changed

+72
-9
lines changed

2 files changed

+72
-9
lines changed

python/swiftnav/dgnss_management.pyx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,7 @@ def dgnss_update_(sdiffs, reciever_ecef, disable_raim=False):
5252
num_sdiffs = len(sdiffs)
5353
cdef np.ndarray[np.double_t, ndim=1, mode="c"] ref_ecef_ = np.array(reciever_ecef, dtype=np.double)
5454
cdef sdiff_t sdiffs_[32]
55-
cdef sdiff_t s_
56-
for (i,sdiff) in enumerate(sdiffs):
57-
s_ = (<SingleDiff ?> sdiff)._thisptr
58-
memcpy(&sdiffs_[i], &s_, sizeof(sdiff_t))
55+
mk_sdiff_array(sdiffs, 32, &sdiffs_[0])
5956
dgnss_update(num_sdiffs, &sdiffs_[0], &ref_ecef_[0], disable_raim, DEFAULT_RAIM_THRESHOLD)
6057

6158
# def dgnss_rebase_ref_(sdiffs, reciever_ecef, old_prns):

src/dgnss_management.c

Lines changed: 71 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -250,12 +250,21 @@ void dgnss_update(u8 num_sats, sdiff_t *sdiffs, double receiver_ecef[3],
250250
bool disable_raim, double raim_threshold)
251251
{
252252
DEBUG_ENTRY();
253-
if (DEBUG) {
254-
printf("sdiff[*].prn = {");
255-
for (u8 i=0; i < num_sats; i++) {
256-
printf("%u, ", sdiffs[i].sid.sat);
253+
log_debug("dgnss_update");
254+
log_debug("============");
255+
log_debug("n: %u", num_sats);
256+
log_debug("ecef: %f %f %f", receiver_ecef[0], receiver_ecef[1], receiver_ecef[2]);
257+
log_debug("sdiff[*]");
258+
for (u8 i=0; i < num_sats; i++) {
259+
log_debug("sid: %u", sdiffs[i].sid.sat);
260+
log_debug(" pr: %f", sdiffs[i].pseudorange);
261+
log_debug(" cp: %f", sdiffs[i].carrier_phase);
262+
log_debug(" do: %f", sdiffs[i].doppler);
263+
log_debug(" sn: %f", sdiffs[i].snr);
264+
log_debug(" pos/vel");
265+
for (u8 j=0; j < 3; j++) {
266+
log_debug(" %f %f", sdiffs[i].sat_pos[j], sdiffs[i].sat_vel[j]);
257267
}
258-
printf("}\n");
259268
}
260269

261270
if (num_sats <= 1) {
@@ -368,6 +377,18 @@ s8 dgnss_iar_get_single_hyp(double *dhyp)
368377
*/
369378
void dgnss_update_ambiguity_state(ambiguity_state_t *s)
370379
{
380+
log_debug("dgnss_update_ambiguity_state");
381+
log_debug("============================");
382+
log_debug("==BEFORE==");
383+
log_debug("fixed:");
384+
for (u8 i=0; i < s->fixed_ambs.n; i++){
385+
log_debug(" %u: %f", s->fixed_ambs.sids[i].sat, s->fixed_ambs.ambs[i]);
386+
}
387+
log_debug("float:");
388+
for (u8 i=0; i < s->float_ambs.n; i++){
389+
log_debug(" %u: %f", s->float_ambs.sids[i].sat, s->float_ambs.ambs[i]);
390+
}
391+
371392
/* Float filter */
372393
/* NOTE: if sats_management.num_sats <= 1 the filter is not updated and
373394
* nkf.state_dim may not match. */
@@ -394,6 +415,16 @@ void dgnss_update_ambiguity_state(ambiguity_state_t *s)
394415
} else {
395416
s->fixed_ambs.n = 0;
396417
}
418+
419+
log_debug("==AFTER==");
420+
log_debug("fixed:");
421+
for (u8 i=0; i < s->fixed_ambs.n; i++){
422+
log_debug(" %u: %f", s->fixed_ambs.sids[i].sat, s->fixed_ambs.ambs[i]);
423+
}
424+
log_debug("float:");
425+
for (u8 i=0; i < s->float_ambs.n; i++){
426+
log_debug(" %u: %f", s->float_ambs.sids[i].sat, s->float_ambs.ambs[i]);
427+
}
397428
}
398429

399430
/** Finds the baseline using low latency sdiffs.
@@ -420,12 +451,43 @@ s8 dgnss_baseline(u8 num_sdiffs, const sdiff_t *sdiffs,
420451
u8 *num_used, double b[3],
421452
bool disable_raim, double raim_threshold)
422453
{
454+
455+
log_debug("dgnss_baseline");
456+
log_debug("============");
457+
log_debug("n: %u", num_sdiffs);
458+
log_debug("ecef: %f %f %f", ref_ecef[0], ref_ecef[1], ref_ecef[2]);
459+
log_debug("sdiff[*]");
460+
for (u8 i=0; i < num_sdiffs; i++) {
461+
log_debug("sid: %u", sdiffs[i].sid.sat);
462+
log_debug(" pr: %f", sdiffs[i].pseudorange);
463+
log_debug(" cp: %f", sdiffs[i].carrier_phase);
464+
log_debug(" do: %f", sdiffs[i].doppler);
465+
log_debug(" sn: %f", sdiffs[i].snr);
466+
log_debug(" pos/vel");
467+
for (u8 j=0; j < 3; j++) {
468+
log_debug(" %f %f", sdiffs[i].sat_pos[j], sdiffs[i].sat_vel[j]);
469+
}
470+
}
471+
log_debug("amb[*]");
472+
log_debug("fixed:");
473+
for (u8 i=0; i < s->fixed_ambs.n; i++){
474+
log_debug(" %u: %f", s->fixed_ambs.sids[i].sat, s->fixed_ambs.ambs[i]);
475+
}
476+
log_debug("float:");
477+
for (u8 i=0; i < s->float_ambs.n; i++){
478+
log_debug(" %u: %f", s->float_ambs.sids[i].sat, s->float_ambs.ambs[i]);
479+
}
480+
423481
s8 ret = baseline(num_sdiffs, sdiffs, ref_ecef, &s->fixed_ambs, num_used, b,
424482
disable_raim, raim_threshold);
425483
if (ret >= 0) {
426484
if (ret == 1) /* TODO: Export this rather than just printing */
485+
{
427486
log_warn("dgnss_baseline: Fixed baseline RAIM repair");
487+
}
428488
log_debug("fixed solution");
489+
log_debug("ret: %i ", ret);
490+
log_debug("fixed baseline: %f %f %f", b[0], b[1], b[2]);
429491
DEBUG_EXIT();
430492
return 1;
431493
}
@@ -435,8 +497,12 @@ s8 dgnss_baseline(u8 num_sdiffs, const sdiff_t *sdiffs,
435497
disable_raim, raim_threshold))
436498
>= 0) {
437499
if (ret == 1) /* TODO: Export this rather than just printing */
500+
{
438501
log_warn("dgnss_baseline: Float baseline RAIM repair");
502+
}
439503
log_debug("float solution");
504+
log_debug("ret: %i", ret);
505+
log_debug("float baseline: %f %f %f", b[0], b[1], b[2]);
440506
DEBUG_EXIT();
441507
return 2;
442508
}

0 commit comments

Comments
 (0)