p4rs/
externs.rs

1// Copyright 2022 Oxide Computer Company
2
3use bitvec::prelude::*;
4
5pub struct Checksum {}
6
7impl Checksum {
8    pub fn new() -> Self {
9        Self {}
10    }
11
12    pub fn run(
13        &self,
14        elements: &[&dyn crate::checksum::Checksum],
15    ) -> BitVec<u8, Msb0> {
16        let mut csum: u16 = 0;
17        for e in elements {
18            let c: u16 = e.csum().load();
19            csum += c;
20        }
21        let mut result = bitvec![u8, Msb0; 0u8, 16];
22        result.store(csum);
23        result
24    }
25}
26
27impl Default for Checksum {
28    fn default() -> Self {
29        Self::new()
30    }
31}