From 3158cafefd7684a783a15812a10b5104566730d5 Mon Sep 17 00:00:00 2001 From: Paulo Neves Date: Mon, 12 Jun 2017 21:43:01 +0200 Subject: [PATCH] AP_Beacon: Added Marvelmind beacon example. This commit includes an example program to run the code of AP_Marvelmind class. It also includes a dump from the marvelmind serial as well as a script that injects this dump into the example for demonstration. --- .../AP_Marvelmind_test/AP_Marvelmind_test.cpp | 54 ++++++++++++++++++ .../inject_marvelmind_dump.sh | 9 +++ .../examples/AP_Marvelmind_test/sample.dump | Bin 0 -> 21219 bytes .../examples/AP_Marvelmind_test/wscript | 7 +++ 4 files changed, 70 insertions(+) create mode 100644 libraries/AP_Beacon/examples/AP_Marvelmind_test/AP_Marvelmind_test.cpp create mode 100755 libraries/AP_Beacon/examples/AP_Marvelmind_test/inject_marvelmind_dump.sh create mode 100644 libraries/AP_Beacon/examples/AP_Marvelmind_test/sample.dump create mode 100644 libraries/AP_Beacon/examples/AP_Marvelmind_test/wscript diff --git a/libraries/AP_Beacon/examples/AP_Marvelmind_test/AP_Marvelmind_test.cpp b/libraries/AP_Beacon/examples/AP_Marvelmind_test/AP_Marvelmind_test.cpp new file mode 100644 index 0000000000..eca4337a7f --- /dev/null +++ b/libraries/AP_Beacon/examples/AP_Marvelmind_test/AP_Marvelmind_test.cpp @@ -0,0 +1,54 @@ +/* + simple test of UART interfaces + */ + +#include +#include +#include +#if HAL_OS_POSIX_IO +#include +#endif + +void setup(); +void loop(); + +const AP_HAL::HAL& hal = AP_HAL::get_HAL(); +static AP_SerialManager serial_manager; +AP_Beacon beacon{serial_manager}; + +// try to set the object value but provide diagnostic if it failed +void set_object_value(const void *object_pointer, + const struct AP_Param::GroupInfo *group_info, + const char *name, float value) +{ + if (!AP_Param::set_object_value(object_pointer, group_info, name, value)) { + printf("WARNING: AP_Param::set object value \"%s::%s\" Failed.\n", + group_info->name, name); + } +} + +void setup(void) +{ + set_object_value(&beacon, beacon.var_info, "_TYPE", 2.0f); + set_object_value(&serial_manager, serial_manager.var_info, "0_PROTOCOL", 13.0f); + serial_manager.init(); + beacon.init(); +} + +void loop(void) +{ + static int count = 0; + beacon.update(); + Vector3f pos; + float accuracy = 0.0f; + beacon.get_vehicle_position_ned(pos, accuracy); + if (pos.x > 0.001f) { + printf("%f %f %f\n", pos.x, pos.y, pos.z); + count++; + } + hal.scheduler->delay(1000); + if (count == 3) + exit(0); +} + +AP_HAL_MAIN(); diff --git a/libraries/AP_Beacon/examples/AP_Marvelmind_test/inject_marvelmind_dump.sh b/libraries/AP_Beacon/examples/AP_Marvelmind_test/inject_marvelmind_dump.sh new file mode 100755 index 0000000000..fc47098050 --- /dev/null +++ b/libraries/AP_Beacon/examples/AP_Marvelmind_test/inject_marvelmind_dump.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +./waf configure --board=linux --debug +./waf build --target=examples/AP_Marvelmind_test -j6 +repo_root="$(git rev-parse --show-toplevel)/" +"$repo_root/build/linux-debug/examples/AP_Marvelmind_test" -A tcp:127.0.0.1:5111 & +sleep 1 +cat ${repo_root}/libraries/AP_Beacon/examples/AP_Marvelmind_test/sample.dump| socat - tcp:127.0.0.1:5111 +wait diff --git a/libraries/AP_Beacon/examples/AP_Marvelmind_test/sample.dump b/libraries/AP_Beacon/examples/AP_Marvelmind_test/sample.dump new file mode 100644 index 0000000000000000000000000000000000000000..c6bf5a25a59c9e5315874b5862bbd80833409da0 GIT binary patch literal 21219 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 literal 0 HcmV?d00001 diff --git a/libraries/AP_Beacon/examples/AP_Marvelmind_test/wscript b/libraries/AP_Beacon/examples/AP_Marvelmind_test/wscript new file mode 100644 index 0000000000..719ec151ba --- /dev/null +++ b/libraries/AP_Beacon/examples/AP_Marvelmind_test/wscript @@ -0,0 +1,7 @@ +#!/usr/bin/env python +# encoding: utf-8 + +def build(bld): + bld.ap_example( + use='ap', + )