summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/nds/dswifi/common/source/wifi_shared.h
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-04-16 18:37:33 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-04-16 18:37:33 +0000
commit311dfa65d823ebb1448a12e9a24d09c7ca7a9e2a (patch)
tree47eaf22ca7bb8cc68486ffe964abd54b535902ad /c/src/lib/libbsp/arm/nds/dswifi/common/source/wifi_shared.h
parent2008-04-16 Matthieu Bucchianeri <mbucchia@gmail.com> (diff)
downloadrtems-311dfa65d823ebb1448a12e9a24d09c7ca7a9e2a.tar.bz2
2008-04-16 Matthieu Bucchianeri <mbucchia@gmail.com>
* ChangeLog, Makefile.am, README, bsp_specs, configure.ac, mk_libnds.sh, patch.libnds, preinstall.am, block/block.c, clock/clock.c, console/console.c, coproc/coproc.S, coproc/coproc.c, coproc/coproc.ld, dswifi/dswifi_license.txt, dswifi/makefile, dswifi/arm7/makefile, dswifi/arm7/source/wifi_arm7.c, dswifi/arm7/source/wifi_arm7.h, dswifi/arm9/makefile, dswifi/arm9/source/sgIP.c, dswifi/arm9/source/sgIP.h, dswifi/arm9/source/sgIP_ARP.c, dswifi/arm9/source/sgIP_ARP.h, dswifi/arm9/source/sgIP_Config.h, dswifi/arm9/source/sgIP_DHCP.c, dswifi/arm9/source/sgIP_DHCP.h, dswifi/arm9/source/sgIP_DNS.c, dswifi/arm9/source/sgIP_DNS.h, dswifi/arm9/source/sgIP_Hub.c, dswifi/arm9/source/sgIP_Hub.h, dswifi/arm9/source/sgIP_ICMP.c, dswifi/arm9/source/sgIP_ICMP.h, dswifi/arm9/source/sgIP_IP.c, dswifi/arm9/source/sgIP_IP.h, dswifi/arm9/source/sgIP_TCP.c, dswifi/arm9/source/sgIP_TCP.h, dswifi/arm9/source/sgIP_UDP.c, dswifi/arm9/source/sgIP_UDP.h, dswifi/arm9/source/sgIP_memblock.c, dswifi/arm9/source/sgIP_memblock.h, dswifi/arm9/source/sgIP_sockets.c, dswifi/arm9/source/sgIP_sockets.h, dswifi/arm9/source/wifi_arm9.c, dswifi/arm9/source/wifi_arm9.h, dswifi/common/source/dsregs.h, dswifi/common/source/spinlock.h, dswifi/common/source/spinlock.s, dswifi/common/source/wifi_shared.h, dswifi/include/dswifi7.h, dswifi/include/dswifi9.h, dswifi/include/dswifi_version.h, dswifi/include/netdb.h, dswifi/include/sgIP_errno.h, dswifi/include/netinet/in.h, fb/fb.c, fb/fb.h, include/bsp.h, include/my_ipc.h, include/tm27.h, include/types.h, include/sys/iosupport.h, irq/irq.c, irq/irq.h, libfat/gba/include/fat.h, libfat/include/fat.h, libfat/nds/include/fat.h, libfat/source/bit_ops.h, libfat/source/cache.c, libfat/source/cache.h, libfat/source/common.h, libfat/source/directory.c, libfat/source/directory.h, libfat/source/fatdir.c, libfat/source/fatdir.h, libfat/source/fatfile.c, libfat/source/fatfile.h, libfat/source/file_allocation_table.c, libfat/source/file_allocation_table.h, libfat/source/filetime.c, libfat/source/filetime.h, libfat/source/libfat.c, libfat/source/mem_allocate.h, libfat/source/partition.c, libfat/source/partition.h, libfat/source/disc_io/disc.c, libfat/source/disc_io/disc.h, libfat/source/disc_io/disc_io.h, libfat/source/disc_io/io_cf_common.c, libfat/source/disc_io/io_cf_common.h, libfat/source/disc_io/io_dldi.h, libfat/source/disc_io/io_dldi.s, libfat/source/disc_io/io_efa2.c, libfat/source/disc_io/io_efa2.h, libfat/source/disc_io/io_fcsr.c, libfat/source/disc_io/io_fcsr.h, libfat/source/disc_io/io_m3_common.c, libfat/source/disc_io/io_m3_common.h, libfat/source/disc_io/io_m3cf.c, libfat/source/disc_io/io_m3cf.h, libfat/source/disc_io/io_m3sd.c, libfat/source/disc_io/io_m3sd.h, libfat/source/disc_io/io_mpcf.c, libfat/source/disc_io/io_mpcf.h, libfat/source/disc_io/io_njsd.c, libfat/source/disc_io/io_njsd.h, libfat/source/disc_io/io_nmmc.c, libfat/source/disc_io/io_nmmc.h, libfat/source/disc_io/io_sc_common.c, libfat/source/disc_io/io_sc_common.h, libfat/source/disc_io/io_sccf.c, libfat/source/disc_io/io_sccf.h, libfat/source/disc_io/io_scsd.c, libfat/source/disc_io/io_scsd.h, libfat/source/disc_io/io_scsd_s.s, libfat/source/disc_io/io_sd_common.c, libfat/source/disc_io/io_sd_common.h, libnds/Makefile.arm7, libnds/Makefile.arm9, libnds/libnds_license.txt, libnds/basicARM7/source/defaultARM7.c, libnds/include/default_font_bin.h, libnds/include/gbfs.h, libnds/include/nds.h, libnds/include/nds/bios.h, libnds/include/nds/card.h, libnds/include/nds/dma.h, libnds/include/nds/interrupts.h, libnds/include/nds/ipc.h, libnds/include/nds/jtypes.h, libnds/include/nds/memory.h, libnds/include/nds/registers_alt.h, libnds/include/nds/reload.h, libnds/include/nds/system.h, libnds/include/nds/timers.h, libnds/include/nds/arm7/audio.h, libnds/include/nds/arm7/clock.h, libnds/include/nds/arm7/serial.h, libnds/include/nds/arm7/touch.h, libnds/include/nds/arm9/background.h, libnds/include/nds/arm9/boxtest.h, libnds/include/nds/arm9/cache.h, libnds/include/nds/arm9/console.h, libnds/include/nds/arm9/exceptions.h, libnds/include/nds/arm9/image.h, libnds/include/nds/arm9/input.h, libnds/include/nds/arm9/math.h, libnds/include/nds/arm9/ndsmotion.h, libnds/include/nds/arm9/pcx.h, libnds/include/nds/arm9/postest.h, libnds/include/nds/arm9/rumble.h, libnds/include/nds/arm9/sound.h, libnds/include/nds/arm9/sprite.h, libnds/include/nds/arm9/trig_lut.h, libnds/include/nds/arm9/video.h, libnds/include/nds/arm9/videoGL.h, libnds/source/arm7/audio.c, libnds/source/arm7/clock.c, libnds/source/arm7/microphone.c, libnds/source/arm7/spi.c, libnds/source/arm7/touch.c, libnds/source/arm7/userSettings.c, libnds/source/arm9/COS.bin, libnds/source/arm9/COS.s, libnds/source/arm9/SIN.bin, libnds/source/arm9/SIN.s, libnds/source/arm9/TAN.bin, libnds/source/arm9/TAN.s, libnds/source/arm9/boxtest.c, libnds/source/arm9/console.c, libnds/source/arm9/dcache.s, libnds/source/arm9/default_font.bin, libnds/source/arm9/default_font.s, libnds/source/arm9/exceptionHandler.S, libnds/source/arm9/exceptionHandler.s, libnds/source/arm9/exceptions.c, libnds/source/arm9/gurumeditation.c, libnds/source/arm9/icache.s, libnds/source/arm9/image.c, libnds/source/arm9/initSystem.c, libnds/source/arm9/keys.c, libnds/source/arm9/ndsmotion.c, libnds/source/arm9/pcx.c, libnds/source/arm9/rumble.c, libnds/source/arm9/sound.c, libnds/source/arm9/system.c, libnds/source/arm9/touch.c, libnds/source/arm9/video.c, libnds/source/arm9/videoGL.c, libnds/source/common/biosCalls.s, libnds/source/common/card.c, libnds/source/common/gbfs.c, libnds/source/common/interruptDispatcher.s, libnds/source/common/interrupts.c, rtc/rtc.c, sound/sound.c, sound/sound.h, start/start.S, startup/linkcmds, startup/start.c, timer/timer.c, tools/Makefile.am, tools/bin2s, tools/bin2s.c, tools/configure.ac, tools/runtest, tools/ndstool/include/arm7_sha1_homebrew.h, tools/ndstool/include/arm7_sha1_nintendo.h, tools/ndstool/include/banner.h, tools/ndstool/include/bigint.h, tools/ndstool/include/crc.h, tools/ndstool/include/default_icon.h, tools/ndstool/include/encryption.h, tools/ndstool/include/header.h, tools/ndstool/include/hook.h, tools/ndstool/include/little.h, tools/ndstool/include/loadme.h, tools/ndstool/include/logo.h, tools/ndstool/include/ndscreate.h, tools/ndstool/include/ndsextract.h, tools/ndstool/include/ndstool.h, tools/ndstool/include/ndstree.h, tools/ndstool/include/overlay.h, tools/ndstool/include/passme.h, tools/ndstool/include/passme_sram.h, tools/ndstool/include/passme_vhd1.h, tools/ndstool/include/passme_vhd2.h, tools/ndstool/include/raster.h, tools/ndstool/include/sha1.h, tools/ndstool/include/types.h, tools/ndstool/source/arm7_sha1_homebrew.c, tools/ndstool/source/arm7_sha1_nintendo.c, tools/ndstool/source/banner.cpp, tools/ndstool/source/bigint.cpp, tools/ndstool/source/compile_date.c, tools/ndstool/source/crc.cpp, tools/ndstool/source/default_icon.c, tools/ndstool/source/encryption.cpp, tools/ndstool/source/header.cpp, tools/ndstool/source/hook.cpp, tools/ndstool/source/loadme.c, tools/ndstool/source/logo.cpp, tools/ndstool/source/ndscodes.cpp, tools/ndstool/source/ndscreate.cpp, tools/ndstool/source/ndsextract.cpp, tools/ndstool/source/ndstool.cpp, tools/ndstool/source/ndstree.cpp, tools/ndstool/source/passme.cpp, tools/ndstool/source/passme_sram.c, tools/ndstool/source/raster.cpp, tools/ndstool/source/sha1.cpp, touchscreen/README.reco, touchscreen/parser.c, touchscreen/reco.c, touchscreen/reco.h, touchscreen/touchscreen.c, touchscreen/touchscreen.h, wifi/compat.c, wifi/compat.h, wifi/wifi.c: New files.
Diffstat (limited to 'c/src/lib/libbsp/arm/nds/dswifi/common/source/wifi_shared.h')
-rw-r--r--c/src/lib/libbsp/arm/nds/dswifi/common/source/wifi_shared.h284
1 files changed, 284 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/nds/dswifi/common/source/wifi_shared.h b/c/src/lib/libbsp/arm/nds/dswifi/common/source/wifi_shared.h
new file mode 100644
index 0000000000..9c83af9502
--- /dev/null
+++ b/c/src/lib/libbsp/arm/nds/dswifi/common/source/wifi_shared.h
@@ -0,0 +1,284 @@
+// DS Wifi interface code
+// Copyright (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org
+// wifi_shared.h - Shared structures to be used by arm9 and arm7
+/******************************************************************************
+DSWifi Lib and test materials are licenced under the MIT open source licence:
+Copyright (c) 2005-2006 Stephen Stair
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+******************************************************************************/
+
+#ifndef WIFI_SHARED_H
+#define WIFI_SHARED_H
+
+
+#include <nds.h>
+
+
+
+// on spinlock contention, the side unsuccessfully attempting the lock reverts the lock.
+// if the unlocking side sees the lock incorrectly set, the unlocking side will delay until it has reverted to the correct value, then continue unlocking.
+// there should be a delay of at least about ~10-20 cycles between a lock and unlock, to prevent contention.
+#define SPINLOCK_NOBODY 0x0000
+#define SPINLOCK_ARM7 0x0001
+#define SPINLOCK_ARM9 0x0002
+
+#define SPINLOCK_OK 0x0000
+#define SPINLOCK_INUSE 0x0001
+#define SPINLOCK_ERROR 0x0002
+
+#ifdef ARM7
+#define SPINLOCK_VALUE SPINLOCK_ARM7
+#endif
+#ifdef ARM9
+#define SPINLOCK_VALUE SPINLOCK_ARM9
+#endif
+
+
+#define Spinlock_Acquire(structtolock) SLasm_Acquire(&((structtolock).spinlock),SPINLOCK_VALUE)
+#define Spinlock_Release(structtolock) SLasm_Release(&((structtolock).spinlock),SPINLOCK_VALUE)
+#define Spinlock_Check(structtolock) (((structtolock).spinlock)!=SPINLOCK_NOBODY)
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern u32 SLasm_Acquire(volatile u32 * lockaddr, u32 lockvalue);
+extern u32 SLasm_Release(volatile u32 * lockaddr, u32 lockvalue);
+
+#ifdef __cplusplus
+};
+#endif
+
+// If for whatever reason you want to ditch SGIP and use your own stack, comment out the following line.
+#define WIFI_USE_TCP_SGIP 1
+
+#define WIFI_RXBUFFER_SIZE (1024*12)
+#define WIFI_TXBUFFER_SIZE (1024*24)
+#define WIFI_MAX_AP 32
+#define WIFI_MAX_ASSOC_RETRY 30
+#define WIFI_PS_POLL_CONST 2
+
+#define WIFI_MAX_PROBE 4
+
+#define WIFI_AP_TIMEOUT 40
+
+#define WFLAG_PACKET_DATA 0x0001
+#define WFLAG_PACKET_MGT 0x0002
+#define WFLAG_PACKET_BEACON 0x0004
+#define WFLAG_PACKET_CTRL 0x0008
+
+
+#define WFLAG_PACKET_ALL 0xFFFF
+
+#define WFLAG_ARM7_ACTIVE 0x0001
+#define WFLAG_ARM7_RUNNING 0x0002
+
+#define WFLAG_ARM9_ACTIVE 0x0001
+#define WFLAG_ARM9_USELED 0x0002
+#define WFLAG_ARM9_ARM7READY 0x0004
+#define WFLAG_ARM9_NETUP 0x0008
+#define WFLAG_ARM9_NETREADY 0x0010
+
+#define WFLAG_ARM9_INITFLAGMASK 0x0002
+
+#define WFLAG_IP_GOTDHCP 0x0001
+
+// request - request flags
+#define WFLAG_REQ_APCONNECT 0x0001
+#define WFLAG_REQ_APCOPYVALUES 0x0002
+#define WFLAG_REQ_APADHOC 0x0008
+#define WFLAG_REQ_PROMISC 0x0010
+#define WFLAG_REQ_USEWEP 0x0020
+
+// request - informational flags
+#define WFLAG_REQ_APCONNECTED 0x8000
+
+#define WFLAG_APDATA_ADHOC 0x0001
+#define WFLAG_APDATA_WEP 0x0002
+#define WFLAG_APDATA_WPA 0x0004
+#define WFLAG_APDATA_COMPATIBLE 0x0008
+#define WFLAG_APDATA_EXTCOMPATIBLE 0x0010
+#define WFLAG_APDATA_SHORTPREAMBLE 0x0020
+#define WFLAG_APDATA_ACTIVE 0x8000
+
+
+enum WIFI_RETURN {
+ WIFI_RETURN_OK = 0, // Everything went ok
+ WIFI_RETURN_LOCKFAILED = 1, // the spinlock attempt failed (it wasn't retried cause that could lock both cpus- retry again after a delay.
+ WIFI_RETURN_ERROR = 2, // There was an error in attempting to complete the requested task.
+ WIFI_RETURN_PARAMERROR = 3, // There was an error in the parameters passed to the function.
+};
+
+enum WIFI_STATS {
+ // software stats
+ WSTAT_RXQUEUEDPACKETS, // number of packets queued into the rx fifo
+ WSTAT_TXQUEUEDPACKETS, // number of packets queued into the tx fifo
+ WSTAT_RXQUEUEDBYTES, // number of bytes queued into the rx fifo
+ WSTAT_TXQUEUEDBYTES, // number of bytes queued into the tx fifo
+ WSTAT_RXQUEUEDLOST, // number of packets lost due to space limitations in queuing
+ WSTAT_TXQUEUEDREJECTED, // number of packets rejected due to space limitations in queuing
+ WSTAT_RXPACKETS,
+ WSTAT_RXBYTES,
+ WSTAT_RXDATABYTES,
+ WSTAT_TXPACKETS,
+ WSTAT_TXBYTES,
+ WSTAT_TXDATABYTES,
+ WSTAT_ARM7_UPDATES,
+ WSTAT_DEBUG,
+ // harware stats (function mostly unknown.)
+ WSTAT_HW_1B0,WSTAT_HW_1B1,WSTAT_HW_1B2,WSTAT_HW_1B3,WSTAT_HW_1B4,WSTAT_HW_1B5,WSTAT_HW_1B6,WSTAT_HW_1B7,
+ WSTAT_HW_1B8,WSTAT_HW_1B9,WSTAT_HW_1BA,WSTAT_HW_1BB,WSTAT_HW_1BC,WSTAT_HW_1BD,WSTAT_HW_1BE,WSTAT_HW_1BF,
+ WSTAT_HW_1C0,WSTAT_HW_1C1,WSTAT_HW_1C4,WSTAT_HW_1C5,
+ WSTAT_HW_1D0,WSTAT_HW_1D1,WSTAT_HW_1D2,WSTAT_HW_1D3,WSTAT_HW_1D4,WSTAT_HW_1D5,WSTAT_HW_1D6,WSTAT_HW_1D7,
+ WSTAT_HW_1D8,WSTAT_HW_1D9,WSTAT_HW_1DA,WSTAT_HW_1DB,WSTAT_HW_1DC,WSTAT_HW_1DD,WSTAT_HW_1DE,WSTAT_HW_1DF,
+
+ NUM_WIFI_STATS
+};
+
+
+enum WIFI_MODE {
+ WIFIMODE_DISABLED,
+ WIFIMODE_NORMAL,
+ WIFIMODE_SCAN,
+ WIFIMODE_ASSOCIATE,
+ WIFIMODE_ASSOCIATED,
+ WIFIMODE_DISASSOCIATE,
+ WIFIMODE_CANNOTASSOCIATE,
+};
+enum WIFI_AUTHLEVEL {
+ WIFI_AUTHLEVEL_DISCONNECTED,
+ WIFI_AUTHLEVEL_AUTHENTICATED,
+ WIFI_AUTHLEVEL_ASSOCIATED,
+ WIFI_AUTHLEVEL_DEASSOCIATED,
+};
+
+enum WEPMODES {
+ WEPMODE_NONE = 0,
+ WEPMODE_40BIT = 1,
+ WEPMODE_128BIT = 2
+};
+
+enum WIFI_ASSOCSTATUS {
+ ASSOCSTATUS_DISCONNECTED, // not *trying* to connect
+ ASSOCSTATUS_SEARCHING, // data given does not completely specify an AP, looking for AP that matches the data.
+ ASSOCSTATUS_AUTHENTICATING, // connecting...
+ ASSOCSTATUS_ASSOCIATING, // connecting...
+ ASSOCSTATUS_ACQUIRINGDHCP, // connected to AP, but getting IP data from DHCP
+ ASSOCSTATUS_ASSOCIATED, // Connected! (COMPLETE if Wifi_ConnectAP was called to start)
+ ASSOCSTATUS_CANNOTCONNECT, // error in connecting... (COMPLETE if Wifi_ConnectAP was called to start)
+};
+
+typedef struct WIFI_TXHEADER {
+ u16 enable_flags;
+ u16 unknown;
+ u16 countup;
+ u16 beaconfreq;
+ u16 tx_rate;
+ u16 tx_length;
+} Wifi_TxHeader;
+
+typedef struct WIFI_RXHEADER {
+ u16 a;
+ u16 b;
+ u16 c;
+ u16 d;
+ u16 byteLength;
+ u16 rssi_;
+} Wifi_RxHeader;
+
+typedef struct WIFI_ACCESSPOINT {
+ char ssid[33]; // 0-32byte data, zero
+ char ssid_len;
+ u8 bssid[6];
+ u8 macaddr[6];
+ u16 maxrate; // max rate is measured in steps of 1/2Mbit - 5.5Mbit will be represented as 11, or 0x0B
+ u32 timectr;
+ u16 rssi;
+ u16 flags;
+ u32 spinlock;
+ u8 channel;
+ u8 rssi_past[8];
+ u8 base_rates[16]; // terminated by a 0 entry
+} Wifi_AccessPoint;
+
+typedef struct WIFI_MAINSTRUCT {
+ unsigned long dummy1[8];
+ // wifi status
+ u16 curChannel, reqChannel;
+ u16 curMode, reqMode;
+ u16 authlevel,authctr;
+ u32 flags9, flags7, reqPacketFlags;
+ u16 curReqFlags, reqReqFlags;
+ u32 counter7,bootcounter7;
+ char MacAddr[6];
+ u16 authtype;
+ u16 iptype,ipflags;
+ u32 ip,snmask,gateway;
+
+ // current AP data
+ char ssid7[34],ssid9[34];
+ u8 bssid7[6], bssid9[6];
+ u8 apmac7[6], apmac9[6];
+ char wepmode7, wepmode9;
+ char wepkeyid7, wepkeyid9;
+ u8 wepkey7[20],wepkey9[20];
+ u8 baserates7[16], baserates9[16];
+ u8 apchannel7, apchannel9;
+ u8 maxrate7;
+ u16 ap_rssi;
+ u16 pspoll_period;
+
+ // AP data
+ Wifi_AccessPoint aplist[WIFI_MAX_AP];
+
+ // probe stuff
+ u8 probe9_numprobe;
+ u8 probe9_ssidlen[WIFI_MAX_PROBE];
+ char probe9_ssid[WIFI_MAX_PROBE][32];
+
+ // WFC data
+ u8 wfc_enable[4]; // wep mode, or 0x80 for "enabled"
+ Wifi_AccessPoint wfc_ap[3];
+ unsigned long wfc_config[3][5]; // ip, snmask, gateway, primarydns, 2nddns
+ u8 wfc_wepkey[3][16];
+
+
+ // wifi data
+ u32 rxbufIn, rxbufOut; // bufIn/bufOut have 2-byte granularity.
+ u16 rxbufData[WIFI_RXBUFFER_SIZE/2]; // send raw 802.11 data through! rxbuffer is for rx'd data, arm7->arm9 transfer
+
+ u32 txbufIn, txbufOut;
+ u16 txbufData[WIFI_TXBUFFER_SIZE/2]; // tx buffer is for data to tx, arm9->arm7 transfer
+
+ // stats data
+ u32 stats[NUM_WIFI_STATS];
+
+ u16 debug[30];
+
+ u32 random; // semirandom number updated at the convenience of the arm7. use for initial seeds & such.
+
+ unsigned long dummy2[8];
+
+} Wifi_MainStruct;
+
+
+
+#endif
+