capsules_extra

Module proximity

Source
Expand description

Provides userspace with access to proximity sensors.

§Userspace Interface

§subscribe System Call

The subscribe system call supports the single subscribe_number zero, which is used to provide a callback that will return back the result of a proximity reading. The subscribecall return codes indicate the following:

  • Ok(()): the callback been successfully been configured.
  • ENOSUPPORT: Invalid allow_num.

§command System Call

The command system call support one argument cmd which is used to specify the specific operation, currently the following cmd’s are supported:

  • 0: driver existence check
  • 1: read proximity
  • 2: read proximity on interrupt

The possible return from the ‘command’ system call indicates the following:

  • Ok(()): The operation has been successful.
  • BUSY: The driver is busy.
  • ENOSUPPORT: Invalid cmd.

§Usage

You need a device that provides the hil::sensors::ProximityDriver trait. Here is an example of how to set up a proximity sensor with the apds9960 IC


let grant_cap = create_capability!(capabilities::MemoryAllocationCapability);

let proximity = static_init!(
  capsules::proximity::ProximitySensor<'static>,
  capsules::proximity::ProximitySensor::new(apds9960 , board_kernel.create_grant(&grant_cap)));

kernel::hil::sensors::ProximityDriver::set_client(apds9960, proximity);

Structs§

Enums§

Constants§