亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? device.cpp

?? 基于Nuleus操作系統(tǒng)和s3c4510的編寫的EFC。已經(jīng)包含了該EFC的設(shè)計(jì)說明。這是個(gè)實(shí)際產(chǎn)品的代碼
?? CPP
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2003, Ulink Telecom Equipment Co., Ltd. All rights reserved.
//
// File:
//
//    Device.cpp
//
// Abstract:
//
//    implementation of the CDevice class.
//
// History:
//
//    V1.0	2003-03-19	Alex Duan	Original version.
//    V1.1	2003-11-12	Alex Duan	Replace >>/<< with OnSaveData/OnLoadData
//	  V1.3  2006-09-12  Bozhong Xu	Add ACO select
//									Rename OnInitTimer to OnWatchdogTimer
//									Modified OnInitDevice, OnTimer
//									Modified OnLoadData & OnSaveData
///////////////////////////////////////////////////////////////////////////////

#include "Device.h"
#include "APPCORE.H"
#include "mac_4510.h"
#include "rtcDriver.h"

#define MAX_ACO_COUNT		3
#define BDMA_RX_MAX_IDEL	20
#define IP_RX_MAX_IDEL		600

///////////////////////////////////////////////////////////////////////////////
// CDevice

IMPLEMENT_DYNAMIC(CDevice, CRTObject)

extern "C" 
{
	// the following two functions are used to reset (defined in init.s)
	void INT_Initialize(void); // restart from current code of DRAM
}

//extern UINT32 g_dwIpCnt;
//extern UINT32 g_dwBdmaCnt;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

DEVICEINFO::DEVICEINFO()
{
	Default();	
}

DEVICEINFO::~DEVICEINFO()
{
}

// Initialize default value
void DEVICEINFO::Default()
{
	aAddr.uAddrH = 0;
	aAddr.uAddrL = 1;
	aAddr.uGroup = 0;

	dMadeDate.uDay = 1;
	dMadeDate.uMonth = 1;
	dMadeDate.wYear = 2006;

	strName = "Unit 1";
	strProducer = "Ulink Telecom Equipment Co., Ltd.";
	strSerial = " ";
}

DEVICEINFO& DEVICEINFO::operator =(const DEVICEINFO &a)
{
	if (this == &a)
		return *this;

	this->aAddr = a.aAddr;
	this->dMadeDate = a.dMadeDate;
	this->strName = a.strName;
	this->strProducer = a.strProducer;
	this->strSerial = a.strSerial;

	return *this;
}

NETDEVICE::NETDEVICE()
{
	Default();	
}

NETDEVICE::~NETDEVICE()
{
}

// Initialize default value
void NETDEVICE::Default()
{
	strName = "";

	// Ip address
	auIP[0] = 192;
	auIP[1] = 168;
	auIP[2] = 0;
	auIP[3] = 201;

	// Subnet mask
	auSubnet[0] = 255;
	auSubnet[1] = 255;
	auSubnet[2] = 255;
	auSubnet[3] = 0;

	// Gateway
	auGateway[0] = 192;
	auGateway[1] = 168;
	auGateway[2] = 0;
	auGateway[3] = 1;

	// Mac address
	auMac[0] = 0x00;
	auMac[1] = 0x0B;
	auMac[2] = 0x9A;
	auMac[3] = 0x00;
	auMac[4] = 0x00;
	auMac[5] = 0x06;

	// Port
	nPort = 5000;
}

// Override operator=
NETDEVICE& NETDEVICE::operator =(const NETDEVICE &a)
{
	if (this == &a)
		return *this;
	
	this->strName = a.strName;
	this->nPort = a.nPort;
	for (BYTE i = 0; i < 6; i++)
	{
		if (i < 4)
		{
			this->auIP[i] = a.auIP[i];
			this->auSubnet[i] = a.auSubnet[i];
			this->auGateway[i] = a.auGateway[i];
		}
		this->auMac[i] = a.auMac[i];		
	}
	
	return *this;
}

CDevice::CDevice()
{
	m_bACO = TRUE; // ACO

	m_dwMinorUpgrade = 0;
	m_almLevel.dwAll = -1;
//	m_ndDevice.nPort = 0;

	ROMCON rcRom; // Store value of the ROMCON register of the S3C4510B
	DWORD dwAddr; // Address in the flash
	
	// Init flash data member
	rcRom.dwReg = ROMCON0;
	dwAddr = ((DWORD)rcRom.bits.base) << 16;
	m_cFlash.SetType(AM29LV160D, dwAddr);
	
	SetSectionString("Device");

	// Add
	m_bRedLed = FALSE;
	m_bReset = FALSE;
	m_uLoaddef = 0;

	// Set default master station, added by xbz
	m_addrMaster.uAddrH = 0;
	m_addrMaster.uAddrL = 1;
	m_addrMaster.uGroup = 0;

	// Net Status
	BDMA_RX_Idel	= 0;
	IP_RX_Idel		= 0;
	MacInit_Cnt		= 0;
	StackInit_cnt	= 0;
	Test_Cnt		= 0;
	m_byLinkStatus  = 0;	//	link down
}

CDevice::~CDevice()
{
	WORD key;
	CBoard *pcbBoard = NULL;
	POSITION pos = m_mapBoards.GetStartPosition();
	while (pos != NULL) 
	{
		m_mapBoards.GetNextAssoc(pos, key, pcbBoard);
		if (pcbBoard != NULL) 
		{
			delete pcbBoard;
			pcbBoard = NULL;
		}
	}
}

// gets the product identifier
BYTE CDevice::GetProductID() const
{
	return 0;
}

///////////////////////////////////////////////////////////////////////////////
// Parameters:
//		diInfo	[out]structure for retrieving the device information
// Remarks:
//		Gets the device information
void CDevice::GetDeviceInfo(DEVICEINFO &diInfo) const
{
	diInfo = m_diInfo;
}

///////////////////////////////////////////////////////////////////////////////
// Parameters:
//		diInfo	[in]structure that contains the data to set
// Remarks:
//		Set the device information
void CDevice::SetDeviceInfo(const DEVICEINFO &diInfo)
{
	m_diInfo = diInfo;	
//	GetApp()->SetModifiedFlag();
}

///////////////////////////////////////////////////////////////////////////////
// Parameters:
//		uIndex	Zero-based index of the board in the device
// Return Value:
//		A pointer to the CBoard object if specified board exists, else NULL
// Remarks:
//		Retrieves the board object by index from the device.
CBoard* CDevice::GetBoard(BYTE uIndex) const
{
	CBoard *pcbBoard = NULL;
	m_mapBoards.Lookup(uIndex, pcbBoard);
	return pcbBoard;
}

///////////////////////////////////////////////////////////////////////////////
// Parameters:
//		wBoardIndex		Zero-based index of the board in the device
//		wInterfaceType	The type of the interface.
//		wInterfaceIndex	Zero-based index of the interface in the board
// Return Value:
//		A pointer to the CInterface object if interface exists, else NULL
// Remarks:
//		Gets the interface of the specified board
CInterface* CDevice::GetInterface(WORD wBoardIndex, WORD wInterfaceType, 
								  WORD wInterfaceIndex) const
{
	CInterface *pciInterface = NULL;
	CBoard *pcbBoard = NULL;
	m_mapBoards.Lookup(wBoardIndex, pcbBoard);
	if (pcbBoard != NULL) 
	{
		pciInterface = pcbBoard->GetInterface(wInterfaceType, wInterfaceIndex);
	}
	return pciInterface;
}

// Watchdog reset
void CDevice::OnWatchdog()
{
	SetBitVal(IOPDATA, IO_WATCHDOG, !GetBitVal(IOPDATA, IO_WATCHDOG));
}

BOOL CDevice::OnGetACO()
{
	return GetBitVal(IOPDATA, IO_ACO);
}

///////////////////////////////////////////////////////////////////////////////
// Parameters:
//		nIDEvent	Specifies the identifier of the timer.
// Remarks:
//		The framework calls this member function after each interval specified 
//		in the CreateTimer member function of CRTApp used to install a timer.
void CDevice::OnTimer(UINT nIDEvent)
{
	switch(nIDEvent) {
	case TIMER_DEVICE_300MS: // Watchdog reset
		if (GetApp()->BeWatchdog() ||  // watchdog running
			(!GetApp()->BeWatchdog() && GetApp()->IsModified())) // saving task not completed.
			OnWatchdog();		
		break;

	case TIMER_DEVICE_400MS: // ACO
		{
			// Deal with ACO key and ACO LED 			
			static BYTE uAcoCount = 0;
			
			if (OnGetACO()) // high
			{ 
				uAcoCount = 0;
			}
			else if (++uAcoCount >= MAX_ACO_COUNT)
			{
				if (uAcoCount == MAX_ACO_COUNT)
				{
					OnAco();
				}
				else
				{
					uAcoCount = MAX_ACO_COUNT;
				}
			}
		}
		break;

	case TIMER_DEVICE_1S: // Running led or other
		
		if (m_bReset && !GetApp()->IsModified())
		{
			INT_Initialize(); // restart application			
		}

		OnRunLed();
		
		// Set RTC
		if (GetApp()->BeRTC())
			rtcAdjustLeapYear();

		// Check ethernet link status
		if (!GetApp()->IsSubSystem())
			CheckLinkStatus();
		break;
	default:
		break;
	}	
}

// flash the run LED
void CDevice::OnRunLed()
{	// P3: Red color of RUN LED (1:RED)
	// P4: Green color of RUN LED(1:GREEN)
//	SetBitVal(IOPDATA, IO_RUN_RED, 0);
//	SetBitVal(IOPDATA, IO_RUN_GREEN,!GetBitVal(IOPDATA, IO_RUN_GREEN));
	if (m_bRedLed)
	{
		SetBitVal(IOPDATA, IO_RUN_RED, !GetBitVal(IOPDATA, IO_RUN_GREEN));
	}
	else
	{
		SetBitVal(IOPDATA, IO_RUN_RED, 0);
	}
	SetBitVal(IOPDATA, IO_RUN_GREEN, !GetBitVal(IOPDATA, IO_RUN_GREEN));
}

// Reset run led
void CDevice::ResetRunLed()
{
	// First delete timer
	VERIFY(DeleteTimer("RunTimer"));
	
	// Set run led
	SetBitVal(IOPDATA, IO_RUN_GREEN, 0);
	SetBitVal(IOPDATA, IO_RUN_RED, 0);
	
	// Create timer again
	VERIFY(CreateTimer("RunTimer", TIMER_DEVICE_1S, 1000, 10));	
}

// On alarm cut off button pressed
void CDevice::OnAco()
{	
#ifdef __EFC_MASTER // Added by xbz
	BYTE uPara  = 1;
	GetApp()->AddEvent(PRESS_ACO, &uPara, 1);	
#endif
}

// sets net device parameters
void CDevice::SetNetDevice(const NETDEVICE &ndDevice, BYTE byMode)
{
	m_ndDevice = ndDevice;	

	switch(byMode) {
	case CONFIG_ALL:
		{
			NU_DEVICE device;
			device.dv_name = (LPSTR)"s3c4510";
			device.dv_hw.ether.dv_irq = 0;
			device.dv_hw.ether.dv_io_addr = 0;
			device.dv_hw.ether.dv_shared_addr = 0;
			device.dv_init = s3c4510_Initialize;
			device.dv_flags = 0;
			device.dv_driver_options = (DWORD)ndDevice.auMac;
			
			memcpy(device.dv_ip_addr, ndDevice.auIP, sizeof(ndDevice.auIP));
			memcpy(device.dv_subnet_mask, ndDevice.auSubnet, sizeof(ndDevice.auSubnet));
			memcpy(device.dv_gw, ndDevice.auGateway, sizeof(ndDevice.auGateway));
			VERIFY(NU_Init_Devices(&device, 1) == NU_SUCCESS);
		}
		break;
	case CONFIG_IP:
		{
			// Detach privous ip, attach new ip
			STATUS status;
			status = DEV_Detach_IP_From_Device((CHAR*)"s3c4510");
			ASSERT(status == NU_SUCCESS);
			status = DEV_Attach_IP_To_Device((CHAR*)"s3c4510", (UINT8*)ndDevice.auIP, 
				(UINT8*)ndDevice.auSubnet);	
			ASSERT(status == NU_SUCCESS);
		}
		break;
	case CONFIG_MAC:
		{		
			DV_DEVICE_ENTRY *pDevEntry = DEV_Get_Dev_By_Name((CHAR*)"s3c4510");
			ASSERT(pDevEntry);	 

			pDevEntry->dev_driver_options = (DWORD)ndDevice.auMac;

			// Set mac address to chips
			KS5_SetMacAddr(pDevEntry);
			KS5_MacInit(pDevEntry);
			
			// Reattch ip
			VERIFY(DEV_Attach_IP_To_Device((CHAR*)"s3c4510", (UINT8*)ndDevice.auIP, 
				(UINT8*)ndDevice.auSubnet) == NU_SUCCESS);
		}
		break;
	default: break;
	} 
		
}

// sets alarm level
void CDevice::SetAlarmLevel(DWORD dwLevel)
{ 
	m_almLevel.dwAll = dwLevel;
//	GetApp()->SetModifiedFlag();
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜一区二区三区| 日本一区二区三区dvd视频在线| 极品少妇xxxx精品少妇偷拍| 亚洲欧美在线另类| 精品国产乱码久久久久久久| 欧美图区在线视频| caoporen国产精品视频| 久久精品国产亚洲高清剧情介绍| 亚洲欧洲日韩综合一区二区| 久久久久久亚洲综合| 欧美久久一区二区| 97se亚洲国产综合在线| 国产宾馆实践打屁股91| 蜜臀av一区二区在线免费观看 | 成人app在线观看| 日本在线不卡视频| 亚洲一级片在线观看| 亚洲欧美精品午睡沙发| 国产精品嫩草99a| www亚洲一区| 欧美电影免费观看高清完整版在线 | 欧美日韩国产色站一区二区三区| 成人高清免费在线播放| 国产精品亚洲视频| 国产在线麻豆精品观看| 日韩av网站免费在线| 亚洲一二三级电影| 亚洲高清视频中文字幕| 一区二区三区久久久| 亚洲摸摸操操av| 中文字幕一区二区三区av| 国产精品无人区| 日本一区二区成人在线| 国产亚洲精品aa午夜观看| 久久久精品免费网站| 久久久国产综合精品女国产盗摄| 日韩欧美的一区| 日韩精品一区二区三区视频在线观看| 91麻豆精品久久久久蜜臀| 在线成人小视频| 91精品国产综合久久精品麻豆| 欧美日韩免费观看一区三区| 欧美欧美午夜aⅴ在线观看| 91麻豆精品国产91久久久久久久久 | 不卡免费追剧大全电视剧网站| 成人精品小蝌蚪| 91麻豆国产香蕉久久精品| 色吊一区二区三区| 日本道精品一区二区三区 | 7777精品伊人久久久大香线蕉超级流畅| 在线一区二区视频| 制服丝袜国产精品| 26uuu另类欧美亚洲曰本| 国产日本欧美一区二区| 亚洲男人的天堂一区二区| 亚洲成国产人片在线观看| 免费在线观看一区| 国产精品一区二区视频| www.欧美日韩国产在线| 欧美午夜精品一区| 日韩视频永久免费| 欧美国产在线观看| 一区二区三区加勒比av| 奇米在线7777在线精品| 免费成人在线影院| 成人免费观看av| 欧美日韩免费视频| 久久精品一区二区三区不卡牛牛| 国产精品久久久久一区二区三区 | 91国产丝袜在线播放| 欧美理论电影在线| 久久综合色之久久综合| 亚洲欧美日韩久久| 久久精品噜噜噜成人88aⅴ | 欧美羞羞免费网站| 精品日韩一区二区三区免费视频| 中文字幕欧美国产| 亚洲bt欧美bt精品| 国产91精品一区二区麻豆亚洲| 欧美亚洲丝袜传媒另类| 国产校园另类小说区| 午夜国产精品影院在线观看| 国产+成+人+亚洲欧洲自线| 欧美日韩国产另类一区| 国产精品免费久久| 欧美aaa在线| 91影院在线观看| 精品99999| 亚洲国产中文字幕| 成人网在线播放| 日韩无一区二区| 亚洲老妇xxxxxx| 国产美女在线精品| 91精品国产综合久久蜜臀| 亚洲人成电影网站色mp4| 黄色资源网久久资源365| 91黄色免费看| 国产精品福利在线播放| 久久av中文字幕片| 欧美日韩一区高清| 亚洲六月丁香色婷婷综合久久 | 成人aa视频在线观看| 日韩精品一区二区在线观看| 亚洲国产成人精品视频| 93久久精品日日躁夜夜躁欧美| 久久免费午夜影院| 日本三级亚洲精品| 欧美系列一区二区| 亚洲欧美区自拍先锋| 福利一区福利二区| 久久影院电视剧免费观看| 日本美女一区二区| 欧美日韩一二区| 亚洲精品中文在线影院| 不卡免费追剧大全电视剧网站| 欧美精品一区二区三区在线播放| 日韩经典一区二区| 欧美色大人视频| 一区二区三区免费在线观看| 91在线你懂得| 最新高清无码专区| 成人av片在线观看| 国产精品久久久久久亚洲毛片| 国产成人免费视频一区| 久久久美女毛片| 国产老女人精品毛片久久| 精品成人一区二区三区| 久久97超碰色| 精品国产乱码久久久久久1区2区 | 色欧美乱欧美15图片| 中文字幕一区二区不卡| av在线不卡观看免费观看| 中文字幕欧美日韩一区| 成人午夜电影小说| 亚洲国产精品av| 99re成人精品视频| 亚洲最新视频在线播放| 欧美久久高跟鞋激| 日韩一区精品字幕| 精品理论电影在线| 国产精选一区二区三区| 国产精品欧美一级免费| 91免费在线播放| 亚洲小说春色综合另类电影| 欧美高清hd18日本| 蜜臀av性久久久久蜜臀av麻豆 | 久久色.com| 国产91精品入口| 亚洲精品第一国产综合野| 欧美日韩国产一区| 美腿丝袜亚洲三区| 国产欧美一区视频| 91在线看国产| 午夜久久电影网| www欧美成人18+| 97精品国产97久久久久久久久久久久| 依依成人精品视频| 欧美一级日韩免费不卡| 国产在线视频不卡二| 亚洲婷婷综合久久一本伊一区 | 久久免费午夜影院| 91视频免费看| 日本女人一区二区三区| 国产亚洲综合性久久久影院| 97se亚洲国产综合在线| 亚洲午夜精品一区二区三区他趣| 日韩一区二区免费视频| 国产成人福利片| 亚洲第一精品在线| 国产欧美一区二区三区在线看蜜臀 | 亚洲老妇xxxxxx| 日韩精品一区二区三区在线播放 | 精品国内二区三区| 成人福利在线看| 三级一区在线视频先锋 | 欧美xxxxxxxx| 色综合天天综合在线视频| 日韩精品三区四区| 国产精品久久久久久福利一牛影视 | 国产欧美日本一区二区三区| 欧美天堂亚洲电影院在线播放| 国产一区福利在线| 夜夜精品浪潮av一区二区三区| 精品国产一区二区国模嫣然| 色欧美日韩亚洲| 国产成人精品免费视频网站| 亚洲一区二区三区四区的| 国产三级久久久| 欧美一级电影网站| 色88888久久久久久影院野外| 久久99精品视频| 亚洲国产视频一区| 欧美国产视频在线| 日韩免费福利电影在线观看| 欧洲精品一区二区| 99热精品国产| 国产91精品精华液一区二区三区| 日韩av电影免费观看高清完整版| **网站欧美大片在线观看| 久久久久久综合|