?? wlan_phoenix.c
字號:
mins = 0;
++hours;
}
if(hours == 24)
{
hours = 0;
}
}
if(RC1IF)
{
data = RCREG1; // read the received data
// calculate buffer index
tmphead = ( USART_RxHead + 1 ) & USART_RX_BUFFER_MASK;
USART_RxHead = tmphead; // store new index
if ( tmphead == USART_RxTail )
{
// ERROR! Receive buffer overflow
}
USART_RxBuf[tmphead] = data; // store received data in buffer
}
if(TRMT)
{
// check if all data is transmitted
if ( USART_TxHead != USART_TxTail )
{
// calculate buffer index
tmptail = ( USART_TxTail + 1 ) & USART_TX_BUFFER_MASK;
USART_TxTail = tmptail; // store new index
TXREG1 = USART_TxBuf[tmptail]; // start transmition
}
else
{
TX1IE = 0; // disable TX interrupt
}
}
}
int recvchar(void)
{
unsigned char tmptail;
// wait for incomming data
while ( USART_RxHead == USART_RxTail );
// calculate buffer index
tmptail = ( USART_RxTail + 1 ) & USART_RX_BUFFER_MASK;
USART_RxTail = tmptail; // store new index
return USART_RxBuf[tmptail]; // return data
}
int sendchar(int data)
{
unsigned char tmphead;
/* calculate buffer index */
tmphead = ( USART_TxHead + 1 ) & USART_TX_BUFFER_MASK;
/* wait for free space in buffer */
while ( tmphead == USART_TxTail );
/* store data in buffer */
USART_TxBuf[tmphead] = (unsigned char)data;
USART_TxHead = tmphead; /* store new index */
TX1IE = 1; /* enable TX interrupt */
return data;
}
unsigned char CharInQueue(void)
{
return(USART_RxHead != USART_RxTail);
}
//*******************************************************************************************************
//* Get Free BAP
//*******************************************************************************************************
char get_free_bap(void)
{
unsigned int temp;
char rc;
rc = 2;
temp = rd_cf_io16(Offset1_Register);
if(!(temp & BAP1Busy_Bit_Mask))
rc = 1;
temp = rd_cf_io16(Offset0_Register);
if(!(temp & BAP0Busy_Bit_Mask))
rc = 0;
return(rc);
}
//*******************************************************************************************************
//* PHOENIX CONFIGURATION
//*******************************************************************************************************
char phoenix_cfg(unsigned int cmd)
{
char rc;
unsigned int i,j,k;
switch(cmd)
{
case BSS:
fidrid_buffer[0] = RID_cfgPortType_Length;
fidrid_buffer[1] = RID_cfgPortType;
fidrid_buffer[2] = RID_cfgPortType_Infrastructure;
rc = rid_write(RID_cfgPortType, fidrid_buffer, RID_cfgPortType_Length);
//if(rc)
//printf("\r\nrid_write failed with return code %02X",rc);
break;
case IBSS:
fidrid_buffer[0] = RID_cfgPortType_Length;
fidrid_buffer[1] = RID_cfgPortType;
fidrid_buffer[2] = RID_cfgPortType_IBSS;
rc = rid_write(RID_cfgPortType, fidrid_buffer, RID_cfgPortType_Length);
//if(rc)
//printf("\r\nrid_write failed with return code %02X",rc);
break;
case SSID:
fidrid_buffer[0] = RID_DesiredSSID_Length;
fidrid_buffer[1] = RID_cfgDesiredSSID;
fidrid_buffer[2] = strlen(ssid);
j = strlen(ssid);
i=0;
k=3;
while(j > 1)
{
fidrid_buffer[k] = (ssid[i+1] << 8) | ssid[i];
i+=2;
++k;
j-=2;
}
while(j > 0)
{
fidrid_buffer[k] = ssid[i];
--j;
}
rc = rid_write(RID_cfgDesiredSSID,fidrid_buffer,RID_DesiredSSID_Length);
break;
case MAX_DATALEN:
fidrid_buffer[0] = RID_cfgMaxDataLength_Length;
fidrid_buffer[1] = RID_cfgMaxDataLength;
fidrid_buffer[2] = RID_cfgMaxDataLength_Value; //0x05DC - 1500 decimal
rc = rid_write(RID_cfgMaxDataLength, fidrid_buffer, RID_cfgMaxDataLength_Length);
break;
case NIC_RATE:
fidrid_buffer[0] = RID_TxRateControl_Length;
fidrid_buffer[1] = RID_TxRateControl;
fidrid_buffer[2] = RID_TxRateControl_Value_ALL;
rc = rid_write(RID_TxRateControl, fidrid_buffer, RID_TxRateControl_Length);
break;
case WEP_KEYID:
fidrid_buffer[0] = RID_cfgWEPDefaultKeyID_Length;
fidrid_buffer[1] = RID_cfgWEPDefaultKeyID;
fidrid_buffer[2] = RID_cfgWEPDefaultKeyID_Value0;
rc = rid_write(RID_cfgWEPDefaultKeyID, fidrid_buffer, RID_cfgWEPDefaultKeyID_Length);
break;
case WEP_KEY_64:
fidrid_buffer[0] = RID_Default64Key_Length;
fidrid_buffer[1] = RID_cfgDefaultKey0;
j = strlen(wepkey);
i=0;
k=2;
while(j > 1)
{
fidrid_buffer[k] = (wepkey[i+1] << 8) | wepkey[i];
i+=2;
++k;
j-=2;
}
while(j > 0)
{
fidrid_buffer[k] = wepkey[i];
--j;
}
rc = rid_write(RID_cfgDefaultKey0,fidrid_buffer,RID_Default128Key_Length);
break;
case WEP_KEY_128:
fidrid_buffer[0] = RID_Default128Key_Length;
fidrid_buffer[1] = RID_cfgDefaultKey0;
j = strlen(wepkey);
i=0;
k=2;
while(j > 1)
{
fidrid_buffer[k] = (wepkey[i+1] << 8) | wepkey[i];
i+=2;
++k;
j-=2;
}
while(j > 0)
{
fidrid_buffer[k] = wepkey[i];
--j;
}
rc = rid_write(RID_cfgDefaultKey0,fidrid_buffer,RID_Default128Key_Length);
break;
case WEP_ON:
fidrid_buffer[0] = RID_cfgWEPFlags_Length;
fidrid_buffer[1] = RID_cfgWEPFlags;
fidrid_buffer[2] = RID_cfgWEPFlags_Value_ON;
rc = rid_write(RID_cfgWEPFlags, fidrid_buffer, RID_cfgWEPFlags_Length);
break;
case WEP_OFF:
fidrid_buffer[0] = RID_cfgWEPFlags_Length;
fidrid_buffer[1] = RID_cfgWEPFlags;
fidrid_buffer[2] = RID_cfgWEPFlags_Value_OFF;
rc = rid_write(RID_cfgWEPFlags, fidrid_buffer, RID_cfgWEPFlags_Length);
break;
case WEP_AUTH_SK:
fidrid_buffer[0] = RID_cfgAuthentication_Length;
fidrid_buffer[1] = RID_cfgAuthentication;
fidrid_buffer[2] = RID_cfgAuthentication_Value_SK;
rc = rid_write(RID_cfgAuthentication, fidrid_buffer, RID_cfgAuthentication_Length);
break;
case WEP_AUTH_OS:
fidrid_buffer[0] = RID_cfgAuthentication_Length;
fidrid_buffer[1] = RID_cfgAuthentication;
fidrid_buffer[2] = RID_cfgAuthentication_Value_OS;
rc = rid_write(RID_cfgAuthentication, fidrid_buffer, RID_cfgAuthentication_Length);
break;
case WEP_AUTH_ALL:
fidrid_buffer[0] = RID_cfgAuthentication_Length;
fidrid_buffer[1] = RID_cfgAuthentication;
fidrid_buffer[2] = RID_cfgAuthentication_Value_OK;
rc = rid_write(RID_cfgAuthentication, fidrid_buffer, RID_cfgAuthentication_Length);
break;
default:
rc = 1;
break;
}
return(rc);
}
//*******************************************************************************************************
//* rid_write
//*******************************************************************************************************
char rid_write(unsigned int fidrid, unsigned int* buffer, unsigned int count)
{
char rc;
rc = bap_write(fidrid, 0x0000, (char*) buffer, (count+1)<<1);
rc = send_command(Access_Cmd | AccessWrite_Mask, fidrid);
return(rc);
}
//*******************************************************************************************************
//* bap_write
//*******************************************************************************************************
char bap_write(unsigned int fidrid,unsigned int offset,char* buffer, unsigned int count)
{
unsigned int temp;
char rc,bapnum;
bapnum = get_free_bap();
rc = 0;
switch(bapnum)
{
case 0:
wr_cf_io16(fidrid,Select0_Register);
wr_cf_io16(offset,Offset0_Register);
do{
temp = rd_cf_io16(Offset0_Register);
}while(temp & BAP0Busy_Bit_Mask);
temp = rd_cf_io16(Offset0_Register);
if(temp & BAP0Err_Bit_Mask)
rc=1;
else
wr_cf_data(BAP0,buffer,count);
break;
case 1:
wr_cf_io16(fidrid,Select1_Register);
wr_cf_io16(offset,Offset1_Register);
do{
temp = rd_cf_io16(Offset1_Register);
}while(temp & BAP1Busy_Bit_Mask);
temp = rd_cf_io16(Offset1_Register);
if(temp & BAP1Err_Bit_Mask)
rc=1;
else
wr_cf_data(BAP1,buffer,count);
break;
}
return(rc);
}
//*******************************************************************************************************
//* rid_read
//*******************************************************************************************************
char rid_read(unsigned int rid)
{
unsigned int temp;
char rc;
rc = 0;
temp = send_command(Access_Cmd,rid);
//if (temp)
// printf("\r\nrid_read: Access read RID: %04X command sent with return code: %02X", rid, temp);
//else
//printf("\r\nrid_read: Access read command sent successfully, try reading RID: %04X", rid);
temp = fid_read(rid);
if (temp)
rc=1;
return(rc);
}
//*******************************************************************************************************
//* fid_read
//*******************************************************************************************************
char fid_read(unsigned int fid)
{
unsigned int temp;
unsigned int fidlen;
unsigned int fidpointer;
char rc,bapnum;
bapnum = get_free_bap();
rc = 0;
switch(bapnum)
{
case 0:
wr_cf_io16(fid,Select0_Register);
wr_cf_io16(0x0000,Offset0_Register);
do{
temp = rd_cf_io16(Offset0_Register);
}while(temp & BAP0Busy_Bit_Mask);
temp = rd_cf_io16(Offset0_Register);
if(temp & BAP0Err_Bit_Mask)
rc = 1;
else
{
fidlen = rd_cf_io16(Data0_Register);
fidrid_buffer[0] = fidlen;
if(fidlen)
{
for(fidpointer=0;fidpointer<fidlen;fidpointer++)
fidrid_buffer[fidpointer+1] = rd_cf_io16(Data0_Register);
rc = 0;
}
}
break;
case 1:
wr_cf_io16(fid,Select1_Register);
wr_cf_io16(0x0000,Offset1_Register);
do{
temp = rd_cf_io16(Offset1_Register);
}while(temp & BAP1Busy_Bit_Mask);
temp = rd_cf_io16(Offset1_Register);
if(temp & BAP1Err_Bit_Mask)
rc = 1;
else
{
fidlen = rd_cf_io16(Data1_Register);
fidrid_buffer[0] = fidlen;
if(fidlen)
{
for(fidpointer=0;fidpointer<fidlen;fidpointer++)
{
fidrid_buffer[fidpointer+1] = rd_cf_io16(Data1_Register);
}
}
}
break;
default:
rc =1 ;
break;
}
return(rc);
}
//*******************************************************************************************************
//* rid_string_write
//*******************************************************************************************************
void rid_string_write(unsigned int fidrid, unsigned int ridlen, unsigned int* buffer)
{
unsigned int i,j,k;
//char tempstring[] = "PHOENIX_NETWORK";
//char tempstring[] = "";
fidrid_buffer[0] = ridlen;
fidrid_buffer[1] = fidrid;
fidrid_buffer[2] = strlen(ssid);
j = strlen(ssid);
i=0;
k=3;
while(j > 1)
{
fidrid_buffer[k] = (ssid[i+1] << 8) | ssid[i];
i+=2;
++k;
j-=2;
}
while(j > 0)
{
fidrid_buffer[k] = ssid[i];
--j;
}
rid_write(fidrid,buffer,ridlen);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -