diff options
author | (no author) <(no author)@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2006-08-23 20:17:30 +0000 |
---|---|---|
committer | (no author) <(no author)@6dc7ffe9-61d6-0310-9af1-9938baff3ed1> | 2006-08-23 20:17:30 +0000 |
commit | 548ec55ec2a4b3c8e5b00081beacb71ab277ee13 (patch) | |
tree | c22587d75a687287dd7e99fe8772ac82c216077a /openpcd/firmware/src/picc/decoder.h | |
parent | 0ba41a67844085561faf8b58decc6b32b375c5bb (diff) |
some initial code for PICC side
git-svn-id: https://svn.openpcd.org:2342/trunk@118 6dc7ffe9-61d6-0310-9af1-9938baff3ed1
Diffstat (limited to 'openpcd/firmware/src/picc/decoder.h')
-rw-r--r-- | openpcd/firmware/src/picc/decoder.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/openpcd/firmware/src/picc/decoder.h b/openpcd/firmware/src/picc/decoder.h new file mode 100644 index 0000000..950efd2 --- /dev/null +++ b/openpcd/firmware/src/picc/decoder.h @@ -0,0 +1,32 @@ +#ifndef _DECODER_H +#define _DECODER_H + +struct decoder_state; + +struct decoder_algo { + u_int8_t oversampling_rate; + u_int8_t bits_per_sampled_char; + u_int8_t bytesample_mask; + int (*decode_sample)(const u_int32_t sample, u_int8_t data); + u_int32_t (*get_next_bytesample)(struct decoder_state *st, u_int8_t *parity_sample); +}; + +struct decoder_state { + struct decoder_algo *algo; + u_int8_t bit_ofs; + const char *buf; + const u_int32_t *buf32; +}; + +extern int decoder_register(int algo, struct decoder_algo *algo); +extern int decoder_decode(u_int8_t algo, const char *sample_buf, + int sample_buf_size, char *data_buf); + +#define DECODER_MILLER 0 +#define DECODER_NRZL 1 +#define DECODER_NUM_ALGOS 2 + +extern struct decoder_algo nrzl_decoder; +extern struct decoder_algo miller_decoder; + +#endif |