Files
ClassiCube-PPC-for-MacOSX-10.4/third_party/dsiwifi/arm_iop/source/wifi_card.h

155 lines
3.6 KiB
C

/*
* Copyright (c) 2021 Max Thomas
* Copyright (c) 2015-2016, Daz Jones
* This file is part of DSiWifi and is distributed under the MIT license.
* See dsiwifi_license.txt for terms of use.
*/
#ifndef _WIFI_CARD_H
#define _WIFI_CARD_H
#include "common.h"
#include "wifi_sdio.h"
// 3DS
//#define REG_SDIO_BASE ((void*)0x10122000)
// DSi
#define REG_SDIO_BASE ((void*)0x4004A00)
typedef enum {
wifi_card_dev_wlan = 0
} wifi_card_device;
typedef struct {
wifi_card_device device;
wifi_sdio_ctx tmio;
} wifi_card_ctx;
enum wpa_type_t
{
WPATYPE_NONE = 0,
WPATYPE_WPA_TKIP = 4,
WPATYPE_WPA2_TKIP = 5,
WPATYPE_WPA_AES = 6,
WPATYPE_WPA2_AES = 7,
};
typedef struct {
u8 unk_00[0x40];
char ssid[0x20];
char ssid_wep64[0x20];
u8 wep_key1[0x10];
u8 wep_key2[0x10];
u8 wep_key3[0x10];
u8 wep_key4[0x10];
u8 ip[4];
u8 gateway[4];
u8 primary_dns[4];
u8 secondary_dns[4];
u8 subnet_mask;
u8 unk_D1[0x15];
u8 wep_mode;
u8 status; // 00 = Normal, 01 = AOSS, FF = not configured/deleted
u8 unk_E8;
u8 unk_E9;
u16 mtu;
u8 unk_EC[3];
u8 slot_idx;
u8 wfc_uid[6];
u8 unk_F6[0x8];
u16 crc16_0_to_FD;
} nvram_cfg_wep;
typedef struct {
char proxy_username[0x20];
char proxy_password[0x20];
char ssid[0x20];
char ssid_wep64[0x20];
u8 wep_key1[0x10];
u8 wep_key2[0x10];
u8 wep_key3[0x10];
u8 wep_key4[0x10];
u8 ip[4];
u8 gateway[4];
u8 primary_dns[4];
u8 secondary_dns[4];
u8 subnet_mask;
u8 unk_D1[0x15];
u8 wep_mode;
u8 wpa_mode;
u8 ssid_len;
u8 unk_E9;
u16 mtu;
u8 unk_EC[3];
u8 slot_idx;
u8 unk_F0[0xE];
u16 crc16_0_to_FD;
u8 pmk[0x20];
char pass[0x40];
u8 unk_160[0x21];
u8 wpa_type;
u8 proxy_en;
u8 proxy_auth_en;
char proxy_name[0x30];
u8 unk_1B4[0x34];
u16 proxy_port;
u8 unk_1EA[0x14];
u16 crc16_100_to_1FE;
} nvram_cfg;
#define F1_HOST_INT_STATUS (0x400)
#define F1_CPU_INT_STATUS (0x401)
#define F1_ERROR_INT_STATUS (0x402)
#define F1_COUNTER_INT_STATUS (0x403)
#define F1_MBOX_FRAME (0x404)
#define F1_RX_LOOKAHEAD_VALID (0x405)
#define F1_RX_LOOKAHEAD0 (0x408)
#define F1_RX_LOOKAHEAD1 (0x40C)
#define F1_RX_LOOKAHEAD2 (0x410)
#define F1_RX_LOOKAHEAD3 (0x414)
#define F1_INT_STATUS_ENABLE (0x418)
#define F1_COUNT4 (0x450)
extern nvram_cfg_wep wifi_card_nvram_wep_configs[3];
extern nvram_cfg wifi_card_nvram_configs[3];
u32 wifi_card_read_func1_u32(u32 addr);
void wifi_card_write_func1_u32(u32 addr, u32 val);
u8 wifi_card_read_func0_u8(u32 addr);
int wifi_card_write_func0_u8(u32 addr, u8 val);
u32 wifi_card_read_intern_word(u32 addr);
void wifi_card_write_intern_word(u32 addr, u32 data);
void wifi_card_mbox0_send_packet(u8 type, u8 ack_type, const u8* data, u16 len, u16 idk);
u16 wifi_card_mbox0_readpkt(void);
void data_send_pkt_idk(u8* pkt_data, u32 len);
void data_send_pkt(u8* pkt_data, u32 len);
void data_send_test(const u8* dst_bssid, const u8* src_bssid, u16 idk);
u32 wifi_card_host_interest_addr();
void wifi_card_init(void);
void wifi_card_deinit(void);
bool wifi_card_initted();
int wifi_card_device_init(wifi_card_device device);
wifi_card_ctx* wifi_card_get_context(wifi_card_device device);
void wifi_card_switch_device(wifi_card_ctx* ctx);
void wifi_card_send_command(wifi_sdio_command cmd, u32 args);
void wifi_card_send_command_alt(wifi_sdio_command cmd, u32 args);
void wifi_card_setclk(u32 data);
void wifi_card_stop(void);
void wifi_card_send_ready();
void wifi_card_send_connect();
#endif