/*
 * Copyright (c) 2018 Linaro Ltd.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr.h>
#include <device.h>
#include <sensor.h>
#include <misc/printk.h>

static void do_main(struct device *dev)
{
	struct sensor_value co2, voc, voltage, current;

	while (1) {
		sensor_sample_fetch(dev);
		sensor_channel_get(dev, SENSOR_CHAN_CO2, &co2);
		sensor_channel_get(dev, SENSOR_CHAN_VOC, &voc);
		sensor_channel_get(dev, SENSOR_CHAN_VOLTAGE, &voltage);
		sensor_channel_get(dev, SENSOR_CHAN_CURRENT, &current);

		printk("Co2: %d.%06dppm; VOC: %d.%06dppb\n", co2.val1, co2.val2,
				voc.val1, voc.val2);
		printk("Voltage: %d.%06dV; Current: %d.%06dA\n\n", voltage.val1,
				voltage.val2, current.val1, current.val2);

		k_sleep(1000);
	}

}

void main(void)
{
	struct device *dev;

	dev = device_get_binding(DT_AMS_CCS811_0_LABEL);
	if (!dev) {
		printk("Failed to get device binding");
		return;
	}

	printk("device is %p, name is %s\n", dev, dev->config->name);

	do_main(dev);
}
