1
0
mirror of https://github.com/danog/libdvb.git synced 2024-11-26 20:04:39 +01:00

ca: open by adapter and device number

This commit is contained in:
Andrey Dyldin 2021-03-08 16:46:58 +02:00
parent c4c33e86ad
commit 1af4957fa6
2 changed files with 20 additions and 12 deletions

View File

@ -1,6 +1,5 @@
use { use {
std::{ std::{
path::Path,
os::unix::io::AsRawFd, os::unix::io::AsRawFd,
}, },
@ -33,9 +32,7 @@ use {
}; };
fn check_ca(path: &Path) -> Result<()> { fn start_ca(adapter: u32, device: u32) -> Result<()> {
println!("CA: {}", path.display());
// let mut ca = CaDevice::open(path, 0)?; // let mut ca = CaDevice::open(path, 0)?;
let timer = TimerFd::new( let timer = TimerFd::new(
@ -100,12 +97,16 @@ fn check_ca(path: &Path) -> Result<()> {
fn main() -> Result<()> { fn main() -> Result<()> {
let mut args = std::env::args().skip(1); let mut args = std::env::args().skip(1);
if let Some(path) = args.next() {
let path = Path::new(&path);
check_ca(&path)?;
} else {
eprintln!("path to ca device is not defined");
}
Ok(()) let adapter = match args.next() {
Some(v) => v.parse::<u32>().context("adapter number")?,
None => bail!("adapter number not defined"),
};
let device = match args.next() {
Some(v) => v.parse::<u32>().context("device number")?,
None => 0,
};
start_ca(adapter, device)
} }

View File

@ -44,6 +44,9 @@ const CA_DELAY: Duration = Duration::from_millis(100);
#[derive(Debug)] #[derive(Debug)]
pub struct CaDevice { pub struct CaDevice {
adapter: u32,
device: u32,
file: File, file: File,
slot: CaSlotInfo, slot: CaSlotInfo,
} }
@ -93,7 +96,8 @@ impl CaDevice {
} }
/// Attempts to open a CA device /// Attempts to open a CA device
pub fn open(path: &Path, slot: u32) -> Result<CaDevice> { pub fn open(adapter: u32, device: u32, slot: u32) -> Result<CaDevice> {
let path = format!("/dev/dvb/adapter{}/ca{}", adapter, device);
let file = OpenOptions::new() let file = OpenOptions::new()
.read(true) .read(true)
.write(true) .write(true)
@ -102,6 +106,9 @@ impl CaDevice {
.with_context(|| format!("CA: failed to open device {}", path.display()))?; .with_context(|| format!("CA: failed to open device {}", path.display()))?;
let mut ca = CaDevice { let mut ca = CaDevice {
adapter,
device,
file, file,
slot: CaSlotInfo::default(), slot: CaSlotInfo::default(),
}; };