mirror of
https://github.com/EFForg/rayhunter.git
synced 2026-05-30 02:09:26 -07:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
01915a22a6 |
12
Cargo.lock
generated
12
Cargo.lock
generated
@@ -2790,6 +2790,7 @@ dependencies = [
|
|||||||
"telcom-parser",
|
"telcom-parser",
|
||||||
"thiserror 1.0.69",
|
"thiserror 1.0.69",
|
||||||
"tokio",
|
"tokio",
|
||||||
|
"uds",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2833,6 +2834,7 @@ dependencies = [
|
|||||||
"tokio-stream",
|
"tokio-stream",
|
||||||
"tokio-util",
|
"tokio-util",
|
||||||
"toml",
|
"toml",
|
||||||
|
"uds",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -3789,6 +3791,16 @@ version = "1.18.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
|
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "uds"
|
||||||
|
version = "0.4.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "885c31f06fce836457fe3ef09a59f83fe8db95d270b11cd78f40a4666c4d1661"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
"tokio",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
|
|||||||
@@ -33,3 +33,4 @@ anyhow = "1.0.98"
|
|||||||
reqwest = { version = "0.12.20", default-features = false }
|
reqwest = { version = "0.12.20", default-features = false }
|
||||||
rustls-rustcrypto = { version = "0.0.2-alpha", optional = true }
|
rustls-rustcrypto = { version = "0.0.2-alpha", optional = true }
|
||||||
async-trait = "0.1.88"
|
async-trait = "0.1.88"
|
||||||
|
uds = { version = "0.4.2", features = ["tokio"] }
|
||||||
|
|||||||
29
daemon/web/package-lock.json
generated
29
daemon/web/package-lock.json
generated
@@ -1172,6 +1172,7 @@
|
|||||||
"integrity": "sha512-bGs473Gj4TwFf7dw6ZUwQI0ayaDb83E7G06QnYeNQC2DmAaktgFU2uB0tSfZVhpHqYH4o8GsLBkG3ZjThtmsIA==",
|
"integrity": "sha512-bGs473Gj4TwFf7dw6ZUwQI0ayaDb83E7G06QnYeNQC2DmAaktgFU2uB0tSfZVhpHqYH4o8GsLBkG3ZjThtmsIA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@standard-schema/spec": "^1.0.0",
|
"@standard-schema/spec": "^1.0.0",
|
||||||
"@sveltejs/acorn-typescript": "^1.0.5",
|
"@sveltejs/acorn-typescript": "^1.0.5",
|
||||||
@@ -1211,6 +1212,7 @@
|
|||||||
"integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==",
|
"integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@sveltejs/vite-plugin-svelte-inspector": "^5.0.0",
|
"@sveltejs/vite-plugin-svelte-inspector": "^5.0.0",
|
||||||
"debug": "^4.4.1",
|
"debug": "^4.4.1",
|
||||||
@@ -1299,6 +1301,7 @@
|
|||||||
"integrity": "sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==",
|
"integrity": "sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~7.14.0"
|
"undici-types": "~7.14.0"
|
||||||
}
|
}
|
||||||
@@ -1349,6 +1352,7 @@
|
|||||||
"integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==",
|
"integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "8.46.0",
|
"@typescript-eslint/scope-manager": "8.46.0",
|
||||||
"@typescript-eslint/types": "8.46.0",
|
"@typescript-eslint/types": "8.46.0",
|
||||||
@@ -1682,6 +1686,7 @@
|
|||||||
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"acorn": "bin/acorn"
|
"acorn": "bin/acorn"
|
||||||
},
|
},
|
||||||
@@ -1935,6 +1940,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"baseline-browser-mapping": "^2.8.9",
|
"baseline-browser-mapping": "^2.8.9",
|
||||||
"caniuse-lite": "^1.0.30001746",
|
"caniuse-lite": "^1.0.30001746",
|
||||||
@@ -2310,6 +2316,7 @@
|
|||||||
"integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==",
|
"integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.8.0",
|
"@eslint-community/eslint-utils": "^4.8.0",
|
||||||
"@eslint-community/regexpp": "^4.12.1",
|
"@eslint-community/regexpp": "^4.12.1",
|
||||||
@@ -3021,6 +3028,7 @@
|
|||||||
"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
|
"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"jiti": "bin/jiti.js"
|
"jiti": "bin/jiti.js"
|
||||||
}
|
}
|
||||||
@@ -3494,6 +3502,7 @@
|
|||||||
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
@@ -3541,6 +3550,7 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"nanoid": "^3.3.11",
|
"nanoid": "^3.3.11",
|
||||||
"picocolors": "^1.1.1",
|
"picocolors": "^1.1.1",
|
||||||
@@ -3741,6 +3751,7 @@
|
|||||||
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
|
"integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"prettier": "bin/prettier.cjs"
|
"prettier": "bin/prettier.cjs"
|
||||||
},
|
},
|
||||||
@@ -4225,6 +4236,7 @@
|
|||||||
"integrity": "sha512-Q3gqCGIgl4r0CR7OaWYjVo22nqFmLLSfn1MiWNFaITamvqhGBD3kyqk51EKuO4Nd1z8QliO5KIz7a2Ka9Rxilw==",
|
"integrity": "sha512-Q3gqCGIgl4r0CR7OaWYjVo22nqFmLLSfn1MiWNFaITamvqhGBD3kyqk51EKuO4Nd1z8QliO5KIz7a2Ka9Rxilw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@jridgewell/remapping": "^2.3.4",
|
"@jridgewell/remapping": "^2.3.4",
|
||||||
"@jridgewell/sourcemap-codec": "^1.5.0",
|
"@jridgewell/sourcemap-codec": "^1.5.0",
|
||||||
@@ -4649,6 +4661,7 @@
|
|||||||
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
|
"peer": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"tsc": "bin/tsc",
|
"tsc": "bin/tsc",
|
||||||
"tsserver": "bin/tsserver"
|
"tsserver": "bin/tsserver"
|
||||||
@@ -4742,6 +4755,7 @@
|
|||||||
"integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==",
|
"integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "^0.25.0",
|
"esbuild": "^0.25.0",
|
||||||
"fdir": "^6.5.0",
|
"fdir": "^6.5.0",
|
||||||
@@ -5065,21 +5079,6 @@
|
|||||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/yaml": {
|
|
||||||
"version": "2.8.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz",
|
|
||||||
"integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==",
|
|
||||||
"dev": true,
|
|
||||||
"license": "ISC",
|
|
||||||
"optional": true,
|
|
||||||
"peer": true,
|
|
||||||
"bin": {
|
|
||||||
"yaml": "bin.mjs"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 14.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/yocto-queue": {
|
"node_modules/yocto-queue": {
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
||||||
|
|||||||
2125
daemon/web/yarn.lock
Normal file
2125
daemon/web/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
@@ -26,5 +26,6 @@ futures = { version = "0.3.30", default-features = false }
|
|||||||
serde = { version = "1.0.197", features = ["derive"] }
|
serde = { version = "1.0.197", features = ["derive"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
num_enum = "0.7.4"
|
num_enum = "0.7.4"
|
||||||
|
uds = { version = "0.4.2", features = ["tokio"] }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ use crate::{Device, log_codes};
|
|||||||
use deku::prelude::*;
|
use deku::prelude::*;
|
||||||
use futures::TryStream;
|
use futures::TryStream;
|
||||||
use log::{debug, error, info};
|
use log::{debug, error, info};
|
||||||
|
use uds::UnixSocketAddr;
|
||||||
|
use uds::tokio::UnixSeqpacketConn;
|
||||||
use std::io::ErrorKind;
|
use std::io::ErrorKind;
|
||||||
use std::os::fd::AsRawFd;
|
use std::os::fd::AsRawFd;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
@@ -79,8 +81,13 @@ const DIAG_IOCTL_SWITCH_LOGGING: u64 = 7;
|
|||||||
#[cfg(all(not(target_env = "musl"), target_arch = "aarch64"))]
|
#[cfg(all(not(target_env = "musl"), target_arch = "aarch64"))]
|
||||||
const DIAG_IOCTL_SWITCH_LOGGING: u64 = 7;
|
const DIAG_IOCTL_SWITCH_LOGGING: u64 = 7;
|
||||||
|
|
||||||
|
enum DiagIO {
|
||||||
|
File(File),
|
||||||
|
Socket(UnixSeqpacketConn),
|
||||||
|
}
|
||||||
|
|
||||||
pub struct DiagDevice {
|
pub struct DiagDevice {
|
||||||
file: File,
|
file: DiagIO,
|
||||||
read_buf: Vec<u8>,
|
read_buf: Vec<u8>,
|
||||||
use_mdm: i32,
|
use_mdm: i32,
|
||||||
}
|
}
|
||||||
@@ -129,22 +136,32 @@ impl DiagDevice {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn try_new(configured_device: &Device) -> DiagResult<Self> {
|
async fn try_new(configured_device: &Device) -> DiagResult<Self> {
|
||||||
let diag_file = File::options()
|
if tokio::fs::try_exists("/dev/diag").await.unwrap() {
|
||||||
.read(true)
|
let diag_file = File::options()
|
||||||
.write(true)
|
.read(true)
|
||||||
.open("/dev/diag")
|
.write(true)
|
||||||
.await
|
.open("/dev/diag")
|
||||||
.map_err(DiagDeviceError::OpenDiagDeviceError)?;
|
.await
|
||||||
let fd = diag_file.as_raw_fd();
|
.map_err(DiagDeviceError::OpenDiagDeviceError)?;
|
||||||
|
|
||||||
enable_frame_readwrite(fd, MEMORY_DEVICE_MODE, configured_device)?;
|
let fd = diag_file.as_raw_fd();
|
||||||
let use_mdm = determine_use_mdm(fd)?;
|
enable_frame_readwrite(fd, MEMORY_DEVICE_MODE, configured_device)?;
|
||||||
|
|
||||||
Ok(DiagDevice {
|
Ok(DiagDevice {
|
||||||
read_buf: vec![0; BUFFER_LEN],
|
read_buf: vec![0; BUFFER_LEN],
|
||||||
file: diag_file,
|
file: DiagIO::File(diag_file),
|
||||||
use_mdm,
|
use_mdm: determine_use_mdm(fd)?,
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
let addr = UnixSocketAddr::new(&[0; 108]).unwrap();
|
||||||
|
let socket = uds::tokio::UnixSeqpacketConn::connect_addr(&addr).unwrap();
|
||||||
|
|
||||||
|
Ok(DiagDevice {
|
||||||
|
read_buf: vec![0; BUFFER_LEN],
|
||||||
|
file: DiagIO::Socket(socket),
|
||||||
|
use_mdm: 0,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn as_stream(
|
pub fn as_stream(
|
||||||
@@ -157,14 +174,21 @@ impl DiagDevice {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn get_next_messages_container(&mut self) -> Result<MessagesContainer, DiagDeviceError> {
|
async fn get_next_messages_container(&mut self) -> Result<MessagesContainer, DiagDeviceError> {
|
||||||
|
info!("reading messages container...");
|
||||||
let mut bytes_read = 0;
|
let mut bytes_read = 0;
|
||||||
// TP-Link M7350 sometimes sends too small messages, we need to be able to deal with short reads.
|
// TP-Link M7350 sometimes sends too small messages, we need to be able to deal with short reads.
|
||||||
while bytes_read <= 8 {
|
while bytes_read <= 8 {
|
||||||
bytes_read = self
|
bytes_read += match &mut self.file {
|
||||||
.file
|
DiagIO::File(file) => file
|
||||||
.read(&mut self.read_buf)
|
.read(&mut self.read_buf)
|
||||||
.await
|
.await
|
||||||
.map_err(DiagDeviceError::DeviceReadFailed)?;
|
.map_err(DiagDeviceError::DeviceReadFailed)?,
|
||||||
|
DiagIO::Socket(unix_datagram) => unix_datagram
|
||||||
|
.recv(&mut self.read_buf)
|
||||||
|
.await
|
||||||
|
.map_err(DiagDeviceError::DeviceReadFailed)?,
|
||||||
|
};
|
||||||
|
info!("{bytes_read} bytes read");
|
||||||
}
|
}
|
||||||
|
|
||||||
debug!(
|
debug!(
|
||||||
@@ -189,20 +213,29 @@ impl DiagDevice {
|
|||||||
}
|
}
|
||||||
.to_bytes()
|
.to_bytes()
|
||||||
.expect("Failed to serialize RequestContainer");
|
.expect("Failed to serialize RequestContainer");
|
||||||
if let Err(err) = self.file.write(&buf).await {
|
match &mut self.file {
|
||||||
// For reasons I don't entirely understand, calls to write(2) on
|
DiagIO::File(file) => {
|
||||||
// /dev/diag always return 0 bytes written, though the written
|
if let Err(err) = file.write(&buf).await {
|
||||||
// requests end up being interpreted. As such, we're not concerned
|
// For reasons I don't entirely understand, calls to write(2) on
|
||||||
// about WriteZero errors
|
// /dev/diag always return 0 bytes written, though the written
|
||||||
if err.kind() != ErrorKind::WriteZero {
|
// requests end up being interpreted. As such, we're not concerned
|
||||||
return Err(DiagDeviceError::DeviceWriteFailed(err));
|
// about WriteZero errors
|
||||||
|
if err.kind() != ErrorKind::WriteZero {
|
||||||
|
return Err(DiagDeviceError::DeviceWriteFailed(err));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let Err(err) = file.flush().await
|
||||||
|
&& err.kind() != ErrorKind::WriteZero
|
||||||
|
{
|
||||||
|
return Err(DiagDeviceError::DeviceWriteFailed(err));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
DiagIO::Socket(unix_datagram) => {
|
||||||
|
unix_datagram.send(&buf)
|
||||||
|
.await
|
||||||
|
.map_err(DiagDeviceError::DeviceWriteFailed)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let Err(err) = self.file.flush().await
|
|
||||||
&& err.kind() != ErrorKind::WriteZero
|
|
||||||
{
|
|
||||||
return Err(DiagDeviceError::DeviceWriteFailed(err));
|
|
||||||
}
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -210,6 +243,8 @@ impl DiagDevice {
|
|||||||
loop {
|
loop {
|
||||||
let container = self.get_next_messages_container().await?;
|
let container = self.get_next_messages_container().await?;
|
||||||
if container.data_type != DataType::UserSpace {
|
if container.data_type != DataType::UserSpace {
|
||||||
|
info!("skipping non-userspace container...");
|
||||||
|
dbg!(&container);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
return Ok(container.into_messages());
|
return Ok(container.into_messages());
|
||||||
@@ -217,9 +252,11 @@ impl DiagDevice {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async fn retrieve_id_ranges(&mut self) -> DiagResult<[u32; 16]> {
|
async fn retrieve_id_ranges(&mut self) -> DiagResult<[u32; 16]> {
|
||||||
|
info!("writing LogConfig request...");
|
||||||
let req = Request::LogConfig(LogConfigRequest::RetrieveIdRanges);
|
let req = Request::LogConfig(LogConfigRequest::RetrieveIdRanges);
|
||||||
self.write_request(&req).await?;
|
self.write_request(&req).await?;
|
||||||
|
|
||||||
|
info!("waiting for response...");
|
||||||
for msg in self.read_response().await? {
|
for msg in self.read_response().await? {
|
||||||
match msg {
|
match msg {
|
||||||
Ok(Message::Log { .. }) => info!("skipping log response..."),
|
Ok(Message::Log { .. }) => info!("skipping log response..."),
|
||||||
@@ -274,9 +311,11 @@ impl DiagDevice {
|
|||||||
pub async fn config_logs(&mut self) -> DiagResult<()> {
|
pub async fn config_logs(&mut self) -> DiagResult<()> {
|
||||||
info!("retrieving diag logging capabilities...");
|
info!("retrieving diag logging capabilities...");
|
||||||
let log_mask_sizes = self.retrieve_id_ranges().await?;
|
let log_mask_sizes = self.retrieve_id_ranges().await?;
|
||||||
|
info!("got log mask sizes");
|
||||||
|
|
||||||
for (log_type, &log_mask_bitsize) in log_mask_sizes.iter().enumerate() {
|
for (log_type, &log_mask_bitsize) in log_mask_sizes.iter().enumerate() {
|
||||||
if log_mask_bitsize > 0 {
|
if log_mask_bitsize > 0 {
|
||||||
|
info!("setting log mask for type {log_type}...");
|
||||||
self.set_log_mask(log_type as u32, log_mask_bitsize).await?;
|
self.set_log_mask(log_type as u32, log_mask_bitsize).await?;
|
||||||
info!("enabled logging for log type {log_type}");
|
info!("enabled logging for log type {log_type}");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user