diff options
Diffstat (limited to 'src/drivers/hott/hott_telemetry')
-rw-r--r-- | src/drivers/hott/hott_telemetry/hott_telemetry.cpp (renamed from src/drivers/hott/hott_telemetry/hott_telemetry.c) | 33 | ||||
-rw-r--r-- | src/drivers/hott/hott_telemetry/module.mk | 6 |
2 files changed, 27 insertions, 12 deletions
diff --git a/src/drivers/hott/hott_telemetry/hott_telemetry.c b/src/drivers/hott/hott_telemetry/hott_telemetry.cpp index a88f357f6..1c68e06b1 100644 --- a/src/drivers/hott/hott_telemetry/hott_telemetry.c +++ b/src/drivers/hott/hott_telemetry/hott_telemetry.cpp @@ -57,6 +57,14 @@ #include "../comms.h" #include "../messages.h" +#define DEFAULT_UART "/dev/ttyS1"; /**< USART2 */ + +/* Oddly, ERROR is not defined for C++ */ +#ifdef ERROR +# undef ERROR +#endif +static const int ERROR = -1; + static int thread_should_exit = false; /**< Deamon exit flag */ static int thread_running = false; /**< Deamon status flag */ static int deamon_task; /**< Handle of deamon task / thread */ @@ -66,7 +74,7 @@ static const char commandline_usage[] = "usage: hott_telemetry start|status|stop /** * Deamon management function. */ -__EXPORT int hott_telemetry_main(int argc, char *argv[]); +extern "C" __EXPORT int hott_telemetry_main(int argc, char *argv[]); /** * Mainloop of daemon. @@ -80,11 +88,14 @@ int recv_req_id(int uart, uint8_t *id) { static const int timeout_ms = 1000; // TODO make it a define - struct pollfd fds[] = { { .fd = uart, .events = POLLIN } }; uint8_t mode; + + struct pollfd fds; + fds.fd = uart; + fds.events = POLLIN; - if (poll(fds, 1, timeout_ms) > 0) { + if (poll(&fds, 1, timeout_ms) > 0) { /* Get the mode: binary or text */ read(uart, &mode, sizeof(mode)); @@ -109,11 +120,13 @@ recv_data(int uart, uint8_t *buffer, size_t *size, uint8_t *id) usleep(5000); static const int timeout_ms = 1000; - struct pollfd fds[] = { { .fd = uart, .events = POLLIN } }; + struct pollfd fds; + fds.fd = uart; + fds.events = POLLIN; // XXX should this poll be inside the while loop??? - if (poll(fds, 1, timeout_ms) > 0) { + if (poll(&fds, 1, timeout_ms) > 0) { int i = 0; bool stop_byte_read = false; while (true) { @@ -172,7 +185,7 @@ hott_telemetry_thread_main(int argc, char *argv[]) thread_running = true; - const char *device = "/dev/ttyS1"; /**< Default telemetry port: USART2 */ + const char *device = DEFAULT_UART; /* read commandline arguments */ for (int i = 0; i < argc && argv[i]; i++) { @@ -194,9 +207,9 @@ hott_telemetry_thread_main(int argc, char *argv[]) thread_running = false; } - sub_messages_init(); + init_sub_messages(); - uint8_t buffer[MESSAGE_BUFFER_SIZE]; + uint8_t buffer[MAX_MESSAGE_BUFFER_SIZE]; size_t size = 0; uint8_t id = 0; bool connected = true; @@ -212,7 +225,9 @@ hott_telemetry_thread_main(int argc, char *argv[]) case EAM_SENSOR_ID: build_eam_response(buffer, &size); break; - + case GAM_SENSOR_ID: + build_gam_response(buffer, &size); + break; case GPS_SENSOR_ID: build_gps_response(buffer, &size); break; diff --git a/src/drivers/hott/hott_telemetry/module.mk b/src/drivers/hott/hott_telemetry/module.mk index 7673d7e77..b19cbd14c 100644 --- a/src/drivers/hott/hott_telemetry/module.mk +++ b/src/drivers/hott/hott_telemetry/module.mk @@ -37,6 +37,6 @@ MODULE_COMMAND = hott_telemetry -SRCS = hott_telemetry.c \ - ../messages.c \ - ../comms.c +SRCS = hott_telemetry.cpp \ + ../messages.cpp \ + ../comms.cpp |