support OSC-string

Dependents:   OSCtoCVConverter

Fork of OSC by Toby Harris

Revision:
7:498455cded21
Parent:
6:a47004fb44f5
Child:
8:73bce95a6853
--- a/mbedOSC.cpp	Thu Feb 18 13:25:30 2016 +0000
+++ b/mbedOSC.cpp	Thu Feb 25 11:21:27 2016 +0000
@@ -82,7 +82,7 @@
     
     if (index > MAX_ARG) {
         
-      index = MAX_ARG - 1;  
+      index = (MAX_ARG - 1);  
     }
     
     return typeTag[index];
@@ -157,22 +157,22 @@
 //-------------------------------------------------
 //  Construct  OSC messages 
 
-void OSCMessage::setTopAddress(char *_address) {
+void OSCMessage::setTopAddress(char * topAddress) {
     
-    address[0] = _address;
+    address[0] = topAddress;
     address[1] = 0;
     addressNum = 1; // Note: this "erases" the subaddress! (is this a good idea?)
 }
  
  
-void OSCMessage::setSubAddress(char *_address) {
+void OSCMessage::setSubAddress(char * subAddress) {
     
-    address[1] = _address;
+    address[1] = subAddress;
     addressNum = 2; // Note: this assumes the top address was already set!
 }
  
  
-void OSCMessage::setAddress(char *topAddress, char *subAddress) {
+void OSCMessage::setAddress(char * topAddress, char *subAddress) {
     
     setTopAddress(topAddress);
     setSubAddress(subAddress);
@@ -181,14 +181,14 @@
 }
  
  
-void OSCMessage::setAddress(uint8_t index, char *_address) {
+void OSCMessage::setAddress(uint8_t index, char * oscAddress) {
     
     if (index > MAX_ADDRESS) {
         
       index = (MAX_ADDRESS - 1);  
     }
     
-    address[index] = _address;
+    address[index] = oscAddress;
     addressNum = (index + 1);
 }
  
@@ -285,7 +285,6 @@
       
       case UDPSOCKET_READABLE: //The only event for now
       
-            Host auxhost;
             buflength = udpRec.recvfrom(rcvBuff, MAX_RECEIVEBUFF_SIZE, &auxhost); // QUESTION: auxhost should be equal to the receiver host I guess...
            
             if (buflength > 0) {
@@ -335,7 +334,7 @@
             //Added this in to remove the slashes out of final output
             if (d != '/') {
                 
-                tempAddress[adrCount][adrMesPos]=d;            
+                tempAddress[adrCount][adrMesPos] = d;            
     
                 if (packetCount > 3) {
                     
@@ -507,55 +506,62 @@
     
     for (i = 0; i < sendContainer->argNum; ++i) {
         
-        if (sendContainer->typeTag[i] == 's') {       // strings
-            
-            v = (uint8_t *)sendContainer->sendArgs[i].s;
-            
-            while (v[j] != '\0') {
-                
-                buff[lengthEnd++] = v[j++];
-            }
-            
-            // pad with 0s to align in multiples of 4:
-            lengthStart = lengthEnd;
+        switch (sendContainer->typeTag[i])
+        {
+            case 's':
+                v = (uint8_t *)sendContainer->sendArgs[i].s;
+    
+                while (v[j] != '\0') {
+        
+                    buff[lengthEnd++] = v[j++];
+                }
     
-            lengthEnd = lengthStart + (4 - (lengthStart % 4));
-    
-            for (i = lengthStart; i < lengthEnd; ++i) {
+                // pad with 0s to align in multiples of 4:
+                lengthStart = lengthEnd;
+
+                lengthEnd = lengthStart + (4 - (lengthStart % 4));
+
+                for (i = lengthStart; i < lengthEnd; ++i) {
+
+                    buff[i] = '\0';
+                }
         
-                buff[i] = '\0';
-            }
-            
-        } else if (sendContainer->typeTag[i] == 'd') { // double
-            
-            v = (uint8_t *)&sendContainer->sendArgs[i].d;
-            
-            buff[lengthEnd++] = v[7];
-            buff[lengthEnd++] = v[6];
-            buff[lengthEnd++] = v[5];
-            buff[lengthEnd++] = v[4];
-            buff[lengthEnd++] = v[3];
-            buff[lengthEnd++] = v[2];
-            buff[lengthEnd++] = v[1];
-            buff[lengthEnd++] = v[0];
-            
-        }  if (sendContainer->typeTag[i] == 'f') {     // float                                    
-            
-            v = (uint8_t *)&sendContainer->sendArgs[i].f;
-            
-            buff[lengthEnd++] = v[3];
-            buff[lengthEnd++] = v[2];
-            buff[lengthEnd++] = v[1];
-            buff[lengthEnd++] = v[0];
+                break;
+
+            case 'i':
+                v = (uint8_t *)&sendContainer->sendArgs[i].i;
+    
+                buff[lengthEnd++] = v[3];
+                buff[lengthEnd++] = v[2];
+                buff[lengthEnd++] = v[1];
+                buff[lengthEnd++] = v[0];
+                break;
         
-        } else {                                       // int
-            
-            v = (uint8_t *)&sendContainer->sendArgs[i].i;
-            
-            buff[lengthEnd++] = v[3];
-            buff[lengthEnd++] = v[2];
-            buff[lengthEnd++] = v[1];
-            buff[lengthEnd++] = v[0];
+            case 'f':
+                v = (uint8_t *)&sendContainer->sendArgs[i].f;
+    
+                buff[lengthEnd++] = v[3];
+                buff[lengthEnd++] = v[2];
+                buff[lengthEnd++] = v[1];
+                buff[lengthEnd++] = v[0];
+                break;
+        
+            case 'd':
+                v = (uint8_t *)&sendContainer->sendArgs[i].d;
+    
+                buff[lengthEnd++] = v[7];
+                buff[lengthEnd++] = v[6];
+                buff[lengthEnd++] = v[5];
+                buff[lengthEnd++] = v[4];
+                buff[lengthEnd++] = v[3];
+                buff[lengthEnd++] = v[2];
+                buff[lengthEnd++] = v[1];
+                buff[lengthEnd++] = v[0];
+                break;
+
+            default:
+                break;
+    
         }
 
     }