107 lines
2 KiB
C
107 lines
2 KiB
C
|
/*
|
|||
|
|
|||
|
ArdOSC 2.1 - OSC Library for Arduino.
|
|||
|
|
|||
|
-------- Lisence -----------------------------------------------------------
|
|||
|
|
|||
|
ArdOSC
|
|||
|
|
|||
|
The MIT License
|
|||
|
|
|||
|
Copyright (c) 2009 - 2011 recotana( http://recotana.com ) All right reserved
|
|||
|
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#ifndef OSCMessage_h
|
|||
|
#define OSCMessage_h
|
|||
|
|
|||
|
|
|||
|
#include "OSCcommon.h"
|
|||
|
#include "OSCArg.h"
|
|||
|
|
|||
|
#define kTagInt32 'i'
|
|||
|
#define kTagFloat 'f'
|
|||
|
#define kTagString 's'
|
|||
|
#define kTagBlob 'b'
|
|||
|
|
|||
|
#define kTagMidi 'm'
|
|||
|
#define kTagRgba 'r'
|
|||
|
|
|||
|
#define kTagTrue 'T'
|
|||
|
#define kTagFalse 'F'
|
|||
|
|
|||
|
class OSCMessage{
|
|||
|
|
|||
|
private:
|
|||
|
|
|||
|
char *_oscAddress;
|
|||
|
uint16_t _oscAdrSize;
|
|||
|
uint16_t _oscAdrAlignmentSize;
|
|||
|
|
|||
|
|
|||
|
uint16_t _typeTagAlignmentSize;
|
|||
|
uint16_t _argsAlignmentSize;
|
|||
|
|
|||
|
uint16_t _argsNum;
|
|||
|
|
|||
|
OSCArg * _args[kMaxAugument];
|
|||
|
|
|||
|
|
|||
|
uint16_t getMessageSize(void);
|
|||
|
uint16_t getArgAlignmentSize(uint8_t _index);
|
|||
|
|
|||
|
int16_t setArgData( char _type , void *_value , uint8_t _byte, bool _enableAlignment );
|
|||
|
void swap(uint8_t *data1, uint8_t *data2);
|
|||
|
// void get4ByteData(int16_t _index , uint8_t *_data);
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
OSCMessage(void);
|
|||
|
OSCMessage(const char *_oscAddr);
|
|||
|
|
|||
|
~OSCMessage(void);
|
|||
|
|
|||
|
|
|||
|
void flush(void);
|
|||
|
|
|||
|
int16_t setOSCAddress(const char *_addr);
|
|||
|
char * getOSCAddress(void);
|
|||
|
|
|||
|
|
|||
|
int16_t beginMessage( const char *_addr);
|
|||
|
|
|||
|
int16_t getArgsNum(void);
|
|||
|
char getArgTypeTag(int16_t _index);
|
|||
|
|
|||
|
int16_t addArgInt32(int32_t _value);
|
|||
|
int32_t getArgInt32(int16_t _index);
|
|||
|
|
|||
|
#ifdef _USE_FLOAT_
|
|||
|
int16_t addArgFloat(float _value);
|
|||
|
float getArgFloat(int16_t _index);
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef _USE_STRING_
|
|||
|
int16_t addArgString(const char* _value);
|
|||
|
char* getArgStringData(int16_t _index ); ///< get a pointer to the dataof argument [index]. use together with getArgStringSize();
|
|||
|
int16_t getArgString(int16_t _index, char *_rcvstr);
|
|||
|
int16_t getArgStringSize(int16_t _index);
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
friend class OSCServer;
|
|||
|
friend class OSCClient;
|
|||
|
friend class OSCDecoder;
|
|||
|
friend class OSCEncoder;
|
|||
|
friend class Pattern;
|
|||
|
friend class OscMessageSink;
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
#endif
|