Fix ARM compilation: vendor libhackrf with c_char portability fix

The upstream libhackrf v0.1.1 crate fails to compile on ARM because
c_char is u8 on ARM (not i8 like on x86). The transmute at lib.rs:102
explicitly casts &[i8] -> &[u8], but on ARM the source is already &[u8],
causing a type mismatch.

Vendored the crate at vendor/libhackrf/ with the transmute replaced by
slice::from_raw_parts with a pointer cast, which works on both
architectures. Also cleaned up transmute calls in transfer.rs.

Fixes #1
This commit is contained in:
KaraZajac
2026-03-22 11:14:41 -04:00
parent 295e4c4d4a
commit 84b75ee6b5
9 changed files with 473 additions and 2 deletions
+21
View File
@@ -0,0 +1,21 @@
use num_complex::Complex;
pub trait ToComplexI8 {
fn to_i8(self) -> Complex<i8>;
}
pub trait ToComplexF32 {
fn to_f32(self) -> Complex<f32>;
}
impl ToComplexI8 for Complex<f32> {
fn to_i8(self) -> Complex<i8> {
Complex::new((self.re * 127.0) as i8, (self.im * 127.0) as i8)
}
}
impl ToComplexF32 for Complex<i8> {
fn to_f32(self) -> Complex<f32> {
Complex::new(self.re as f32 / 127.0, self.im as f32 / 127.0)
}
}