aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/hott/hott_telemetry
diff options
context:
space:
mode:
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.mk6
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