diff --git a/Examples/Linux/Build/Release/ardrone_navigation b/Examples/Linux/Build/Release/ardrone_navigation index c8daaf12ae9a3db9c828285e4afa17b76eeea3b1..7b131496757ee4b6c93eaa3fb7e98889c41e5860 100755 Binary files a/Examples/Linux/Build/Release/ardrone_navigation and b/Examples/Linux/Build/Release/ardrone_navigation differ diff --git a/Examples/Linux/Build/Release/common/mobile_main b/Examples/Linux/Build/Release/common/mobile_main deleted file mode 100755 index c8daaf12ae9a3db9c828285e4afa17b76eeea3b1..0000000000000000000000000000000000000000 Binary files a/Examples/Linux/Build/Release/common/mobile_main and /dev/null differ diff --git a/Examples/Linux/Build/Release/common/sym_mobile_main b/Examples/Linux/Build/Release/common/sym_mobile_main index 74c79a38a47f6dd523c0b74ab83fd4f10702ee02..efb7a9c35a853deabfbc382d4621793da4fd812e 100755 Binary files a/Examples/Linux/Build/Release/common/sym_mobile_main and b/Examples/Linux/Build/Release/common/sym_mobile_main differ diff --git a/Examples/Linux/Makefile b/Examples/Linux/Makefile index 44fa57fe230a6007883a7e5e725834268b3cf2b8..83d3c2f35cb0c50aed34b768b64f1f19f1db75a9 100644 --- a/Examples/Linux/Makefile +++ b/Examples/Linux/Makefile @@ -4,7 +4,7 @@ all: @$(MAKE) -C ../../ARDroneLib/Soft/Build USE_LINUX=yes @$(MAKE) -C Navigation/Build USE_LINUX=yes - @$(MAKE) -C custom_test/Build USE_LINUX=yes + @$(MAKE) -C drone_control/Build USE_LINUX=yes @$(MAKE) -C bt_test/Build USE_LINUX=yes @$(MAKE) -C sdk_demo/Build USE_LINUX=yes @$(MAKE) -C video_demo/Build USE_LINUX=yes @@ -14,7 +14,7 @@ all: $(MAKECMDGOALS): @$(MAKE) -C ../../ARDroneLib/Soft/Build USE_LINUX=yes $(MAKECMDGOALS) @$(MAKE) -C Navigation/Build USE_LINUX=yes $(MAKECMDGOALS) - @$(MAKE) -C custom_test/Build USE_LINUX=yes $(MAKECMDGOALS) + @$(MAKE) -C drone_control/Build USE_LINUX=yes $(MAKECMDGOALS) @$(MAKE) -C bt_test/Build USE_LINUX=yes $(MAKECMDGOALS) @$(MAKE) -C sdk_demo/Build USE_LINUX=yes $(MAKECMDGOALS) @$(MAKE) -C video_demo/Build USE_LINUX=yes $(MAKECMDGOALS) diff --git a/Examples/Linux/drone_control/Sources/bt_connect.c b/Examples/Linux/drone_control/Sources/bt_connect.c index 2d77d450a0bbe00a2064895b4a0e4ef3bb606ad1..41318d8cb330eafb8660f2bfea6cdbc65aaf46cf 100644 --- a/Examples/Linux/drone_control/Sources/bt_connect.c +++ b/Examples/Linux/drone_control/Sources/bt_connect.c @@ -20,11 +20,25 @@ #include "bt_connect.h" -char bt_data[2048]; +bt_data_t bt_data = {0}; + +float32_t uint2float(uint32_t v) { + return *(float*)(&v); +} void update_data(char *line) { - memcpy(bt_data, line, sizeof(bt_data)); - printf("received: [%s]\n", line); + static uint32_t value[7]; + sscanf(line, "=%x %x %x %x %x %x %x %d %d %hhd", + &bt_data.microsecond, + &value[0], &value[1], &value[2], + &value[3], &value[4], &value[5], + &bt_data.scroll_x, &bt_data.scroll_y, &bt_data.click); + bt_data.accel_x = uint2float(value[0]); + bt_data.accel_y = uint2float(value[1]); + bt_data.accel_z = uint2float(value[2]); + bt_data.gyro_x = uint2float(value[3]); + bt_data.gyro_y = uint2float(value[4]); + bt_data.gyro_z = uint2float(value[5]); } bdaddr_t find_client(char *target) { diff --git a/Examples/Linux/drone_control/Sources/bt_connect.h b/Examples/Linux/drone_control/Sources/bt_connect.h index 91e547f1da8c5855470237c4e9b89365ca15b3e5..c645c3db4e5df235da8fe2da9a870694a5458cd8 100644 --- a/Examples/Linux/drone_control/Sources/bt_connect.h +++ b/Examples/Linux/drone_control/Sources/bt_connect.h @@ -4,7 +4,20 @@ #include <config.h> #include <VP_Api/vp_api_thread_helper.h> -extern char bt_data[2048]; +typedef struct _bt_data_t { + uint32_t microsecond; + float32_t accel_x; + float32_t accel_y; + float32_t accel_z; + float32_t gyro_x; + float32_t gyro_y; + float32_t gyro_z; + int32_t scroll_x; + int32_t scroll_y; + bool_t click; +} bt_data_t; + +extern bt_data_t bt_data; PROTO_THREAD_ROUTINE( bluetooth_connect, data ); diff --git a/Examples/Linux/drone_control/Sources/navdata.c b/Examples/Linux/drone_control/Sources/navdata.c index a890c43bd63dc9bfc0e0e59224237e1f90fff88e..f800f1e9d0801491f851ad84c2091bcfe4541d58 100644 --- a/Examples/Linux/drone_control/Sources/navdata.c +++ b/Examples/Linux/drone_control/Sources/navdata.c @@ -1,13 +1,15 @@ #include <ardrone_tool/Navdata/ardrone_navdata_client.h> -#include <Navdata/navdata.h> -#include <Control/control.h> #include <stdio.h> #include <stdlib.h> #define CTRL_STATES_STRING #include "control_states.h" +#include "navdata.h" +#include "control.h" +#include "bt_connect.h" + /* Initialization local variables before event loop */ inline C_RESULT demo_navdata_client_init( void* data ) { @@ -18,17 +20,22 @@ inline C_RESULT demo_navdata_client_init( void* data ) inline C_RESULT demo_navdata_client_process( const navdata_unpacked_t* const navdata ) { const navdata_demo_t*nd = &navdata->navdata_demo; + const controller_info_t*cs = &controller_state; printf("===================== Navdata for flight demonstrations =====================\n"); printf("Control state : %i / Battery level : %i mV\n", nd->ctrl_state, nd->vbat_flying_percentage); printf("Altitude : %i\n",nd->altitude); printf("Orientation : [Theta] %4.3f [Phi] %4.3f [Psi] %4.3f\n", nd->theta, nd->phi, nd->psi); - printf("Speed : [vX] %4.3f [vY] %4.3f [vZ] %4.3f\n",nd->vx,nd->vy,nd->vz); + printf("Speed : [vX] %4.3f [vY] %4.3f [vZ] %4.3f\n",nd->vx,nd->vy,nd->vz); printf("============================= Controller states =============================\n"); - printf("Start : %i / Emergency : %i\n", controller_state.start, controller_state.emergency); - printf("[Gaz] %4.3f\n", controller_state.gaz); - printf("[Theta] %4.3f [Phi] %4.3f [Yaw] %4.3f [magnet-Psi] %4.3f\n", controller_state.theta, controller_state.phi, controller_state.yaw, controller_state.magneto_psi); - printf("Mode : [hover] %i [yaw] %i [absolute] %i [psi-accuracy] %4.3f\n", controller_state.hover_mode, controller_state.yaw_mode, controller_state.absolute_mode, controller_state.magneto_psi_accuracy); + printf("Start : %i / Emergency : %i\n", cs->start, cs->emergency); + printf("[Theta] %4.3f [Phi] %4.3f [Gaz] %4.3f [Yaw] %4.3f [magnet-Psi] %4.3f\n", cs->theta, cs->phi, cs->gaz, cs->yaw, cs->magneto_psi); + printf("Mode : [hover] %i [yaw] %i [absolute] %i [psi-accuracy] %4.3f\n", cs->hover_mode, cs->yaw_mode, cs->absolute_mode, cs->magneto_psi_accuracy); + printf("============================== Bluetooth data ===============================\n"); + printf("microsecond: %d\n", bt_data.microsecond); + printf("acceleration: [x] %4.3f [y] %4.3f [z] %4.3f\n", bt_data.accel_x, bt_data.accel_y, bt_data.accel_z); + printf("gyrometer: [x] %4.3f [y] %4.3f [z] %4.3f\n", bt_data.gyro_x, bt_data.gyro_y, bt_data.gyro_z); + printf("scroll: [x] %4.3f [y] %4.3f / click: %i\n", bt_data.scroll_x, bt_data.scroll_y, bt_data.click); return C_OK; }