diff options
author | cnlohr <lohr85@gmail.com> | 2017-02-14 01:00:33 -0500 |
---|---|---|
committer | cnlohr <lohr85@gmail.com> | 2017-02-14 01:00:33 -0500 |
commit | 35e08aaa24bd01e6ace453f89ddb73a6bb0508b0 (patch) | |
tree | bb101b68eeabd8a85cd4e062ecca4b7dab140ecd /src/survive_cal.c | |
parent | f782146df94b3b54965c2aed696d49e86870046d (diff) | |
download | libsurvive-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.c | 68 |
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; + } +} + |