From 9ea0d83ed3a8bcc9976a4c89daa55b322a12fd99 Mon Sep 17 00:00:00 2001 From: Jake Drahos <j@kedrahos.com> Date: Mon, 31 Oct 2016 17:07:47 -0500 Subject: [PATCH] Replaced lambda with bind PLEASE be supported on ground station --- groundStation/src/vrpn_tracker.cpp | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/groundStation/src/vrpn_tracker.cpp b/groundStation/src/vrpn_tracker.cpp index df5d9eb49..7f9b56a99 100644 --- a/groundStation/src/vrpn_tracker.cpp +++ b/groundStation/src/vrpn_tracker.cpp @@ -1,5 +1,6 @@ #include <iostream> #include <algorithm> +#include <functional> #include "vrpn_Tracker.h" #include "quat.h" @@ -111,6 +112,20 @@ struct ucart_vrpn_tracker { microcart::Tracker * t; }; +void cb_wrapper(void (*cb)(struct ucart_vrpn_TrackerData *), + const microcart::TrackerData &td) +{ + struct ucart_vrpn_TrackerData data; + data.x = td.x; + data.y = td.y; + data.z = td.z; + data.pitch = td.pitch; + data.roll = td.roll; + data.yaw = td.yaw; + data.fps = td.fps; + (*cb)(&data); +} + extern "C" { struct ucart_vrpn_tracker * ucart_vrpn_tracker_createInstance( @@ -135,16 +150,8 @@ extern "C" void (*cb)(struct ucart_vrpn_TrackerData *)) { try { - inst->t->addCallback([cb](const microcart::TrackerData & td) { - struct ucart_vrpn_TrackerData data; - data.x = td.x; - data.y = td.y; - data.z = td.z; - data.pitch = td.pitch; - data.roll = td.roll; - data.yaw = td.yaw; - (*cb)(&data); - }); + auto new_cb = bind(cb_wrapper, cb, std::placeholders::_1); + inst->t->addCallback(new_cb); } catch(...) { return -1; } -- GitLab