support OSC-string
Fork of OSC by
Diff: mbedOSC.cpp
- 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; + } }