доработан bit stuff
(он другой стмкой определялся как form error, а не stuff error)
This commit is contained in:
parent
43ac7e90fc
commit
a373695c4b
@ -2,7 +2,7 @@
|
|||||||
#define CANCONFIG_H
|
#define CANCONFIG_H
|
||||||
|
|
||||||
#define CAN_ONLY_EMULATING
|
#define CAN_ONLY_EMULATING
|
||||||
//#define CAN_ERROR_WITH_CORRECT_CRC
|
#define CAN_ERROR_WITH_CORRECT_CRC
|
||||||
|
|
||||||
|
|
||||||
// Настройки GPIO и таймера
|
// Настройки GPIO и таймера
|
||||||
|
@ -36,29 +36,32 @@ uint16_t compute_crc15(const uint8_t *bits, uint32_t len) {
|
|||||||
}
|
}
|
||||||
return crc;
|
return crc;
|
||||||
}
|
}
|
||||||
|
int stuff_to_skip = 1;
|
||||||
void apply_bit_stuffing_with_error(const uint8_t *src, uint32_t src_len, uint8_t *dst, uint32_t *dst_len, uint8_t skip_stuff) {
|
void apply_bit_stuffing_with_error(const uint8_t *src, uint32_t src_len, uint8_t *dst, uint32_t *dst_len, uint8_t skip_stuff) {
|
||||||
*dst_len = 0;
|
*dst_len = 0;
|
||||||
uint8_t last_bit = src[0];
|
uint8_t last_bit = src[0];
|
||||||
uint8_t count = 1;
|
uint8_t count = 1;
|
||||||
append_bit(dst, dst_len, last_bit);
|
append_bit(dst, dst_len, last_bit);
|
||||||
|
|
||||||
for (uint32_t i = 1; i < src_len; i++) {
|
for (uint32_t i = 1; i < src_len; i++) {
|
||||||
uint8_t bit = src[i];
|
uint8_t bit = src[i];
|
||||||
append_bit(dst, dst_len, bit);
|
append_bit(dst, dst_len, bit);
|
||||||
|
|
||||||
if (bit == last_bit) {
|
if (bit == last_bit) {
|
||||||
count++;
|
count++;
|
||||||
if (count == 5) {
|
if (count == 5) {
|
||||||
if (!skip_stuff) {
|
if(skip_stuff != stuff_to_skip)
|
||||||
append_bit(dst, dst_len, !bit); // вставляем противоположный бит
|
append_bit(dst, dst_len, !bit); // вставляем противоположный бит
|
||||||
}
|
count = 0;
|
||||||
count = 0;
|
if (skip_stuff) {
|
||||||
}
|
skip_stuff++;
|
||||||
} else {
|
}
|
||||||
count = 1;
|
}
|
||||||
last_bit = bit;
|
} else {
|
||||||
}
|
count = 1;
|
||||||
|
last_bit = bit;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Вспомогательная функция для инверсии бита
|
// Вспомогательная функция для инверсии бита
|
||||||
|
@ -180,7 +180,24 @@
|
|||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>raw_bits</ItemText>
|
<ItemText>raw_bits</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>6</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>can_bits</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>7</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>stuff_to_skip</ItemText>
|
||||||
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
|
<WatchWindow2>
|
||||||
|
<Ww>
|
||||||
|
<count>0</count>
|
||||||
|
<WinNumber>2</WinNumber>
|
||||||
|
<ItemText>stuff_to_skip</ItemText>
|
||||||
|
</Ww>
|
||||||
|
</WatchWindow2>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
</Tracepoint>
|
</Tracepoint>
|
||||||
|
Loading…
Reference in New Issue
Block a user