summaryrefslogtreecommitdiff
path: root/openpicc/application/decoder.h
diff options
context:
space:
mode:
authorhenryk <henryk@6dc7ffe9-61d6-0310-9af1-9938baff3ed1>2007-11-24 07:59:42 +0000
committerhenryk <henryk@6dc7ffe9-61d6-0310-9af1-9938baff3ed1>2007-11-24 07:59:42 +0000
commit29ea5bbf5b9c3b3679aa40e4ee7029284cb424c6 (patch)
tree0e20e9c665d05c228684e815ca142c0814057a80 /openpicc/application/decoder.h
parent341b884abc8c29790dfffab1921a1f4fa127d62d (diff)
Add load modulation and encoding/decoding code from harald
git-svn-id: https://svn.openpcd.org:2342/trunk@351 6dc7ffe9-61d6-0310-9af1-9938baff3ed1
Diffstat (limited to 'openpicc/application/decoder.h')
-rw-r--r--openpicc/application/decoder.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/openpicc/application/decoder.h b/openpicc/application/decoder.h
new file mode 100644
index 0000000..bd25777
--- /dev/null
+++ b/openpicc/application/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_int32_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 algnum, struct decoder_algo *algo);
+extern int decoder_decode(u_int8_t algo, const char *sample_buf,
+ int sample_buf_size, unsigned 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
personal git repositories of Harald Welte. Your mileage may vary