From 059cbb238e8a56fe4ac259bcf2efa568753f68d9 Mon Sep 17 00:00:00 2001 From: drowe67 Date: Sat, 14 Apr 2018 02:43:21 +0000 Subject: [PATCH] binary mode working too git-svn-id: https://svn.code.sf.net/p/freetel/code@3483 01035d8c-6547-0410-b346-abe4f91aad63 --- codec2-dev/src/horus_api.c | 28 +++++++++++++++++++++++++--- codec2-dev/src/horus_demod.c | 4 +++- codec2-dev/src/horus_l2.c | 3 +++ codec2-dev/src/horus_l2.h | 4 ++++ 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/codec2-dev/src/horus_api.c b/codec2-dev/src/horus_api.c index a7440132..9ebbd52d 100644 --- a/codec2-dev/src/horus_api.c +++ b/codec2-dev/src/horus_api.c @@ -103,6 +103,7 @@ struct horus *horus_open (int mode) { } hstates->uw_len = sizeof(uw_horus_binary); hstates->uw_thresh = sizeof(uw_horus_binary) - 2; /* allow a few bit errors in UW detection */ + horus_l2_init(); } hstates->fsk = fsk_create(hstates->Fs, hstates->Rs, hstates->mFSK, 1000, 2*hstates->Rs); @@ -258,9 +259,9 @@ int extract_horus_rtty(struct horus *hstates, char ascii_out[], int uw_loc) { int extract_horus_binary(struct horus *hstates, char hex_out[], int uw_loc) { - const int nfield = 8; /* 8 bit binary */ - int st = uw_loc + hstates->uw_len; /* first bit of first char */ - int en = uw_loc + hstates->max_packet_len - nfield; /* last bit of max length packet */ + const int nfield = 8; /* 8 bit binary */ + int st = uw_loc; /* first bit of first char */ + int en = uw_loc + hstates->max_packet_len; /* last bit of max length packet */ int j, b, nout; uint8_t rxpacket[hstates->max_packet_len]; @@ -287,9 +288,30 @@ int extract_horus_binary(struct horus *hstates, char hex_out[], int uw_loc) { nout++; } + if (hstates->verbose) { + fprintf(stderr, "nout: %d\nReceived Packet before decoding:\n", nout); + for (b=0; bverbose) { + fprintf(stderr, "nout: %d\nDecoded Payload bytes:\n%s", nout, hex_out); + } + return 1; } diff --git a/codec2-dev/src/horus_demod.c b/codec2-dev/src/horus_demod.c index 5ff6af0a..d7d01c50 100644 --- a/codec2-dev/src/horus_demod.c +++ b/codec2-dev/src/horus_demod.c @@ -14,6 +14,8 @@ $ sox ~/Desktop/horus.wav -r 48000 -t raw - | ./horus_demod -m RTTY -v - /dev/nul/ + $ sox ~/Desktop/4FSK_binary_100Rb_8khzfs.wav -r 48000 -t raw - | ./horus_demod -m binary - - + \*---------------------------------------------------------------------------*/ /* @@ -167,7 +169,7 @@ int main(int argc, char *argv[]) { /* Main loop ----------------------------------------------------------------------- */ - while( fread(demod_in, sizeof(short), horus_nin(hstates), fin) == horus_nin(hstates) ) { + while(fread(demod_in, sizeof(short), horus_nin(hstates), fin) == horus_nin(hstates)) { if (verbose) { fprintf(stderr, "read nin %d\n", horus_nin(hstates)); diff --git a/codec2-dev/src/horus_l2.c b/codec2-dev/src/horus_l2.c index 55fdc63a..ae37d22e 100644 --- a/codec2-dev/src/horus_l2.c +++ b/codec2-dev/src/horus_l2.c @@ -109,6 +109,9 @@ int horus_l2_get_num_tx_data_bytes(int num_payload_data_bytes) { return num_tx_data_bytes; } +void horus_l2_init(void) { + golay23_init(); +} /* Takes an array of payload data bytes, prepends a unique word and appends diff --git a/codec2-dev/src/horus_l2.h b/codec2-dev/src/horus_l2.h index 86a9d76e..6cb42ba8 100644 --- a/codec2-dev/src/horus_l2.h +++ b/codec2-dev/src/horus_l2.h @@ -11,6 +11,10 @@ int horus_l2_get_num_tx_data_bytes(int num_payload_data_bytes); +/* call this first */ + +void horus_l2_init(void); + /* returns number of output bytes in output_tx_data */ int horus_l2_encode_tx_packet(unsigned char *output_tx_data, -- 2.25.1