more WIFI registers implemented, some fixed to match behavior on hardware
This commit is contained in:
parent
43880c9a21
commit
0a909c831d
1042
desmume/src/wifi.cpp
1042
desmume/src/wifi.cpp
File diff suppressed because it is too large
Load Diff
|
@ -26,7 +26,7 @@
|
||||||
|
|
||||||
/* standardize socket interface for linux and windows */
|
/* standardize socket interface for linux and windows */
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
#include <winsock2.h>
|
#include <winsock2.h>
|
||||||
#define socket_t SOCKET
|
#define socket_t SOCKET
|
||||||
#define sockaddr_t SOCKADDR
|
#define sockaddr_t SOCKADDR
|
||||||
#else
|
#else
|
||||||
|
@ -40,390 +40,409 @@
|
||||||
#define BASEPORT 7000 /* channel 1: 7000 ... channel 13: 7012 */
|
#define BASEPORT 7000 /* channel 1: 7000 ... channel 13: 7012 */
|
||||||
/* FIXME: make it configureable */
|
/* FIXME: make it configureable */
|
||||||
|
|
||||||
#define REG_WIFI_MODE 0x004
|
#define REG_WIFI_ID 0x000
|
||||||
#define REG_WIFI_WEP 0x006
|
#define REG_WIFI_MODE 0x004
|
||||||
#define REG_WIFI_IF 0x010
|
#define REG_WIFI_WEP 0x006
|
||||||
#define REG_WIFI_IE 0x012
|
#define REG_WIFI_IF 0x010
|
||||||
#define REG_WIFI_MAC0 0x018
|
#define REG_WIFI_IE 0x012
|
||||||
#define REG_WIFI_MAC1 0x01A
|
#define REG_WIFI_MAC0 0x018
|
||||||
#define REG_WIFI_MAC2 0x01C
|
#define REG_WIFI_MAC1 0x01A
|
||||||
#define REG_WIFI_BSS0 0x020
|
#define REG_WIFI_MAC2 0x01C
|
||||||
#define REG_WIFI_BSS1 0x022
|
#define REG_WIFI_BSS0 0x020
|
||||||
#define REG_WIFI_BSS2 0x024
|
#define REG_WIFI_BSS1 0x022
|
||||||
#define REG_WIFI_AID 0x028
|
#define REG_WIFI_BSS2 0x024
|
||||||
#define REG_WIFI_AIDCPY 0x02A
|
#define REG_WIFI_AID_LOW 0x028
|
||||||
#define REG_WIFI_RETRYLIMIT 0x02C
|
#define REG_WIFI_AID_HIGH 0x02A
|
||||||
#define REG_WIFI_WEPCNT 0x032
|
#define REG_WIFI_RETRYLIMIT 0x02C
|
||||||
#define REG_WIFI_POWERSTATE 0x03C
|
#define REG_WIFI_WEPCNT 0x032
|
||||||
#define REG_WIFI_FORCEPS 0x040
|
#define REG_WIFI_POWER_US 0x036
|
||||||
#define REG_WIFI_RANDOM 0x044
|
#define REG_WIFI_POWERSTATE 0x03C
|
||||||
#define REG_WIFI_RXRANGEBEGIN 0x050
|
#define REG_WIFI_FORCEPS 0x040
|
||||||
#define REG_WIFI_RXRANGEEND 0x052
|
#define REG_WIFI_RANDOM 0x044
|
||||||
#define REG_WIFI_RXHWWRITECSR 0x054
|
#define REG_WIFI_RXRANGEBEGIN 0x050
|
||||||
#define REG_WIFI_WRITECSRLATCH 0x056
|
#define REG_WIFI_RXRANGEEND 0x052
|
||||||
#define REG_WIFI_CIRCBUFRADR 0x058
|
#define REG_WIFI_RXHWWRITECSR 0x054
|
||||||
#define REG_WIFI_RXREADCSR 0x05A
|
#define REG_WIFI_WRITECSRLATCH 0x056
|
||||||
#define REG_WIFI_CIRCBUFREAD 0x060
|
#define REG_WIFI_CIRCBUFRADR 0x058
|
||||||
#define REG_WIFI_CIRCBUFWADR 0x068
|
#define REG_WIFI_RXREADCSR 0x05A
|
||||||
#define REG_WIFI_CIRCBUFWRITE 0x070
|
#define REG_WIFI_RXBUF_COUNT 0x05C
|
||||||
#define REG_WIFI_CIRCBUFWR_END 0x074
|
#define REG_WIFI_CIRCBUFREAD 0x060
|
||||||
#define REG_WIFI_CIRCBUFWR_SKIP 0x076
|
#define REG_WIFI_CIRCBUFRD_END 0x062
|
||||||
#define REG_WIFI_BEACONTRANS 0x080
|
#define REG_WIFI_CIRCBUFRD_SKIP 0x064
|
||||||
#define REG_WIFI_LISTENCOUNT 0x088
|
#define REG_WIFI_CIRCBUFWADR 0x068
|
||||||
#define REG_WIFI_BEACONPERIOD 0x08C
|
#define REG_WIFI_CIRCBUFWRITE 0x070
|
||||||
#define REG_WIFI_LISTENINT 0x08E
|
#define REG_WIFI_CIRCBUFWR_END 0x074
|
||||||
#define REG_WIFI_TXLOC1 0x0A0
|
#define REG_WIFI_CIRCBUFWR_SKIP 0x076
|
||||||
#define REG_WIFI_TXLOC2 0x0A4
|
#define REG_WIFI_BEACONTRANS 0x080
|
||||||
#define REG_WIFI_TXLOC3 0x0A8
|
#define REG_WIFI_LISTENCOUNT 0x088
|
||||||
#define REG_WIFI_TXOPT 0x0AC
|
#define REG_WIFI_BEACONPERIOD 0x08C
|
||||||
#define REG_WIFI_TXCNT 0x0AE
|
#define REG_WIFI_LISTENINT 0x08E
|
||||||
#define REG_WIFI_TXSTAT 0x0B8
|
#define REG_WIFI_TXLOC1 0x0A0
|
||||||
#define REG_WIFI_RXFILTER 0x0D0
|
#define REG_WIFI_TXLOC2 0x0A4
|
||||||
#define REG_WIFI_USCOUNTERCNT 0x0E8
|
#define REG_WIFI_TXLOC3 0x0A8
|
||||||
#define REG_WIFI_USCOMPARECNT 0x0EA
|
#define REG_WIFI_TXOPT 0x0AC
|
||||||
#define REG_WIFI_USCOMPARE0 0x0F0
|
#define REG_WIFI_TXCNT 0x0AE
|
||||||
#define REG_WIFI_USCOMPARE1 0x0F2
|
#define REG_WIFI_TXSTAT 0x0B8
|
||||||
#define REG_WIFI_USCOMPARE2 0x0F4
|
#define REG_WIFI_RXFILTER 0x0D0
|
||||||
#define REG_WIFI_USCOMPARE3 0x0F6
|
#define REG_WIFI_USCOUNTERCNT 0x0E8
|
||||||
#define REG_WIFI_USCOUNTER0 0x0F8
|
#define REG_WIFI_USCOMPARECNT 0x0EA
|
||||||
#define REG_WIFI_USCOUNTER1 0x0FA
|
#define REG_WIFI_EXTRACOUNTCNT 0x0EE
|
||||||
#define REG_WIFI_USCOUNTER2 0x0FC
|
#define REG_WIFI_USCOMPARE0 0x0F0
|
||||||
#define REG_WIFI_USCOUNTER3 0x0FE
|
#define REG_WIFI_USCOMPARE1 0x0F2
|
||||||
#define REG_WIFI_BBSIOCNT 0x158
|
#define REG_WIFI_USCOMPARE2 0x0F4
|
||||||
#define REG_WIFI_BBSIOWRITE 0x15A
|
#define REG_WIFI_USCOMPARE3 0x0F6
|
||||||
#define REG_WIFI_BBSIOREAD 0x15C
|
#define REG_WIFI_USCOUNTER0 0x0F8
|
||||||
#define REG_WIFI_BBSIOBUSY 0x15E
|
#define REG_WIFI_USCOUNTER1 0x0FA
|
||||||
#define REG_WIFI_RFIODATA2 0x17C
|
#define REG_WIFI_USCOUNTER2 0x0FC
|
||||||
#define REG_WIFI_RFIODATA1 0x17E
|
#define REG_WIFI_USCOUNTER3 0x0FE
|
||||||
#define REG_WIFI_RFIOBSY 0x180
|
#define REG_WIFI_EXTRACOUNT 0x118
|
||||||
#define REG_WIFI_RFIOCNT 0x184
|
#define REG_WIFI_BBSIOCNT 0x158
|
||||||
|
#define REG_WIFI_BBSIOWRITE 0x15A
|
||||||
/* Referenced as RF_ in dswifi: rffilter_t */
|
#define REG_WIFI_BBSIOREAD 0x15C
|
||||||
/* based on the documentation for the RF2958 chip of RF Micro Devices */
|
#define REG_WIFI_BBSIOBUSY 0x15E
|
||||||
/* using the register names as in docs ( http://www.rfmd.com/pdfs/2958.pdf )*/
|
#define REG_WIFI_RFIODATA2 0x17C
|
||||||
/* even tho every register only has 18 bits we are using u32 */
|
#define REG_WIFI_RFIODATA1 0x17E
|
||||||
typedef struct rffilter_t
|
#define REG_WIFI_RFIOBSY 0x180
|
||||||
{
|
#define REG_WIFI_RFIOCNT 0x184
|
||||||
union CFG1
|
#define REG_WIFI_IF_SET 0x21C
|
||||||
{
|
|
||||||
struct
|
/* WIFI misc constants */
|
||||||
{
|
#define WIFI_CHIPID 0x1440 /* emulates "old" wifi chip, new is 0xC340 */
|
||||||
/* 0*/ unsigned IF_VGA_REG_EN:1;
|
#define REG_PWRCNT 0x04000304
|
||||||
/* 1*/ unsigned IF_VCO_REG_EN:1;
|
|
||||||
/* 2*/ unsigned RF_VCO_REG_EN:1;
|
/* Referenced as RF_ in dswifi: rffilter_t */
|
||||||
/* 3*/ unsigned HYBERNATE:1;
|
/* based on the documentation for the RF2958 chip of RF Micro Devices */
|
||||||
/* 4*/ unsigned :10;
|
/* using the register names as in docs ( http://www.rfmd.com/pdfs/2958.pdf )*/
|
||||||
/*14*/ unsigned REF_SEL:2;
|
/* even tho every register only has 18 bits we are using u32 */
|
||||||
/*16*/ unsigned :2 ;
|
typedef struct rffilter_t
|
||||||
} bits ;
|
{
|
||||||
u32 val ;
|
union CFG1
|
||||||
} CFG1 ;
|
{
|
||||||
union IFPLL1
|
struct
|
||||||
{
|
{
|
||||||
struct
|
/* 0*/ unsigned IF_VGA_REG_EN:1;
|
||||||
{
|
/* 1*/ unsigned IF_VCO_REG_EN:1;
|
||||||
/* 0*/ unsigned DAC:4;
|
/* 2*/ unsigned RF_VCO_REG_EN:1;
|
||||||
/* 4*/ unsigned :5;
|
/* 3*/ unsigned HYBERNATE:1;
|
||||||
/* 9*/ unsigned P1:1;
|
/* 4*/ unsigned :10;
|
||||||
/*10*/ unsigned LD_EN1:1;
|
/*14*/ unsigned REF_SEL:2;
|
||||||
/*11*/ unsigned AUTOCAL_EN1:1;
|
/*16*/ unsigned :2 ;
|
||||||
/*12*/ unsigned PDP1:1;
|
} bits ;
|
||||||
/*13*/ unsigned CPL1:1;
|
u32 val ;
|
||||||
/*14*/ unsigned LPF1:1;
|
} CFG1 ;
|
||||||
/*15*/ unsigned VTC_EN1:1;
|
union IFPLL1
|
||||||
/*16*/ unsigned KV_EN1:1;
|
{
|
||||||
/*17*/ unsigned PLL_EN1:1;
|
struct
|
||||||
} bits ;
|
{
|
||||||
u32 val ;
|
/* 0*/ unsigned DAC:4;
|
||||||
} IFPLL1 ;
|
/* 4*/ unsigned :5;
|
||||||
union IFPLL2
|
/* 9*/ unsigned P1:1;
|
||||||
{
|
/*10*/ unsigned LD_EN1:1;
|
||||||
struct
|
/*11*/ unsigned AUTOCAL_EN1:1;
|
||||||
{
|
/*12*/ unsigned PDP1:1;
|
||||||
/* 0*/ unsigned IF_N:16;
|
/*13*/ unsigned CPL1:1;
|
||||||
/*16*/ unsigned :2;
|
/*14*/ unsigned LPF1:1;
|
||||||
} bits ;
|
/*15*/ unsigned VTC_EN1:1;
|
||||||
u32 val ;
|
/*16*/ unsigned KV_EN1:1;
|
||||||
} IFPLL2 ;
|
/*17*/ unsigned PLL_EN1:1;
|
||||||
union IFPLL3
|
} bits ;
|
||||||
{
|
u32 val ;
|
||||||
struct
|
} IFPLL1 ;
|
||||||
{
|
union IFPLL2
|
||||||
/* 0*/ unsigned KV_DEF1:4;
|
{
|
||||||
/* 4*/ unsigned CT_DEF1:4;
|
struct
|
||||||
/* 8*/ unsigned DN1:9;
|
{
|
||||||
/*17*/ unsigned :1;
|
/* 0*/ unsigned IF_N:16;
|
||||||
} bits ;
|
/*16*/ unsigned :2;
|
||||||
u32 val ;
|
} bits ;
|
||||||
} IFPLL3 ;
|
u32 val ;
|
||||||
union RFPLL1
|
} IFPLL2 ;
|
||||||
{
|
union IFPLL3
|
||||||
struct
|
{
|
||||||
{
|
struct
|
||||||
/* 0*/ unsigned DAC:4;
|
{
|
||||||
/* 4*/ unsigned :5;
|
/* 0*/ unsigned KV_DEF1:4;
|
||||||
/* 9*/ unsigned P:1;
|
/* 4*/ unsigned CT_DEF1:4;
|
||||||
/*10*/ unsigned LD_EN:1;
|
/* 8*/ unsigned DN1:9;
|
||||||
/*11*/ unsigned AUTOCAL_EN:1;
|
/*17*/ unsigned :1;
|
||||||
/*12*/ unsigned PDP:1;
|
} bits ;
|
||||||
/*13*/ unsigned CPL:1;
|
u32 val ;
|
||||||
/*14*/ unsigned LPF:1;
|
} IFPLL3 ;
|
||||||
/*15*/ unsigned VTC_EN:1;
|
union RFPLL1
|
||||||
/*16*/ unsigned KV_EN:1;
|
{
|
||||||
/*17*/ unsigned PLL_EN:1;
|
struct
|
||||||
} bits ;
|
{
|
||||||
u32 val ;
|
/* 0*/ unsigned DAC:4;
|
||||||
} RFPLL1 ;
|
/* 4*/ unsigned :5;
|
||||||
union RFPLL2
|
/* 9*/ unsigned P:1;
|
||||||
{
|
/*10*/ unsigned LD_EN:1;
|
||||||
struct
|
/*11*/ unsigned AUTOCAL_EN:1;
|
||||||
{
|
/*12*/ unsigned PDP:1;
|
||||||
/* 0*/ unsigned NUM2:6;
|
/*13*/ unsigned CPL:1;
|
||||||
/* 6*/ unsigned N2:12;
|
/*14*/ unsigned LPF:1;
|
||||||
} bits ;
|
/*15*/ unsigned VTC_EN:1;
|
||||||
u32 val ;
|
/*16*/ unsigned KV_EN:1;
|
||||||
} RFPLL2 ;
|
/*17*/ unsigned PLL_EN:1;
|
||||||
union RFPLL3
|
} bits ;
|
||||||
{
|
u32 val ;
|
||||||
struct
|
} RFPLL1 ;
|
||||||
{
|
union RFPLL2
|
||||||
/* 0*/ unsigned NUM2:18;
|
{
|
||||||
} bits ;
|
struct
|
||||||
u32 val ;
|
{
|
||||||
} RFPLL3 ;
|
/* 0*/ unsigned NUM2:6;
|
||||||
union RFPLL4
|
/* 6*/ unsigned N2:12;
|
||||||
{
|
} bits ;
|
||||||
struct
|
u32 val ;
|
||||||
{
|
} RFPLL2 ;
|
||||||
/* 0*/ unsigned KV_DEF:4;
|
union RFPLL3
|
||||||
/* 4*/ unsigned CT_DEF:4;
|
{
|
||||||
/* 8*/ unsigned DN:9;
|
struct
|
||||||
/*17*/ unsigned :1;
|
{
|
||||||
} bits ;
|
/* 0*/ unsigned NUM2:18;
|
||||||
u32 val ;
|
} bits ;
|
||||||
} RFPLL4 ;
|
u32 val ;
|
||||||
union CAL1
|
} RFPLL3 ;
|
||||||
{
|
union RFPLL4
|
||||||
struct
|
{
|
||||||
{
|
struct
|
||||||
/* 0*/ unsigned LD_WINDOW:3;
|
{
|
||||||
/* 3*/ unsigned M_CT_VALUE:5;
|
/* 0*/ unsigned KV_DEF:4;
|
||||||
/* 8*/ unsigned TLOCK:5;
|
/* 4*/ unsigned CT_DEF:4;
|
||||||
/*13*/ unsigned TVCO:5;
|
/* 8*/ unsigned DN:9;
|
||||||
} bits ;
|
/*17*/ unsigned :1;
|
||||||
u32 val ;
|
} bits ;
|
||||||
} CAL1 ;
|
u32 val ;
|
||||||
union TXRX1
|
} RFPLL4 ;
|
||||||
{
|
union CAL1
|
||||||
struct
|
{
|
||||||
{
|
struct
|
||||||
/* 0*/ unsigned TXBYPASS:1;
|
{
|
||||||
/* 1*/ unsigned INTBIASEN:1;
|
/* 0*/ unsigned LD_WINDOW:3;
|
||||||
/* 2*/ unsigned TXENMODE:1;
|
/* 3*/ unsigned M_CT_VALUE:5;
|
||||||
/* 3*/ unsigned TXDIFFMODE:1;
|
/* 8*/ unsigned TLOCK:5;
|
||||||
/* 4*/ unsigned TXLPFBW:3;
|
/*13*/ unsigned TVCO:5;
|
||||||
/* 7*/ unsigned RXLPFBW:3;
|
} bits ;
|
||||||
/*10*/ unsigned TXVGC:5;
|
u32 val ;
|
||||||
/*15*/ unsigned PCONTROL:2;
|
} CAL1 ;
|
||||||
/*17*/ unsigned RXDCFBBYPS:1;
|
union TXRX1
|
||||||
} bits ;
|
{
|
||||||
u32 val ;
|
struct
|
||||||
} TXRX1 ;
|
{
|
||||||
union PCNT1
|
/* 0*/ unsigned TXBYPASS:1;
|
||||||
{
|
/* 1*/ unsigned INTBIASEN:1;
|
||||||
struct
|
/* 2*/ unsigned TXENMODE:1;
|
||||||
{
|
/* 3*/ unsigned TXDIFFMODE:1;
|
||||||
/* 0*/ unsigned TX_DELAY:3;
|
/* 4*/ unsigned TXLPFBW:3;
|
||||||
/* 3*/ unsigned PC_OFFSET:6;
|
/* 7*/ unsigned RXLPFBW:3;
|
||||||
/* 9*/ unsigned P_DESIRED:6;
|
/*10*/ unsigned TXVGC:5;
|
||||||
/*15*/ unsigned MID_BIAS:3;
|
/*15*/ unsigned PCONTROL:2;
|
||||||
} bits ;
|
/*17*/ unsigned RXDCFBBYPS:1;
|
||||||
u32 val ;
|
} bits ;
|
||||||
} PCNT1 ;
|
u32 val ;
|
||||||
union PCNT2
|
} TXRX1 ;
|
||||||
{
|
union PCNT1
|
||||||
struct
|
{
|
||||||
{
|
struct
|
||||||
/* 0*/ unsigned MIN_POWER:6;
|
{
|
||||||
/* 6*/ unsigned MID_POWER:6;
|
/* 0*/ unsigned TX_DELAY:3;
|
||||||
/*12*/ unsigned MAX_POWER:6;
|
/* 3*/ unsigned PC_OFFSET:6;
|
||||||
} bits ;
|
/* 9*/ unsigned P_DESIRED:6;
|
||||||
} PCNT2 ;
|
/*15*/ unsigned MID_BIAS:3;
|
||||||
union VCOT1
|
} bits ;
|
||||||
{
|
u32 val ;
|
||||||
struct
|
} PCNT1 ;
|
||||||
{
|
union PCNT2
|
||||||
/* 0*/ unsigned :16;
|
{
|
||||||
/*16*/ unsigned AUX1:1;
|
struct
|
||||||
/*17*/ unsigned AUX:1;
|
{
|
||||||
} bits ;
|
/* 0*/ unsigned MIN_POWER:6;
|
||||||
u32 val ;
|
/* 6*/ unsigned MID_POWER:6;
|
||||||
} VCOT1 ;
|
/*12*/ unsigned MAX_POWER:6;
|
||||||
} rffilter_t ;
|
} bits ;
|
||||||
|
} PCNT2 ;
|
||||||
/* baseband chip refered as BB_, dataformat is unknown yet */
|
union VCOT1
|
||||||
/* it has at least 105 bytes of functional data */
|
{
|
||||||
typedef struct
|
struct
|
||||||
{
|
{
|
||||||
u8 data[105] ;
|
/* 0*/ unsigned :16;
|
||||||
} bb_t ;
|
/*16*/ unsigned AUX1:1;
|
||||||
|
/*17*/ unsigned AUX:1;
|
||||||
/* communication interface between RF,BB and the mac */
|
} bits ;
|
||||||
typedef union
|
u32 val ;
|
||||||
{
|
} VCOT1 ;
|
||||||
struct {
|
} rffilter_t ;
|
||||||
/* 0*/ unsigned wordsize:5;
|
|
||||||
/* 5*/ unsigned :2;
|
/* baseband chip refered as BB_, dataformat is unknown yet */
|
||||||
/* 7*/ unsigned readOperation:1;
|
/* it has at least 105 bytes of functional data */
|
||||||
/* 8*/ unsigned :8;
|
typedef struct
|
||||||
} bits ;
|
{
|
||||||
u16 val ;
|
u8 data[105] ;
|
||||||
} rfIOCnt_t ;
|
} bb_t ;
|
||||||
|
|
||||||
typedef union
|
/* communication interface between RF,BB and the mac */
|
||||||
{
|
typedef union
|
||||||
struct {
|
{
|
||||||
/* 0*/ unsigned busy:1;
|
struct {
|
||||||
/* 1*/ unsigned :15;
|
/* 0*/ unsigned wordsize:5;
|
||||||
} bits ;
|
/* 5*/ unsigned :2;
|
||||||
u16 val ;
|
/* 7*/ unsigned readOperation:1;
|
||||||
} rfIOStat_t ;
|
/* 8*/ unsigned :8;
|
||||||
|
} bits ;
|
||||||
typedef union
|
u16 val ;
|
||||||
{
|
} rfIOCnt_t ;
|
||||||
struct {
|
|
||||||
/* 0*/ unsigned content:18 ;
|
typedef union
|
||||||
/*18*/ unsigned address:5;
|
{
|
||||||
/*23*/ unsigned :9;
|
struct {
|
||||||
} bits ;
|
/* 0*/ unsigned busy:1;
|
||||||
struct {
|
/* 1*/ unsigned :15;
|
||||||
/* 0*/ unsigned low:16 ;
|
} bits ;
|
||||||
/*16*/ unsigned high:16 ;
|
u16 val ;
|
||||||
} val16 ;
|
} rfIOStat_t ;
|
||||||
u16 array16[2] ;
|
|
||||||
u32 val ;
|
typedef union
|
||||||
} rfIOData_t ;
|
{
|
||||||
|
struct {
|
||||||
typedef union
|
/* 0*/ unsigned content:18 ;
|
||||||
{
|
/*18*/ unsigned address:5;
|
||||||
struct {
|
/*23*/ unsigned :9;
|
||||||
/* 0*/ unsigned address:7;
|
} bits ;
|
||||||
/* 7*/ unsigned :5;
|
struct {
|
||||||
/*12*/ unsigned mode:2;
|
/* 0*/ unsigned low:16 ;
|
||||||
/*14*/ unsigned enable:1;
|
/*16*/ unsigned high:16 ;
|
||||||
/*15*/ unsigned :1;
|
} val16 ;
|
||||||
} bits ;
|
u16 array16[2] ;
|
||||||
u16 val ;
|
u32 val ;
|
||||||
} bbIOCnt_t ;
|
} rfIOData_t ;
|
||||||
|
|
||||||
#define WIFI_IRQ_RECVCOMPLETE 0x0001
|
typedef union
|
||||||
#define WIFI_IRQ_SENDCOMPLETE 0x0002
|
{
|
||||||
#define WIFI_IRQ_COUNTUP 0x0004
|
struct {
|
||||||
#define WIFI_IRQ_SENDERROR 0x0008
|
/* 0*/ unsigned address:7;
|
||||||
#define WIFI_IRQ_STATCOUNTUP 0x0010
|
/* 7*/ unsigned :5;
|
||||||
#define WIFI_IRQ_STATACKUP 0x0020
|
/*12*/ unsigned mode:2;
|
||||||
#define WIFI_IRQ_RECVSTART 0x0040
|
/*14*/ unsigned enable:1;
|
||||||
#define WIFI_IRQ_SENDSTART 0x0080
|
/*15*/ unsigned :1;
|
||||||
#define WIFI_IRQ_RFWAKEUP 0x0800
|
} bits ;
|
||||||
#define WIFI_IRQ_TIMEBEACON 0x4000
|
u16 val ;
|
||||||
#define WIFI_IRQ_TIMEPREBEACON 0x8000
|
} bbIOCnt_t ;
|
||||||
|
|
||||||
/* definition of the irq bitfields for wifi irq's (cascaded at arm7 irq #24) */
|
#define WIFI_IRQ_RECVCOMPLETE 0x0001
|
||||||
typedef union
|
#define WIFI_IRQ_SENDCOMPLETE 0x0002
|
||||||
{
|
#define WIFI_IRQ_COUNTUP 0x0004
|
||||||
struct
|
#define WIFI_IRQ_SENDERROR 0x0008
|
||||||
{
|
#define WIFI_IRQ_STATCOUNTUP 0x0010
|
||||||
/* 0*/ unsigned recv_complete:1;
|
#define WIFI_IRQ_STATACKUP 0x0020
|
||||||
/* 1*/ unsigned send_complete:1;
|
#define WIFI_IRQ_RECVSTART 0x0040
|
||||||
/* 2*/ unsigned recv_countup:1;
|
#define WIFI_IRQ_SENDSTART 0x0080
|
||||||
/* 3*/ unsigned send_error:1;
|
#define WIFI_IRQ_RFWAKEUP 0x0800
|
||||||
/* 4*/ unsigned stat_countup:1;
|
#define WIFI_IRQ_TIMEBEACON 0x4000
|
||||||
/* 5*/ unsigned stat_ackup:1;
|
#define WIFI_IRQ_TIMEPREBEACON 0x8000
|
||||||
/* 6*/ unsigned recv_start:1;
|
|
||||||
/* 7*/ unsigned send_start:1;
|
/* definition of the irq bitfields for wifi irq's (cascaded at arm7 irq #24) */
|
||||||
/* 8*/ unsigned :3;
|
typedef union
|
||||||
/*11*/ unsigned rf_wakeup:1;
|
{
|
||||||
/*12*/ unsigned :2;
|
struct
|
||||||
/*14*/ unsigned time_beacon:1;
|
{
|
||||||
/*15*/ unsigned time_prebeacon:1;
|
/* 0*/ unsigned recv_complete:1;
|
||||||
} bits ;
|
/* 1*/ unsigned send_complete:1;
|
||||||
u16 val ;
|
/* 2*/ unsigned recv_countup:1;
|
||||||
} wifiirq_t ;
|
/* 3*/ unsigned send_error:1;
|
||||||
|
/* 4*/ unsigned stat_countup:1;
|
||||||
/* wifimac_t: the buildin mac (arm7 addressrange: 0x04800000-0x04FFFFFF )*/
|
/* 5*/ unsigned stat_ackup:1;
|
||||||
/* http://www.akkit.org/info/dswifi.htm#WifiIOMap */
|
/* 6*/ unsigned recv_start:1;
|
||||||
typedef struct
|
/* 7*/ unsigned send_start:1;
|
||||||
{
|
/* 8*/ unsigned :3;
|
||||||
/* wifi interrupt handling */
|
/*11*/ unsigned rf_wakeup:1;
|
||||||
wifiirq_t IE ;
|
/*12*/ unsigned :2;
|
||||||
wifiirq_t IF ;
|
/*14*/ unsigned time_beacon:1;
|
||||||
|
/*15*/ unsigned time_prebeacon:1;
|
||||||
/* modes */
|
} bits ;
|
||||||
u16 macMode ;
|
u16 val ;
|
||||||
u16 wepMode ;
|
} wifiirq_t ;
|
||||||
BOOL WEP_enable ;
|
|
||||||
|
/* wifimac_t: the buildin mac (arm7 addressrange: 0x04800000-0x04FFFFFF )*/
|
||||||
/* sending */
|
/* http://www.akkit.org/info/dswifi.htm#WifiIOMap */
|
||||||
u16 TXSlot[3] ;
|
typedef struct
|
||||||
u16 TXCnt ;
|
{
|
||||||
u16 TXOpt ;
|
/* wifi interrupt handling */
|
||||||
u16 BEACONSlot ;
|
wifiirq_t IE ;
|
||||||
BOOL BEACON_enable ;
|
wifiirq_t IF ;
|
||||||
|
|
||||||
/* receiving */
|
/* modes */
|
||||||
u16 RXCnt ;
|
u16 macMode ;
|
||||||
u16 RXCheckCounter ;
|
u16 wepMode ;
|
||||||
|
BOOL WEP_enable ;
|
||||||
/* addressing/handshaking */
|
|
||||||
union
|
/* sending */
|
||||||
{
|
u16 TXSlot[3] ;
|
||||||
u16 words[3] ;
|
u16 TXCnt ;
|
||||||
u8 bytes[6] ;
|
u16 TXOpt ;
|
||||||
} mac ;
|
u16 BEACONSlot ;
|
||||||
union
|
BOOL BEACON_enable ;
|
||||||
{
|
|
||||||
u16 words[3] ;
|
/* receiving */
|
||||||
u8 bytes[6] ;
|
u16 RXCnt ;
|
||||||
} bss ;
|
u16 RXCheckCounter ;
|
||||||
u16 aid ;
|
|
||||||
u16 retryLimit ;
|
/* addressing/handshaking */
|
||||||
|
union
|
||||||
/* timing */
|
{
|
||||||
u64 usec ;
|
u16 words[3] ;
|
||||||
BOOL usecEnable ;
|
u8 bytes[6] ;
|
||||||
u64 ucmp ;
|
} mac ;
|
||||||
BOOL ucmpEnable ;
|
union
|
||||||
|
{
|
||||||
/* subchips */
|
u16 words[3] ;
|
||||||
rffilter_t RF ;
|
u8 bytes[6] ;
|
||||||
bb_t BB ;
|
} bss ;
|
||||||
|
u16 aid ;
|
||||||
/* subchip communications */
|
u16 pid ; /* player ID or aid_low */
|
||||||
rfIOCnt_t rfIOCnt ;
|
u16 retryLimit ;
|
||||||
rfIOStat_t rfIOStatus ;
|
|
||||||
rfIOData_t rfIOData ;
|
/* timing */
|
||||||
bbIOCnt_t bbIOCnt ;
|
BOOL crystalEnabled ;
|
||||||
|
u64 usec ;
|
||||||
/* buffers */
|
BOOL usecEnable ;
|
||||||
u16 circularBuffer[0x1000] ;
|
u64 ucmp ;
|
||||||
u16 RXRangeBegin ;
|
BOOL ucmpEnable ;
|
||||||
u16 RXRangeEnd ;
|
u16 eCount ;
|
||||||
u16 RXHWWriteCursor ;
|
BOOL eCountEnable ;
|
||||||
u16 RXReadCursor ;
|
|
||||||
u16 RXUnits ;
|
/* subchips */
|
||||||
u16 CircBufReadAddress ;
|
rffilter_t RF ;
|
||||||
u16 CircBufWriteAddress ;
|
bb_t BB ;
|
||||||
u16 CircBufEnd ;
|
|
||||||
u16 CircBufSkip ;
|
/* subchip communications */
|
||||||
|
rfIOCnt_t rfIOCnt ;
|
||||||
/* others */
|
rfIOStat_t rfIOStatus ;
|
||||||
u16 randomSeed ;
|
rfIOData_t rfIOData ;
|
||||||
|
bbIOCnt_t bbIOCnt ;
|
||||||
/* desmume host communication */
|
|
||||||
socket_t udpSocket ;
|
/* buffers */
|
||||||
u8 channel ;
|
u16 circularBuffer[0x1000] ;
|
||||||
|
u16 RXRangeBegin ;
|
||||||
} wifimac_t ;
|
u16 RXRangeEnd ;
|
||||||
|
u16 RXHWWriteCursor ;
|
||||||
|
u16 RXReadCursor ;
|
||||||
|
u16 RXUnits ;
|
||||||
|
u16 RXBufCount ;
|
||||||
|
u16 CircBufReadAddress ;
|
||||||
|
u16 CircBufWriteAddress ;
|
||||||
|
u16 CircBufRdEnd ;
|
||||||
|
u16 CircBufRdSkip ;
|
||||||
|
u16 CircBufWrEnd ;
|
||||||
|
u16 CircBufWrSkip ;
|
||||||
|
|
||||||
|
/* others */
|
||||||
|
u16 randomSeed ;
|
||||||
|
|
||||||
|
/* desmume host communication */
|
||||||
|
socket_t udpSocket ;
|
||||||
|
u8 channel ;
|
||||||
|
|
||||||
|
} wifimac_t ;
|
||||||
|
|
||||||
extern wifimac_t wifiMac ;
|
extern wifimac_t wifiMac ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue