Added OSC send message functions. Also fixed oscpack address string size check.
This commit is contained in:
parent
a6992a45c8
commit
3b36d8b689
@ -6,6 +6,7 @@
|
||||
#include <thread>
|
||||
#include "osc/OscReceivedElements.h"
|
||||
#include "osc/OscPacketListener.h"
|
||||
#include "osc/OscOutboundPacketStream.h"
|
||||
#include "ip/UdpSocket.h"
|
||||
|
||||
//Class from OSC library (oscpack). This calls our handleOscMsg() on every new message.
|
||||
@ -169,6 +170,36 @@ DLLEXPORT char* getStringData(char* targetString, unsigned int targetSize, unsig
|
||||
return targetString;
|
||||
}
|
||||
|
||||
DLLEXPORT void sendOscMessageInt(char* ip, unsigned int port, char* address, int payload)
|
||||
{
|
||||
UdpTransmitSocket transmitSocket(IpEndpointName(ip, port));
|
||||
char buffer[1024];
|
||||
osc::OutboundPacketStream p(buffer, 1024);
|
||||
p << osc::BeginMessage(address) << payload << osc::EndMessage;
|
||||
|
||||
transmitSocket.Send(p.Data(), p.Size());
|
||||
}
|
||||
|
||||
DLLEXPORT void sendOscMessageFloat(char* ip, unsigned int port, char* address, float payload)
|
||||
{
|
||||
UdpTransmitSocket transmitSocket(IpEndpointName(ip, port));
|
||||
char buffer[1024];
|
||||
osc::OutboundPacketStream p(buffer, 1024);
|
||||
p << osc::BeginMessage(address) << payload << osc::EndMessage;
|
||||
|
||||
transmitSocket.Send(p.Data(), p.Size());
|
||||
}
|
||||
|
||||
DLLEXPORT void sendOscMessageString(char* ip, unsigned int port, char* address, char* payload)
|
||||
{
|
||||
UdpTransmitSocket transmitSocket(IpEndpointName(ip, port));
|
||||
char buffer[1024];
|
||||
osc::OutboundPacketStream p(buffer, 1024);
|
||||
p << osc::BeginMessage(address) << payload << osc::EndMessage;
|
||||
|
||||
transmitSocket.Send(p.Data(), p.Size());
|
||||
}
|
||||
|
||||
void removeStoredString(int stringId)
|
||||
{
|
||||
for (UINT i = 0; i < storedStrings.size(); i++)
|
||||
|
@ -24,6 +24,9 @@ extern "C" DLLEXPORT int close(unsigned int clearListeners = 1);
|
||||
extern "C" DLLEXPORT int addListener(LPCSTR address, unsigned int messageID, unsigned int dataType = OSC_TYPE_ALL);
|
||||
extern "C" DLLEXPORT int removeListener(LPCSTR address);
|
||||
extern "C" DLLEXPORT char* getStringData(char* targetString, unsigned int targetSize, unsigned int StringID);
|
||||
extern "C" DLLEXPORT void sendOscMessageInt(char* ip, unsigned int port, char* address, int payload);
|
||||
extern "C" DLLEXPORT void sendOscMessageFloat(char* ip, unsigned int port, char* address, float payload);
|
||||
extern "C" DLLEXPORT void sendOscMessageString(char* ip, unsigned int port, char* address, char* payload);
|
||||
int handleOscMsg(const osc::ReceivedMessage& m);
|
||||
bool isMatchingOscType(unsigned int msgType, unsigned int listenerTypeField);
|
||||
bool isMatchingOSCAddress(const char* address, const char* pattern);
|
||||
|
@ -362,7 +362,7 @@ OutboundPacketStream& OutboundPacketStream::operator<<( const BeginMessage& rhs
|
||||
|
||||
//std::strcpy( messageCursor_, rhs.addressPattern );
|
||||
std::size_t rhsLength = std::strlen(rhs.addressPattern);
|
||||
strcpy_s(messageCursor_, rhsLength, rhs.addressPattern);
|
||||
strcpy_s(messageCursor_, rhsLength+1, rhs.addressPattern); //Size check is done manually earlier
|
||||
messageCursor_ += rhsLength + 1;
|
||||
|
||||
// zero pad to 4-byte boundary
|
||||
@ -605,7 +605,7 @@ OutboundPacketStream& OutboundPacketStream::operator<<( const char *rhs )
|
||||
*(--typeTagsCurrent_) = STRING_TYPE_TAG;
|
||||
//std::strcpy( argumentCurrent_, rhs );
|
||||
std::size_t rhsLength = std::strlen(rhs);
|
||||
strcpy_s(argumentCurrent_, rhsLength, rhs);
|
||||
strcpy_s(argumentCurrent_, rhsLength+1, rhs);
|
||||
argumentCurrent_ += rhsLength + 1;
|
||||
|
||||
// zero pad to 4-byte boundary
|
||||
|
Loading…
x
Reference in New Issue
Block a user