Skip to content

Commit 0b53045

Browse files
committed
bruh jsoncan fix
1 parent 8ad873b commit 0b53045

File tree

3 files changed

+34
-30
lines changed

3 files changed

+34
-30
lines changed

scripts/code_generation/jsoncan-rust/src/can_database/from_jsonparser.rs

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -186,28 +186,27 @@ fn parse_tx_msg_signals(
186186
let mut next_available_bit: u16 = 0;
187187
let mut occupied_bits: Vec<Option<String>> = vec![None; MAX_LEN_BITS];
188188

189-
// bombastic side eye
190-
if json_signals.iter().any(|(_, s)| match s {
191-
JsonTxSignal::ScaleOffsetBits { start_bit, .. }
192-
| JsonTxSignal::BitsMinMax { start_bit, .. }
193-
| JsonTxSignal::ResolutionMinMax { start_bit, .. }
194-
| JsonTxSignal::Enum { start_bit, .. }
195-
| JsonTxSignal::Bits { start_bit, .. } => start_bit.is_some(),
196-
}) != json_signals.iter().all(|(_, s)| match s {
197-
JsonTxSignal::ScaleOffsetBits { start_bit, .. }
198-
| JsonTxSignal::BitsMinMax { start_bit, .. }
199-
| JsonTxSignal::ResolutionMinMax { start_bit, .. }
200-
| JsonTxSignal::Enum { start_bit, .. }
201-
| JsonTxSignal::Bits { start_bit, .. } => start_bit.is_some(),
202-
}) {
203-
panic!(
204-
"In message '{}', either all signals must specify start bits, or none of them should.",
205-
msg_name
206-
);
207-
}
208-
209189
// Parse message signals
210190
for (signal_name, signal_data) in json_signals {
191+
if match signal_data {
192+
JsonTxSignal::ScaleOffsetBits { start_bit, .. }
193+
| JsonTxSignal::BitsMinMax { start_bit, .. }
194+
| JsonTxSignal::ResolutionMinMax { start_bit, .. }
195+
| JsonTxSignal::Enum { start_bit, .. }
196+
| JsonTxSignal::Bits { start_bit, .. } => start_bit.is_some(),
197+
} != match signal_data {
198+
JsonTxSignal::ScaleOffsetBits { start_bit, .. }
199+
| JsonTxSignal::BitsMinMax { start_bit, .. }
200+
| JsonTxSignal::ResolutionMinMax { start_bit, .. }
201+
| JsonTxSignal::Enum { start_bit, .. }
202+
| JsonTxSignal::Bits { start_bit, .. } => start_bit.is_some(),
203+
} {
204+
panic!(
205+
"In message '{}', either all signals must specify start bits, or none of them should.",
206+
msg_name
207+
);
208+
}
209+
211210
let signal = parse_signal(
212211
format!("{}_{}", tx_node_name, signal_name),
213212
signal_data,

scripts/code_generation/jsoncan-rust/src/can_database/queries.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -201,20 +201,18 @@ impl CanDatabase {
201201
};
202202

203203
let mut decoded_signals: Vec<DecodedSignal> = Vec::new();
204+
205+
let mut buf = [0u8; 4];
206+
let len = data.len().min(4);
207+
buf[..len].copy_from_slice(&data[..len]);
204208

205-
let data_uint: u32 = match data.try_into() {
206-
Ok(d) => u32::from_le_bytes(d),
207-
Err(_) => {
208-
eprintln!("Failed to convert bytes to u32");
209-
return Vec::new();
210-
}
211-
};
209+
let data_uint = u32::from_le_bytes(buf);
212210

213211
for signal in msgs.signals {
214212
// Extract the bits representing the current signal.
215-
let data_shifted = data_uint >> signal.start_bit;
213+
let data_shifted = data_uint as u64 >> signal.start_bit;
216214

217-
let bitmask = (1 << signal.bits) - 1;
215+
let bitmask = (1u64 << signal.bits) - 1;
218216
let raw_value = {
219217
let val = data_shifted & bitmask;
220218
// Handle signed values via 2's complement

scripts/code_generation/jsoncan-rust/src/parsing/parse_alert.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,14 @@ pub fn parse_alert_data(can_data_dir: &String, node_name: &String) -> Option<Jso
4949
},
5050
};
5151

52-
let alerts_json: AlertsSchema = match serde_json::from_str(&file_content) {
52+
let value: serde_json::Value = serde_json::from_str(&file_content)
53+
.expect(&format!("Failed to parse Alerts JSON file for node {}", node_name));
54+
55+
if value == serde_json::json!({}) {
56+
return None;
57+
}
58+
59+
let alerts_json: AlertsSchema = match serde_json::from_value(value) {
5360
Ok(v) => v,
5461
Err(e) => panic!(
5562
"Alerts JSON file is not valid JSON for node {}: {}",

0 commit comments

Comments
 (0)