⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 e2promctrl.cpp

📁 这个是无线网卡WirelessLAN 测试程序NDIS
💻 CPP
字号:
// E2promCtrl.cpp: implementation of the CE2promCtrl class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "..\ZDUSBMP_DUT.h"
#include "E2promCtrl.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

char cHexAsc[] =  {'0','1','2','3','4','5','6','7',
					'8','9','A','B','C','D','E','F'};

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CE2promCtrl::CE2promCtrl()
{
	bOpenFile = FALSE;

	pDLTempBuf = new UCHAR[MAX_USB_EEPROM_SIZE];
	TRACE("Heap memory to pDLTempBuf.\n");
}

CE2promCtrl::~CE2promCtrl()
{
	delete []pDLTempBuf;
	TRACE("Free pDLTempBuf.\n");
}

//For example:
//	CString mSTR0;
//	UCHAR mchar[20];
//
//	memset(mchar, 0x00, 20);
//	for (int i=0; i<10; i++){
//		CharToHex(pDLTempBuf[EE_STR0+i], &mchar[i*2]);
//	}
//	mSTR0.Format("%s", mchar);
void CE2promCtrl::CharToHex(UCHAR inum, UCHAR *ostr)
{
	int iinum = ((int)inum) & 0xff;
	*ostr++ = cHexAsc[(iinum >> 4   )];
	*ostr++ = cHexAsc[(iinum &  0x0F)];
	*ostr   = NULL;
}

BOOL CE2promCtrl::CheckHEXValues(CString str, int length)
{
	for (int j=0; j<length; j++){
		if( (str.GetAt(j) > 'F') || (str.GetAt(j) < 'A') && (str.GetAt(j) > '9') || (str.GetAt(j) < '0') ){
			return FALSE;
		}
	}

	return TRUE;
}

//For example: 	
//	UCHAR tmp[14];
//	LoadCurrData(0, tmp);
void CE2promCtrl::LoadCurrData(int mItem, UCHAR pDataBuff[])
{
	switch(mItem){
	case 0: //MAC
		memcpy(&pDLTempBuf[EE_MAC_ADDRESS], pDataBuff, 6);
		break;
	case 1: //SN
		memcpy(&pDLTempBuf[EE_SERIAL_NUMBER_ADDRESS], pDataBuff, 12);
		break;
	case 2: //SP
		memcpy(&pDLTempBuf[EE_SET_POINT_ADDRESS], pDataBuff, 14);
		break;
	case 3: //IT
		memcpy(&pDLTempBuf[EE_INTEGRATION_ADDRESS], pDataBuff, 14);
		break;
	}
}



void CE2promCtrl::ClearCurrData(int mItem)
{
	switch(mItem){
	case 0: //MAC
		memset(mCurrEepromData.MAC, 0x00, 6);
		break;
	case 1: //SN
		memset(mCurrEepromData.SN, 0x00, 12);
		break;
	case 2: //SP
		memset(mCurrEepromData.SetPoint, 0x00, 14);
		break;
	case 3: //IT
		memset(mCurrEepromData.Integration, 0x00, 14);
		break;
	case 4: //all
		memset(mCurrEepromData.MAC, 0x00, 6);
		memset(mCurrEepromData.SN, 0x00, 12);
		memset(mCurrEepromData.SetPoint, 0x00, 14);
		memset(mCurrEepromData.Integration, 0x00, 14);
		break;
	}
}

bool CE2promCtrl::AddMACAddress()
{
	unsigned int t_mac_buf = 0;
	unsigned int m_mac_buf[6];

	
	m_mac_buf[0] = CurrentMAC[0];
	m_mac_buf[1] = CurrentMAC[1];
	m_mac_buf[2] = CurrentMAC[2];
	m_mac_buf[3] = CurrentMAC[3];
	m_mac_buf[4] = CurrentMAC[4];
	m_mac_buf[5] = CurrentMAC[5];


	if (m_mac_buf[5] < 0xff || m_mac_buf[5] < 0xFF){
		m_mac_buf[5] += 1;
		CurrentMAC[5] = m_mac_buf[5];
		return TRUE;
	}

	if (m_mac_buf[4] < 0xff || m_mac_buf[4] < 0xFF){
		m_mac_buf[5] = 0;
		m_mac_buf[4] += 1;
		CurrentMAC[5] = m_mac_buf[5];
		CurrentMAC[4] = m_mac_buf[4];
		return TRUE;
	}

	if (m_mac_buf[3] < 0xff || m_mac_buf[3] < 0xFF){
		m_mac_buf[5] = 0;
		m_mac_buf[4] = 0;
		m_mac_buf[3] += 1;
		CurrentMAC[5] = m_mac_buf[5];
		CurrentMAC[4] = m_mac_buf[4];
		CurrentMAC[3] = m_mac_buf[3];
		return TRUE;
	}

	if (m_mac_buf[2] < 0xff || m_mac_buf[2] < 0xFF){
		m_mac_buf[5] = 0;
		m_mac_buf[4] = 0;
		m_mac_buf[3] = 0;
		m_mac_buf[2] += 1;
		CurrentMAC[5] = m_mac_buf[5];
		CurrentMAC[4] = m_mac_buf[4];
		CurrentMAC[3] = m_mac_buf[3];
		CurrentMAC[2] = m_mac_buf[2];
		return TRUE;
	}

	if (m_mac_buf[1] < 0xff || m_mac_buf[1] < 0xFF){
		m_mac_buf[5] = 0;
		m_mac_buf[4] = 0;
		m_mac_buf[3] = 0;
		m_mac_buf[2] = 0;
		m_mac_buf[1] += 1;
		CurrentMAC[5] = m_mac_buf[5];
		CurrentMAC[4] = m_mac_buf[4];
		CurrentMAC[3] = m_mac_buf[3];
		CurrentMAC[2] = m_mac_buf[2];
		CurrentMAC[1] = m_mac_buf[1];
		return TRUE;
	}


	if (m_mac_buf[0] < 0xff || m_mac_buf[0] < 0xFF){
		m_mac_buf[5] = 0;
		m_mac_buf[4] = 0;
		m_mac_buf[3] = 0;
		m_mac_buf[2] = 0;
		m_mac_buf[1] = 0;
		m_mac_buf[0] += 1;
		CurrentMAC[5] = m_mac_buf[5];
		CurrentMAC[4] = m_mac_buf[4];
		CurrentMAC[3] = m_mac_buf[3];
		CurrentMAC[2] = m_mac_buf[2];
		CurrentMAC[1] = m_mac_buf[1];
		CurrentMAC[0] = m_mac_buf[0];
		return TRUE;
	}

	return false;	
}

BOOL CE2promCtrl::AddSerialNumber()
{
	unsigned int t_sn_buf = 0;
	unsigned int m_sn_buf[12];

	
	m_sn_buf[0] = CurrentSN[0];
	m_sn_buf[1] = CurrentSN[1];
	m_sn_buf[2] = CurrentSN[2];
	m_sn_buf[3] = CurrentSN[3];
	m_sn_buf[4] = CurrentSN[4];
	m_sn_buf[5] = CurrentSN[5];
	m_sn_buf[6] = CurrentSN[6];
	m_sn_buf[7] = CurrentSN[7];
	m_sn_buf[8] = CurrentSN[8];
	m_sn_buf[9] = CurrentSN[9];
	m_sn_buf[10] = CurrentSN[10];
	m_sn_buf[11] = CurrentSN[11];


	if (m_sn_buf[11] < 0xff || m_sn_buf[11] < 0xFF){
		m_sn_buf[11] += 1;
		CurrentSN[11] = m_sn_buf[11];
		return TRUE;
	}

	if (m_sn_buf[10] < 0xff || m_sn_buf[10] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		return TRUE;
	}

	if (m_sn_buf[9] < 0xff || m_sn_buf[9] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] = 0;
		m_sn_buf[9] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		CurrentSN[9] = m_sn_buf[9];
		return TRUE;
	}

	if (m_sn_buf[8] < 0xff || m_sn_buf[8] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] = 0;
		m_sn_buf[9] = 0;
		m_sn_buf[8] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		CurrentSN[9] = m_sn_buf[9];
		CurrentSN[8] = m_sn_buf[8];
		return TRUE;
	}

	if (m_sn_buf[7] < 0xff || m_sn_buf[7] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] = 0;
		m_sn_buf[9] = 0;
		m_sn_buf[8] = 0;
		m_sn_buf[7] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		CurrentSN[9] = m_sn_buf[9];
		CurrentSN[8] = m_sn_buf[8];
		CurrentSN[7] = m_sn_buf[7];
		return TRUE;
	}


	if (m_sn_buf[6] < 0xff || m_sn_buf[6] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] = 0;
		m_sn_buf[9] = 0;
		m_sn_buf[8] = 0;
		m_sn_buf[7] = 0;
		m_sn_buf[6] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		CurrentSN[9] = m_sn_buf[9];
		CurrentSN[8] = m_sn_buf[8];
		CurrentSN[7] = m_sn_buf[7];
		CurrentSN[6] = m_sn_buf[6];
		return TRUE;
	}

	if (m_sn_buf[5] < 0xff || m_sn_buf[5] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] = 0;
		m_sn_buf[9] = 0;
		m_sn_buf[8] = 0;
		m_sn_buf[7] = 0;
		m_sn_buf[6] = 0;
		m_sn_buf[5] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		CurrentSN[9] = m_sn_buf[9];
		CurrentSN[8] = m_sn_buf[8];
		CurrentSN[7] = m_sn_buf[7];
		CurrentSN[6] = m_sn_buf[6];
		CurrentSN[5] = m_sn_buf[5];
		return TRUE;
	}

	if (m_sn_buf[4] < 0xff || m_sn_buf[4] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] = 0;
		m_sn_buf[9] = 0;
		m_sn_buf[8] = 0;
		m_sn_buf[7] = 0;
		m_sn_buf[6] = 0;
		m_sn_buf[5] = 0;
		m_sn_buf[4] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		CurrentSN[9] = m_sn_buf[9];
		CurrentSN[8] = m_sn_buf[8];
		CurrentSN[7] = m_sn_buf[7];
		CurrentSN[6] = m_sn_buf[6];
		CurrentSN[5] = m_sn_buf[5];
		CurrentSN[4] = m_sn_buf[4];
		return TRUE;
	}

	if (m_sn_buf[3] < 0xff || m_sn_buf[3] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] = 0;
		m_sn_buf[9] = 0;
		m_sn_buf[8] = 0;
		m_sn_buf[7] = 0;
		m_sn_buf[6] = 0;
		m_sn_buf[5] = 0;
		m_sn_buf[4] = 0;
		m_sn_buf[3] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		CurrentSN[9] = m_sn_buf[9];
		CurrentSN[8] = m_sn_buf[8];
		CurrentSN[7] = m_sn_buf[7];
		CurrentSN[6] = m_sn_buf[6];
		CurrentSN[5] = m_sn_buf[5];
		CurrentSN[4] = m_sn_buf[4];
		CurrentSN[3] = m_sn_buf[3];
		return TRUE;
	}

	if (m_sn_buf[2] < 0xff || m_sn_buf[2] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] = 0;
		m_sn_buf[9] = 0;
		m_sn_buf[8] = 0;
		m_sn_buf[7] = 0;
		m_sn_buf[6] = 0;
		m_sn_buf[5] = 0;
		m_sn_buf[4] = 0;
		m_sn_buf[3] = 0;
		m_sn_buf[2] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		CurrentSN[9] = m_sn_buf[9];
		CurrentSN[8] = m_sn_buf[8];
		CurrentSN[7] = m_sn_buf[7];
		CurrentSN[6] = m_sn_buf[6];
		CurrentSN[5] = m_sn_buf[5];
		CurrentSN[4] = m_sn_buf[4];
		CurrentSN[3] = m_sn_buf[3];
		CurrentSN[2] = m_sn_buf[2];
		return TRUE;
	}

	if (m_sn_buf[1] < 0xff || m_sn_buf[1] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] = 0;
		m_sn_buf[9] = 0;
		m_sn_buf[8] = 0;
		m_sn_buf[7] = 0;
		m_sn_buf[6] = 0;
		m_sn_buf[5] = 0;
		m_sn_buf[4] = 0;
		m_sn_buf[3] = 0;
		m_sn_buf[2] = 0;
		m_sn_buf[1] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		CurrentSN[9] = m_sn_buf[9];
		CurrentSN[8] = m_sn_buf[8];
		CurrentSN[7] = m_sn_buf[7];
		CurrentSN[6] = m_sn_buf[6];
		CurrentSN[5] = m_sn_buf[5];
		CurrentSN[4] = m_sn_buf[4];
		CurrentSN[3] = m_sn_buf[3];
		CurrentSN[2] = m_sn_buf[2];
		CurrentSN[1] = m_sn_buf[1];
		return TRUE;
	}

	if (m_sn_buf[0] < 0xff || m_sn_buf[0] < 0xFF){
		m_sn_buf[11] = 0;
		m_sn_buf[10] = 0;
		m_sn_buf[9] = 0;
		m_sn_buf[8] = 0;
		m_sn_buf[7] = 0;
		m_sn_buf[6] = 0;
		m_sn_buf[5] = 0;
		m_sn_buf[4] = 0;
		m_sn_buf[3] = 0;
		m_sn_buf[2] = 0;
		m_sn_buf[1] = 0;
		m_sn_buf[0] += 1;
		CurrentSN[11] = m_sn_buf[11];
		CurrentSN[10] = m_sn_buf[10];
		CurrentSN[9] = m_sn_buf[9];
		CurrentSN[8] = m_sn_buf[8];
		CurrentSN[7] = m_sn_buf[7];
		CurrentSN[6] = m_sn_buf[6];
		CurrentSN[5] = m_sn_buf[5];
		CurrentSN[4] = m_sn_buf[4];
		CurrentSN[3] = m_sn_buf[3];
		CurrentSN[2] = m_sn_buf[2];
		CurrentSN[1] = m_sn_buf[1];
		CurrentSN[0] = m_sn_buf[0];
		return TRUE;
	}

	return false;	
}

bool CE2promCtrl::AutoIncress()
{
	int i;

	//increase MAC and SN
	for(i=0; i<6; i++)
		CurrentMAC[i] = 0;
	for(i=0; i<6; i++)
		memset(&CurrentMAC[i], (UINT)mCurrEepromData.MAC[i], 1);
	if (!AddMACAddress()){
		//AfxMessageBox("MAC address value is overflow!!!");
		return false;
	}
	
	for(i=0; i<12; i++)
		CurrentSN[i] = 0;
	for(i=0; i<12; i++)
		memset(&CurrentSN[i], (UINT)mCurrEepromData.SN[i], 1);
	if (!AddSerialNumber()){
	//	AfxMessageBox("Serial Number value is overflow!!!");
		return false;
	}
												
	//clear all current values
	ClearCurrData(4);
							
	//upgrade values
	for(i=0; i<6; i++)
		memset(&mCurrEepromData.MAC[i], CurrentMAC[i], 1);
	for(i=0; i<12; i++)
		memset(&mCurrEepromData.SN[i], CurrentSN[i], 1);

	return true;
}

void CE2promCtrl::WriteBuffToCurrData(int mItem, UCHAR pDataBuff[], int mCh)
{
	switch(mItem){
	case 0: //MAC
		memcpy(mCurrEepromData.MAC, pDataBuff, 6);
		break;
	case 1: //SN
		memcpy(mCurrEepromData.SN, pDataBuff, 12);
		break;
	case 2: //SP
		mCurrEepromData.SetPoint[mCh] = pDataBuff[0];
		break;
	case 3: //IT
		mCurrEepromData.Integration[mCh] = pDataBuff[0];
		break;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -