/***************************************************************
* Name: testMain.cpp
* Purpose: Code for Application Frame
* Marvell xcat switch chip mac hash index calculate
* Author: Wally ()
* Created: 2016-08-01 , revised on Nov 18th 2016
* Copyright: Wally () e-mail:wallywl@hotmail.com
* License:
**************************************************************/
#include "testMain.h"
#include <wx/msgdlg.h>
//(*InternalHeaders(testDialog)
#include <wx/intl.h>
#include <wx/string.h>
//*)
//helper functions
enum wxbuildinfoformat
{
short_f, long_f
};
unsigned g_numberofbits[] = {11, 12, 13, 14};
wxString wxbuildinfo(wxbuildinfoformat format)
{
wxString wxbuild(wxVERSION_STRING);
if (format == long_f )
{
#if defined(__WXMSW__)
wxbuild << _T("-Windows");
#elif defined(__UNIX__)
wxbuild << _T("-Linux");
#endif
#if wxUSE_UNICODE
wxbuild << _T("-Unicode build");
#else
wxbuild << _T("-ANSI build");
#endif // wxUSE_UNICODE
}
return wxbuild;
}
unsigned hashCalcCrc(
unsigned *dataPtr,
unsigned numOfBitsToUse,
unsigned *hashBitPtr
)
{
if (numOfBitsToUse < 13)
{
/* number of hash bits is 12 or 11 */
hashBitPtr[0] =
PRV_GET_BIT_MAC(dataPtr[1],31) ^ PRV_GET_BIT_MAC(dataPtr[1],29) ^ PRV_GET_BIT_MAC(dataPtr[1],28) ^
PRV_GET_BIT_MAC(dataPtr[1],27) ^ PRV_GET_BIT_MAC(dataPtr[1],26) ^ PRV_GET_BIT_MAC(dataPtr[1],22) ^
PRV_GET_BIT_MAC(dataPtr[1],20) ^ PRV_GET_BIT_MAC(dataPtr[1],19) ^ PRV_GET_BIT_MAC(dataPtr[1],18) ^
PRV_GET_BIT_MAC(dataPtr[1],17) ^ PRV_GET_BIT_MAC(dataPtr[1],16) ^ PRV_GET_BIT_MAC(dataPtr[1],15) ^
PRV_GET_BIT_MAC(dataPtr[1],12) ^ PRV_GET_BIT_MAC(dataPtr[1],3) ^ PRV_GET_BIT_MAC(dataPtr[1],2) ^
PRV_GET_BIT_MAC(dataPtr[1],1) ^ PRV_GET_BIT_MAC(dataPtr[0],30) ^ PRV_GET_BIT_MAC(dataPtr[0],29) ^
PRV_GET_BIT_MAC(dataPtr[0],26) ^ PRV_GET_BIT_MAC(dataPtr[0],25) ^ PRV_GET_BIT_MAC(dataPtr[0],24) ^
PRV_GET_BIT_MAC(dataPtr[0],23) ^ PRV_GET_BIT_MAC(dataPtr[0],22) ^ PRV_GET_BIT_MAC(dataPtr[0],17) ^
PRV_GET_BIT_MAC(dataPtr[0],16) ^ PRV_GET_BIT_MAC(dataPtr[0],15) ^ PRV_GET_BIT_MAC(dataPtr[0],14) ^
PRV_GET_BIT_MAC(dataPtr[0],13) ^ PRV_GET_BIT_MAC(dataPtr[0],12) ^ PRV_GET_BIT_MAC(dataPtr[0],11) ^
PRV_GET_BIT_MAC(dataPtr[0],8) ^ PRV_GET_BIT_MAC(dataPtr[0],7) ^ PRV_GET_BIT_MAC(dataPtr[0],6) ^
PRV_GET_BIT_MAC(dataPtr[0],5) ^ PRV_GET_BIT_MAC(dataPtr[0],4) ^ PRV_GET_BIT_MAC(dataPtr[0],3) ^
PRV_GET_BIT_MAC(dataPtr[0],2) ^ PRV_GET_BIT_MAC(dataPtr[0],1) ^ PRV_GET_BIT_MAC(dataPtr[0],0);
hashBitPtr[1] =
PRV_GET_BIT_MAC(dataPtr[1],31) ^
PRV_GET_BIT_MAC(dataPtr[1],30) ^ PRV_GET_BIT_MAC(dataPtr[1],26) ^ PRV_GET_BIT_MAC(dataPtr[1],23) ^
PRV_GET_BIT_MAC(dataPtr[1],22) ^ PRV_GET_BIT_MAC(dataPtr[1],21) ^ PRV_GET_BIT_MAC(dataPtr[1],15) ^
PRV_GET_BIT_MAC(dataPtr[1],13) ^ PRV_GET_BIT_MAC(dataPtr[1],12) ^ PRV_GET_BIT_MAC(dataPtr[1],4) ^
PRV_GET_BIT_MAC(dataPtr[1],1) ^ PRV_GET_BIT_MAC(dataPtr[0],31) ^ PRV_GET_BIT_MAC(dataPtr[0],29) ^
PRV_GET_BIT_MAC(dataPtr[0],27) ^ PRV_GET_BIT_MAC(dataPtr[0],22) ^ PRV_GET_BIT_MAC(dataPtr[0],18) ^
PRV_GET_BIT_MAC(dataPtr[0],11) ^ PRV_GET_BIT_MAC(dataPtr[0],9) ^ PRV_GET_BIT_MAC(dataPtr[0],0);
hashBitPtr[2] =
PRV_GET_BIT_MAC(dataPtr[1],29) ^ PRV_GET_BIT_MAC(dataPtr[1],28) ^ PRV_GET_BIT_MAC(dataPtr[1],26) ^
PRV_GET_BIT_MAC(dataPtr[1],24) ^ PRV_GET_BIT_MAC(dataPtr[1],23) ^ PRV_GET_BIT_MAC(dataPtr[1],20) ^
PRV_GET_BIT_MAC(dataPtr[1],19) ^ PRV_GET_BIT_MAC(dataPtr[1],18) ^ PRV_GET_BIT_MAC(dataPtr[1],17) ^
PRV_GET_BIT_MAC(dataPtr[1],15) ^ PRV_GET_BIT_MAC(dataPtr[1],14) ^ PRV_GET_BIT_MAC(dataPtr[1],13) ^
PRV_GET_BIT_MAC(dataPtr[1],12) ^ PRV_GET_BIT_MAC(dataPtr[1],5) ^ PRV_GET_BIT_MAC(dataPtr[1],3) ^
PRV_GET_BIT_MAC(dataPtr[1],1) ^ PRV_GET_BIT_MAC(dataPtr[1],0) ^ PRV_GET_BIT_MAC(dataPtr[0],29) ^
PRV_GET_BIT_MAC(dataPtr[0],28) ^ PRV_GET_BIT_MAC(dataPtr[0],26) ^ PRV_GET_BIT_MAC(dataPtr[0],25) ^
PRV_GET_BIT_MAC(dataPtr[0],24) ^ PRV_GET_BIT_MAC(dataPtr[0],22) ^ PRV_GET_BIT_MAC(dataPtr[0],19) ^
PRV_GET_BIT_MAC(dataPtr[0],17) ^ PRV_GET_BIT_MAC(dataPtr[0],16) ^ PRV_GET_BIT_MAC(dataPtr[0],15) ^
PRV_GET_BIT_MAC(dataPtr[0],14) ^ PRV_GET_BIT_MAC(dataPtr[0],13) ^ PRV_GET_BIT_MAC(dataPtr[0],11) ^
PRV_GET_BIT_MAC(dataPtr[0],10) ^ PRV_GET_BIT_MAC(dataPtr[0],8) ^ PRV_GET_BIT_MAC(dataPtr[0],7) ^
PRV_GET_BIT_MAC(dataPtr[0],6) ^ PRV_GET_BIT_MAC(dataPtr[0],5) ^ PRV_GET_BIT_MAC(dataPtr[0],4) ^
PRV_GET_BIT_MAC(dataPtr[0],3) ^ PRV_GET_BIT_MAC(dataPtr[0],2) ^ PRV_GET_BIT_MAC(dataPtr[0],0);
hashBitPtr[3] =
PRV_GET_BIT_MAC(dataPtr[1],31) ^
PRV_GET_BIT_MAC(dataPtr[1],30) ^ PRV_GET_BIT_MAC(dataPtr[1],28) ^ PRV_GET_BIT_MAC(dataPtr[1],26) ^
PRV_GET_BIT_MAC(dataPtr[1],25) ^ PRV_GET_BIT_MAC(dataPtr[1],24) ^ PRV_GET_BIT_MAC(dataPtr[1],22) ^
PRV_GET_BIT_MAC(dataPtr[1],21) ^ PRV_GET_BIT_MAC(dataPtr[1],17) ^ PRV_GET_BIT_MAC(dataPtr[1],14) ^
PRV_GET_BIT_MAC(dataPtr[1],13) ^ PRV_GET_BIT_MAC(dataPtr[1],12) ^ PRV_GET_BIT_MAC(dataPtr[1],6) ^
PRV_GET_BIT_MAC(dataPtr[1],4) ^ PRV_GET_BIT_MAC(dataPtr[1],3) ^ PRV_GET_BIT_MAC(dataPtr[0],27) ^
PRV_GET_BIT_MAC(dataPtr[0],24) ^ PRV_GET_BIT_MAC(dataPtr[0],22) ^ PRV_GET_BIT_MAC(dataPtr[0],20) ^
PRV_GET_BIT_MAC(dataPtr[0],18) ^ PRV_GET_BIT_MAC(dataPtr[0],13) ^ PRV_GET_BIT_MAC(dataPtr[0],9) ^
PRV_GET_BIT_MAC(dataPtr[0],2) ^ PRV_GET_BIT_MAC(dataPtr[0],0) ^
1;
hashBitPtr[4] =
PRV_GET_BIT_MAC(dataPtr[1],31) ^ PRV_GET_BIT_MAC(dataPtr[1],29) ^ PRV_GET_BIT_MAC(dataPtr[1],27) ^
PRV_GET_BIT_MAC(dataPtr[1],26) ^ PRV_GET_BIT_MAC(dataPtr[1],25) ^ PRV_GET_BIT_MAC(dataPtr[1],23) ^
PRV_GET_BIT_MAC(dataPtr[1],22) ^ PRV_GET_BIT_MAC(dataPtr[1],18) ^ PRV_GET_BIT_MAC(dataPtr[1],15) ^
PRV_GET_BIT_MAC(dataPtr[1],14) ^ PRV_GET_BIT_MAC(dataPtr[1],13) ^ PRV_GET_BIT_MAC(dataPtr[1],7) ^
PRV_GET_BIT_MAC(dataPtr[1],5) ^ PRV_GET_BIT_MAC(dataPtr[1],4) ^ PRV_GET_BIT_MAC(dataPtr[0],28) ^
PRV_GET_BIT_MAC(dataPtr[0],25) ^ PRV_GET_BIT_MAC(dataPtr[0],23) ^ PRV_GET_BIT_MAC(dataPtr[0],21) ^
PRV_GET_BIT_MAC(dataPtr[0],19) ^ PRV_GET_BIT_MAC(dataPtr[0],14) ^ PRV_GET_BIT_MAC(dataPtr[0],10) ^
PRV_GET_BIT_MAC(dataPtr[0],3) ^ PRV_GET_BIT_MAC(dataPtr[0],1);
hashBitPtr[5] =
PRV_GET_BIT_MAC(dataPtr[1],30) ^ PRV_GET_BIT_MAC(dataPtr[1],28) ^ PRV_GET_BIT_MAC(dataPtr[1],27) ^
PRV_GET_BIT_MAC(dataPtr[1],26) ^ PRV_GET_BIT_MAC(dataPtr[1],24) ^ PRV_GET_BIT_MAC(dataPtr[1],23) ^
PRV_GET_BIT_MAC(dataPtr[1],19) ^ PRV_GET_BIT_MAC(dataPtr[1],16) ^ PRV_GET_BIT_MAC(dataPtr[1],15) ^
PRV_GET_BIT_MAC(dataPtr[1],14) ^ PRV_GET_BIT_MAC(dataPtr[1],8) ^ PRV_GET_BIT_MAC(dataPtr[1],6) ^
PRV_GET_BIT_MAC(dataPtr[1],5) ^ PRV_GET_BIT_MAC(dataPtr[0],29) ^ PRV_GET_BIT_MAC(dataPtr[0],26) ^
PRV_GET_BIT_MAC(dataPtr[0],24) ^ PRV_GET_BIT_MAC(dataPtr[0],22) ^ PRV_GET_BIT_MAC(dataPtr[0],20) ^
PRV_GET_BIT_MAC(dataPtr[0],15) ^ PRV_GET_BIT_MAC(dataPtr[0],11) ^ PRV_GET_BIT_MAC(dataPtr[0],4) ^
PRV_GET_BIT_MAC(dataPtr[0],2);
hashBitPtr[6] =
PRV_GET_BIT_MAC(dataPtr[1],31) ^ PRV_GET_BIT_MAC(dataPtr[1],29) ^ PRV_GET_BIT_MAC(dataPtr[1],28) ^
PRV_GET_BIT_MAC(dataPtr[1],27) ^ PRV_GET_BIT_MAC(dataPtr[1],25) ^ PRV_GET_BIT_MAC(dataPtr[1],24) ^
PRV_GET_BIT_MAC(da