diff options
author | Simon Wilks <sjwilks@gmail.com> | 2013-07-13 01:08:06 +0200 |
---|---|---|
committer | Simon Wilks <sjwilks@gmail.com> | 2013-07-13 01:08:06 +0200 |
commit | b500cce31ef4ec3c68a5c98e90e3e6dbe10d6722 (patch) | |
tree | cb73c3bce48473d6f3049410cc8d0efaf10248ed /src/drivers/hott/hott_sensors | |
parent | a18c6cea18aff92f226fdcd9da666ef1a9b6c99b (diff) | |
download | px4-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.mk | 6 |
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 |