void AddNode(PNode *Head, Data data){
	PNode newNode = (PNode)malloc(sizeof(Node));
	newNode->data = data;
	newNode->left = NULL;
	newNode->right = NULL;
	newNode->parent = NULL;
	PNode parentNode = NULL;
	PNode p = *Head;
	while (p){
		parentNode = p;
		if (CompareData(data, p->data) < 0)
			p = p->left;
		else
			p = p->right;
	}
	if (!parentNode){
		*Head = newNode;
	}
	else{
		newNode->parent = parentNode;
		if (CompareData(data, parentNode->data) < 0){
			parentNode->left = newNode;
		}
		else{
			parentNode->right = newNode;
		}
	}
}
PNode Find(PNode *Tree, Data data){
	if (!*Tree)
		return NULL;
	if (CompareData(data, (*Tree)->data) == 0)
		return *Tree;
	else if (CompareData(data, (*Tree)->data) < 0)
		return Find(&(*Tree)->left, data);
	else return Find(&(*Tree)->right, data);
}
Пример #3
0
//Find a pattern in memory
DWORD FindPattern(DWORD imageBase, DWORD imageSize, PBYTE pattern, char* mask)
{
	//Iterate over the image
	for (DWORD i = imageBase; i < imageBase + imageSize; i++)
	{
		//And check for matching pattern at every byte
		if (CompareData((PBYTE)i, pattern, mask))
			return i;
	}

	return 0;
}
Пример #4
0
bool DumpWrapper<T>::Compare(DumpBuffer& buffer, float threshold, OutputFormat output, size_t length , size_t stride ,size_t start)
{


  if(!CompareName(buffer)) return false;
  if(!CompareSize(buffer)){ 
    cout << "Buffer " << getName() << " differ in number of elements: " << getSize()/sizeof(T) << " / " << buffer.getSize()/sizeof(T) <<   endl;
    return false;
  }
 
  
  return CompareData((void*)buffer.getData(), threshold, output, length ,stride ,start);
  
}
Пример #5
0
bool DumpBuffer::Compare(DumpBuffer& buffer, float threshold, OutputFormat output, size_t length , size_t stride ,size_t start)
{


  if(!CompareName(buffer)) return false;
  if(!CompareSize(buffer)){ 
    cout << "Buffer " << getName() << " differ in size: " << getSize() << " / " << buffer.getSize() << " Bytes" <<  endl;
    return false;
  }
 
  
  return CompareData((void*)buffer.getData(), threshold, output, length ,stride ,start);
  
}
Пример #6
0
//////////
// Function Name : IrDA_Fifo_Rx
// Function Description : This function select FIR/MIR mode and Interrupt/DMA mode to test IrDA FIFO Rx
// Input : NONE
// Output : NONE
// Version : v0.1
void IrDA_Fifo_Rx(void)
{
	s32 iMode;
	s32 sSelect;
	s32 sClk;
	u8 cSelPort;

	UART_Printf("Which Port do you want to use?\n");
	UART_Printf("Port 2, 3 : ");
	cSelPort = (u8)UART_GetIntNum();
	if(cSelPort <2 || cSelPort >3)
		cSelPort = 2;
	
	UART_Printf("\nSelect Operation Clock Source     1. Ext_48Mhz   2.MPLL   3.EPLL : \n" );
	sClk = UART_GetIntNum();
	IrDA_ClkSrc((eIrDA_ClkSrc)sClk);
	
	IrDA_SetPort(cSelPort);
	
	UART_Printf("\nSelect transfering mode	1. FIR(D)    2. MIR full  3. MIR half : \n");
	iMode = UART_GetIntNum() - 1;
	if (iMode == -2) iMode = 0; 
	
	UART_Printf("IrDA Interrupt Rx Test\n");
	UART_Printf("Select control mode : 1. Interrupt(D)    2. DMA\n");
	sSelect = UART_GetIntNum();
	if(sSelect == -1)
		sSelect = 1;

	if(sSelect == 2)
		{
		IrDA_IntClear();		
		Test_Irda_Fifo_Dma_Rx(iMode, PREAMBLE_VALUE, STARTFLAG_VALUE, RXFL_DMAVALUE, RXTR_DMAVALUE);
		}
	else
		{
		INTC_SetVectAddr(NUM_IRDA,Isr_IrDA_Int_Rx);		
		INTC_Enable(NUM_IRDA);
		IrDA_IntClear();		
		Irda_Fifo_Int_Rx(iMode, PREAMBLE_VALUE, STARTFLAG_VALUE, RXFL_VALUE, RXTR_VALUE);
		}
	IrDA_Reset();
	IrDA_ReturnPort();
	CompareData();
}
TVerdict CTestStepSignConversionTest<T, Generator, index>::DoTestStepL()
	{
	__MM_HEAP_MARK;	
	TVerdict result = EPass;

	//[pre condition iSourceData ]
	if( !iSourceData )
		{
		INFO_PRINTF1(_L("Source Data Failure"));
		User::Leave( KErrCorrupt);
		}
	//[precondition iCodedData  ]
	if( !iCodedData )
		{
		INFO_PRINTF1(_L("Coded Data Failure"));
		User::Leave( KErrCorrupt);
		}
	//[precondition iRefData ]
	if( !iRefCodedData )
		{
		INFO_PRINTF1(_L("RefCodedData Argument Failure"));
		User::Leave( KErrCorrupt);
		}

	//[ lets code the data and compare it to the reference data ]
    iCodecUnderTest->ProcessL(*iSourceData, *iCodedData);
    if(!CompareData(iCodedData, iRefCodedData))
		{
		INFO_PRINTF1(_L("Coded Results do not match reference coded results"));

		result = EFail;
		}
	
	__MM_HEAP_MARKEND;
	return result;
	}
Пример #8
0
bool DumpWrapper<T>::CompareData(DumpBuffer& buffer, float threshold, OutputFormat output, size_t length , size_t stride ,size_t start)
{
  return CompareData((void*)buffer.getData(), threshold, output, length ,stride ,start);
}
/**
*
* This function will process the received packet. This function sends
* the echo request packet based on the ARP reply packet.
*
* @param	InstancePtr is a pointer to the instance of the EmacLite.
*
* @return	XST_SUCCESS is returned when an echo reply is received.
*		Otherwise, XST_FAILURE is returned.
*
* @note		This assumes MAC does not strip padding or CRC.
*
******************************************************************************/
static int ProcessRecvFrame(XEmacLite *InstancePtr)
{
	u16 *RxFramePtr;
	u16 *TempPtr;
	u16 CheckSum;
	int Index;
	int Match = 0;
	int DataWrong = 0;

	RxFramePtr = (u16 *)RxFrame;
	TempPtr = (u16 *)LocalMacAddr;

	/*
	 * Check Dest Mac address of the packet with the LocalMac address.
	 */
	Match = CompareData(RxFramePtr, TempPtr, 0, 0, MAC_ADDR_LEN);
	if (Match == XST_SUCCESS) {

		/*
		 * Check ARP type.
		 */
		if (Xil_Ntohs(*(RxFramePtr + ETHER_PROTO_TYPE_LOC)) ==
				XEL_ETHER_PROTO_TYPE_ARP ) {

			/*
			 * Check ARP status.
			 */
			if (Xil_Ntohs(*(RxFramePtr + ARP_REQ_STATUS_LOC)) == ARP_REPLY) {

				/*
				 * Check destination IP address with
				 * packet's source IP address.
				 */
				TempPtr = (u16 *)DestIpAddress;
				Match = CompareData(RxFramePtr,
						TempPtr, ARP_REQ_SRC_IP_LOC,
						0, IP_ADDR_LEN);
				if (Match == XST_SUCCESS) {

					/*
					 * Copy src Mac address of the received
					 * packet.
					 */
					Index = MAC_ADDR_LEN;
					TempPtr = (u16 *)DestMacAddr;
					while (Index--) {
						*(TempPtr + Index) =
							*(RxFramePtr +
							(SRC_MAC_ADDR_LOC +
								Index));
					}

					/*
					 * Send Echo request packet.
					 */
					SendEchoReqFrame(InstancePtr);
				}
			}
		}

		/*
		 * Check for IP type.
		 */
		else if (Xil_Ntohs(*(RxFramePtr + ETHER_PROTO_TYPE_LOC)) ==
						XEL_ETHER_PROTO_TYPE_IP) {

			/*
			 * Calculate checksum.
			 */
			CheckSum = CheckSumCalculation(RxFramePtr,
							ICMP_DATA_START_LOC,
							ICMP_DATA_FIELD_LEN);

			/*
			 * Verify checksum, echo reply, identifier number and
			 * sequence number of the received packet.
			 */
			if ((CheckSum == CORRECT_CHECKSUM_VALUE) &&
			(Xil_Ntohs(*(RxFramePtr + ICMP_ECHO_FIELD_LOC)) == ECHO_REPLY) &&
			(Xil_Ntohs(*(RxFramePtr + ICMP_IDEN_FIELD_LOC)) == IDEN_NUM) &&
			(Xil_Ntohs(*(RxFramePtr + (ICMP_SEQ_NO_LOC))) == SeqNum)) {

				/*
				 * Verify data in the received packet with known
				 * data.
				 */
				TempPtr = IcmpData;
				Match = CompareData(RxFramePtr,
						TempPtr, ICMP_KNOWN_DATA_LOC,
							0, ICMP_KNOWN_DATA_LEN);
				if (Match == XST_FAILURE) {
					DataWrong = 1;
				}
			}
			if (DataWrong != 1) {
				xil_printf("Packet No: %d ",
				NUM_OF_PING_REQ_PKTS - NumOfPingReqPkts);
				xil_printf("Seq NO %d Echo Packet received\r\n",
								SeqNum);
				return XST_SUCCESS;
			}
		}
	}
	return XST_FAILURE;
}