mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-25 17:28:50 -05:00
More bits decoding.
This commit is contained in:
parent
2d55f3f347
commit
dd8ffc3f31
@ -41,22 +41,22 @@ void LoRaDemod::hamming(char* c, int size)
|
||||
i++;
|
||||
c[i] = ((c[i] & 1)<<2) | ((c[i] & 2)<<2) | ((c[i] & 4)>>1) | ((c[i] & 8)>>3);
|
||||
i++;
|
||||
c[i] = ((c[i] & 1)<<3) | ((c[i] & 2)<<1) | ((c[i] & 4)>>1) | ((c[i] & 8)>>3);
|
||||
c[i] = ((c[i] & 32)>>2) | ((c[i] & 2)<<1) | ((c[i] & 4)>>1) | ((c[i] & 8)>>3);
|
||||
i++;
|
||||
c[i] = ((c[i] & 1)<<3) | ((c[i] & 2)<<1) | ((c[i] & 4)>>1) | ((c[i] & 8)>>3);
|
||||
i++;
|
||||
c[i] = ((c[i] & 1)<<3) | ((c[i] & 2)<<1) | ((c[i] & 4)>>1) | ((c[i] & 8)>>3);
|
||||
c[i] = ((c[i] & 1)<<3) | ((c[i] & 2)<<1) | ((c[i] & 4)>>1) | ((c[i] & 16)>>4);
|
||||
i++;
|
||||
c[i] = ((c[i] & 1)<<3) | ((c[i] & 2)<<1) | ((c[i] & 4)>>2) | ((c[i] & 8)>>2);
|
||||
}
|
||||
c[i] = 0;
|
||||
}
|
||||
|
||||
// example data whitening (4 bit only - needs 6 bit for FEC)
|
||||
// data whitening (6 bit)
|
||||
void LoRaDemod::prng(char* inout, int size)
|
||||
{
|
||||
const char otp[] = {
|
||||
"LBMGEJJENKKKJBN@KB@KAEDDMMDONIN@N@KFBGBCMCMCMIBJHBDHNJDJALDHE@A@DFGOBOMIM@M@BBBCBAMBMKDENDLEDKNKNBNHKJ@JADD@EAAADBOCGAGBLCDANFLGDCNGLOMOBIHHMLBHB@BHMJGJBLMLED@B"
|
||||
"5^ZSm0=cOGMgUB=bNcb<@a^T;_f=6DEB]2ImPIKg:j]RlYT4YZ<`9hZ\\PPb;@8X8i]Zmc_6B52\\8oUPHIcBOc>dY?d9[n5Lg]b]R8hR<0`T008h9c9QJm[c?a:lQEGa;nU=b_UbTW3=W5Aa<9i;F;ondS[LBA;[4S9]kkh]Vc2j>kX"
|
||||
};
|
||||
int i, maxchars;
|
||||
|
||||
@ -64,6 +64,6 @@ void LoRaDemod::prng(char* inout, int size)
|
||||
if (size < maxchars)
|
||||
maxchars = size;
|
||||
for (i = 0; i < maxchars; i++)
|
||||
inout[i] ^= 0xf & otp[i];
|
||||
inout[i] ^= (otp[i] - 48);
|
||||
}
|
||||
|
||||
|
@ -84,8 +84,9 @@ void LoRaDemod::dumpRaw()
|
||||
bin = (history[j * 4 + 12] + m_tune ) & (LORA_SFFT_LEN - 1);
|
||||
text[j] = toGray(bin >> 1);
|
||||
}
|
||||
interleave(text, max);
|
||||
|
||||
prng(text, max);
|
||||
interleave(text, max);
|
||||
hamming(text, max);
|
||||
|
||||
for ( j=0; j < max / 2; j++) {
|
||||
@ -93,7 +94,6 @@ void LoRaDemod::dumpRaw()
|
||||
if ((text[j] < 32 )||( text[j] > 126))
|
||||
text[j] = 0x5f;
|
||||
}
|
||||
|
||||
text[j] = 0;
|
||||
printf("%s\n", text);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user