simple tester example >>> osc destination & receive
Fork of myOSC_test by
main.cpp
- Committer:
- sfjmt
- Date:
- 2013-08-06
- Revision:
- 1:818cf7a97804
- Parent:
- 0:f76708a93fb3
- Child:
- 2:44f1e5803762
File content as of revision 1:818cf7a97804:
#include "mbed.h" #include "mbedOSC.h" // mbed IP address (server): #ifdef DHCP EthernetNetIf eth; #else EthernetNetIf eth( IpAddr(192,168,12,210),//your mbed IP Address Set IpAddr(255,255,255,0),//Network Mask Set IpAddr(),//Gateway IpAddr()//DNS ); #endif //baud rate int BAUD_RATE = 115200; //uint8_t serverMac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //receive uint8_t receiveIp[] = { 192, 168, 12, 210 }; int receivePort = 5678; //destination. uint8_t destIp[] = { 192, 168, 12, 51}; int destPort = 10000; //send value propaty. char *topAddress = "/mbed"; char *subAddress[3] = {"/test1","/test2","/test3"}; char *requestTopStr[3] = {"mbed1","mbed2","mbed3"}; char *requestSubStr[3] = {"test1","test2","test3"}; //instance OSCMessage recMes; OSCMessage sendMes; OSCClass osc; //OSCClass osc(&recMes); // instantiate OSC communication object, and set the receiver container from the OSC packets Serial pc(USBTX, USBRX); //LED DigitalOut led(LED1); void processOSC(UDPSocketEvent e); int main() { // make debug port: pc.baud(BAUD_RATE); // Set the Ethernet port: // printf("Setting up...\r\n"); EthernetErr ethErr = eth.setup(); if(ethErr) { // printf("Error %d in setup.\r\n", ethErr); return -1; } // printf("Setup OK\r\n"); //(1) Sending message >>>>> // Set IP and Port: sendMes.setIp( destIp ); sendMes.setPort( destPort ); //(2) Receiving <<<<< recMes.setIp(receiveIp); osc.setReceiveMessage(&recMes); // this sets the receiver container for the OSC packets (we can avoid doing this if we use osc.getMessage() to get messages) osc.begin(receivePort, &processOSC); // binds the upd (osc) messages to an arbitrary listening port ("server" port), and callback function //loop while(true) { Net::poll(); //Set data sendMes.setTopAddress(topAddress);//top address sendMes.setSubAddress(subAddress[0]);//sub address sendMes.setArgs("i", 1);//type , value osc.sendOsc(&sendMes);//send! } } //osc callback function void processOSC(UDPSocketEvent e) { osc.onUDPSocketEvent(e); if (osc.newMessage) { //pc.printf("we received top address %s\n", recMes.getAddress(0) ); osc.newMessage = false; // note: if using: message = osc.getMessage(), then we don't need to do this explicitly. //(strcmp(str1,str2)==0) //if ... str1 = str2 >>> same if(strcmp(recMes.getAddress(0),requestTopStr[0])==0) { if(strcmp(recMes.getAddress(1),requestSubStr[0])==0) { led = 1;//led HIGH wait(0.2); led = 0;//led LOW wait(0.2); led = 1;//led HIGH wait(0.2); led = 0;//led LOW wait(0.2); led = 1;//led HIGH wait(0.2); led = 0;//led LOW wait(0.2); } } else { //action led = 0;//led LOW } // Test: // if( !strcmp( recMes.getAddress(0) , "mbed" ) ) // { // pc.printf("we received topAddress= mbed \n"); // // if( !strcmp( recMes.getAddress(1) , "test1" ) ) // { // pc.printf("we received subAddress= test1 \n"); // // // Send some osc message: // sendMes.setTopAddress("/working..."); // osc.sendOsc(&sendMes); // } // } } }