fixed log config stage, now getting actual logs

This commit is contained in:
Will Greenberg
2023-12-05 18:41:35 -08:00
parent 9dda8eb952
commit bdb12aba9e
3 changed files with 16 additions and 12 deletions

View File

@@ -132,15 +132,14 @@ pub fn build_log_mask_request(log_type: u32, log_mask_bitsize: u32, accepted_log
for i in 0..log_mask_bitsize {
let log_code: u32 = (log_type << 12) | i;
if accepted_log_codes.contains(&log_code) {
println!("enabling {:x}", log_code);
current_byte |= 1 << num_bits_written;
}
num_bits_written += 1;
if num_bits_written == 8 || i == log_mask_bitsize - 1 {
log_mask.push(current_byte);
current_byte = 0;
num_bits_written = 0;
log_mask.push(current_byte);
}
}
@@ -153,6 +152,7 @@ pub fn build_log_mask_request(log_type: u32, log_mask_bitsize: u32, accepted_log
#[cfg(test)]
mod test {
use crate::diag_device::LOG_CODES_FOR_RAW_PACKET_LOGGING;
use super::*;
#[test]
@@ -175,11 +175,20 @@ mod test {
#[test]
fn test_build_log_mask_request() {
let accepted = vec![0x412f];
assert_eq!(build_log_mask_request(0, 1, &accepted), Request::LogConfig(LogConfigRequest::SetMask {
log_type: 0,
log_mask_bitsize: 1,
log_mask: vec![0x01],
let log_type = 11;
let bitsize = 513;
let req = build_log_mask_request(log_type, bitsize, &LOG_CODES_FOR_RAW_PACKET_LOGGING);
assert_eq!(req, Request::LogConfig(LogConfigRequest::SetMask {
log_type: log_type,
log_mask_bitsize: bitsize,
log_mask: vec![
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x1, 0x0, 0x0, 0x0, 0xc, 0x30, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0,
],
}));
}

View File

@@ -119,7 +119,6 @@ impl DiagDevice {
let mut buf = vec![0; BUFFER_LEN];
loop {
println!("waiting to read");
let _ = self.file.read(&mut buf)?;
let ((_, leftover_bytes), res_container) = MessagesContainer::from_bytes((&buf, 0))?;
if leftover_bytes > 0 {
@@ -176,7 +175,6 @@ impl DiagDevice {
fn set_log_mask(&mut self, log_type: u32, log_mask_bitsize: u32) -> DiagResult<()> {
let req = build_log_mask_request(log_type, log_mask_bitsize, &LOG_CODES_FOR_RAW_PACKET_LOGGING);
println!("setting log mask {} {:?}", log_type, &req);
self.write_request(&req)?;
for msg in self.read_response()? {
@@ -199,11 +197,9 @@ impl DiagDevice {
pub fn config_logs(&mut self) -> DiagResult<()> {
println!("retrieving diag logging capabilities...");
let log_mask_sizes = self.retrieve_id_ranges()?;
println!("log mask sizes: {:?}", log_mask_sizes);
for (log_type, &log_mask_bitsize) in log_mask_sizes.iter().enumerate() {
if log_mask_bitsize > 0 {
println!("setting logging for log_type {}", log_type);
self.set_log_mask(log_type as u32, log_mask_bitsize)?;
println!("enabled logging for log type {}", log_type);
}

View File

@@ -10,7 +10,6 @@ fn main() -> std::io::Result<()> {
dev.config_logs().unwrap();
loop {
println!("waiting for message...");
for msg in dev.read_response().unwrap() {
println!("msg: {:?}", msg);
}