Properly load the UDS network wifi channel, apparently it was hard-coded to channel 1 previously. This fixed the udsConnectNetwork() failures with the example app(not yet available under the 3ds-examples repo).

This commit is contained in:
yellows8 2016-04-07 10:04:48 -04:00
parent 6f6926921e
commit d7500b3608
2 changed files with 7 additions and 4 deletions

View File

@ -39,8 +39,8 @@ typedef struct {
/// Network struct stored as big-endian.
typedef struct {
u8 host_macaddress[6];
u8 hostmacaddr_flag;//"This flag being set to non-zero presumably indicates that the MAC address is set."
u8 unk_x7;
u8 channel;//Wifi channel for this network.
u8 pad_x7;
u8 initialized_flag;//Must be non-zero otherwise NWM-module will use zeros internally instead of the actual field data, for most/all(?) of the fields in this struct.
@ -95,7 +95,10 @@ typedef struct {
/// General NWM output structure from AP scanning, for each entry.
typedef struct {
u32 size;//"Size of this entire entry. The next entry starts at curentry_startoffset+curentry_size."
u32 unk_x4;
u8 unk_x4;
u8 channel;//Wifi channel for the AP.
u8 unk_x6;
u8 unk_x7;
u8 mac_address[6];//"AP MAC address."
u8 unk_xe[6];
u32 unk_x14;

View File

@ -694,7 +694,7 @@ static Result usd_parsebeacon(u8 *buf, u32 size, udsNetworkScanInfo *networkscan
if(appdata_size)memcpy(networkscan->network.appdata, &tagptr[0x34], appdata_size);
networkscan->network.initialized_flag = 1;
networkscan->network.hostmacaddr_flag = 1;
networkscan->network.channel = networkscan->datareply_entry.channel;
memcpy(networkscan->network.host_macaddress, networkscan->datareply_entry.mac_address, sizeof(networkscan->network.host_macaddress));
}