aboutsummaryrefslogtreecommitdiff
path: root/src/drivers/hott/hott_sensors
diff options
context:
space:
mode:
authorSimon Wilks <sjwilks@gmail.com>2013-07-13 01:08:06 +0200
committerSimon Wilks <sjwilks@gmail.com>2013-07-13 01:08:06 +0200
commitb500cce31ef4ec3c68a5c98e90e3e6dbe10d6722 (patch)
treecb73c3bce48473d6f3049410cc8d0efaf10248ed /src/drivers/hott/hott_sensors
parenta18c6cea18aff92f226fdcd9da666ef1a9b6c99b (diff)
downloadpx4-firmware-b500cce31ef4ec3c68a5c98e90e3e6dbe10d6722.tar.gz
px4-firmware-b500cce31ef4ec3c68a5c98e90e3e6dbe10d6722.tar.bz2
px4-firmware-b500cce31ef4ec3c68a5c98e90e3e6dbe10d6722.zip
Major refactor of HoTT drivers and finished sensor read implementation.
Diffstat (limited to 'src/drivers/hott/hott_sensors')
-rw-r--r--src/drivers/hott/hott_sensors/hott_sensors.cpp (renamed from src/drivers/hott/hott_sensors/hott_sensors.c)40
-rw-r--r--src/drivers/hott/hott_sensors/module.mk6
2 files changed, 28 insertions, 18 deletions
diff --git a/src/drivers/hott/hott_sensors/hott_sensors.c b/src/drivers/hott/hott_sensors/hott_sensors.cpp
index 41ca0c92f..ad7e74e62 100644
--- a/src/drivers/hott/hott_sensors/hott_sensors.c
+++ b/src/drivers/hott/hott_sensors/hott_sensors.cpp
@@ -55,6 +55,14 @@
#include "../comms.h"
#include "../messages.h"
+#define DEFAULT_UART "/dev/ttyS2"; /**< USART5 */
+
+/* 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 */
@@ -64,7 +72,7 @@ static const char commandline_usage[] = "usage: hott_sensors start|status|stop [
/**
* Deamon management function.
*/
-__EXPORT int hott_sensors_main(int argc, char *argv[]);
+extern "C" __EXPORT int hott_sensors_main(int argc, char *argv[]);
/**
* Mainloop of daemon.
@@ -96,11 +104,13 @@ int
recv_data(int uart, uint8_t *buffer, size_t *size, uint8_t *id)
{
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) {
@@ -129,7 +139,7 @@ hott_sensors_thread_main(int argc, char *argv[])
thread_running = true;
- const char *device = "/dev/ttyS2"; /**< Default telemetry port: USART5 */
+ const char *device = DEFAULT_UART;
/* read commandline arguments */
for (int i = 0; i < argc && argv[i]; i++) {
@@ -151,20 +161,20 @@ hott_sensors_thread_main(int argc, char *argv[])
thread_running = false;
}
- pub_messages_init();
+ init_pub_messages();
- uint8_t buffer[MESSAGE_BUFFER_SIZE];
+ uint8_t buffer[MAX_MESSAGE_BUFFER_SIZE];
size_t size = 0;
uint8_t id = 0;
while (!thread_should_exit) {
// Currently we only support a General Air Module sensor.
- build_gam_request(&buffer, &size);
+ build_gam_request(&buffer[0], &size);
send_poll(uart, buffer, size);
// The sensor will need a little time before it starts sending.
usleep(5000);
- recv_data(uart, &buffer, &size, &id);
+ recv_data(uart, &buffer[0], &size, &id);
// Determine which moduel sent it and process accordingly.
if (id == GAM_SENSOR_ID) {
@@ -199,12 +209,12 @@ hott_sensors_main(int argc, char *argv[])
}
thread_should_exit = false;
- deamon_task = task_spawn(daemon_name,
- SCHED_DEFAULT,
- SCHED_PRIORITY_MAX - 40,
- 2048,
- hott_sensors_thread_main,
- (argv) ? (const char **)&argv[2] : (const char **)NULL);
+ deamon_task = task_spawn_cmd(daemon_name,
+ SCHED_DEFAULT,
+ SCHED_PRIORITY_MAX - 40,
+ 2048,
+ hott_sensors_thread_main,
+ (argv) ? (const char **)&argv[2] : (const char **)NULL);
exit(0);
}
diff --git a/src/drivers/hott/hott_sensors/module.mk b/src/drivers/hott/hott_sensors/module.mk
index ca65d3de2..b5f5762ba 100644
--- a/src/drivers/hott/hott_sensors/module.mk
+++ b/src/drivers/hott/hott_sensors/module.mk
@@ -37,6 +37,6 @@
MODULE_COMMAND = hott_sensors
-SRCS = hott_sensors.c \
- ../messages.c \
- ../comms.c
+SRCS = hott_sensors.cpp \
+ ../messages.cpp \
+ ../comms.cpp