--- smsdaemon/SmsPdu.cpp 2008/06/13 21:15:00 77 +++ smsdaemon/SmsPdu.cpp 2008/12/08 21:49:49 158 @@ -10,8 +10,8 @@ #include #include -#include "common.h" -#include "util.h" +#include "Logger.h" +#include "Util.h" using namespace std; @@ -144,7 +144,6 @@ const unsigned char UDHI = multipart ? 0x40 : 0; - srand(time(0)); unsigned char csms_ref = rand() % 128; int part_count; @@ -155,7 +154,7 @@ { if (message.length() > 800) { - Common::instance()->logMessage("Trying to send multipart sms > 800 bytes !!!"); + Logger::logMessage("Trying to send multipart sms > 800 bytes !!!"); message = message.substr(0,800); } @@ -191,7 +190,7 @@ if (multipart) { message_part = message.substr(0, PDU_LEN); - message.erase(0, PDU_LEN); + message.erase(0, PDU_LEN-1); pdu.push_back( message_part.length()+ 7 ); //UserDataLength pdu.push_back( 0x06 ); // UDH Len @@ -208,7 +207,7 @@ if (message.length() > 160) { message_part = message.substr(0,160); //truncate to 160 - Common::instance()->logMessage("Truncated message"); + Logger::logMessage("Truncated message"); } else { @@ -277,7 +276,6 @@ SMS ParseSmsPdu(std::string pdu_str) { - SMS result; vector pdu = HexDecodeString(pdu_str); @@ -295,13 +293,13 @@ ++it; //ignore Type-Of-Address - result.sender = DecodeRawPhonenr( it, it+(sender_len/2) ); + string sender = DecodeRawPhonenr( it, it+(sender_len/2) ); it += (sender_len/2); ++it; //protocol identifier ++it; //Data encoding - result.timestamp = DecodeTimestamp(it, it+7); + string timestamp = DecodeTimestamp(it, it+7); it += 7; @@ -321,8 +319,13 @@ vector user_data; user_data.insert(user_data.end(), it, it+data_len); - result.message = Decode8to7bit(user_data, shift_start).substr(0,data_len); + string message = Decode8to7bit(user_data, shift_start).substr(0,data_len); + + message = Util::str_trim(message); + SMS result; + result.SetMessage(message); + result.SetSender(sender); return result; }