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); }
//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; }
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); }
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); }
////////// // 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; }
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; }