Author image Steve Bertrand

DESCRIPTION

This document outlines the C functionality within the XS file that the Perl module uses as its backend. It is a reference only, and none of the information included here is required for non-developmental use/work.

C TYPEDEFS

EnvData

Stores the temperature and humidity float values.

    typedef struct env_data {
        int temp;
        int humidity;
    } EnvData;

C FUNCTIONS

pin arguments must always be in their BCM GPIO number scheme format.

c_temp

    int c_temp(int pin);

Called by the temp() method. Returns the temperature in Celcius.

c_humidity

    int c_humidity(int pin);

Called by the humidity() method. Returns the humidity as an integer.

c_cleanup

    int c_cleanup(int pin);

Called by the cleanup() method, and is always called upon DESTROY().

read_env()

    EnvData read_env(int pin);

Not available to Perl.

Polls the pin in a loop until valid data is fetched, then returns an EnvData struct containing the temp and humidity float values.

If for any reason the poll of the DHT11 sensor fails (eg: the CRC is incorrect for either temp or humidity), we will loop and block until valid data is retrieved.

noboard_test()

    bool noboard_test();

Checks whether the RDE_NOBOARD_TEST environment variable is set to a true value. Returns true if so, and false if not. This bool is used for testing purposes only.

Not available to Perl.

setup()

    void setup();

If we're on a system that isn't a Raspberry Pi, things break. We call this in new(), and if setup checks fail, we exit (unless in RDE_NOBOARD_TEST environment variable is set to true).

This function has been configured to call wiringPi's wiringPiSetupGpio() function.

Called only from the new() method.

AUTHOR

Steve Bertrand, <steveb@cpan.org<gt>

LICENSE AND COPYRIGHT

Copyright 2016 Steve Bertrand.

This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.

See http://dev.perl.org/licenses/ for more information.