📄 mac.c
字号:
MessagePopup ("getMacAddress()", errorString);
failFlag = SET;
return(failFlag);
}
//
// Check for preexisting assignment
//
// File format is:
// serialNumber MACaddress productCode dateStamp
//
while (feof(filePtr) == 0 ) {
fgets (lineBuffer, LINE_BUFFER_LENGTH, filePtr);
//
// parse lineBuffer
//
itemsFormatted = sscanf (lineBuffer, "%s %s %s %s %[^\n]"
,table.serialNumber
,table.MACaddress1
,table.MACaddress2
,table.productCode
,table.dateStamp);
if(itemsFormatted == 5) { // looks like what we what
//
// compare table and user strings
//
if (strcmp (userString.serialNumber, table.serialNumber) == MATCH) {
preExistFlag = SET;
ASC2HEX(table.MACaddress1);
writeImgFile1();
ASC2HEX(table.MACaddress2);
writeImgFile2();
fclose (filePtr); // won't need to write to .dat
break; //stop searching after we find one
}
}
}
//
// If a pre-existing ethernet address DOESN'T exist, assign a new one
// and append this new record to ethernet.dat
//
if (preExistFlag == CLEAR)
{
ASC2HEX(table.MACaddress2); // should be last one in table search
incrementMACaddress();
//
// Check last permissable address
//
if (MACaddress[0] == lastMACaddress[0] &&
MACaddress[1] == lastMACaddress[1] &&
MACaddress[2] == lastMACaddress[2] &&
MACaddress[3] == lastMACaddress[3] &&
MACaddress[4] == lastMACaddress[4] &&
MACaddress[5] == lastMACaddress[5] &&
MACaddress[6] == lastMACaddress[6] &&
MACaddress[7] == lastMACaddress[7] &&
MACaddress[8] == lastMACaddress[8] &&
MACaddress[9] == lastMACaddress[9] &&
MACaddress[10] == lastMACaddress[10] &&
MACaddress[11] == lastMACaddress[11] )
{
//
//exceeds last permissable address
//
sprintf(errorString,"%s\n%s"
,"End of ethernet addresses has been reached"
,"Please apply for more ethernet addresses");
MessagePopup ("getMacAddress()", errorString);
failFlag = SET;
return(failFlag);
}
else if(MACaddress[0] != 0x0 ||
MACaddress[1] != 0x0 ||
MACaddress[2] != 0x6 ||
MACaddress[3] != 0x0 ||
MACaddress[4] != 0x1 ||
MACaddress[5] != 0xD )
{
sprintf(errorString,"\n%s\n%s"
,"Head of new MAC addresses has some wrong"
,"Please Contact your ICT engineer");
MessagePopup ("getMacAddress()", errorString);
failFlag = SET;
return(failFlag);
}
else
{
writeImgFile1();// create image file
MACaddress1[0]=MACaddress[0];
MACaddress1[1]=MACaddress[1];
MACaddress1[2]=MACaddress[2];
MACaddress1[3]=MACaddress[3];
MACaddress1[4]=MACaddress[4];
MACaddress1[5]=MACaddress[5];
MACaddress1[6]=MACaddress[6];
MACaddress1[7]=MACaddress[7];
MACaddress1[8]=MACaddress[8];
MACaddress1[9]=MACaddress[9];
MACaddress1[10]=MACaddress[10];
MACaddress1[11]=MACaddress[11];
}
incrementMACaddress();
if (MACaddress[0] == lastMACaddress[0] &&
MACaddress[1] == lastMACaddress[1] &&
MACaddress[2] == lastMACaddress[2] &&
MACaddress[3] == lastMACaddress[3] &&
MACaddress[4] == lastMACaddress[4] &&
MACaddress[5] == lastMACaddress[5] &&
MACaddress[6] == lastMACaddress[6] &&
MACaddress[7] == lastMACaddress[7] &&
MACaddress[8] == lastMACaddress[8] &&
MACaddress[9] == lastMACaddress[9] &&
MACaddress[10] == lastMACaddress[10] &&
MACaddress[11] == lastMACaddress[11] )
{
//
//exceeds last permissable address
//
sprintf(errorString,"%s\n%s"
,"End of ethernet addresses has been reached"
,"Please apply for more ethernet addresses");
MessagePopup ("getMacAddress()", errorString);
failFlag = SET;
return(failFlag);
}
else
{
writeImgFile2();// create image file
MACaddress2[0]=MACaddress[0];
MACaddress2[1]=MACaddress[1];
MACaddress2[2]=MACaddress[2];
MACaddress2[3]=MACaddress[3];
MACaddress2[4]=MACaddress[4];
MACaddress2[5]=MACaddress[5];
MACaddress2[6]=MACaddress[6];
MACaddress2[7]=MACaddress[7];
MACaddress2[8]=MACaddress[8];
MACaddress2[9]=MACaddress[9];
MACaddress2[10]=MACaddress[10];
MACaddress2[11]=MACaddress[11];
}
fclose(filePtr); // writeEthernetDatFile will reopen for write
writeEthernetDatFile(); // append it to ethernet.dat
}
return(SUCCESS);
}
//
// Get a new or previously assigned MAC address based on the UUT's serial number
// This is a new routine using Celestica's SFDM where the serial number is sent to
// the system requesting a MAC Address, it is processed and returns a MAC Address
// to the variable MACaddress that will be used to generate the mac.img file.
// - Bill McManus 10/19/2001
//
/*int getMacAddressFromSFDM()
{
int numMACAddresses;
//
// Get MAC Address
//
SPECTRUM_GetUserString("MacAddress",userString.MACaddress, 0, TWO_MAC_ADDRESS_LENGTH);
numMACAddresses = sscanf (userString.MACaddress, "%s %s" ,table2.MACaddress1,table2.MACaddress2);
SPECTRUM_SetUserString ("MacAddress1", table2.MACaddress1, 0);
SPECTRUM_SetUserString ("MacAddress2", table2.MACaddress2, 0);
if(numMACAddresses == 2) { // looks like what we what
ASC2HEX(table2.MACaddress1);
writeImgFile1(); // create image file 1
ASC2HEX(table2.MACaddress2);
writeImgFile2(); // create image file 2
}
//ASC2HEX(userString.MACaddress);
//writeImgFile(); // create image file
return(SUCCESS);
} //end getMacAddressFromSFDM
*/
int ASC2HEX(char *address)
{
int i = 0;
int nibble[MAC_ADDRESS_LENGTH] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},
etherByte[MAC_ADDRESS_LENGTH] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
for (i=0;i < MAC_ADDRESS_LENGTH;i++) {
if (address[i] == '0') nibble[i]=0x0;
if (address[i] == '1') nibble[i]=0x1;
if (address[i] == '2') nibble[i]=0x2;
if (address[i] == '3') nibble[i]=0x3;
if (address[i] == '4') nibble[i]=0x4;
if (address[i] == '5') nibble[i]=0x5;
if (address[i] == '6') nibble[i]=0x6;
if (address[i] == '7') nibble[i]=0x7;
if (address[i] == '8') nibble[i]=0x8;
if (address[i] == '9') nibble[i]=0x9;
if (address[i] == 'a') nibble[i]=0xA;
if (address[i] == 'A') nibble[i]=0xA;
if (address[i] == 'b') nibble[i]=0xB;
if (address[i] == 'B') nibble[i]=0xB;
if (address[i] == 'c') nibble[i]=0xC;
if (address[i] == 'C') nibble[i]=0xC;
if (address[i] == 'd') nibble[i]=0xD;
if (address[i] == 'D') nibble[i]=0xD;
if (address[i] == 'e') nibble[i]=0xE;
if (address[i] == 'E') nibble[i]=0xE;
if (address[i] == 'f') nibble[i]=0xF;
if (address[i] == 'F') nibble[i]=0xF;
MACaddress[i]=nibble[i];
}
if (preExistFlag == CLEAR) { // if a MACaddress is new, then assign a new one
for (i=MAC_ADDRESS_LENGTH-1;i>0;i--) {
if (nibble[i] == 16) {
nibble[i] = 0x0;
nibble[i-1] = ((nibble[i-1]) + 1);
}
}
}
for (i=0;i<6;i++) {
etherByte[i]=(((nibble[(2*i)+1])+(nibble[2*i]*16)));
}
return(SUCCESS);
}
//
// Increment MAC address
//
int incrementMACaddress()
{
int i;
MACaddress[11]=(MACaddress[11]+0x1);
for (i=MAC_ADDRESS_LENGTH-1;i > 0;i--) {
if (MACaddress[i] == 16) {
MACaddress[i]=0x00;
MACaddress[i-1] = ((MACaddress[i-1])+1);
}
}
return(SUCCESS);
}
//
// Write serialNumber, MACaddress, and timeStamp to ethernet.dat file
//
int writeEthernetDatFile()
{
FILE *filePtr;
int i;
char errorString[ERROR_STRING_LENGTH];
if( (filePtr = fopen(macFilename, "a")) == (FILE *) NULL) {
sprintf(errorString,"Couldn't open ethernet file:\n'%s'", macFilename);
MessagePopup ("writeEthernetDatFile()", errorString);
failFlag=SET;
return(failFlag);
}
fprintf(filePtr, "%s ",userString.serialNumber);
for (i=0;i < MAC_ADDRESS_LENGTH;i++)
fprintf(filePtr,"%X",MACaddress1[i]);
fprintf(filePtr," ");
for (i=0;i < MAC_ADDRESS_LENGTH;i++)
fprintf(filePtr,"%X",MACaddress2[i]);
fprintf(filePtr," ");
fprintf(filePtr, "%s ",userString.productCode);
time(&now);
fprintf(filePtr,ctime(&now));
fclose(filePtr);
return(SUCCESS);
}
//
// Write Image File
//
int writeImgFile1()
{
FILE *fp;
char nibble[] = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
char errorString[ERROR_STRING_LENGTH];
if( (fp = fopen(imageFilename1, "wb")) == (FILE *) NULL) {
sprintf(errorString,"Couldn't open image file '%s'", imageFilename1);
MessagePopup ("writeImgFile()", errorString);
failFlag=SET;
return(failFlag);
}
nibble[2] = (MACaddress[0] << 4) + (MACaddress[1]);
nibble[3] = (MACaddress[2] << 4) + (MACaddress[3]);
nibble[4] = (MACaddress[4] << 4) + (MACaddress[5]);
nibble[5] = (MACaddress[6] << 4) + (MACaddress[7]);
nibble[6] = (MACaddress[8] << 4) + (MACaddress[9]);
nibble[7] = (MACaddress[10] << 4) + (MACaddress[11]);
fwrite(&nibble,sizeof(nibble),1,fp);
fclose(fp);
return(SUCCESS);
}
//
// Write Image File 2
//
int writeImgFile2()
{
FILE *fp;
char nibble[] = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0};
char errorString[ERROR_STRING_LENGTH];
if( (fp = fopen(imageFilename2, "wb")) == (FILE *) NULL) {
sprintf(errorString,"Couldn't open image file '%s'", imageFilename2);
MessagePopup ("writeImgFile()", errorString);
failFlag=SET;
return(failFlag);
}
nibble[2] = (MACaddress[0] << 4) + (MACaddress[1]);
nibble[3] = (MACaddress[2] << 4) + (MACaddress[3]);
nibble[4] = (MACaddress[4] << 4) + (MACaddress[5]);
nibble[5] = (MACaddress[6] << 4) + (MACaddress[7]);
nibble[6] = (MACaddress[8] << 4) + (MACaddress[9]);
nibble[7] = (MACaddress[10] << 4) + (MACaddress[11]);
fwrite(&nibble,sizeof(nibble),1,fp);
fclose(fp);
return(SUCCESS);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -