kopia lustrzana https://github.com/fsphil/hadie
Fill empty parts of packets with random data
rodzic
9ae89d153e
commit
429b3b4cfc
13
ssdv.c
13
ssdv.c
|
@ -335,6 +335,13 @@ static char ssdv_process(ssdv_t *s)
|
|||
|
||||
/*****************************************************************************/
|
||||
|
||||
static void ssdv_memset_prng(uint8_t *s, size_t n)
|
||||
{
|
||||
/* A very simple PRNG for noise whitening */
|
||||
uint8_t l = 0x00;
|
||||
for(; n > 0; n--) *(s++) = (l = l * 245 + 45);
|
||||
}
|
||||
|
||||
static char ssdv_have_marker(ssdv_t *s)
|
||||
{
|
||||
switch(s->marker)
|
||||
|
@ -418,9 +425,6 @@ char ssdv_enc_set_buffer(ssdv_t *s, uint8_t *buffer)
|
|||
s->outp = buffer + SSDV_PKT_SIZE_HEADER;
|
||||
s->out_len = SSDV_PKT_SIZE_PAYLOAD;
|
||||
|
||||
/* Zero the payload memory */
|
||||
memset(s->out, 0, SSDV_PKT_SIZE);
|
||||
|
||||
/* Flush the output bits */
|
||||
ssdv_outbits(s, 0, 0);
|
||||
|
||||
|
@ -527,6 +531,9 @@ char ssdv_enc_get_packet(ssdv_t *s)
|
|||
s->out[9] = mcu_id >> 8; /* MCU ID MSB */
|
||||
s->out[10] = mcu_id & 0xFF; /* MCU ID LSB */
|
||||
|
||||
/* Fill any remaining bytes with noise */
|
||||
if(s->out_len > 0) ssdv_memset_prng(s->outp, s->out_len);
|
||||
|
||||
/* Generate the RS codes */
|
||||
encode_rs_8(&s->out[1], &s->out[SSDV_PKT_SIZE - SSDV_PKT_SIZE_RSCODES], 0);
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue