diff --git a/src/rds.c b/src/rds.c index eb2e309..d8f37a4 100644 --- a/src/rds.c +++ b/src/rds.c @@ -612,7 +612,15 @@ static void get_rds_group(RDSEncoder* enc, uint16_t *blocks, uint8_t stream) { if(get_rds_custom_groups2(enc, blocks)) { return; } - return; + if(enc->encoder_data.rds2_mode == 0) { // tunneling + blocks[0] = enc->state->last_stream0_group[0]; + blocks[1] = enc->state->last_stream0_group[1]; + blocks[2] = enc->state->last_stream0_group[2]; + blocks[3] = enc->state->last_stream0_group[3]; + return; + } else { + // TODO: add store command + } } if(get_rds_custom_groups(enc, blocks)) { @@ -745,6 +753,11 @@ group_coded: if (IS_TYPE_B(blocks)) { blocks[2] = enc->data[enc->program].pi; } + + enc->state[enc->program].last_stream0_group[0] = blocks[0]; + enc->state[enc->program].last_stream0_group[1] = blocks[1]; + enc->state[enc->program].last_stream0_group[2] = blocks[2]; + enc->state[enc->program].last_stream0_group[3] = blocks[3]; } void get_rds_bits(RDSEncoder* enc, uint8_t *bits, uint8_t stream) { diff --git a/src/rds.h b/src/rds.h index fb701bd..8ae5469 100644 --- a/src/rds.h +++ b/src/rds.h @@ -200,6 +200,8 @@ typedef struct { uint8_t eon_index : 3; uint8_t eon_state : 4; + + uint16_t last_stream0_group[GROUP_LENGTH]; } RDSState; typedef struct {