Skip to content

Commit

Permalink
Fix tests, support 0 len replies
Browse files Browse the repository at this point in the history
  • Loading branch information
torkleyy committed Jan 24, 2024
1 parent 6473bf4 commit 27c6afc
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 12 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion examples/integration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ fn main() {
// give tx to application so it can queue messages

let mut uart = Transmitter(UartTxDriver);
let mut driver = EbusDriver::new(ARBITRATION_DELAY, CRC_POLYNOM_TELEGRAM, CRC_POLYNOM_DATA);
let mut driver = EbusDriver::new(ARBITRATION_DELAY, CRC_POLYNOM_TELEGRAM, CRC_POLYNOM_DATA, 8);

let mut msg = None;
loop {
Expand Down
20 changes: 14 additions & 6 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -276,12 +276,20 @@ impl EbusDriver {
let mut crc = Crc::new(self.crc_poly_telegram);
crc.add(word);

self.state = State::ReceivingReply {
buf: [0; MAX_BUF],
cursor: 0,
total: word,
crc,
};
if word > 0 {
self.state = State::ReceivingReply {
buf: [0; MAX_BUF],
cursor: 0,
total: word,
crc,
};
} else {
self.state = State::AwaitingCrc {
buf: [0; MAX_BUF],
len: 0,
crc: crc.calc_crc(),
};
}
}
State::ReceivingReply {
buf,
Expand Down
2 changes: 1 addition & 1 deletion tests/helper/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ fn sleep(_: Duration) {}
impl AutoLoopback {
pub fn new() -> Self {
let mut this = AutoLoopback {
driver: EbusDriver::new(Duration::from_micros(123), 0x9B, 0x5C),
driver: EbusDriver::new(Duration::from_micros(123), 0x9B, 0x5C, 8),
transmit: Default::default(),
};

Expand Down
21 changes: 18 additions & 3 deletions tests/master.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ fn test_send_and_reply_raw(tel: MasterTelegram, reply: &[u8]) -> ProcessResult {
let mut transmitter = TestTransmitter { sent: vec![] };
let msg = tel;

let mut driver = EbusDriver::new(Duration::from_micros(123), 0x9B, 0x5C);
let mut driver = EbusDriver::new(Duration::from_micros(123), 0x9B, 0x5C, 0);

// deal with fairness counter
for _ in 0..50 {
Expand Down Expand Up @@ -133,6 +133,21 @@ fn test_data_crc_9a() {
assert_eq!(res.as_reply().unwrap(), &[0x00u8, 0x80]);
}

#[test]
fn test_0_len_reply() {
let telegram = MasterTelegram {
telegram: Telegram {
src: 0xFF,
dest: 0x3C,
service: 0x4050,
data: Buffer::from_slice(&[0x31]),
},
flags: TelegramFlag::NeedsDataCrc | TelegramFlag::ExpectReply,
};
let res = test_send_and_reply(telegram, &[]);
assert_eq!(res.as_reply().unwrap(), &[]);
}

#[test]
fn test_example1_auto_lb() {
use ProcessResult::*;
Expand Down Expand Up @@ -162,7 +177,7 @@ fn test_master_retry_lock() {
let mut transmitter = TestTransmitter { sent: vec![] };
let msg = example1();

let mut driver = EbusDriver::new(Duration::from_micros(123), 0x9B, 0x5C);
let mut driver = EbusDriver::new(Duration::from_micros(123), 0x9B, 0x5C, 0);
for _ in 0..50 {
driver
.process(0xAA, &mut transmitter, sleep, None, true)
Expand Down Expand Up @@ -201,7 +216,7 @@ fn interrupt_lock() {
let mut transmitter = TestTransmitter { sent: vec![] };
let msg = example1();

let mut driver = EbusDriver::new(Duration::from_micros(123), 0x9B, 0x5C);
let mut driver = EbusDriver::new(Duration::from_micros(123), 0x9B, 0x5C, 0);
for _ in 0..50 {
driver
.process(0xAA, &mut transmitter, sleep, None, true)
Expand Down

0 comments on commit 27c6afc

Please sign in to comment.