From e43149610e66ce90377df4a56bcf66cbb4980a91 Mon Sep 17 00:00:00 2001 From: Janis Streib <me@janis-streib.de> Date: Fri, 31 Dec 2021 18:09:05 +0100 Subject: [PATCH] ADD: osc support --- src/G4Export.cpp | 23 +++++++++++++++++++---- 1 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/G4Export.cpp b/src/G4Export.cpp index f4e70bf..53f0527 100644 --- a/src/G4Export.cpp +++ b/src/G4Export.cpp @@ -6,11 +6,16 @@ #include "G4Hub.h" #include <string.h> #include <unistd.h> +#include <memory> #include "clipp.h" +#include <ip/UdpSocket.h> +#include <osc/OscOutboundPacketStream.h> using namespace clipp; using std::cout; using std::string; +#define OUTPUT_BUFFER_SIZE 512 int RunCollect=0; +std::unique_ptr<UdpTransmitSocket> transmitSocket; void* Collect(REND_STRUCT* prs){ @@ -39,11 +44,18 @@ i++; prs->hubreadmap=0; prs->tot_hubs_on_system=prs->pTrk->GetHubsPno(prs); + char buffer[OUTPUT_BUFFER_SIZE]; + osc::OutboundPacketStream p( buffer, OUTPUT_BUFFER_SIZE ); + + p << osc::BeginBundleImmediate; for (int i=0;i<prs->numHub;i++){ auto dat = prs->hubList[i].GetPnoData()[0]; - printf("sns: %i: [%f;%f;%f],[%f,%f,%f]\n",i, dat[0],dat[1],dat[2], dat[3],dat[4],dat[5]); + //printf("sns: %i: [%f;%f;%f],[%f,%f,%f]\n",i, dat[0],dat[1],dat[2], dat[3],dat[4],dat[5]); + p << osc::BeginMessage( (string("/hub/") + std::to_string(i)).c_str() ) + << dat[0] << dat[1] << dat[2] << dat[3] << dat[4] << dat[5] << osc::EndMessage; } - + p << osc::EndBundle; + transmitSocket->Send( p.Data(), p.Size() ); usleep(15000); // usleep(8000); } @@ -56,17 +68,20 @@ CG4Trk trk; REND_STRUCT rs; string cfgFile; - string oscSink; + string oscSinkAddr; + int oscSinkPort; auto cli = ( value("c4g configuration file", cfgFile), - value("osc sink", oscSink) + value("osc sink address", oscSinkAddr), + integer("osc sink port", oscSinkPort) ); if(!parse(argc, argv, cli)) { cout << make_man_page(cli, argv[0]); return 1; } + transmitSocket = std::make_unique<UdpTransmitSocket>( IpEndpointName( oscSinkAddr.c_str(), oscSinkPort ) ); memset(rs.viewTrans,0,sizeof(float)*3); rs.srcScale=rs.senScale=0.5; rs.counter=0; -- Gitblit v1.9.1