diff --git a/libctru/include/3ds/services/uds.h b/libctru/include/3ds/services/uds.h index 7220ed6..8f0de88 100644 --- a/libctru/include/3ds/services/uds.h +++ b/libctru/include/3ds/services/uds.h @@ -291,3 +291,10 @@ Result udsUpdateNetworkAttribute(u16 bitmask, bool flag); */ Result udsSetNewConnectionsBlocked(bool block, bool clients, bool spectators); +/** + * @brief This loads a NodeInfo struct for the specified NetworkNodeID. The broadcast alias can't be used with this. + * @param NetworkNodeID Target NetworkNodeID. + * @param output Output NodeInfo struct. + */ +Result udsGetNodeInformation(u16 NetworkNodeID, udsNodeInfo *output); + diff --git a/libctru/source/services/uds.c b/libctru/source/services/uds.c index 81c2aaa..1f76fc6 100644 --- a/libctru/source/services/uds.c +++ b/libctru/source/services/uds.c @@ -371,6 +371,25 @@ Result udsDisconnectNetwork(void) return cmdbuf[1]; } +Result udsGetNodeInformation(u16 NetworkNodeID, udsNodeInfo *output) +{ + u32* cmdbuf=getThreadCommandBuffer(); + + cmdbuf[0]=IPC_MakeHeader(0xD,1,0); // 0xD0040 + cmdbuf[1]=NetworkNodeID; + + Result ret=0; + if(R_FAILED(ret=svcSendSyncRequest(__uds_servhandle)))return ret; + ret = cmdbuf[1]; + + if(R_SUCCEEDED(ret)) + { + if(output)memcpy(output, &cmdbuf[2], sizeof(udsNodeInfo)); + } + + return ret; +} + Result udsScanBeacons(u8 *outbuf, u32 maxsize, udsNetworkScanInfo **networks, u32 *total_networks, u32 wlancommID, u8 id8, u8 *host_macaddress) { Result ret=0;