initial sceNetCtl module implementation

This commit is contained in:
georgemoralis 2024-09-05 17:38:01 +03:00
parent e6d57cc978
commit 8d647ee323
2 changed files with 62 additions and 8 deletions

View File

@ -143,7 +143,17 @@ int PS4_SYSV_ABI sceNetCtlGetIfStat() {
return ORBIS_OK; return ORBIS_OK;
} }
int PS4_SYSV_ABI sceNetCtlGetInfo() { int PS4_SYSV_ABI sceNetCtlGetInfo(int code, OrbisNetCtlInfo* info) {
switch (code) {
case ORBIS_NET_CTL_INFO_DEVICE:
info->device = 0;
break;
case ORBIS_NET_CTL_INFO_LINK:
info->link = 0; // disconnected
break;
default:
LOG_ERROR(Lib_NetCtl, "{} unsupported code", code);
}
LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); LOG_ERROR(Lib_NetCtl, "(STUBBED) called");
return ORBIS_OK; return ORBIS_OK;
} }
@ -173,8 +183,9 @@ int PS4_SYSV_ABI sceNetCtlGetNetEvConfigInfoIpcInt() {
return ORBIS_OK; return ORBIS_OK;
} }
int PS4_SYSV_ABI sceNetCtlGetResult() { int PS4_SYSV_ABI sceNetCtlGetResult(int eventType, int* errorCode) {
LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); LOG_ERROR(Lib_NetCtl, "(STUBBED) called");
*errorCode = 0;
return ORBIS_OK; return ORBIS_OK;
} }
@ -213,8 +224,9 @@ int PS4_SYSV_ABI sceNetCtlGetScanInfoForSsidScanIpcInt() {
return ORBIS_OK; return ORBIS_OK;
} }
int PS4_SYSV_ABI sceNetCtlGetState() { int PS4_SYSV_ABI sceNetCtlGetState(int* state) {
LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); LOG_ERROR(Lib_NetCtl, "(STUBBED) called");
*state = 0;
return ORBIS_OK; return ORBIS_OK;
} }
@ -248,8 +260,9 @@ int PS4_SYSV_ABI sceNetCtlIsBandwidthManagementEnabledIpcInt() {
return ORBIS_OK; return ORBIS_OK;
} }
int PS4_SYSV_ABI sceNetCtlRegisterCallback() { int PS4_SYSV_ABI sceNetCtlRegisterCallback(OrbisNetCtlCallback func, void* arg, int* cid) {
LOG_ERROR(Lib_NetCtl, "(STUBBED) called"); LOG_ERROR(Lib_NetCtl, "(STUBBED) called");
*cid = 1;
return ORBIS_OK; return ORBIS_OK;
} }

View File

@ -11,6 +11,47 @@ class SymbolsResolver;
namespace Libraries::NetCtl { namespace Libraries::NetCtl {
constexpr int ORBIS_NET_ETHER_ADDR_LEN = 6;
struct OrbisNetEtherAddr {
u8 data[ORBIS_NET_ETHER_ADDR_LEN];
};
constexpr int ORBIS_NET_CTL_SSID_LEN = 32 + 1;
constexpr int ORBIS_NET_CTL_HOSTNAME_LEN = 255 + 1;
constexpr int ORBIS_NET_CTL_AUTH_NAME_LEN = 127 + 1;
constexpr int ORBIS_NET_CTL_IPV4_ADDR_STR_LEN = 16;
typedef union OrbisNetCtlInfo {
u32 device;
OrbisNetEtherAddr ether_addr;
u32 mtu;
u32 link;
OrbisNetEtherAddr bssid;
char ssid[ORBIS_NET_CTL_SSID_LEN];
u32 wifi_security;
u8 rssi_dbm;
uint8_t rssi_percentage;
u8 channel;
u32 ip_config;
char dhcp_hostname[ORBIS_NET_CTL_HOSTNAME_LEN];
char pppoe_auth_name[ORBIS_NET_CTL_AUTH_NAME_LEN];
char ip_address[ORBIS_NET_CTL_IPV4_ADDR_STR_LEN];
char netmask[ORBIS_NET_CTL_IPV4_ADDR_STR_LEN];
char default_route[ORBIS_NET_CTL_IPV4_ADDR_STR_LEN];
char primary_dns[ORBIS_NET_CTL_IPV4_ADDR_STR_LEN];
char secondary_dns[ORBIS_NET_CTL_IPV4_ADDR_STR_LEN];
u32 http_proxy_config;
char http_proxy_server[ORBIS_NET_CTL_HOSTNAME_LEN];
u16 http_proxy_port;
} SceNetCtlInfo;
using OrbisNetCtlCallback = PS4_SYSV_ABI void (*)(int eventType, void* arg);
// GetInfo codes
constexpr int ORBIS_NET_CTL_INFO_DEVICE = 1;
constexpr int ORBIS_NET_CTL_INFO_LINK = 4;
int PS4_SYSV_ABI sceNetBweCheckCallbackIpcInt(); int PS4_SYSV_ABI sceNetBweCheckCallbackIpcInt();
int PS4_SYSV_ABI sceNetBweClearEventIpcInt(); int PS4_SYSV_ABI sceNetBweClearEventIpcInt();
int PS4_SYSV_ABI sceNetBweFinishInternetConnectionTestIpcInt(); int PS4_SYSV_ABI sceNetBweFinishInternetConnectionTestIpcInt();
@ -38,13 +79,13 @@ int PS4_SYSV_ABI sceNetCtlEnableBandwidthManagementIpcInt();
int PS4_SYSV_ABI sceNetCtlGetBandwidthInfoIpcInt(); int PS4_SYSV_ABI sceNetCtlGetBandwidthInfoIpcInt();
int PS4_SYSV_ABI sceNetCtlGetEtherLinkMode(); int PS4_SYSV_ABI sceNetCtlGetEtherLinkMode();
int PS4_SYSV_ABI sceNetCtlGetIfStat(); int PS4_SYSV_ABI sceNetCtlGetIfStat();
int PS4_SYSV_ABI sceNetCtlGetInfo(); int PS4_SYSV_ABI sceNetCtlGetInfo(int code, OrbisNetCtlInfo* info);
int PS4_SYSV_ABI sceNetCtlGetInfoIpcInt(); int PS4_SYSV_ABI sceNetCtlGetInfoIpcInt();
int PS4_SYSV_ABI sceNetCtlGetInfoV6IpcInt(); int PS4_SYSV_ABI sceNetCtlGetInfoV6IpcInt();
int PS4_SYSV_ABI sceNetCtlGetNatInfo(); int PS4_SYSV_ABI sceNetCtlGetNatInfo();
int PS4_SYSV_ABI sceNetCtlGetNatInfoIpcInt(); int PS4_SYSV_ABI sceNetCtlGetNatInfoIpcInt();
int PS4_SYSV_ABI sceNetCtlGetNetEvConfigInfoIpcInt(); int PS4_SYSV_ABI sceNetCtlGetNetEvConfigInfoIpcInt();
int PS4_SYSV_ABI sceNetCtlGetResult(); int PS4_SYSV_ABI sceNetCtlGetResult(int eventType, int* errorCode);
int PS4_SYSV_ABI sceNetCtlGetResultIpcInt(); int PS4_SYSV_ABI sceNetCtlGetResultIpcInt();
int PS4_SYSV_ABI sceNetCtlGetResultV6IpcInt(); int PS4_SYSV_ABI sceNetCtlGetResultV6IpcInt();
int PS4_SYSV_ABI sceNetCtlGetScanInfoBssidForSsidListScanIpcInt(); int PS4_SYSV_ABI sceNetCtlGetScanInfoBssidForSsidListScanIpcInt();
@ -52,14 +93,14 @@ int PS4_SYSV_ABI sceNetCtlGetScanInfoBssidIpcInt();
int PS4_SYSV_ABI sceNetCtlGetScanInfoByBssidIpcInt(); int PS4_SYSV_ABI sceNetCtlGetScanInfoByBssidIpcInt();
int PS4_SYSV_ABI sceNetCtlGetScanInfoForSsidListScanIpcInt(); int PS4_SYSV_ABI sceNetCtlGetScanInfoForSsidListScanIpcInt();
int PS4_SYSV_ABI sceNetCtlGetScanInfoForSsidScanIpcInt(); int PS4_SYSV_ABI sceNetCtlGetScanInfoForSsidScanIpcInt();
int PS4_SYSV_ABI sceNetCtlGetState(); int PS4_SYSV_ABI sceNetCtlGetState(int* state);
int PS4_SYSV_ABI sceNetCtlGetState2IpcInt(); int PS4_SYSV_ABI sceNetCtlGetState2IpcInt();
int PS4_SYSV_ABI sceNetCtlGetStateIpcInt(); int PS4_SYSV_ABI sceNetCtlGetStateIpcInt();
int PS4_SYSV_ABI sceNetCtlGetStateV6IpcInt(); int PS4_SYSV_ABI sceNetCtlGetStateV6IpcInt();
int PS4_SYSV_ABI sceNetCtlGetWifiType(); int PS4_SYSV_ABI sceNetCtlGetWifiType();
int PS4_SYSV_ABI sceNetCtlInit(); int PS4_SYSV_ABI sceNetCtlInit();
int PS4_SYSV_ABI sceNetCtlIsBandwidthManagementEnabledIpcInt(); int PS4_SYSV_ABI sceNetCtlIsBandwidthManagementEnabledIpcInt();
int PS4_SYSV_ABI sceNetCtlRegisterCallback(); int PS4_SYSV_ABI sceNetCtlRegisterCallback(OrbisNetCtlCallback func, void* arg, int* cid);
int PS4_SYSV_ABI sceNetCtlRegisterCallbackForLibIpcInt(); int PS4_SYSV_ABI sceNetCtlRegisterCallbackForLibIpcInt();
int PS4_SYSV_ABI sceNetCtlRegisterCallbackIpcInt(); int PS4_SYSV_ABI sceNetCtlRegisterCallbackIpcInt();
int PS4_SYSV_ABI sceNetCtlRegisterCallbackV6IpcInt(); int PS4_SYSV_ABI sceNetCtlRegisterCallbackV6IpcInt();