From a95737952d4fbb658b6de3bec312109b56caf6a6 Mon Sep 17 00:00:00 2001 From: Julian Picht Date: Tue, 20 Dec 2016 21:32:44 +0100 Subject: hacked in my disambiguator --- src/survive_data.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/survive_data.c') diff --git a/src/survive_data.c b/src/survive_data.c index 660c3e1..fc86d9f 100644 --- a/src/survive_data.c +++ b/src/survive_data.c @@ -11,6 +11,7 @@ //All MIT/x11 Licensed Code in this file may be relicensed freely under the GPL or LGPL licenses. #include "survive_internal.h" +#include "disambiguator.h" #include #include @@ -41,6 +42,21 @@ static void handle_lightcap( struct SurviveObject * so, struct LightcapElement * if( le->type != 0xfe || le->length < 50 ) return; //le->timestamp += (le->length/2); + int32_t offset = le->timestamp - so->d.last; + switch(disambiguator_step(&(so->d), le->timestamp, le->length)) { + default: + case P_UNKNOWN: + // not currently locked + case P_SYNC: + ct->lightproc( so, le->sensor_id, -1, 0, le->timestamp, offset ); + so->d.code = ((le->length+125)/250) - 12; + break; + case P_SWEEP: + if (so->d.gcode & 1) return; + ct->lightproc( so, le->sensor_id, so->d.code >> 1, offset, le->timestamp, le->length ); + break; + } +#if 0 if( le->length > 2100 ) //Pulse longer indicates a sync pulse. { int32_t deltat = (uint32_t)le->timestamp - (uint32_t)so->last_photo_time; @@ -85,6 +101,7 @@ static void handle_lightcap( struct SurviveObject * so, struct LightcapElement * { //Runt pulse. } +#endif } -- cgit v1.2.3 From a7b317f9d16a8fad452be0978d4456d6a2ed2c35 Mon Sep 17 00:00:00 2001 From: Julian Picht Date: Tue, 20 Dec 2016 21:35:54 +0100 Subject: fix typo --- src/survive_data.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/survive_data.c') diff --git a/src/survive_data.c b/src/survive_data.c index fc86d9f..ef35e0e 100644 --- a/src/survive_data.c +++ b/src/survive_data.c @@ -52,7 +52,7 @@ static void handle_lightcap( struct SurviveObject * so, struct LightcapElement * so->d.code = ((le->length+125)/250) - 12; break; case P_SWEEP: - if (so->d.gcode & 1) return; + if (so->d.code & 1) return; ct->lightproc( so, le->sensor_id, so->d.code >> 1, offset, le->timestamp, le->length ); break; } -- cgit v1.2.3 From 093802f9cc7ebaa0bfe8d862766e7e08026576f0 Mon Sep 17 00:00:00 2001 From: cnlohr Date: Tue, 20 Dec 2016 22:44:10 -0500 Subject: switch to a hidden disambiguator. --- src/survive_data.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/survive_data.c') diff --git a/src/survive_data.c b/src/survive_data.c index ef35e0e..cb3e8a2 100644 --- a/src/survive_data.c +++ b/src/survive_data.c @@ -42,18 +42,18 @@ static void handle_lightcap( struct SurviveObject * so, struct LightcapElement * if( le->type != 0xfe || le->length < 50 ) return; //le->timestamp += (le->length/2); - int32_t offset = le->timestamp - so->d.last; - switch(disambiguator_step(&(so->d), le->timestamp, le->length)) { + int32_t offset = le->timestamp - so->d->last; + switch( disambiguator_step( so->d, le->timestamp, le->length ) ) { default: case P_UNKNOWN: // not currently locked case P_SYNC: ct->lightproc( so, le->sensor_id, -1, 0, le->timestamp, offset ); - so->d.code = ((le->length+125)/250) - 12; + so->d->code = ((le->length+125)/250) - 12; break; case P_SWEEP: - if (so->d.code & 1) return; - ct->lightproc( so, le->sensor_id, so->d.code >> 1, offset, le->timestamp, le->length ); + if (so->d->code & 1) return; + ct->lightproc( so, le->sensor_id, so->d->code >> 1, offset, le->timestamp, le->length ); break; } #if 0 -- cgit v1.2.3 From 170219fe413602508b31c39df23c8938adc6c35f Mon Sep 17 00:00:00 2001 From: cnlohr Date: Tue, 20 Dec 2016 23:36:55 -0500 Subject: get the new disambiguator closer, but it's still not perfect. --- src/survive_data.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/survive_data.c') diff --git a/src/survive_data.c b/src/survive_data.c index cb3e8a2..6a1656b 100644 --- a/src/survive_data.c +++ b/src/survive_data.c @@ -41,7 +41,7 @@ static void handle_lightcap( struct SurviveObject * so, struct LightcapElement * if( le->type != 0xfe || le->length < 50 ) return; //le->timestamp += (le->length/2); - +#if 0 int32_t offset = le->timestamp - so->d->last; switch( disambiguator_step( so->d, le->timestamp, le->length ) ) { default: @@ -56,7 +56,8 @@ static void handle_lightcap( struct SurviveObject * so, struct LightcapElement * ct->lightproc( so, le->sensor_id, so->d->code >> 1, offset, le->timestamp, le->length ); break; } -#if 0 +#endif +#ifdef USE_OLD_DISAMBIGUATOR if( le->length > 2100 ) //Pulse longer indicates a sync pulse. { int32_t deltat = (uint32_t)le->timestamp - (uint32_t)so->last_photo_time; -- cgit v1.2.3