aboutsummaryrefslogtreecommitdiff
path: root/src/survive_cal.c
diff options
context:
space:
mode:
authorcnlohr <lohr85@gmail.com>2017-02-14 01:00:33 -0500
committercnlohr <lohr85@gmail.com>2017-02-14 01:00:33 -0500
commit35e08aaa24bd01e6ace453f89ddb73a6bb0508b0 (patch)
treebb101b68eeabd8a85cd4e062ecca4b7dab140ecd /src/survive_cal.c
parentf782146df94b3b54965c2aed696d49e86870046d (diff)
downloadlibsurvive-35e08aaa24bd01e6ace453f89ddb73a6bb0508b0.tar.gz
libsurvive-35e08aaa24bd01e6ace453f89ddb73a6bb0508b0.tar.bz2
Still not working, but getting closer to dynamic OOTX decoding.
Diffstat (limited to 'src/survive_cal.c')
-rw-r--r--src/survive_cal.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/survive_cal.c b/src/survive_cal.c
new file mode 100644
index 0000000..4223e70
--- /dev/null
+++ b/src/survive_cal.c
@@ -0,0 +1,68 @@
+// (C) 2016, 2017 Joshua Allen, MIT/x11 License.
+// (C) 2016, 2017 <>< C. N. Lohr, Under MIT/x11 License.
+
+// All OOTX code was written by J. Allen. Rest of the code is probably mostly CNLohr.
+
+#include "survive_cal.h"
+#include "survive_internal.h"
+
+void ootx_packet_clbk_d(ootx_decoder_context *ct, ootx_packet* packet)
+{
+ struct SurviveContext * ctx = (struct SurviveContext*)(ct->user);
+ struct SurviveCalData * cd = ctx->calptr;
+ int id = ct->user1;
+
+ printf( "Got OOTX packet %d %p\n", id, cd );
+}
+
+
+void survive_cal_install( struct SurviveContext * ctx )
+{
+ int i;
+ struct SurviveCalData * cd = ctx->calptr = calloc( 1, sizeof( struct SurviveCalData ) );
+
+ for( i = 0; i < NUM_LIGHTHOUSES; i++ )
+ {
+ ootx_init_decoder_context(&cd->ootx_decoders[i]);
+ cd->ootx_decoders[i].user = ctx;
+ cd->ootx_decoders[i].user1 = i;
+ }
+
+ cd->stage = 1;
+
+ ootx_packet_clbk = ootx_packet_clbk_d;
+
+ ctx->calptr = cd;
+}
+
+
+void survive_cal_light( struct SurviveObject * so, int sensor_id, int acode, int timeinsweep, uint32_t timecode, uint32_t length )
+{
+ struct SurviveContext * ctx = so->ctx;
+ struct SurviveCalData * cd = ctx->calptr;
+
+ if( !cd ) return;
+
+ switch( cd->stage )
+ {
+ default:
+ case 0: //Default, inactive.
+ break;
+
+ case 1:
+ //Collecting OOTX data.
+ if( sensor_id < 0 )
+ {
+ int lhid = -sensor_id-1;
+ if( lhid >= NUM_LIGHTHOUSES-1 && so->codename[0] == 'H' )
+ {
+ uint8_t dbit = (acode & 2)?0xff:0x00;
+ printf( "%s %d %d %d\n", so->codename, lhid, acode, dbit );
+ ootx_process_bit( &cd->ootx_decoders[lhid], dbit );
+ }
+ }
+
+ break;
+ }
+}
+