]> git.itanic.dy.fi Git - BME280_driver/blobdiff - bmed.c
Hide excess debug messages by default
[BME280_driver] / bmed.c
diff --git a/bmed.c b/bmed.c
index c00cfbbe5ba8a5ae8117da84c647aa32d8b0f19c..ff3e46fa74f3899c69872cc514d33c5ba81eee12 100644 (file)
--- a/bmed.c
+++ b/bmed.c
@@ -43,6 +43,10 @@ struct event_handler {
        char *name;
 };
 
+int exit_all = 0;
+
+#define EXTRA_DEBUG 0
+
 #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
 #define min(a, b) ((a) < (b) ? (a) : (b))
 #define max(a, b) ((a) > (b) ? (a) : (b))
@@ -64,8 +68,9 @@ int register_event_handler(struct bme280 *bme, struct event_handler *handler)
                return -1;
        }
 
-       printf("Registering handler for %s, fd %d\n",
-               handler->name, handler->ev.data.fd);
+       if (EXTRA_DEBUG)
+               printf("Registering handler for %s, fd %d\n",
+                       handler->name, handler->ev.data.fd);
 
        ev.data.fd = handler->ev.data.fd;
        ev.data.ptr = handler;
@@ -143,7 +148,8 @@ static int handle_connection_state(struct event_handler *ptr)
                        goto out_free;
                }
 
-               printf("%s: Got %s", __func__, conn->buf);
+               if (EXTRA_DEBUG)
+                       printf("%s: Got %s", __func__, conn->buf);
 
                conn->min_timestamp = atoi(conn->buf);
        }
@@ -193,7 +199,9 @@ static int handle_connection_state(struct event_handler *ptr)
        }
 
 out_free:
-       printf("%s: Closing socket %d\n", __func__, conn->fd);
+       if (EXTRA_DEBUG)
+               printf("%s: Closing socket %d\n", __func__, conn->fd);
+
        close(conn->fd);
        free(conn);
 
@@ -244,6 +252,7 @@ static void *event_handler(void *arg)
        struct sockaddr_in addr;
        struct listening_socket incoming;
        int sockfd, ret;
+       int enable = 1;
 
        bzero(&addr, sizeof(addr));
        bzero(&incoming, sizeof(incoming));
@@ -251,11 +260,15 @@ static void *event_handler(void *arg)
        sockfd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0);
        if (sockfd < 0) {
                printf("Failed to create socket: %m\n");
-               return NULL;
+               goto out;
        }
 
+       ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &enable, sizeof(int));
+       if (ret < 0)
+               printf("Error setting SO_REUSEADDR: %m\n");
+
        addr.sin_family = AF_INET;
-       addr.sin_port = htons(6000);
+       addr.sin_port = htons(8347);
        addr.sin_addr.s_addr = INADDR_ANY;
 
        ret = bind(sockfd, (struct sockaddr *)&addr, sizeof(addr));
@@ -289,12 +302,14 @@ static void *event_handler(void *arg)
                struct epoll_event ev;
                struct event_handler *h;
 
-               printf("%s: Waiting for events..\n", __func__);
+               if (EXTRA_DEBUG)
+                       printf("%s: Waiting for events..\n", __func__);
+
                ret = epoll_wait(bme->epollfd, &ev, 1, -1);
                if (ret == -1) {
                        if (errno != EINTR) {
                                printf("epoll_wait: %m\n");
-                               return NULL;
+                               goto close_socket;
                        }
 
                        continue;
@@ -307,16 +322,20 @@ static void *event_handler(void *arg)
 
                h = ev.data.ptr;
 
-               printf("Handling %s %s event for %s\n",
-                       ev.events & EPOLLIN ? "incoming" : "",
-                       ev.events & EPOLLOUT ? "outgoing" : "",
-                       h->name);
+               if (EXTRA_DEBUG)
+                       printf("Handling %s %s event for %s\n",
+                               ev.events & EPOLLIN ? "incoming" : "",
+                               ev.events & EPOLLOUT ? "outgoing" : "",
+                               h->name);
+
                h->ev = ev;
                h->handle_event(h);
        }
 
 close_socket:
        close(sockfd);
+out:
+       exit_all = 1;
 
        return NULL;
 }
@@ -431,6 +450,10 @@ static int stream_sensor_data_forced_mode(struct bme280 *bme)
                struct tm *now;
                time_t t;
 
+               ret = 0;
+               if (exit_all)
+                       break;
+
                ret = bme280_set_sensor_mode(BME280_FORCED_MODE, dev);
                if (ret) {
                        fprintf(stderr, "Failed to set sensor mode (code %+d).", ret);
@@ -470,6 +493,7 @@ static int stream_sensor_data_forced_mode(struct bme280 *bme)
 
                        printf("%s %0.4lf deg C, %0.4lf hPa, %0.4lf%%, dp: %.3f C\n",
                                s, temp, press, hum, dew);
+                       fflush(stdout);
 
                        pthread_mutex_lock(&bme->lock);
                        for (i = 0; i < ARRAY_SIZE(bme->data) - 1; i++)