Skip to content

Commit

Permalink
WIP: the rest of the FSK changes
Browse files Browse the repository at this point in the history
  • Loading branch information
brian-armstrong committed Jul 21, 2020
1 parent 81809d2 commit e8058a7
Show file tree
Hide file tree
Showing 9 changed files with 347 additions and 51 deletions.
2 changes: 1 addition & 1 deletion include/liquid.internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -1183,7 +1183,7 @@ void bpacketsync_reconfig(bpacketsync _q);
//

#define FSKFRAME_PROTOCOL (107 + PACKETIZER_VERSION)
#define FSKFRAME_PRE_K (4)
#define FSKFRAME_PRE_K (150)
#define FSKFRAME_H_USER_DEFAULT (8)
#define FSKFRAME_H_DEC (6)
#define FSKFRAME_H_CRC (LIQUID_CRC_32)
Expand Down
5 changes: 3 additions & 2 deletions makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@ RANLIB := @RANLIB@
INCLUDE_CFLAGS = $(addprefix -I,$(include_dirs))
CONFIG_CFLAGS = @CFLAGS@ @DEBUG_MSG_OPTION@ @ARCH_OPTION@
CPPFLAGS = @CPPFLAGS@ $(INCLUDE_CFLAGS)
CFLAGS = $(CONFIG_CFLAGS) -Wall -fPIC
LDFLAGS = @LDFLAGS@
CFLAGS = $(CONFIG_CFLAGS) -Wall -fPIC -fsanitize=address

This comment has been minimized.

Copy link
@brian-armstrong

brian-armstrong Jul 21, 2020

Author Member

Note: These should probably not be enabled

LDFLAGS = @LDFLAGS@ -fsanitize=address
LIBS = @LIBS@
PATHSEP = /

Expand Down Expand Up @@ -1490,6 +1490,7 @@ example_programs := \
examples/polyfit_lagrange_example \
examples/poly_findroots_example \
examples/qdetector_cccf_example \
examples/qdetector_hell \
examples/qpacketmodem_performance_example \
examples/qpacketmodem_example \
examples/qpilotsync_example \
Expand Down
6 changes: 4 additions & 2 deletions src/framing/src/dsssframesync.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ struct dsssframesync_s {
synth_crcf payload_synth;

int header_soft;
flexframegenprops_s header_props;
dsssframegenprops_s header_props;
liquid_float_complex * header_spread;
unsigned int header_spread_len;
qpacketmodem header_decoder;
Expand Down Expand Up @@ -386,7 +386,7 @@ void dsssframesync_execute_rxpreamble(dsssframesync _q, liquid_float_complex _x)
}

// save output in p/n symbols buffer
unsigned int delay = _q->k * _q->m; // delay from matched filter
unsigned int delay = 2 * _q->m; // delay from matched filter
if (_q->preamble_counter >= delay) {
unsigned int index = _q->preamble_counter - delay;
_q->preamble_rx[index] = mf_out;
Expand Down Expand Up @@ -554,6 +554,8 @@ void dsssframesync_execute_rxpayload(dsssframesync _q, liquid_float_complex _x)
_q->framesyncstats.fec0 = qpacketmodem_get_fec0(_q->payload_decoder);
_q->framesyncstats.fec1 = qpacketmodem_get_fec1(_q->payload_decoder);

// XXX set all framesyncstats

if (_q->callback != NULL) {
_q->callback(_q->header_dec,
_q->header_valid,
Expand Down
24 changes: 17 additions & 7 deletions src/framing/src/fskframegen.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ static fskframegenprops_s fskframegenprops_header_default = {
};

enum state {
STATE_NOT_ASSEMBLED, // awaiting assemble()
STATE_PREAMBLE, // preamble
STATE_HEADER, // header
STATE_PAYLOAD, // payload (frame)
Expand Down Expand Up @@ -91,10 +92,10 @@ fskframegen fskframegen_create(fskframegenprops_s * _props,
q->ramp_len = 12;
q->tail_len = 12;

q->preamble_ms = msequence_create(6, 0x6d, 1);
q->preamble_ms = msequence_create(3, 0x000d, 1);
q->preamble_mod = fskmod_create(1, FSKFRAME_PRE_K, q->bandwidth);
q->preamble_samples = (liquid_float_complex *)malloc(FSKFRAME_PRE_K * sizeof(liquid_float_complex));
q->preamble_len = 63 * FSKFRAME_PRE_K;
q->preamble_len = 7 * FSKFRAME_PRE_K;

q->header_reader = symbolreader_create();
q->header_mod = NULL;
Expand Down Expand Up @@ -148,7 +149,7 @@ void fskframegen_reset(fskframegen _q)
_q->sample_counter = 0;
_q->frame_assembled = 0;
_q->frame_complete = 0;
_q->state = STATE_PREAMBLE;
_q->state = STATE_NOT_ASSEMBLED;
}

int fskframegen_is_assembled(fskframegen _q)
Expand Down Expand Up @@ -295,6 +296,7 @@ void fskframegen_reconfigure(fskframegen _q)
num_payload_symbols++;
}
_q->payload_len = _q->payload_props.samples_per_symbol * num_payload_symbols;
printf("payload dec len %d enc len %d symbols %d\n", _q->payload_msg_len, _q->payload_enc_len, _q->payload_len);
}

void fskframegen_reconfigure_header(fskframegen _q)
Expand Down Expand Up @@ -322,6 +324,8 @@ void fskframegen_reconfigure_header(fskframegen _q)
num_header_symbols++;
}
_q->header_len = _q->header_props.samples_per_symbol * num_header_symbols;

printf("header dec len %d enc len %d symbols %d\n", dec_len, _q->header_enc_len, _q->header_len);
}

void fskframegen_assemble(fskframegen _q,
Expand Down Expand Up @@ -361,11 +365,13 @@ void fskframegen_assemble(fskframegen _q,
printf("\n");
*/

symbolreader_reset(_q->header_reader, _q->header_enc, 8*_q->header_enc_len);
fskframegen_reconfigure(_q);

packetizer_encode(_q->payload_packetizer, _payload, _q->payload_enc);

_q->frame_assembled = 1;
_q->state = STATE_PREAMBLE;
/*
printf("frame assembled\n");
printf("bandwidth %.2f\n", _q->bandwidth);
Expand All @@ -385,12 +391,13 @@ int fskframegen_write_samples(fskframegen _q,
{
unsigned int i;
for (i = 0; i < _buffer_len; ) {
if (!_q->frame_assembled) {
memset(_buffer, 0, _buffer_len);
break;
}
unsigned int written;
switch (_q->state) {
case STATE_NOT_ASSEMBLED:
printf("not assembled, dumping\n");
written = _buffer_len - i;
memset(_buffer, 0, written * sizeof(liquid_float_complex));
break;
case STATE_PREAMBLE:
written = fskframegen_write_preamble(_q, _buffer, _buffer_len - i);
break;
Expand Down Expand Up @@ -421,6 +428,8 @@ unsigned int fskframegen_write_preamble(fskframegen _q,
num_samples = _buffer_len;
}

printf("writing preamble\n");

/*
printf("preamble_samples:");
*/
Expand Down Expand Up @@ -512,6 +521,7 @@ unsigned int fskframegen_write_payload(fskframegen _q,
_q->sample_counter = 0;
_q->frame_complete = 1;
_q->frame_assembled = 0;
_q->state = STATE_NOT_ASSEMBLED;
}

return num_samples;
Expand Down
Loading

0 comments on commit e8058a7

Please sign in to comment.