www.pudn.com > 2410winceCE_l80t64.rar > Regparms.c
//---------------------------------------------------------------------------
//
// Copyright (C) 1996-1997. Unpublished Work of Crystal Semiconductor Corp.
// All Rights Reserved.
//
// THIS WORK IS AN UNPUBLISHED WORK AND CONTAINS CONFIDENTIAL,
// PROPRIETARY AND TRADE SECRET INFORMATION OF CRYSTAL SEMICONDUCTOR.
// ACCESS TO THIS WORK IS RESTRICTED TO (I) CRYSTAL SEMICONDUCTOR EMPLOYEES
// WHO HAVE A NEED TO KNOW TO PERFORM TASKS WITHIN THE SCOPE OF THEIR
// ASSIGNMENTS AND (II) ENTITIES OTHER THAN CRYSTAL SEMICONDUCTOR WHO
// HAVE ENTERED INTO APPROPRIATE LICENSE AGREEMENTS. NO PART OF THIS
// WORK MAY BE USED, PRACTICED, PERFORMED, COPIED, DISTRIBUTED, REVISED,
// MODIFIED, TRANSLATED, ABRIDGED, CONDENSED, EXPANDED, COLLECTED,
// COMPILED,LINKED,RECAST, TRANSFORMED, ADAPTED IN ANY FORM OR BY ANY
// MEANS,MANUAL, MECHANICAL, CHEMICAL, ELECTRICAL, ELECTRONIC, OPTICAL,
// BIOLOGICAL, OR OTHERWISE WITHOUT THE PRIOR WRITTEN PERMISSION AND
// CONSENT OF CRYSTAL SEMICONDUCTOR . ANY USE OR EXPLOITATION OF THIS WORK
// WITHOUT THE PRIOR WRITTEN CONSENT OF CRYSTAL SEMICONDUCTOR COULD
// SUBJECT THE PERPETRATOR TO CRIMINAL AND CIVIL LIABILITY.
//
//---------------------------------------------------------------------------
#include "cs8900a.h"
//****************************************************************************
//
// Local type definitions and declarations
//
//****************************************************************************
//****************************************************************************
//
// Static variables declarations
//
//****************************************************************************
//****************************************************************************
//
// Function prototypes for functions local to this file
//
//****************************************************************************
ULONG stol(
PUCHAR szSerialnumber);
extern
NDIS_STATUS
GetNetworkAddress(
IN NDIS_HANDLE ConfigHandle,
OUT PUCHAR CurrentNetworkAddress
)
{
NDIS_STATUS Status;
NDIS_STRING MACAddrString[3]= { NDIS_STRING_CONST("MACAddress1"),
NDIS_STRING_CONST("MACAddress2"),
NDIS_STRING_CONST("MACAddress3")};
PNDIS_CONFIGURATION_PARAMETER ReturnedValue;
USHORT MacAddr[3];
int i;
USHORT tmpVal;
for (i=0; i<3; i++) {
NdisReadConfiguration(
&Status,
&ReturnedValue,
ConfigHandle,
&MACAddrString[i],
NdisParameterHexInteger
);
if (Status == NDIS_STATUS_SUCCESS) {
tmpVal=(USHORT)ReturnedValue->ParameterData.IntegerData;
MacAddr[i]= ((tmpVal & 0x00ff) << 8)| ((tmpVal & 0xff00) >> 8);
} else {
return NDIS_STATUS_FAILURE;
}
} /* end for i loop */
/* MAcAddr=0000:0000:0000 means to use EEPROM setting, so return Failure.*/
if ( MacAddr[0] == 0 && MacAddr[1] == 0 && MacAddr[2] == 0) {
return NDIS_STATUS_FAILURE;
}
NdisMoveMemory(CurrentNetworkAddress,
(unsigned char *)MacAddr,
(ULONG) ETH_LENGTH_OF_ADDRESS);
return NDIS_STATUS_SUCCESS;
}
extern
BYTE
GetDuplexMode(
IN NDIS_HANDLE ConfigHandle
)
{
NDIS_STATUS Status;
NDIS_STRING DuplexModeString = NDIS_STRING_CONST("DuplexMode"); // @251
PNDIS_CONFIGURATION_PARAMETER ReturnedValue;
IN BYTE DuplexMode;
DuplexMode = DUPLEX_HALF;
NdisReadConfiguration(
&Status,
&ReturnedValue,
ConfigHandle,
&DuplexModeString,
NdisParameterInteger
);
if (Status == NDIS_STATUS_SUCCESS) {
switch (ReturnedValue->ParameterData.IntegerData) {
case 0:
DuplexMode = DUPLEX_AUTO_NEGOTIATE;
break;
case 1:
DuplexMode = DUPLEX_HALF;
break;
case 2:
DuplexMode = DUPLEX_FULL;
break;
}
}
return DuplexMode;
}
ULONG stol(
PUCHAR szSerialnumber)
{
ULONG value=0;
for (; *szSerialnumber != 0; szSerialnumber++) {
value <<= 4;
if ((*szSerialnumber >= '0') && (*szSerialnumber <= '9')) {
value += *szSerialnumber - '0';
} else if ((*szSerialnumber >= 'a') && (*szSerialnumber <= 'f')) {
value += *szSerialnumber - 'a' + 10;
} else if ((*szSerialnumber >= 'A') && (*szSerialnumber <= 'F')) {
value += *szSerialnumber - 'A' + 10;
}
}
return value;
} /* end stol */