diff options
author | Josh Allen <axlecrusher@gmail.com> | 2017-02-14 20:57:13 -0500 |
---|---|---|
committer | Josh Allen <axlecrusher@gmail.com> | 2017-02-14 20:57:13 -0500 |
commit | e1e7bfbad7016e29ca3cbb4de2f93d37462ca251 (patch) | |
tree | 51498ee43cceb6587ab3c37e3f9bf048182cac54 /src/survive_cal.c | |
parent | 7d28d767ec888a189a338b984062b8097b63fddd (diff) | |
parent | 23a202f50fc0f9eb9127bebaf34c48d45776a25c (diff) | |
download | libsurvive-e1e7bfbad7016e29ca3cbb4de2f93d37462ca251.tar.gz libsurvive-e1e7bfbad7016e29ca3cbb4de2f93d37462ca251.tar.bz2 |
Merge github.com:cnlohr/libsurvive
Diffstat (limited to 'src/survive_cal.c')
-rw-r--r-- | src/survive_cal.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/survive_cal.c b/src/survive_cal.c new file mode 100644 index 0000000..adcb7bc --- /dev/null +++ b/src/survive_cal.c @@ -0,0 +1,72 @@ +// (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 ); + + lighthouse_info_v6 v6; + init_lighthouse_info_v6(&v6, packet->data); + print_lighthouse_info_v6(&v6); +} + + +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 && so->codename[0] == 'H' ) + { + uint8_t dbit = (acode & 2)>>1; + //printf( "%s %d %d %d\n", so->codename, lhid, acode, dbit ); + ootx_pump_bit( &cd->ootx_decoders[lhid], dbit ); + } + } + + break; + } +} + |