| | |
| | | #include "clipp.h" |
| | | #include <ip/UdpSocket.h> |
| | | #include <osc/OscOutboundPacketStream.h> |
| | | #include <sstream> |
| | | |
| | | using namespace clipp; using std::cout; using std::string; |
| | | |
| | | #define OUTPUT_BUFFER_SIZE 512 |
| | | |
| | | int RunCollect=0; |
| | | std::unique_ptr<UdpTransmitSocket> transmitSocket; |
| | | bool use_text = false; |
| | | |
| | | |
| | | void* Collect(REND_STRUCT* prs){ |
| | |
| | | char buffer[OUTPUT_BUFFER_SIZE]; |
| | | osc::OutboundPacketStream p( buffer, OUTPUT_BUFFER_SIZE ); |
| | | |
| | | p << osc::BeginBundleImmediate; |
| | | if(!use_text) { |
| | | 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]); |
| | | 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::BeginMessage( (string("/hub/") + std::to_string(i)).c_str() ); |
| | | std::ostringstream ss; |
| | | if(use_text) { |
| | | ss << "[" << dat[0] << "," << dat[1] << "," << dat[2] << "," << dat[3] << "," << dat[4] << "," << dat[5] << "]"; |
| | | auto res = ss.str(); |
| | | p << res.c_str(); |
| | | } else { |
| | | p << dat[0] << dat[1] << dat[2] << dat[3] << dat[4] << dat[5]; |
| | | } |
| | | p << osc::EndMessage; |
| | | } |
| | | p << osc::EndBundle; |
| | | if(!use_text) { |
| | | p << osc::EndBundle; |
| | | } |
| | | transmitSocket->Send( p.Data(), p.Size() ); |
| | | usleep(15000); |
| | | // usleep(8000); |
| | |
| | | int oscSinkPort; |
| | | |
| | | auto cli = ( |
| | | option("-t", "--text").set(use_text).doc("send strings in osc messages instead of a float bundle"), |
| | | value("c4g configuration file", cfgFile), |
| | | value("osc sink address", oscSinkAddr), |
| | | integer("osc sink port", oscSinkPort) |