NAME

    Device::Chip::MPL3115A2 - chip driver for a MPL3115A2

SYNOPSIS

       use Device::Chip::MPL3115A2;
       use Future::AsyncAwait;
    
       my $chip = Device::Chip::MPL3115A2->new;
       await $chip->mount( Device::Chip::Adapter::...->new );
    
       printf "Current pressure is %.2f kPa\n",
          await $chip->read_pressure;

DESCRIPTION

    This Device::Chip subclass provides specific communication to a
    Freescale Semiconductor MPL3115A2 attached to a computer via an I²C
    adapter.

    The reader is presumed to be familiar with the general operation of
    this chip; the documentation here will not attempt to explain or define
    chip-specific concepts or features, only the use of this module to
    access them.

ACCESSORS

    The following methods documented in an await expression return Future
    instances.

 read_config

       $config = await $chip->read_config;

    Returns a HASH reference of the contents of control registers CTRL_REG1
    to CTRL_REG3, using fields named from the data sheet.

       SBYB => "STANDBY" | "ACTIVE"
       OST  => 0 | 1
       RST  => 0 | 1
       OS   => 1 | 2 | 4 | ... | 64 | 128
       RAW  => 0 | 1
       ALT  => 0 | 1
    
       ST          => 1 | 2 | 4 | ... | 16384 | 32768
       ALARM_SEL   => 0 | 1
       LOAD_OUTPUT => 0 | 1
    
       IPOL1  => 0 | 1
       PP_OD1 => 0 | 1
       IPOL2  => 0 | 1
       PP_OD2 => 0 | 1

 change_config

       await $chip->change_config( %changes );

    Writes updates to the control registers CTRL_REG1 to CTRL_REG3. This
    will be performed as a read-modify-write operation, so any fields not
    given as arguments to this method will retain their current values.

    Note that these two methods use a cache of configuration bytes to make
    subsequent modifications more efficient. This cache will not respect
    the "one-shot" nature of the OST and RST bits.

 get_sealevel_pressure

 set_sealevel_pressure

       $pressure = await $chip->get_sealevel_pressure;
    
       await $chip->set_sealevel_pressure( $pressure );

    Read or write the barometric pressure calibration register which is
    used to convert pressure to altitude when the chip is in altimeter
    mode, in Pascals. The default value is 101,326 Pa.

 read_pressure

       $pressure = await $chip->read_pressure;

    Returns the value of the OUT_P_* registers, suitably converted into
    Pascals. (The chip must be in barometer mode and must not be in RAW
    mode for the conversion to work).

 read_altitude

       $altitude = await $chip->read_altitude;

    Returns the value of the OUT_P_* registers, suitably converted into
    metres. (The chip must be in altimeter mode and must not be in RAW mode
    for the conversion to work).

 read_temperature

       $temperature = await $chip->read_temperature;

    Returns the value of the OUT_T_* registers, suitable converted into
    degrees C. (The chip must not be in RAW mode for the conversion to
    work).

 read_min_pressure

 read_max_pressure

       $pressure = await $chip->read_min_pressure;
    
       $pressure = await $chip->read_max_pressure;

    Returns the values of the P_MIN and P_MAX registers, suitably converted
    into Pascals.

 clear_min_pressure

 clear_max_pressure

       await $chip->clear_min_pressure;
    
       await $chip->clear_max_pressure;

    Clear the P_MIN or P_MAX registers, resetting them to start again from
    the next measurement.

 read_min_altitude

 read_max_altitude

       $altitude = await $chip->read_min_altitude;
    
       $altitude = await $chip->read_max_altitude;

    Returns the values of the P_MIN and P_MAX registers, suitably converted
    into metres.

 clear_min_altitude

 clear_max_altitude

       await $chip->clear_min_altitude;
    
       await $chip->clear_max_altitude;

    Clear the P_MIN or P_MAX registers, resetting them to start again from
    the next measurement.

 read_min_temperature

 read_max_temperature

       $temperature = await $chip->read_min_temperature;
    
       $temperature = await $chip->read_max_temperature;

    Returns the values of the T_MIN and T_MAX registers, suitably converted
    into metres.

 clear_min_temperature

 clear_max_temperature

       await $chip->clear_min_temperature;
    
       await $chip->clear_max_temperature;

    Clear the T_MIN or T_MAX registers, resetting them to start again from
    the next measurement.

METHODS

 check_id

       await $chip->check_id;

    Reads the WHO_AM_I register and checks for a valid ID result. The
    returned future fails if the expected result is not received.

 start_oneshot

       await $chip->start_oneshot;

    Sets the OST bit of CTRL_REG1 to start a one-shot measurement when in
    standby mode. After calling this method you will need to use
    busywait_oneshot to wait for the measurement to finish, or rely somehow
    on the interrupts.

 busywait_oneshot

       await $chip->busywait_oneshot;

    Repeatedly reads the OST bit of CTRL_REG1 until it becomes clear.

 oneshot

       await $chip->oneshot;

    A convenient wrapper around start_oneshot and busywait_oneshot.

AUTHOR

    Paul Evans <leonerd@leonerd.org.uk>