Skip to main content

Device

Struct Device 

Source
pub struct Device {
    pub model: Model,
    pub proto: TouchProto,
    pub dims: (u32, u32),
    pub dpi: u16,
    metadata: OnceCell<DeviceMetadata>,
    wifi_manager: OnceCell<Box<dyn WifiManager>>,
}

Fields§

§model: Model§proto: TouchProto§dims: (u32, u32)§dpi: u16§metadata: OnceCell<DeviceMetadata>§wifi_manager: OnceCell<Box<dyn WifiManager>>

Implementations§

Source§

impl Device

Source

fn new(product: &str, model_number: &str) -> Device

Creates a new device from product and model number strings.

Source

pub fn metadata(&self) -> Result<&DeviceMetadata, DeviceError>

Gets device metadata (lazy initialization).

Source

pub fn usb_manager(&self) -> Result<Box<dyn UsbManager>, UsbError>

Creates USB manager for this device.

Source

pub fn wifi_manager(&self) -> Result<&dyn WifiManager, WifiError>

Returns the WiFi manager for this device.

Source

pub fn install_subdir(&self) -> &'static str

Returns the install subdirectory for this build.

Kobo devices install Cadmus under .adds/ on the user-visible storage. Test builds use a separate sibling directory so they can coexist with stable builds.

Source

pub fn install_dir(&self) -> PathBuf

Returns the absolute install directory for this device.

The path is determined at compile time and does not depend on the process’s current working directory, so it remains stable even when callers change cwd.

  • Normal device builds: /mnt/onboard/.adds/cadmus
  • Test device builds: /mnt/onboard/.adds/cadmus-tst
  • Emulator builds: /tmp/.adds/cadmus (or cadmus-tst with test)
  • Unit tests: <temp_dir>/test-kobo-installation/.adds/cadmus-tst
Source

pub fn install_path(&self, relative_path: impl AsRef<Path>) -> PathBuf

Returns a path inside the device install directory.

Use this for files and directories that Cadmus owns under its install root, such as tmp/ or .github_token.

Source

pub fn tmp_dir(&self) -> PathBuf

Returns the path to the device-managed tmp directory.

The returned path is rooted under Device::install_dir, so it remains stable even when callers change cwd (for example during USB sharing).

Source

pub fn clean_tmp_dir(&self)

Removes stale contents left by a previous run and recreates the tmp directory.

Device owns the lifecycle of the tmp directory: callers may assume the directory exists after this runs and should not create it themselves. Call this once at startup before any feature that writes to tmp_dir() to ensure a clean slate.

Source

pub fn color_samples(&self) -> usize

Returns the number of color samples for the device screen.

Source

pub fn frontlight_kind(&self) -> FrontlightKind

Returns the frontlight kind for this device.

Source

pub fn has_natural_light(&self) -> bool

Returns true if the device has natural light capability.

Source

pub fn has_lightsensor(&self) -> bool

Returns true if the device has a light sensor.

Source

pub fn has_gyroscope(&self) -> bool

Returns true if the device has a gyroscope.

Source

pub fn has_page_turn_buttons(&self) -> bool

Returns true if the device has page turn buttons.

Source

pub fn has_power_cover(&self) -> bool

Returns true if the device supports a power cover.

Source

pub fn has_removable_storage(&self) -> bool

Returns true if the device has removable storage.

Source

pub fn should_invert_buttons(&self, rotation: i8) -> bool

Returns true if buttons should be inverted for the given rotation.

Source

pub fn orientation(&self, rotation: i8) -> Orientation

Returns the orientation for the given rotation.

Source

pub fn mark(&self) -> u8

Returns the device mark value.

Source

pub fn should_mirror_axes(&self, rotation: i8) -> (bool, bool)

Returns whether axes should be mirrored for the given rotation.

Source

pub fn mirroring_scheme(&self) -> (i8, i8)

Returns the center and direction of the mirroring pattern.

Source

pub fn should_swap_axes(&self, rotation: i8) -> bool

Returns true if axes should be swapped for the given rotation.

Source

fn swapping_scheme(&self) -> i8

Returns the swapping scheme value.

Source

pub fn startup_rotation(&self) -> i8

Returns the startup rotation value.

Source

pub fn to_canonical(&self, n: i8) -> i8

Returns a device independent rotation value.

Source

pub fn from_canonical(&self, n: i8) -> i8

Returns a device dependent rotation value from canonical.

Source

pub fn transformed_rotation(&self, n: i8) -> i8

Returns the transformed rotation value.

Source

pub fn transformed_gyroscope_rotation(&self, n: i8) -> i8

Returns the transformed gyroscope rotation value.

Trait Implementations§

Source§

impl Debug for Device

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl !Freeze for Device

§

impl !RefUnwindSafe for Device

§

impl Send for Device

§

impl Sync for Device

§

impl Unpin for Device

§

impl UnsafeUnpin for Device

§

impl !UnwindSafe for Device

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSend for T
where T: Any + Send,

§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Sync + Send>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more