Fill empty parts of packets with random data

master
Philip Heron 2010-10-12 11:49:36 +01:00
rodzic 9ae89d153e
commit 429b3b4cfc
1 zmienionych plików z 10 dodań i 3 usunięć

13
ssdv.c
Wyświetl plik

@ -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);