Пример #1
0
int GetDataPacket(const char *datapacket, char *cCommand, long &iValue)
{
  CStdString sData;
  int iRet;
  try
  {
    iRet = GetDataPacket( datapacket, cCommand, sData);
    iValue = atoi( (LPCSTR)sData );

    return iRet;
	}
	catch(...){
		iValue = 0;
		return -1;
	}
}
Пример #2
0
int GetDataPacket(const char *datapacket, char *cCommand, bool &bValue)
{
  int iData;
  int iRet;
  try
  {
    iRet = GetDataPacket( datapacket, cCommand, iData);
    bValue = ( iData == 0 ) ? false : true;

		return iRet;
	}
	catch(...){
		bValue = false;
		return -1;
	}
}
Пример #3
0
int	ReceiveWaveform (SinkVChan_type* sinkVChan, Waveform_type** waveform, WaveformTypes* waveformType, char** errorMsg)
{
#define		ReceiveWaveform_Err_NoWaveform			-1
#define		ReceiveWaveform_Err_WrongDataType		-2
#define		ReceiveWaveform_Err_NotSameDataType		-3
	
INIT_ERR	
	
	DataPacket_type*		dataPacket				= NULL;
	DLDataTypes				dataPacketType			= 0;
	DLDataTypes				firstDataPacketType		= 0;
	void*					dataPacketPtrToData		= NULL;
	char*					msgBuff					= NULL;
	
	
	// init
	*waveform = NULL;
	
	// get first data packet and check if it is a NULL packet
	errChk ( GetDataPacket(sinkVChan, &dataPacket, &errorInfo.errMsg) );
	
	if (!dataPacket) {
		nullChk( msgBuff = StrDup("Waveform received does not contain any data. This occurs if a NULL packet is encountered before any data packets") );
		SET_ERR(ReceiveWaveform_Err_NoWaveform, msgBuff);
	}
	
	// check if data packet type is supported by this function
	dataPacketPtrToData = GetDataPacketPtrToData(dataPacket, &firstDataPacketType);
	dataPacketType 		= firstDataPacketType;
	
	// check if data packet is of waveform type
	switch (firstDataPacketType) {
			
		case DL_Waveform_Char:
		case DL_Waveform_UChar:
		case DL_Waveform_Short:
		case DL_Waveform_UShort:
		case DL_Waveform_Int:
		case DL_Waveform_UInt:
		case DL_Waveform_Int64:
		case DL_Waveform_UInt64:	
		case DL_Waveform_SSize:
		case DL_Waveform_Size:
		case DL_Waveform_Float:
		case DL_Waveform_Double:
			break;
		
		default:
			
			nullChk( msgBuff = StrDup("Data packet received is not of a waveform type and cannot be retrieved by this function") );
			SET_ERR(ReceiveWaveform_Err_WrongDataType, msgBuff);
			break;
	}
	
	errChk( CopyWaveform(waveform, *(Waveform_type**)dataPacketPtrToData, &errorInfo.errMsg) );
	ReleaseDataPacket(&dataPacket);
	
	// get another data packet if any
	errChk ( GetDataPacket(sinkVChan, &dataPacket, &errorInfo.errMsg) );
	// assemble waveform from multiple packets until a NULL packet is encountered
	while (dataPacket) {
		
		// get waveform data from the first non-NULL data packet
		dataPacketPtrToData = GetDataPacketPtrToData(dataPacket, &dataPacketType);
		
		// check if retrieved data packet is of the same type as the first packet
		if (firstDataPacketType != dataPacketType) {
			nullChk( msgBuff = StrDup("Data packets must be all of the same type") );
			SET_ERR(ReceiveWaveform_Err_NotSameDataType, msgBuff);
		}
	
		errChk( AppendWaveform(*waveform, *(Waveform_type**)dataPacketPtrToData, &errorInfo.errMsg) );
	
		ReleaseDataPacket(&dataPacket);
		
		// get another packet
		errChk ( GetDataPacket(sinkVChan, &dataPacket, &errorInfo.errMsg) );
	}
	
	// check again if waveform is NULL
	if (!*waveform) {
		nullChk( msgBuff = StrDup("Waveform received does not contain any data. This occurs if a NULL packet is encountered before any data packets or the data packet doesn't have any data") );
		SET_ERR(ReceiveWaveform_Err_NoWaveform, msgBuff);
	}
	
	// assign waveform type
	if (waveformType)
		switch (dataPacketType) {
			
			case DL_Waveform_Char:
				*waveformType = Waveform_Char;
				break;
				
			case DL_Waveform_UChar:
				*waveformType = Waveform_UChar;
				break;
				
			case DL_Waveform_Short:
				*waveformType = Waveform_Short;
				break;
				
			case DL_Waveform_UShort:
				*waveformType = Waveform_UShort;
				break;
				
			case DL_Waveform_Int:
				*waveformType = Waveform_Int;
				break;
				
			case DL_Waveform_UInt:
				*waveformType = Waveform_UInt;
				break;
				
			case DL_Waveform_Int64:
				*waveformType = Waveform_Int64;
				break;
				
			case DL_Waveform_UInt64:
				*waveformType = Waveform_UInt64;
				break;
				
			case DL_Waveform_SSize:
				*waveformType = Waveform_SSize;
				break;
				
			case DL_Waveform_Size:
				*waveformType = Waveform_Size;
				break;
				
			case DL_Waveform_Float:
				*waveformType = Waveform_Float;
				break;
				
			case DL_Waveform_Double:
				*waveformType = Waveform_Double;
				break;
			
			default:
			
				nullChk( msgBuff = StrDup(" Data packet received is not of a waveform type and cannot be retrieved by this function") );
				SET_ERR(ReceiveWaveform_Err_WrongDataType, msgBuff);
		}
		
	return 0;
	
Error:
	
	// cleanup
	OKfree(msgBuff);
	ReleaseDataPacket(&dataPacket);
	discard_Waveform_type(waveform);
	
RETURN_ERR
}