From 343e8b38f6b122458ae52d87f0856eb01172d2b3 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Sat, 18 May 2024 22:25:31 +0200 Subject: [PATCH 1/8] Fix spharm example for gcc14 --- src/samples/gu/spharm/cube.c | 5 +++-- src/samples/gu/spharm/spharm.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/samples/gu/spharm/cube.c b/src/samples/gu/spharm/cube.c index 4915fe35..1c3a5653 100644 --- a/src/samples/gu/spharm/cube.c +++ b/src/samples/gu/spharm/cube.c @@ -77,14 +77,14 @@ struct Vertex __attribute__((aligned(16))) vertices[12*3] = int done = 0; /* Exit callback */ -int exit_callback(void) +int exit_callback(int arg1, int arg2, void *common) { done = 1; return 0; } /* Callback thread */ -void CallbackThread(void *arg) +int CallbackThread(SceSize args, void *arg) { int cbid; @@ -92,6 +92,7 @@ void CallbackThread(void *arg) sceKernelRegisterExitCallback(cbid); sceKernelSleepThreadCB(); + return cbid; } /* Sets up the callback thread and returns its thread id */ diff --git a/src/samples/gu/spharm/spharm.c b/src/samples/gu/spharm/spharm.c index 3651a8e8..2874b647 100644 --- a/src/samples/gu/spharm/spharm.c +++ b/src/samples/gu/spharm/spharm.c @@ -18,6 +18,7 @@ #include #include +#include #include "mt19937.h" /* @@ -31,7 +32,7 @@ float shift23=(float)(1<<23); float OOshift23=1.0f/(float)(1<<23); -static inline float floorf(float i) +inline float floorf(float i) { // return largest integer that is less than or equal to i float k = (float)((int) i); if (k <= i) From 549ed3a43f18e8f1498b36e5851005004e2f0a54 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Sat, 18 May 2024 22:32:48 +0200 Subject: [PATCH 2/8] Fix mp3 sample for gcc 14 --- src/samples/mp3/main.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/samples/mp3/main.c b/src/samples/mp3/main.c index 5f0dd4d3..8e4c992a 100644 --- a/src/samples/mp3/main.c +++ b/src/samples/mp3/main.c @@ -60,8 +60,8 @@ int SetupCallbacks(void) // Input and Output buffers -char mp3Buf[16*1024] __attribute__((aligned(64))); -short pcmBuf[16*(1152/2)] __attribute__((aligned(64))); +unsigned char mp3Buf[16*1024] __attribute__((aligned(64))); +unsigned char pcmBuf[16*(1152/2)] __attribute__((aligned(64))); // Macro to allow formatted input without having to use stdargs.h @@ -87,9 +87,9 @@ void error( char* msg ) int fillStreamBuffer( int fd, int handle ) { - char* dst; - int write; - int pos; + unsigned char* dst; + long int write; + long int pos; // Get Info on the stream (where to fill to, how much to fill, where to fill from) int status = sceMp3GetInfoToAddStreamData( handle, &dst, &write, &pos); if (status<0) @@ -208,7 +208,7 @@ int main(int argc, char *argv[]) printf("PSP Mp3 Sample v1.0 by Raphael\n\n"); printf("Playing '%s'...\n", MP3FILE); printf(" %i Hz\n", samplingRate); - printf(" %i kbit/s\n", sceMp3GetBitRate( handle )); + printf(" %li kbit/s\n", sceMp3GetBitRate( handle )); printf(" %s\n", numChannels==2?"Stereo":"Mono"); printf(" %s\n\n", loop==0?"No loop":"Loop"); int playTime = samplingRate>0?numPlayed / samplingRate:0; From 116094c366cb550604d7ac844e7b3feaf1cc6f9c Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Sat, 18 May 2024 22:36:07 +0200 Subject: [PATCH 3/8] Resolve warning in nand dumpipl sample --- src/samples/nand/dumpipl/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/samples/nand/dumpipl/main.c b/src/samples/nand/dumpipl/main.c index 37d4804d..757efea3 100644 --- a/src/samples/nand/dumpipl/main.c +++ b/src/samples/nand/dumpipl/main.c @@ -125,7 +125,7 @@ int ReadIPLBlockTable(void *pBlockBuf) die("can't read IPL block table!"); } - printf("Found IPL block table at block %d\n", uiBlockNum); + printf("Found IPL block table at block %ld\n", uiBlockNum); break; } From 2a9802e68d790bc98568bf32000a016e47111368 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Sat, 18 May 2024 22:41:17 +0200 Subject: [PATCH 4/8] Fix net simple sample for gcc 14 --- src/samples/net/simple/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/samples/net/simple/main.c b/src/samples/net/simple/main.c index fecc5303..d2475214 100644 --- a/src/samples/net/simple/main.c +++ b/src/samples/net/simple/main.c @@ -99,7 +99,7 @@ void start_server(const char *szIpAddr) int sock; int new = -1; struct sockaddr_in client; - size_t size; + long unsigned int size; int readbytes; char data[1024]; fd_set set; From 02bb3a4fa8960c53086453eb4dadd9e205fb8cd6 Mon Sep 17 00:00:00 2001 From: Wouter Wijsman Date: Sat, 18 May 2024 22:43:15 +0200 Subject: [PATCH 5/8] Fix net simple_prx for gcc 14 --- src/samples/net/simple_prx/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/samples/net/simple_prx/main.c b/src/samples/net/simple_prx/main.c index f37ccd81..e042d4cb 100644 --- a/src/samples/net/simple_prx/main.c +++ b/src/samples/net/simple_prx/main.c @@ -65,7 +65,7 @@ void start_server(const char *szIpAddr) int sock; int new = -1; struct sockaddr_in client; - size_t size; + long unsigned int size; int readbytes; char data[1024]; fd_set set; From 7ed221215dcdc9ff6abce53778a0d5a7c74938de Mon Sep 17 00:00:00 2001 From: Siddharth Singh Date: Sun, 19 May 2024 03:22:30 +0530 Subject: [PATCH 6/8] samples/net/simple: Run in user mode instead of kernel mode Kernel mode samples did not run correctly. This commit switches the sample over to run in userland, and changes some heap settings as well. --- src/samples/net/simple/main.c | 382 +++++++++++++++------------------- 1 file changed, 173 insertions(+), 209 deletions(-) diff --git a/src/samples/net/simple/main.c b/src/samples/net/simple/main.c index fecc5303..3709bf7f 100644 --- a/src/samples/net/simple/main.c +++ b/src/samples/net/simple/main.c @@ -9,278 +9,242 @@ * Some small parts (c) 2005 PSPPet * */ +#include +#include #include -#include +#include #include -#include +#include #include #include -#include -#include -#include -#include -#include -#include -#include -#include #define printf pspDebugScreenPrintf #define MODULE_NAME "NetSample" -#define HELLO_MSG "Hello there. Type away.\r\n" +#define HELLO_MSG "Hello there. Type away.\r\n" -PSP_MODULE_INFO(MODULE_NAME, 0x1000, 1, 1); -PSP_MAIN_THREAD_ATTR(0); +PSP_MODULE_INFO(MODULE_NAME, 0, 1, 1); +PSP_HEAP_THRESHOLD_SIZE_KB(1024); +PSP_HEAP_SIZE_KB(-2048); +PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER); +PSP_MAIN_THREAD_STACK_SIZE_KB(1024); /* Exit callback */ -int exit_callback(int arg1, int arg2, void *common) -{ - sceKernelExitGame(); - return 0; +int exit_callback(int arg1, int arg2, void *common) { + sceKernelExitGame(); + return 0; } /* Callback thread */ -int CallbackThread(SceSize args, void *argp) -{ - int cbid; +int CallbackThread(SceSize args, void *argp) { + int cbid; - cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); - sceKernelRegisterExitCallback(cbid); - sceKernelSleepThreadCB(); + cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); + sceKernelRegisterExitCallback(cbid); + sceKernelSleepThreadCB(); - return 0; + return 0; } /* Sets up the callback thread and returns its thread id */ -int SetupCallbacks(void) -{ - int thid = 0; +int SetupCallbacks(void) { + int thid = 0; - thid = sceKernelCreateThread("update_thread", CallbackThread, - 0x11, 0xFA0, PSP_THREAD_ATTR_USER, 0); - if(thid >= 0) - { - sceKernelStartThread(thid, 0, 0); - } + thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, + PSP_THREAD_ATTR_USER, 0); + if (thid >= 0) { + sceKernelStartThread(thid, 0, 0); + } - return thid; + return thid; } #define SERVER_PORT 23 -int make_socket(uint16_t port) -{ - int sock; - int ret; - struct sockaddr_in name; +int make_socket(uint16_t port) { + int sock; + int ret; + struct sockaddr_in name; - sock = socket(PF_INET, SOCK_STREAM, 0); - if(sock < 0) - { - return -1; - } + sock = socket(PF_INET, SOCK_STREAM, 0); + if (sock < 0) { + return -1; + } - name.sin_family = AF_INET; - name.sin_port = htons(port); - name.sin_addr.s_addr = htonl(INADDR_ANY); - ret = bind(sock, (struct sockaddr *) &name, sizeof(name)); - if(ret < 0) - { - return -1; - } + name.sin_family = AF_INET; + name.sin_port = htons(port); + name.sin_addr.s_addr = htonl(INADDR_ANY); + ret = bind(sock, (struct sockaddr *)&name, sizeof(name)); + if (ret < 0) { + return -1; + } - return sock; + return sock; } /* Start a simple tcp echo server */ -void start_server(const char *szIpAddr) -{ - int ret; - int sock; - int new = -1; - struct sockaddr_in client; - size_t size; - int readbytes; - char data[1024]; - fd_set set; - fd_set setsave; +void start_server(const char *szIpAddr) { + int ret; + int sock; + int new = -1; + struct sockaddr_in client; + unsigned int size; + int readbytes; + char data[1024]; + fd_set set; + fd_set setsave; - /* Create a socket for listening */ - sock = make_socket(SERVER_PORT); - if(sock < 0) - { - printf("Error creating server socket\n"); - return; - } + /* Create a socket for listening */ + sock = make_socket(SERVER_PORT); + if (sock < 0) { + printf("Error creating server socket\n"); + return; + } - ret = listen(sock, 1); - if(ret < 0) - { - printf("Error calling listen\n"); - return; - } + ret = listen(sock, 1); + if (ret < 0) { + printf("Error calling listen\n"); + return; + } - printf("Listening for connections ip %s port %d\n", szIpAddr, SERVER_PORT); + printf("Listening for connections ip %s port %d\n", szIpAddr, SERVER_PORT); - FD_ZERO(&set); - FD_SET(sock, &set); - setsave = set; + FD_ZERO(&set); + FD_SET(sock, &set); + setsave = set; - while(1) - { - int i; - set = setsave; - if(select(FD_SETSIZE, &set, NULL, NULL, NULL) < 0) - { - printf("select error\n"); - return; - } + while (1) { + int i; + set = setsave; + if (select(FD_SETSIZE, &set, NULL, NULL, NULL) < 0) { + printf("select error\n"); + return; + } - for(i = 0; i < FD_SETSIZE; i++) - { - if(FD_ISSET(i, &set)) - { - int val = i; + for (i = 0; i < FD_SETSIZE; i++) { + if (FD_ISSET(i, &set)) { + int val = i; - if(val == sock) - { - new = accept(sock, (struct sockaddr *) &client, &size); - if(new < 0) - { - printf("Error in accept %s\n", strerror(errno)); - close(sock); - return; - } + if (val == sock) { + new = accept(sock, (struct sockaddr *)&client, &size); + if (new < 0) { + printf("Error in accept %s\n", strerror(errno)); + close(sock); + return; + } - printf("New connection %d from %s:%d\n", val, - inet_ntoa(client.sin_addr), - ntohs(client.sin_port)); + printf("New connection %d from %s:%d\n", val, + inet_ntoa(client.sin_addr), ntohs(client.sin_port)); - write(new, HELLO_MSG, strlen(HELLO_MSG)); + write(new, HELLO_MSG, strlen(HELLO_MSG)); - FD_SET(new, &setsave); - } - else - { - readbytes = read(val, data, sizeof(data)); - if(readbytes <= 0) - { - printf("Socket %d closed\n", val); - FD_CLR(val, &setsave); - close(val); - } - else - { - write(val, data, readbytes); - printf("%.*s", readbytes, data); - } - } - } - } - } + FD_SET(new, &setsave); + } else { + readbytes = read(val, data, sizeof(data)); + if (readbytes <= 0) { + printf("Socket %d closed\n", val); + FD_CLR(val, &setsave); + close(val); + } else { + write(val, data, readbytes); + printf("%.*s", readbytes, data); + } + } + } + } + } - close(sock); + close(sock); } /* Connect to an access point */ -int connect_to_apctl(int config) -{ - int err; - int stateLast = -1; +int connect_to_apctl(int config) { + int err; + int stateLast = -1; - /* Connect using the first profile */ - err = sceNetApctlConnect(config); - if (err != 0) - { - printf(MODULE_NAME ": sceNetApctlConnect returns %08X\n", err); - return 0; - } + /* Connect using the first profile */ + err = sceNetApctlConnect(config); + if (err != 0) { + printf(MODULE_NAME ": sceNetApctlConnect returns %08X\n", err); + return 0; + } - printf(MODULE_NAME ": Connecting...\n"); - while (1) - { - int state; - err = sceNetApctlGetState(&state); - if (err != 0) - { - printf(MODULE_NAME ": sceNetApctlGetState returns $%x\n", err); - break; - } - if (state > stateLast) - { - printf(" connection state %d of 4\n", state); - stateLast = state; - } - if (state == 4) - break; // connected with static IP + printf(MODULE_NAME ": Connecting...\n"); + while (1) { + int state; + err = sceNetApctlGetState(&state); + if (err != 0) { + printf(MODULE_NAME ": sceNetApctlGetState returns $%x\n", err); + break; + } + if (state > stateLast) { + printf(" connection state %d of 4\n", state); + stateLast = state; + } + if (state == 4) + break; // connected with static IP - // wait a little before polling again - sceKernelDelayThread(50*1000); // 50ms - } - printf(MODULE_NAME ": Connected!\n"); + // wait a little before polling again + sceKernelDelayThread(50 * 1000); // 50ms + } + printf(MODULE_NAME ": Connected!\n"); - if(err != 0) - { - return 0; - } + if (err != 0) { + return 0; + } - return 1; + return 1; } -int net_thread(SceSize args, void *argp) -{ - int err; +int net_thread(SceSize args, void *argp) { + int err; - do - { - if((err = pspSdkInetInit())) - { - printf(MODULE_NAME ": Error, could not initialise the network %08X\n", err); - break; - } + do { + if ((err = pspSdkInetInit())) { + printf(MODULE_NAME ": Error, could not initialise the network %08X\n", + err); + break; + } - if(connect_to_apctl(1)) - { - // connected, get my IPADDR and run test - union SceNetApctlInfo info; - - if (sceNetApctlGetInfo(8, &info) != 0) - strcpy(info.ip, "unknown IP"); - - start_server(info.ip); - } - } - while(0); + if (connect_to_apctl(1)) { + // connected, get my IPADDR and run test + union SceNetApctlInfo info; - return 0; + if (sceNetApctlGetInfo(8, &info) != 0) + strcpy(info.ip, "unknown IP"); + + start_server(info.ip); + } + } while (0); + + return 0; } /* Simple thread */ -int main(int argc, char **argv) -{ - SceUID thid; +int main(int argc, char **argv) { + SceUID thid; - SetupCallbacks(); + SetupCallbacks(); - pspDebugScreenInit(); + sceUtilityLoadNetModule(PSP_NET_MODULE_COMMON); + sceUtilityLoadNetModule(PSP_NET_MODULE_INET); - if(pspSdkLoadInetModules() < 0) - { - printf("Error, could not load inet modules\n"); - sceKernelSleepThread(); - } + pspDebugScreenInit(); - /* Create a user thread to do the real work */ - thid = sceKernelCreateThread("net_thread", net_thread, 0x18, 0x10000, PSP_THREAD_ATTR_USER, NULL); - if(thid < 0) - { - printf("Error, could not create thread\n"); - sceKernelSleepThread(); - } + /* Create a user thread to do the real work */ + thid = + sceKernelCreateThread("net_thread", net_thread, + 0x11, // default priority + 256 * 1024, // stack size (256KB is regular default) + PSP_THREAD_ATTR_USER, NULL); + if (thid < 0) { + printf("Error, could not create thread\n"); + sceKernelSleepThread(); + } - sceKernelStartThread(thid, 0, NULL); + sceKernelStartThread(thid, 0, NULL); - sceKernelExitDeleteThread(0); + sceKernelExitDeleteThread(0); - return 0; + return 0; } From 7e64719d5b0e305c96730fb34ce8847a5ed29250 Mon Sep 17 00:00:00 2001 From: Siddharth Singh Date: Sun, 19 May 2024 04:06:29 +0530 Subject: [PATCH 7/8] fix formatting (almost) --- .gitignore | 3 + src/samples/net/simple/main.c | 355 ++++++++++++++++++---------------- 2 files changed, 194 insertions(+), 164 deletions(-) diff --git a/.gitignore b/.gitignore index 2dfa2f88..667e30d4 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,6 @@ install-sh missing src/base/linkfile.prx stamp-h1 + +.clang-format +compile_flags.txt diff --git a/src/samples/net/simple/main.c b/src/samples/net/simple/main.c index 3709bf7f..a760d45d 100644 --- a/src/samples/net/simple/main.c +++ b/src/samples/net/simple/main.c @@ -30,221 +30,248 @@ PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER); PSP_MAIN_THREAD_STACK_SIZE_KB(1024); /* Exit callback */ -int exit_callback(int arg1, int arg2, void *common) { - sceKernelExitGame(); - return 0; +int exit_callback(int arg1, int arg2, void *common) +{ + sceKernelExitGame(); + return 0; } /* Callback thread */ -int CallbackThread(SceSize args, void *argp) { - int cbid; +int CallbackThread(SceSize args, void *argp) +{ + int cbid; - cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); - sceKernelRegisterExitCallback(cbid); - sceKernelSleepThreadCB(); + cbid = sceKernelCreateCallback("Exit Callback", exit_callback, NULL); + sceKernelRegisterExitCallback(cbid); + sceKernelSleepThreadCB(); - return 0; + return 0; } /* Sets up the callback thread and returns its thread id */ -int SetupCallbacks(void) { - int thid = 0; +int SetupCallbacks(void) +{ + int thid = 0; - thid = sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, - PSP_THREAD_ATTR_USER, 0); - if (thid >= 0) { - sceKernelStartThread(thid, 0, 0); - } + thid = + sceKernelCreateThread("update_thread", CallbackThread, 0x11, 0xFA0, PSP_THREAD_ATTR_USER, 0); + if (thid >= 0) + { + sceKernelStartThread(thid, 0, 0); + } - return thid; + return thid; } #define SERVER_PORT 23 -int make_socket(uint16_t port) { - int sock; - int ret; - struct sockaddr_in name; +int make_socket(uint16_t port) +{ + int sock; + int ret; + struct sockaddr_in name; - sock = socket(PF_INET, SOCK_STREAM, 0); - if (sock < 0) { - return -1; - } + sock = socket(PF_INET, SOCK_STREAM, 0); + if (sock < 0) + { + return -1; + } - name.sin_family = AF_INET; - name.sin_port = htons(port); - name.sin_addr.s_addr = htonl(INADDR_ANY); - ret = bind(sock, (struct sockaddr *)&name, sizeof(name)); - if (ret < 0) { - return -1; - } + name.sin_family = AF_INET; + name.sin_port = htons(port); + name.sin_addr.s_addr = htonl(INADDR_ANY); + ret = bind(sock, (struct sockaddr *)&name, sizeof(name)); + if (ret < 0) + { + return -1; + } - return sock; + return sock; } /* Start a simple tcp echo server */ -void start_server(const char *szIpAddr) { - int ret; - int sock; - int new = -1; - struct sockaddr_in client; - unsigned int size; - int readbytes; - char data[1024]; - fd_set set; - fd_set setsave; +void start_server(const char *szIpAddr) +{ + int ret; + int sock; + int new = -1; + struct sockaddr_in client; + unsigned int size; + int readbytes; + char data[1024]; + fd_set set; + fd_set setsave; - /* Create a socket for listening */ - sock = make_socket(SERVER_PORT); - if (sock < 0) { - printf("Error creating server socket\n"); - return; - } + /* Create a socket for listening */ + sock = make_socket(SERVER_PORT); + if (sock < 0) + { + printf("Error creating server socket\n"); + return; + } - ret = listen(sock, 1); - if (ret < 0) { - printf("Error calling listen\n"); - return; - } + ret = listen(sock, 1); + if (ret < 0) + { + printf("Error calling listen\n"); + return; + } - printf("Listening for connections ip %s port %d\n", szIpAddr, SERVER_PORT); + printf("Listening for connections ip %s port %d\n", szIpAddr, SERVER_PORT); - FD_ZERO(&set); - FD_SET(sock, &set); - setsave = set; + FD_ZERO(&set); + FD_SET(sock, &set); + setsave = set; - while (1) { - int i; - set = setsave; - if (select(FD_SETSIZE, &set, NULL, NULL, NULL) < 0) { - printf("select error\n"); - return; - } + while (1) + { + int i; + set = setsave; + if (select(FD_SETSIZE, &set, NULL, NULL, NULL) < 0) + { + printf("select error\n"); + return; + } - for (i = 0; i < FD_SETSIZE; i++) { - if (FD_ISSET(i, &set)) { - int val = i; + for (i = 0; i < FD_SETSIZE; i++) + { + if (FD_ISSET(i, &set)) + { + int val = i; - if (val == sock) { - new = accept(sock, (struct sockaddr *)&client, &size); - if (new < 0) { - printf("Error in accept %s\n", strerror(errno)); - close(sock); - return; - } + if (val == sock) + { + new = accept(sock, (struct sockaddr *)&client, &size); + if (new < 0) + { + printf("Error in accept %s\n", strerror(errno)); + close(sock); + return; + } - printf("New connection %d from %s:%d\n", val, - inet_ntoa(client.sin_addr), ntohs(client.sin_port)); + printf("New connection %d from %s:%d\n", val, inet_ntoa(client.sin_addr), + ntohs(client.sin_port)); - write(new, HELLO_MSG, strlen(HELLO_MSG)); + write(new, HELLO_MSG, strlen(HELLO_MSG)); - FD_SET(new, &setsave); - } else { - readbytes = read(val, data, sizeof(data)); - if (readbytes <= 0) { - printf("Socket %d closed\n", val); - FD_CLR(val, &setsave); - close(val); - } else { - write(val, data, readbytes); - printf("%.*s", readbytes, data); - } - } - } - } - } + FD_SET(new, &setsave); + } + else + { + readbytes = read(val, data, sizeof(data)); + if (readbytes <= 0) + { + printf("Socket %d closed\n", val); + FD_CLR(val, &setsave); + close(val); + } + else + { + write(val, data, readbytes); + printf("%.*s", readbytes, data); + } + } + } + } + } - close(sock); + close(sock); } /* Connect to an access point */ -int connect_to_apctl(int config) { - int err; - int stateLast = -1; +int connect_to_apctl(int config) +{ + int err; + int stateLast = -1; - /* Connect using the first profile */ - err = sceNetApctlConnect(config); - if (err != 0) { - printf(MODULE_NAME ": sceNetApctlConnect returns %08X\n", err); - return 0; - } + /* Connect using the first profile */ + err = sceNetApctlConnect(config); + if (err != 0) + { + printf(MODULE_NAME ": sceNetApctlConnect returns %08X\n", err); + return 0; + } - printf(MODULE_NAME ": Connecting...\n"); - while (1) { - int state; - err = sceNetApctlGetState(&state); - if (err != 0) { - printf(MODULE_NAME ": sceNetApctlGetState returns $%x\n", err); - break; - } - if (state > stateLast) { - printf(" connection state %d of 4\n", state); - stateLast = state; - } - if (state == 4) - break; // connected with static IP + printf(MODULE_NAME ": Connecting...\n"); + while (1) + { + int state; + err = sceNetApctlGetState(&state); + if (err != 0) + { + printf(MODULE_NAME ": sceNetApctlGetState returns $%x\n", err); + break; + } + if (state > stateLast) + { + printf(" connection state %d of 4\n", state); + stateLast = state; + } + if (state == 4) + break; // connected with static IP - // wait a little before polling again - sceKernelDelayThread(50 * 1000); // 50ms - } - printf(MODULE_NAME ": Connected!\n"); + // wait a little before polling again + sceKernelDelayThread(50 * 1000); // 50ms + } + printf(MODULE_NAME ": Connected!\n"); - if (err != 0) { - return 0; - } + if (err != 0) + { + return 0; + } - return 1; + return 1; } -int net_thread(SceSize args, void *argp) { - int err; +int net_thread(SceSize args, void *argp) +{ + int err; + do + { + if ((err = pspSdkInetInit())) + { + printf(MODULE_NAME ": Error, could not initialise the network %08X\n", err); + break; + } - do { - if ((err = pspSdkInetInit())) { - printf(MODULE_NAME ": Error, could not initialise the network %08X\n", - err); - break; - } + if (connect_to_apctl(1)) + { + // connected, get my IPADDR and run test + union SceNetApctlInfo info; - if (connect_to_apctl(1)) { - // connected, get my IPADDR and run test - union SceNetApctlInfo info; + if (sceNetApctlGetInfo(8, &info) != 0) + strcpy(info.ip, "unknown IP"); - if (sceNetApctlGetInfo(8, &info) != 0) - strcpy(info.ip, "unknown IP"); - - start_server(info.ip); - } - } while (0); - - return 0; + start_server(info.ip); + } + } while (0); } - /* Simple thread */ -int main(int argc, char **argv) { - SceUID thid; +int main(int argc, char **argv) +{ + SceUID thid; - SetupCallbacks(); + SetupCallbacks(); - sceUtilityLoadNetModule(PSP_NET_MODULE_COMMON); - sceUtilityLoadNetModule(PSP_NET_MODULE_INET); + sceUtilityLoadNetModule(PSP_NET_MODULE_COMMON); + sceUtilityLoadNetModule(PSP_NET_MODULE_INET); - pspDebugScreenInit(); + pspDebugScreenInit(); - /* Create a user thread to do the real work */ - thid = - sceKernelCreateThread("net_thread", net_thread, - 0x11, // default priority - 256 * 1024, // stack size (256KB is regular default) - PSP_THREAD_ATTR_USER, NULL); - if (thid < 0) { - printf("Error, could not create thread\n"); - sceKernelSleepThread(); - } + /* Create a user thread to do the real work */ + thid = sceKernelCreateThread("net_thread", net_thread, + 0x11, // default priority + 256 * 1024, // stack size (256KB is regular default) + PSP_THREAD_ATTR_USER, NULL); + if (thid < 0) + { + printf("Error, could not create thread\n"); + sceKernelSleepThread(); + } - sceKernelStartThread(thid, 0, NULL); + sceKernelStartThread(thid, 0, NULL); - sceKernelExitDeleteThread(0); + sceKernelExitDeleteThread(0); - return 0; + return 0; } From b07d7a194c3cae1d16fe3b68017611ef5f21683b Mon Sep 17 00:00:00 2001 From: Francisco Javier Trujillo Mata Date: Sun, 26 May 2024 00:53:37 +0200 Subject: [PATCH 8/8] Add sockaddr_storage --- src/libcglue/sys/socket.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/libcglue/sys/socket.h b/src/libcglue/sys/socket.h index aa1036c8..bc4371ef 100644 --- a/src/libcglue/sys/socket.h +++ b/src/libcglue/sys/socket.h @@ -169,6 +169,22 @@ struct sockaddr { char sa_data[14]; /* actually longer; address value */ }; +/* + * RFC 2553: protocol-independent placeholder for socket addresses + */ +#define _SS_MAXSIZE 128 +#define _SS_ALIGNSIZE (sizeof(int64_t)) +#define _SS_PAD1SIZE (_SS_ALIGNSIZE - 2) +#define _SS_PAD2SIZE (_SS_MAXSIZE - 2 - _SS_PAD1SIZE - _SS_ALIGNSIZE) + +struct sockaddr_storage { + uint8_t ss_len; /* address length */ + sa_family_t ss_family; /* address family */ + char __ss_pad1[_SS_PAD1SIZE]; + int64_t __ss_align;/* force desired structure storage alignment */ + char __ss_pad2[_SS_PAD2SIZE]; +}; + /* * Protocol families, same as address families for now. */