aboutsummaryrefslogtreecommitdiff
path: root/tools/ootx_decode/ootx_decoder.h
blob: 13f14d6c77b0b581eae816a0b27e7c17f49ce9a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// (C) 2016 Joshua Allen, MIT/x11 License.
//
//All MIT/x11 Licensed Code in this file may be relicensed freely under the GPL or LGPL licenses.

#ifndef OOTX_DECODER_H
#define OOTX_DECODER_H

#include <stddef.h>
#include <stdint.h>

typedef struct {
	uint16_t length;
	uint8_t* data;
	uint32_t crc32;
} ootx_packet;

typedef struct {
	uint8_t* buffer;
	uint16_t buf_offset;
	uint8_t bits_written;
	uint16_t* payload_size;

	uint32_t preamble;
	uint8_t bits_processed;
	uint8_t found_preamble;

	uint8_t bit_count[2];
} ootx_decoder_context;


//void ootx_init_buffer();
void ootx_process_bit(ootx_decoder_context *ctx, uint32_t length);
void ootx_init_decoder_context(ootx_decoder_context *ctx);
int8_t ootx_decode_lighthouse_number(uint8_t last_num, uint32_t ticks, int32_t delta);

void ootx_log_bit(ootx_decoder_context *ctx, uint32_t length);
uint8_t ootx_pump_greatest_bit(ootx_decoder_context *ctx);

extern void (*ootx_packet_clbk)(ootx_packet* packet);

#endif