BLE反白化
白化
先前我们知道白化的过程是这样的
uint8_t bleWhitenStart(uint8_t chan) {
//use left shifted one
//最高位一定要是1
return reverseBits(chan) | 2;
}
/*白化,LFSR的方式进行白化*/
void bleWhiten(uint8_t* data, uint8_t len, uint8_t whitenCoeff) {
// Implementing whitening with LFSR
uint8_t m;
while (len--) {
for (m = 1; m; m <<= 1) {
if (whitenCoeff & 0x80) {
whitenCoeff ^= 0x11;
(*data) ^= m;
}
whitenCoeff <<= 1;
}
data++;
}
}
bleWhiten(_packet, _length, bleWhitenStart(37));
反白化
其实把数据放入bleWhiten(),再执行一遍就是反白化了