1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-09-12 16:16:35 -04:00
sdrangel/plugins/channel/lora/lorabits.h

26 lines
624 B
C
Raw Normal View History

2015-01-17 10:59:44 -05:00
/*
Interleaving is "easiest" if the same number of bits is used per symbol as for FEC
Chosen mode "spreading 8, low rate" has 6 bits per symbol, so use 4:6 FEC
*/
// Needs adjusting for different sizes
2015-01-31 18:41:06 -05:00
void LoRaDemod::interleave(char* inout)
2015-01-17 10:59:44 -05:00
{
int i, index = 6;
2015-01-31 18:41:06 -05:00
char in[index * 2];
2015-01-17 10:59:44 -05:00
for (i = 0; i < index; i++)
in[i] = inout[i];
2015-01-31 18:41:06 -05:00
// top bits are swapped ?
2015-01-17 10:59:44 -05:00
for (i = 0; i < index; i++) {
2015-01-31 18:41:06 -05:00
inout[i] = (32 & in[1 + i]) | (16 & in[0 + i]) | (8 & in[2 + i])
| (4 & in[3 + i]) | (2 & in[4 + i]) | (1 & in[5 + i]);
2015-01-17 10:59:44 -05:00
in[i + index] = in[i];
}
}
2015-01-22 17:30:55 -05:00
short LoRaDemod::toGray(short num)
2015-01-17 10:59:44 -05:00
{
2015-01-22 17:30:55 -05:00
return (num >> 1) ^ num;
2015-01-17 10:59:44 -05:00
}