connectivity/com.nokia.tcf/native/TCFNative/TCFCommSerial/RealSerialComm.cpp
changeset 458 70467d598794
parent 424 9f38f9ad4716
child 477 cedd5978e2bc
equal deleted inserted replaced
457:02e387d99c91 458:70467d598794
   726 		{
   726 		{
   727 			BYTE* ptr = m_pBuffer;
   727 			BYTE* ptr = m_pBuffer;
   728 			long bytesRemaining = m_numberBytes;
   728 			long bytesRemaining = m_numberBytes;
   729 			long usedLen = 0;
   729 			long usedLen = 0;
   730 			bool done = false;
   730 			bool done = false;
       
   731 			long numberSkipped=0;
   731 
   732 
   732 			while (!done)
   733 			while (!done)
   733 			{
   734 			{
   734 				DWORD fullMessageLength = bytesRemaining;
   735 				DWORD fullMessageLength = bytesRemaining;
   735 				DWORD rawLength = 0;
   736 				DWORD rawLength = 0;
   736 				BYTE* fullMessage = ptr;
   737 				BYTE* fullMessage = ptr;
   737 				BYTE* rawMessage = ptr;
   738 				BYTE* rawMessage = ptr;
   738 				BYTE msgId = 0;
   739 				BYTE msgId = 0;
   739 				if (m_Protocol->DecodeMessage(fullMessage, fullMessageLength, msgId, rawMessage, rawLength))
   740 				int result = m_Protocol->DecodeMessage(fullMessage, fullMessageLength, msgId, rawMessage, rawLength);
       
   741 				if (result == DECODE_NOT_ENOUGH_BYTES_TO_SEARCH)
       
   742 				{
       
   743 					done = true;
       
   744 				}
       
   745 				else if (result == DECODE_MESSAGE_NOT_FOUND)
       
   746 				{
       
   747 					numberSkipped++;
       
   748 					usedLen += fullMessageLength;
       
   749 					bytesRemaining -= fullMessageLength;
       
   750 					ptr += fullMessageLength;
       
   751 					if (bytesRemaining < protocolHeaderLength)
       
   752 						done = true;
       
   753 				}
       
   754 				else if (result == DECODE_MESSAGE_FOUND)
   740 				{
   755 				{
   741 					err = PreProcessMessage(msgId, fullMessageLength, fullMessage);
   756 					err = PreProcessMessage(msgId, fullMessageLength, fullMessage);
   742 					if (err != TCAPI_ERR_NONE)
   757 					if (err != TCAPI_ERR_NONE)
   743 					{
   758 					{
       
   759 						PROCLOGOPEN();
       
   760 						PROCLOGA1("CTcpComm::ProcessBuffer Notify err = %x\n", err);
       
   761 						PROCLOGCLOSE();
   744 						// notify all clients right now 
   762 						// notify all clients right now 
   745 						pConn->NotifyClientsCommError(err, false, 0);
   763 						pConn->NotifyClientsCommError(err, false, 0);
   746 						err = TCAPI_ERR_NONE;
   764 						err = TCAPI_ERR_NONE;
   747 					}
   765 					}
   748 #ifdef _DEBUG
   766 #ifdef _DEBUG
   749 					int reallen = fullMessageLength;
   767 					int reallen = fullMessageLength;
   750 					if (reallen > 50) reallen = 50;
   768 					if (reallen > 80) reallen = 80;
   751 					char msg[6];
   769 					char msg[6];
   752 					msg[0] = '\0';
   770 					msg[0] = '\0';
   753 
   771 
   754 					sLogMsg[0] = '\0';
   772 					sTcpLogMsg[0] = '\0';
   755 					if (reallen > 0)
   773 					if (reallen > 0)
   756 					{
   774 					{
   757 						sLogMsg[0] = '\0';
   775 						sTcpLogMsg[0] = '\0';
   758 						for (int i = 0; i < reallen; i++)
   776 						for (int i = 0; i < reallen; i++)
   759 						{
   777 						{
   760 							sprintf(msg, "%02.2x ", ptr[i]);
   778 							if (isalnum(ptr[i]))
   761 							strcat(sLogMsg, msg);
   779 							{
       
   780 								sprintf(msg, "%c", ptr[i]);
       
   781 							}
       
   782 							else
       
   783 							{
       
   784 								sprintf(msg, "%02.2x ", ptr[i]);
       
   785 							}
       
   786 							strcat(sTcpLogMsg, msg);
   762 						}
   787 						}
   763 					}
   788 					}
   764 #endif
   789 #endif
   765 					PROCLOGOPEN();
   790 					PROCLOGOPEN();
   766 					PROCLOGA5("CRealSerialComm::ProcessBuffer - RouteMesssage pRegistry = %x id=%x len=%d len=%d\n  msg=%s\n", pRegistry, msgId, fullMessageLength, rawLength, sLogMsg);
   791 					PROCLOGA5("CTcpComm::ProcessBuffer - RouteMesssage pRegistry = %x id=%x len=%d len=%d msg=%s\n", pRegistry, msgId, fullMessageLength, rawLength, sTcpLogMsg);
   767 					PROCLOGCLOSE();
   792 					PROCLOGCLOSE();
   768 
   793 
   769 					err = pRegistry->RouteMessage(msgId, fullMessage, fullMessageLength, rawMessage, rawLength);
   794 					err = pRegistry->RouteMessage(msgId, fullMessage, fullMessageLength, rawMessage, rawLength);
   770 					if (err != TCAPI_ERR_NONE) routingErr = err; // saved for future
   795 					if (err != TCAPI_ERR_NONE) routingErr = err; // saved for future
   771 
   796 
   772 					numberProcessed++;
       
   773 					usedLen += fullMessageLength;
       
   774 					bytesRemaining -= fullMessageLength;
       
   775 					ptr += fullMessageLength;
       
   776 					if (bytesRemaining < protocolHeaderLength)
       
   777 						done = true;
       
   778 				}
       
   779 				else
       
   780 				{
       
   781 					numberProcessed++;
   797 					numberProcessed++;
   782 					usedLen += fullMessageLength;
   798 					usedLen += fullMessageLength;
   783 					bytesRemaining -= fullMessageLength;
   799 					bytesRemaining -= fullMessageLength;
   784 					ptr += fullMessageLength;
   800 					ptr += fullMessageLength;
   785 					if (bytesRemaining < protocolHeaderLength)
   801 					if (bytesRemaining < protocolHeaderLength)