From 73e16950d73578900d54f3470b57402a9e908c30 Mon Sep 17 00:00:00 2001 From: bzztbomb Date: Tue, 5 Apr 2011 19:57:16 -0700 Subject: Public firmware release. --- Libraries/OSC/OSCEncoder.cpp | 87 ++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 43 deletions(-) (limited to 'Libraries/OSC/OSCEncoder.cpp') diff --git a/Libraries/OSC/OSCEncoder.cpp b/Libraries/OSC/OSCEncoder.cpp index 66dd383..79f0426 100644 --- a/Libraries/OSC/OSCEncoder.cpp +++ b/Libraries/OSC/OSCEncoder.cpp @@ -1,16 +1,16 @@ /* - + ArdOSC - OSC Library for Arduino. - + -------- Lisence ----------------------------------------------------------- - + ArdOSC - + The MIT License - + Copyright (c) 2009 - 2010 recotana( http://recotana.com ) All right reserved - - */ + + */ #include #include @@ -21,91 +21,92 @@ int16_t OSCEncoder::encode( OSCMessage::OSCMessage *mes ,uint8_t *sendData ){ - - + + uint8_t *packStartPtr=sendData; - - + + memset(sendData, 0, mes->getAllPackSize()); + //=========== OSC Address(String) -> BIN Encode =========== - - memcpy( sendData ,mes->oscAddress ,mes->oscAdrSize); + + memcpy( sendData ,mes->oscAddress ,mes->oscAdrSize); packStartPtr += mes->oscAdrPacSize; mes->allPackSize = mes->oscAdrPacSize; - + //=========== TypeTag(String) -> BIN Encode =========== - - *packStartPtr=','; - memcpy(packStartPtr+1 ,mes->typeTag ,mes->argsNum); + + *packStartPtr=','; + memcpy(packStartPtr+1 ,mes->typeTag ,mes->argsNum); packStartPtr += mes->typeTagPacSize; - + mes->allPackSize += mes->typeTagPacSize; - - + + //=========== Auguments -> BIN Encode ================== - - + + uint8_t *tmpPtr; - + uint32_t tmpInt; - + #ifdef _USE_FLOAT_ float tmpFloat; #endif - + #ifdef _USE_STRING_ uint16_t strSize; #endif - + for (int i=0; i< mes->argsNum; i++) { - + switch ( mes->typeTag[i] ) { - + case 'i': - + tmpInt = mes->getInteger32(i); tmpPtr =(uint8_t*)(&tmpInt); - + *packStartPtr++=*(tmpPtr+3); *packStartPtr++=*(tmpPtr+2); *packStartPtr++=*(tmpPtr+1); *packStartPtr++=*tmpPtr; - + mes->allPackSize += 4; break; - + #ifdef _USE_FLOAT_ case 'f': - + tmpFloat = mes->getFloat(i); tmpPtr=(uint8_t*)(&tmpFloat); - + *packStartPtr++=*(tmpPtr+3); *packStartPtr++=*(tmpPtr+2); *packStartPtr++=*(tmpPtr+1); *packStartPtr++=*tmpPtr; - + mes->allPackSize += 4; break; #endif - + #ifdef _USE_STRING_ case 's': strSize = strlen(mes->getString(i)); - + if(strSize > kMaxStringCharactor){ - + DBG_LOGLN("encode max str err"); return 1; } - - memcpy( (char*)packStartPtr ,mes->getString(i) ,strSize ); + + memcpy( (char*)packStartPtr ,mes->getString(i) ,strSize ); packStartPtr += mes->getPackSize(strSize); - + mes->allPackSize += mes->getPackSize(strSize); break; #endif - + } - } + } return 0; } -- cgit v1.2.3