NAME

    Device::Chip::CCS811 - chip driver for CCS811

SYNOPSIS

       use Device::Chip::CCS811;
       use Future::AsyncAwait;
    
       my $chip = Device::Chip::CCS811->new;
       await $chip->mount( Device::Chip::Adapter::...->new );
    
       await $chip->init;
    
       await $chip->change_config( DRIVE_MODE => 1 );
    
       sleep 60; # wait for chip to warm up
    
       my ( $eCO2, $eTVOC ) = await $chip->read_alg_result_data;
    
       printf "eCO2=%dppm\n", $eCO2;
       printf "eTVOC=%dppb\n", $eTVOC;

DESCRIPTION

    This Device::Chip subclass provides specific communication to a
    ScioSense CCS811 Digital Gas Sensor 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.

METHODS

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

 read_status

       $status = await $chip->read_status;

    Reads the STATUS register and returns a hash reference containing the
    following fields:

       FWMODE     => "boot" | "app"
       APP_ERASE  => 0 | 1
       APP_VERIFY => 0 | 1
       APP_VALID  => 0 | 1
       DATA_READY => 0 | 1
       ERROR      => 0 | 1

 read_config

       $config = await $chip->read_config;

    Reads the MEAS_MODE configuration register and reeturns a hash
    reference containing the following fields:

       DRIVE_MODE  => 0 | 1 | 2 | 3 | 4
       INT_DATARDY => 0 | 1
       INT_THRESH  => 0 | 1

 change_config

       await $chip->change_config( %changes );

    Writes updates to the MEAS_MODE configuration register.

 read_alg_result_data

       $data = await $chip->read_alg_result_data;

    Reads the ALG_RESULT_DATA register and returns a hash reference
    containing the following fields, in addition to the STATUS fields.

       eCO2     => INT (in units of ppm)
       eTVOC    => INT (in unts of ppb)
       ERROR_ID => INT

 read_id

       $id = await $chip->read_id;

    Reads the HW_ID register and returns an integer. This should be the
    value 0x81 for the CCS811 chip.

 init

       await $chip->init;

    Performs the chip startup actions; namely, starting the application if
    the chip is still in bootloader mode.

AUTHOR

    Paul Evans <leonerd@leonerd.org.uk>