Files
2021-03-09 16:11:58 +01:00

942 lines
30 KiB
C

/* ***********************************************************
* This file was automatically generated on 2021-01-15. *
* *
* C/C++ Bindings Version 2.1.31 *
* *
* If you have a bugfix for this file and want to commit it, *
* please fix the bug in the generator. You can find a link *
* to the generators git repository on tinkerforge.com *
*************************************************************/
#ifndef BRICKLET_AIR_QUALITY_H
#define BRICKLET_AIR_QUALITY_H
#include "ip_connection.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* \defgroup BrickletAirQuality Air Quality Bricklet
*/
/**
* \ingroup BrickletAirQuality
*
* Measures IAQ index, temperature, humidity and air pressure
*/
typedef Device AirQuality;
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_ALL_VALUES 1
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_SET_TEMPERATURE_OFFSET 2
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_TEMPERATURE_OFFSET 3
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_SET_ALL_VALUES_CALLBACK_CONFIGURATION 4
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_ALL_VALUES_CALLBACK_CONFIGURATION 5
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_IAQ_INDEX 7
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_SET_IAQ_INDEX_CALLBACK_CONFIGURATION 8
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_IAQ_INDEX_CALLBACK_CONFIGURATION 9
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_TEMPERATURE 11
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_SET_TEMPERATURE_CALLBACK_CONFIGURATION 12
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_TEMPERATURE_CALLBACK_CONFIGURATION 13
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_HUMIDITY 15
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_SET_HUMIDITY_CALLBACK_CONFIGURATION 16
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_HUMIDITY_CALLBACK_CONFIGURATION 17
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_AIR_PRESSURE 19
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_SET_AIR_PRESSURE_CALLBACK_CONFIGURATION 20
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_AIR_PRESSURE_CALLBACK_CONFIGURATION 21
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_REMOVE_CALIBRATION 23
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_SET_BACKGROUND_CALIBRATION_DURATION 24
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_BACKGROUND_CALIBRATION_DURATION 25
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_SPITFP_ERROR_COUNT 234
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_SET_BOOTLOADER_MODE 235
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_BOOTLOADER_MODE 236
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_SET_WRITE_FIRMWARE_POINTER 237
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_WRITE_FIRMWARE 238
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_SET_STATUS_LED_CONFIG 239
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_STATUS_LED_CONFIG 240
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_CHIP_TEMPERATURE 242
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_RESET 243
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_WRITE_UID 248
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_READ_UID 249
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_FUNCTION_GET_IDENTITY 255
/**
* \ingroup BrickletAirQuality
*
* Signature: \code void callback(int32_t iaq_index, uint8_t iaq_index_accuracy, int32_t temperature, int32_t humidity, int32_t air_pressure, void *user_data) \endcode
*
* This callback is triggered periodically according to the configuration set by
* {@link air_quality_set_all_values_callback_configuration}.
*
* The parameters are the same as {@link air_quality_get_all_values}.
*/
#define AIR_QUALITY_CALLBACK_ALL_VALUES 6
/**
* \ingroup BrickletAirQuality
*
* Signature: \code void callback(int32_t iaq_index, uint8_t iaq_index_accuracy, void *user_data) \endcode
*
* This callback is triggered periodically according to the configuration set by
* {@link air_quality_set_iaq_index_callback_configuration}.
*
* The parameters are the same as {@link air_quality_get_iaq_index}.
*/
#define AIR_QUALITY_CALLBACK_IAQ_INDEX 10
/**
* \ingroup BrickletAirQuality
*
* Signature: \code void callback(int32_t temperature, void *user_data) \endcode
*
* This callback is triggered periodically according to the configuration set by
* {@link air_quality_set_temperature_callback_configuration}.
*
* The parameter is the same as {@link air_quality_get_temperature}.
*/
#define AIR_QUALITY_CALLBACK_TEMPERATURE 14
/**
* \ingroup BrickletAirQuality
*
* Signature: \code void callback(int32_t humidity, void *user_data) \endcode
*
* This callback is triggered periodically according to the configuration set by
* {@link air_quality_set_humidity_callback_configuration}.
*
* The parameter is the same as {@link air_quality_get_humidity}.
*/
#define AIR_QUALITY_CALLBACK_HUMIDITY 18
/**
* \ingroup BrickletAirQuality
*
* Signature: \code void callback(int32_t air_pressure, void *user_data) \endcode
*
* This callback is triggered periodically according to the configuration set by
* {@link air_quality_set_air_pressure_callback_configuration}.
*
* The parameter is the same as {@link air_quality_get_air_pressure}.
*/
#define AIR_QUALITY_CALLBACK_AIR_PRESSURE 22
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_ACCURACY_UNRELIABLE 0
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_ACCURACY_LOW 1
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_ACCURACY_MEDIUM 2
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_ACCURACY_HIGH 3
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_THRESHOLD_OPTION_OFF 'x'
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_THRESHOLD_OPTION_OUTSIDE 'o'
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_THRESHOLD_OPTION_INSIDE 'i'
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_THRESHOLD_OPTION_SMALLER '<'
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_THRESHOLD_OPTION_GREATER '>'
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_DURATION_4_DAYS 0
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_DURATION_28_DAYS 1
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_MODE_BOOTLOADER 0
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_MODE_FIRMWARE 1
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_MODE_BOOTLOADER_WAIT_FOR_REBOOT 2
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_MODE_FIRMWARE_WAIT_FOR_REBOOT 3
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_MODE_FIRMWARE_WAIT_FOR_ERASE_AND_REBOOT 4
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_STATUS_OK 0
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_STATUS_INVALID_MODE 1
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_STATUS_NO_CHANGE 2
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_STATUS_ENTRY_FUNCTION_NOT_PRESENT 3
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_STATUS_DEVICE_IDENTIFIER_INCORRECT 4
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_BOOTLOADER_STATUS_CRC_MISMATCH 5
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_STATUS_LED_CONFIG_OFF 0
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_STATUS_LED_CONFIG_ON 1
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_STATUS_LED_CONFIG_SHOW_HEARTBEAT 2
/**
* \ingroup BrickletAirQuality
*/
#define AIR_QUALITY_STATUS_LED_CONFIG_SHOW_STATUS 3
/**
* \ingroup BrickletAirQuality
*
* This constant is used to identify a Air Quality Bricklet.
*
* The {@link air_quality_get_identity} function and the
* {@link IPCON_CALLBACK_ENUMERATE} callback of the IP Connection have a
* \c device_identifier parameter to specify the Brick's or Bricklet's type.
*/
#define AIR_QUALITY_DEVICE_IDENTIFIER 297
/**
* \ingroup BrickletAirQuality
*
* This constant represents the display name of a Air Quality Bricklet.
*/
#define AIR_QUALITY_DEVICE_DISPLAY_NAME "Air Quality Bricklet"
/**
* \ingroup BrickletAirQuality
*
* Creates the device object \c air_quality with the unique device ID \c uid and adds
* it to the IPConnection \c ipcon.
*/
void air_quality_create(AirQuality *air_quality, const char *uid, IPConnection *ipcon);
/**
* \ingroup BrickletAirQuality
*
* Removes the device object \c air_quality from its IPConnection and destroys it.
* The device object cannot be used anymore afterwards.
*/
void air_quality_destroy(AirQuality *air_quality);
/**
* \ingroup BrickletAirQuality
*
* Returns the response expected flag for the function specified by the
* \c function_id parameter. It is *true* if the function is expected to
* send a response, *false* otherwise.
*
* For getter functions this is enabled by default and cannot be disabled,
* because those functions will always send a response. For callback
* configuration functions it is enabled by default too, but can be disabled
* via the air_quality_set_response_expected function. For setter functions it is
* disabled by default and can be enabled.
*
* Enabling the response expected flag for a setter function allows to
* detect timeouts and other error conditions calls of this setter as well.
* The device will then send a response for this purpose. If this flag is
* disabled for a setter function then no response is sent and errors are
* silently ignored, because they cannot be detected.
*/
int air_quality_get_response_expected(AirQuality *air_quality, uint8_t function_id, bool *ret_response_expected);
/**
* \ingroup BrickletAirQuality
*
* Changes the response expected flag of the function specified by the
* \c function_id parameter. This flag can only be changed for setter
* (default value: *false*) and callback configuration functions
* (default value: *true*). For getter functions it is always enabled.
*
* Enabling the response expected flag for a setter function allows to detect
* timeouts and other error conditions calls of this setter as well. The device
* will then send a response for this purpose. If this flag is disabled for a
* setter function then no response is sent and errors are silently ignored,
* because they cannot be detected.
*/
int air_quality_set_response_expected(AirQuality *air_quality, uint8_t function_id, bool response_expected);
/**
* \ingroup BrickletAirQuality
*
* Changes the response expected flag for all setter and callback configuration
* functions of this device at once.
*/
int air_quality_set_response_expected_all(AirQuality *air_quality, bool response_expected);
/**
* \ingroup BrickletAirQuality
*
* Registers the given \c function with the given \c callback_id. The
* \c user_data will be passed as the last parameter to the \c function.
*/
void air_quality_register_callback(AirQuality *air_quality, int16_t callback_id, void (*function)(void), void *user_data);
/**
* \ingroup BrickletAirQuality
*
* Returns the API version (major, minor, release) of the bindings for this
* device.
*/
int air_quality_get_api_version(AirQuality *air_quality, uint8_t ret_api_version[3]);
/**
* \ingroup BrickletAirQuality
*
* Returns all values measured by the Air Quality Bricklet. The values are
* IAQ (Indoor Air Quality) Index (higher value means greater level of air pollution), IAQ Index Accuracy, Temperature, Humidity and
* Air Pressure.
*
* .. image:: /Images/Misc/bricklet_air_quality_iaq_index.png
* :scale: 100 %
* :alt: Air Quality Index description
* :align: center
* :target: ../../_images/Misc/bricklet_air_quality_iaq_index.png
*/
int air_quality_get_all_values(AirQuality *air_quality, int32_t *ret_iaq_index, uint8_t *ret_iaq_index_accuracy, int32_t *ret_temperature, int32_t *ret_humidity, int32_t *ret_air_pressure);
/**
* \ingroup BrickletAirQuality
*
* Sets a temperature offset. A offset of 10 will decrease the measured temperature by 0.1 °C.
*
* If you install this Bricklet into an enclosure and you want to measure the ambient
* temperature, you may have to decrease the measured temperature by some value to
* compensate for the error because of the heating inside of the enclosure.
*
* We recommend that you leave the parts in the enclosure running for at least
* 24 hours such that a temperature equilibrium can be reached. After that you can measure
* the temperature directly outside of enclosure and set the difference as offset.
*
* This temperature offset is used to calculate the relative humidity and
* IAQ index measurements. In case the Bricklet is installed in an enclosure, we
* recommend to measure and set the temperature offset to improve the accuracy of
* the measurements.
*/
int air_quality_set_temperature_offset(AirQuality *air_quality, int32_t offset);
/**
* \ingroup BrickletAirQuality
*
* Returns the temperature offset as set by
* {@link air_quality_set_temperature_offset}.
*/
int air_quality_get_temperature_offset(AirQuality *air_quality, int32_t *ret_offset);
/**
* \ingroup BrickletAirQuality
*
* The period is the period with which the {@link AIR_QUALITY_CALLBACK_ALL_VALUES}
* callback is triggered periodically. A value of 0 turns the callback off.
*
* If the `value has to change`-parameter is set to true, the callback is only
* triggered after at least one of the values has changed. If the values didn't
* change within the period, the callback is triggered immediately on change.
*
* If it is set to false, the callback is continuously triggered with the period,
* independent of the value.
*/
int air_quality_set_all_values_callback_configuration(AirQuality *air_quality, uint32_t period, bool value_has_to_change);
/**
* \ingroup BrickletAirQuality
*
* Returns the callback configuration as set by
* {@link air_quality_set_all_values_callback_configuration}.
*/
int air_quality_get_all_values_callback_configuration(AirQuality *air_quality, uint32_t *ret_period, bool *ret_value_has_to_change);
/**
* \ingroup BrickletAirQuality
*
* Returns the IAQ index and accuracy. The higher the IAQ index, the greater the level of air pollution.
*
* .. image:: /Images/Misc/bricklet_air_quality_iaq_index.png
* :scale: 100 %
* :alt: IAQ index description
* :align: center
* :target: ../../_images/Misc/bricklet_air_quality_iaq_index.png
*
* If you want to get the value periodically, it is recommended to use the
* {@link AIR_QUALITY_CALLBACK_IAQ_INDEX} callback. You can set the callback configuration
* with {@link air_quality_set_iaq_index_callback_configuration}.
*/
int air_quality_get_iaq_index(AirQuality *air_quality, int32_t *ret_iaq_index, uint8_t *ret_iaq_index_accuracy);
/**
* \ingroup BrickletAirQuality
*
* The period is the period with which the {@link AIR_QUALITY_CALLBACK_IAQ_INDEX}
* callback is triggered periodically. A value of 0 turns the callback off.
*
* If the `value has to change`-parameter is set to true, the callback is only
* triggered after at least one of the values has changed. If the values didn't
* change within the period, the callback is triggered immediately on change.
*
* If it is set to false, the callback is continuously triggered with the period,
* independent of the value.
*/
int air_quality_set_iaq_index_callback_configuration(AirQuality *air_quality, uint32_t period, bool value_has_to_change);
/**
* \ingroup BrickletAirQuality
*
* Returns the callback configuration as set by
* {@link air_quality_set_iaq_index_callback_configuration}.
*/
int air_quality_get_iaq_index_callback_configuration(AirQuality *air_quality, uint32_t *ret_period, bool *ret_value_has_to_change);
/**
* \ingroup BrickletAirQuality
*
* Returns temperature.
*
*
* If you want to get the value periodically, it is recommended to use the
* {@link AIR_QUALITY_CALLBACK_TEMPERATURE} callback. You can set the callback configuration
* with {@link air_quality_set_temperature_callback_configuration}.
*/
int air_quality_get_temperature(AirQuality *air_quality, int32_t *ret_temperature);
/**
* \ingroup BrickletAirQuality
*
* The period is the period with which the {@link AIR_QUALITY_CALLBACK_TEMPERATURE} callback is triggered
* periodically. A value of 0 turns the callback off.
*
* If the `value has to change`-parameter is set to true, the callback is only
* triggered after the value has changed. If the value didn't change
* within the period, the callback is triggered immediately on change.
*
* If it is set to false, the callback is continuously triggered with the period,
* independent of the value.
*
* It is furthermore possible to constrain the callback with thresholds.
*
* The `option`-parameter together with min/max sets a threshold for the {@link AIR_QUALITY_CALLBACK_TEMPERATURE} callback.
*
* The following options are possible:
*
* \verbatim
* "Option", "Description"
*
* "'x'", "Threshold is turned off"
* "'o'", "Threshold is triggered when the value is *outside* the min and max values"
* "'i'", "Threshold is triggered when the value is *inside* or equal to the min and max values"
* "'<'", "Threshold is triggered when the value is smaller than the min value (max is ignored)"
* "'>'", "Threshold is triggered when the value is greater than the min value (max is ignored)"
* \endverbatim
*
* If the option is set to 'x' (threshold turned off) the callback is triggered with the fixed period.
*/
int air_quality_set_temperature_callback_configuration(AirQuality *air_quality, uint32_t period, bool value_has_to_change, char option, int32_t min, int32_t max);
/**
* \ingroup BrickletAirQuality
*
* Returns the callback configuration as set by {@link air_quality_set_temperature_callback_configuration}.
*/
int air_quality_get_temperature_callback_configuration(AirQuality *air_quality, uint32_t *ret_period, bool *ret_value_has_to_change, char *ret_option, int32_t *ret_min, int32_t *ret_max);
/**
* \ingroup BrickletAirQuality
*
* Returns relative humidity.
*
*
* If you want to get the value periodically, it is recommended to use the
* {@link AIR_QUALITY_CALLBACK_HUMIDITY} callback. You can set the callback configuration
* with {@link air_quality_set_humidity_callback_configuration}.
*/
int air_quality_get_humidity(AirQuality *air_quality, int32_t *ret_humidity);
/**
* \ingroup BrickletAirQuality
*
* The period is the period with which the {@link AIR_QUALITY_CALLBACK_HUMIDITY} callback is triggered
* periodically. A value of 0 turns the callback off.
*
* If the `value has to change`-parameter is set to true, the callback is only
* triggered after the value has changed. If the value didn't change
* within the period, the callback is triggered immediately on change.
*
* If it is set to false, the callback is continuously triggered with the period,
* independent of the value.
*
* It is furthermore possible to constrain the callback with thresholds.
*
* The `option`-parameter together with min/max sets a threshold for the {@link AIR_QUALITY_CALLBACK_HUMIDITY} callback.
*
* The following options are possible:
*
* \verbatim
* "Option", "Description"
*
* "'x'", "Threshold is turned off"
* "'o'", "Threshold is triggered when the value is *outside* the min and max values"
* "'i'", "Threshold is triggered when the value is *inside* or equal to the min and max values"
* "'<'", "Threshold is triggered when the value is smaller than the min value (max is ignored)"
* "'>'", "Threshold is triggered when the value is greater than the min value (max is ignored)"
* \endverbatim
*
* If the option is set to 'x' (threshold turned off) the callback is triggered with the fixed period.
*/
int air_quality_set_humidity_callback_configuration(AirQuality *air_quality, uint32_t period, bool value_has_to_change, char option, int32_t min, int32_t max);
/**
* \ingroup BrickletAirQuality
*
* Returns the callback configuration as set by {@link air_quality_set_humidity_callback_configuration}.
*/
int air_quality_get_humidity_callback_configuration(AirQuality *air_quality, uint32_t *ret_period, bool *ret_value_has_to_change, char *ret_option, int32_t *ret_min, int32_t *ret_max);
/**
* \ingroup BrickletAirQuality
*
* Returns air pressure.
*
*
* If you want to get the value periodically, it is recommended to use the
* {@link AIR_QUALITY_CALLBACK_AIR_PRESSURE} callback. You can set the callback configuration
* with {@link air_quality_set_air_pressure_callback_configuration}.
*/
int air_quality_get_air_pressure(AirQuality *air_quality, int32_t *ret_air_pressure);
/**
* \ingroup BrickletAirQuality
*
* The period is the period with which the {@link AIR_QUALITY_CALLBACK_AIR_PRESSURE} callback is triggered
* periodically. A value of 0 turns the callback off.
*
* If the `value has to change`-parameter is set to true, the callback is only
* triggered after the value has changed. If the value didn't change
* within the period, the callback is triggered immediately on change.
*
* If it is set to false, the callback is continuously triggered with the period,
* independent of the value.
*
* It is furthermore possible to constrain the callback with thresholds.
*
* The `option`-parameter together with min/max sets a threshold for the {@link AIR_QUALITY_CALLBACK_AIR_PRESSURE} callback.
*
* The following options are possible:
*
* \verbatim
* "Option", "Description"
*
* "'x'", "Threshold is turned off"
* "'o'", "Threshold is triggered when the value is *outside* the min and max values"
* "'i'", "Threshold is triggered when the value is *inside* or equal to the min and max values"
* "'<'", "Threshold is triggered when the value is smaller than the min value (max is ignored)"
* "'>'", "Threshold is triggered when the value is greater than the min value (max is ignored)"
* \endverbatim
*
* If the option is set to 'x' (threshold turned off) the callback is triggered with the fixed period.
*/
int air_quality_set_air_pressure_callback_configuration(AirQuality *air_quality, uint32_t period, bool value_has_to_change, char option, int32_t min, int32_t max);
/**
* \ingroup BrickletAirQuality
*
* Returns the callback configuration as set by {@link air_quality_set_air_pressure_callback_configuration}.
*/
int air_quality_get_air_pressure_callback_configuration(AirQuality *air_quality, uint32_t *ret_period, bool *ret_value_has_to_change, char *ret_option, int32_t *ret_min, int32_t *ret_max);
/**
* \ingroup BrickletAirQuality
*
* Deletes the calibration from flash. After you call this function,
* you need to power cycle the Air Quality Bricklet.
*
* On the next power up the Bricklet will start a new calibration, as
* if it was started for the very first time.
*
* The calibration is based on the data of the last four days, so it takes
* four days until a full calibration is re-established.
*
* .. versionadded:: 2.0.3$nbsp;(Plugin)
*/
int air_quality_remove_calibration(AirQuality *air_quality);
/**
* \ingroup BrickletAirQuality
*
* The Air Quality Bricklet uses an automatic background calibration mechanism to
* calculate the IAQ Index. This calibration mechanism considers a history of
* measured data. The duration of this history can be configured to either be
* 4 days or 28 days.
*
* If you keep the Bricklet mostly at one place and it does not get moved around
* to different environments, we recommend that you use a duration of 28 days.
*
* If you change the duration, the current calibration will be discarded and
* the calibration will start from beginning again. The configuration of the
* duration is saved in flash, so you should only have to call this function
* once in the lifetime of the Bricklet.
*
* The Bricklet has to be power cycled after this function is called
* for a duration change to take effect.
*
* Before firmware version 2.0.3 this was not configurable and the duration was
* 4 days.
*
* The default value (since firmware version 2.0.3) is 28 days.
*
* .. versionadded:: 2.0.3$nbsp;(Plugin)
*/
int air_quality_set_background_calibration_duration(AirQuality *air_quality, uint8_t duration);
/**
* \ingroup BrickletAirQuality
*
* Returns the background calibration duration as set by
* {@link air_quality_set_background_calibration_duration}.
*
* .. versionadded:: 2.0.3$nbsp;(Plugin)
*/
int air_quality_get_background_calibration_duration(AirQuality *air_quality, uint8_t *ret_duration);
/**
* \ingroup BrickletAirQuality
*
* Returns the error count for the communication between Brick and Bricklet.
*
* The errors are divided into
*
* * ACK checksum errors,
* * message checksum errors,
* * framing errors and
* * overflow errors.
*
* The errors counts are for errors that occur on the Bricklet side. All
* Bricks have a similar function that returns the errors on the Brick side.
*/
int air_quality_get_spitfp_error_count(AirQuality *air_quality, uint32_t *ret_error_count_ack_checksum, uint32_t *ret_error_count_message_checksum, uint32_t *ret_error_count_frame, uint32_t *ret_error_count_overflow);
/**
* \ingroup BrickletAirQuality
*
* Sets the bootloader mode and returns the status after the requested
* mode change was instigated.
*
* You can change from bootloader mode to firmware mode and vice versa. A change
* from bootloader mode to firmware mode will only take place if the entry function,
* device identifier and CRC are present and correct.
*
* This function is used by Brick Viewer during flashing. It should not be
* necessary to call it in a normal user program.
*/
int air_quality_set_bootloader_mode(AirQuality *air_quality, uint8_t mode, uint8_t *ret_status);
/**
* \ingroup BrickletAirQuality
*
* Returns the current bootloader mode, see {@link air_quality_set_bootloader_mode}.
*/
int air_quality_get_bootloader_mode(AirQuality *air_quality, uint8_t *ret_mode);
/**
* \ingroup BrickletAirQuality
*
* Sets the firmware pointer for {@link air_quality_write_firmware}. The pointer has
* to be increased by chunks of size 64. The data is written to flash
* every 4 chunks (which equals to one page of size 256).
*
* This function is used by Brick Viewer during flashing. It should not be
* necessary to call it in a normal user program.
*/
int air_quality_set_write_firmware_pointer(AirQuality *air_quality, uint32_t pointer);
/**
* \ingroup BrickletAirQuality
*
* Writes 64 Bytes of firmware at the position as written by
* {@link air_quality_set_write_firmware_pointer} before. The firmware is written
* to flash every 4 chunks.
*
* You can only write firmware in bootloader mode.
*
* This function is used by Brick Viewer during flashing. It should not be
* necessary to call it in a normal user program.
*/
int air_quality_write_firmware(AirQuality *air_quality, uint8_t data[64], uint8_t *ret_status);
/**
* \ingroup BrickletAirQuality
*
* Sets the status LED configuration. By default the LED shows
* communication traffic between Brick and Bricklet, it flickers once
* for every 10 received data packets.
*
* You can also turn the LED permanently on/off or show a heartbeat.
*
* If the Bricklet is in bootloader mode, the LED is will show heartbeat by default.
*/
int air_quality_set_status_led_config(AirQuality *air_quality, uint8_t config);
/**
* \ingroup BrickletAirQuality
*
* Returns the configuration as set by {@link air_quality_set_status_led_config}
*/
int air_quality_get_status_led_config(AirQuality *air_quality, uint8_t *ret_config);
/**
* \ingroup BrickletAirQuality
*
* Returns the temperature as measured inside the microcontroller. The
* value returned is not the ambient temperature!
*
* The temperature is only proportional to the real temperature and it has bad
* accuracy. Practically it is only useful as an indicator for
* temperature changes.
*/
int air_quality_get_chip_temperature(AirQuality *air_quality, int16_t *ret_temperature);
/**
* \ingroup BrickletAirQuality
*
* Calling this function will reset the Bricklet. All configurations
* will be lost.
*
* After a reset you have to create new device objects,
* calling functions on the existing ones will result in
* undefined behavior!
*/
int air_quality_reset(AirQuality *air_quality);
/**
* \ingroup BrickletAirQuality
*
* Writes a new UID into flash. If you want to set a new UID
* you have to decode the Base58 encoded UID string into an
* integer first.
*
* We recommend that you use Brick Viewer to change the UID.
*/
int air_quality_write_uid(AirQuality *air_quality, uint32_t uid);
/**
* \ingroup BrickletAirQuality
*
* Returns the current UID as an integer. Encode as
* Base58 to get the usual string version.
*/
int air_quality_read_uid(AirQuality *air_quality, uint32_t *ret_uid);
/**
* \ingroup BrickletAirQuality
*
* Returns the UID, the UID where the Bricklet is connected to,
* the position, the hardware and firmware version as well as the
* device identifier.
*
* The position can be 'a', 'b', 'c', 'd', 'e', 'f', 'g' or 'h' (Bricklet Port).
* A Bricklet connected to an :ref:`Isolator Bricklet <isolator_bricklet>` is always at
* position 'z'.
*
* The device identifier numbers can be found :ref:`here <device_identifier>`.
* |device_identifier_constant|
*/
int air_quality_get_identity(AirQuality *air_quality, char ret_uid[8], char ret_connected_uid[8], char *ret_position, uint8_t ret_hardware_version[3], uint8_t ret_firmware_version[3], uint16_t *ret_device_identifier);
#ifdef __cplusplus
}
#endif
#endif