1#include <stdio.h>2#include <stdlib.h>3#include <string.h>4#include <assert.h>56#include "hdc1000.h"7#include "hdc1000_params.h"89#include "net/ipv6/addr.h"10#include "xtimer.h"11#include "feucht.h"1213/**14 * HDC1000 device.15 */16static hdc1000_t hdc;1718/* import "ifconfig" shell command, used for printing addresses */19extern int _netif_config(int argc, char **argv);2021int22main(void)23{24 int ret;25 char buf[17];26 int16_t temp, hum;27 ipv6_addr_t remote;2829 if ((ret = hdc1000_init(&hdc, &hdc1000_params[0])) != HDC1000_OK) {30 fprintf(stderr, "Couldn't initialize HDC1000: %d\n", ret);31 return EXIT_FAILURE;32 }3334 if (!ipv6_addr_from_str(&remote, FEUCHT_HOST)) {35 fprintf(stderr, "Address '%s' is malformed\n", FEUCHT_HOST);36 return EXIT_FAILURE;37 }3839 puts("Waiting for address autoconfiguration...");40 xtimer_sleep(3);4142 puts("Configured network interfaces:");43 _netif_config(0, NULL);4445 puts("Initialize protocol backend...");46 if ((ret = init_protocol(&remote))) {47 fprintf(stderr, "init_protocol failed: %d\n", ret);48 return EXIT_FAILURE;49 }5051#ifdef FEUCHT_RUNS52 for (int n = 1; n <= FEUCHT_RUNS; n++) {53#else54 for (;;) {55#endif56 if (hdc1000_read(&hdc, &temp, &hum) != HDC1000_OK) {57 fprintf(stderr, "hdc1000_read failed\n");58 continue;59 }6061 memset(buf, '\0', sizeof(buf));62 ret = snprintf(buf, sizeof(buf) - 1, "%d", hum);6364 assert(ret < sizeof(buf));65 buf[ret] = '\n';6667 if ((ret = update_humidity(buf, ret + 1))) {68 fprintf(stderr, "update_humidity failed: %d\n", ret);69 continue;70 }7172 xtimer_sleep(FEUCHT_INTERVAL);73 }7475 free_protocol();76 return EXIT_SUCCESS;77}