diff options
Diffstat (limited to 'src/hdlc-test.c')
-rw-r--r-- | src/hdlc-test.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/hdlc-test.c b/src/hdlc-test.c new file mode 100644 index 0000000..1c7c6ef --- /dev/null +++ b/src/hdlc-test.c @@ -0,0 +1,42 @@ +#include <string.h> +#include "hdlc.h" + +#include <osmocom/core/utils.h> +#include <osmocom/core/bits.h> + +const char *tdata = "7e7e7e7e7a76f20609167d3cfcfcfc"; + +static void hdlc_process_hex_str(struct hdlc_proc *hdlc, const char *hex) +{ + uint8_t *bytes, *bits; + int string_len = strlen(hex); + int byte_len = string_len/2; + int bit_len = byte_len*8; + int rc; + + printf("hex string = %s\n", hex); + bytes = alloca(byte_len); + bits = alloca(bit_len); + rc = osmo_hexparse(hex, bytes, byte_len); + printf("parsed bytes = %s\n", osmo_hexdump(bytes, byte_len)); + + printf("MSB mode\n"); + osmo_pbit2ubit(bits, bytes, bit_len); + process_raw_hdlc(hdlc, bits, bit_len); + + printf("LSB mode\n"); + memset(hdlc, 0, sizeof(*hdlc)); + osmo_pbit2ubit_ext(bits, 0, bytes, 0, bit_len, 1); + process_raw_hdlc(hdlc, bits, bit_len); +} + +int main(int argc, char **argv) +{ + struct hdlc_proc hdlc; + memset(&hdlc, 0, sizeof(hdlc)); + + if (argc < 2) + exit(1); + + hdlc_process_hex_str(&hdlc, argv[1]); +} |