Changeset 183 in Main for trunk/Server/main.c
- Timestamp:
- Sep 28, 2024, 1:15:15 AM (7 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Server/main.c
r182 r183 29 29 #include <pspkernel.h> 30 30 #include <pspdebug.h> 31 #include <pspsdk.h> 32 #include <psputility.h> 33 #include <pspctrl.h> 34 #include <pspnet_apctl.h> 35 #include <pspwlan.h> 31 36 32 37 PSP_MODULE_INFO("Tewi HTTPd", PSP_MODULE_USER, 1, 1); … … 34 39 35 40 #define printf(...) pspDebugScreenPrintf(__VA_ARGS__) 41 #define STDERR_LOG(...) pspDebugScreenPrintf(__VA_ARGS__) 42 #else 43 #define STDERR_LOG(...) fprintf(stderr, __VA_ARGS__) 36 44 #endif 37 45 … … 87 95 #endif 88 96 97 int running = 1; 98 #ifdef _PSP 99 100 int psp_exit_callback(int arg1, int arg2, void* arg3) { running = 0; } 101 102 int psp_callback_thread(SceSize args, void* argp) { 103 int cid; 104 cid = sceKernelCreateCallback("Exit Call Back", psp_exit_callback, NULL); 105 sceKernelRegisterExitCallback(cid); 106 sceKernelSleepThreadCB(); 107 return 0; 108 } 109 #endif 110 89 111 int main(int argc, char** argv) { 90 112 logfile = stderr; … … 96 118 pspDebugScreenInit(); 97 119 pspDebugScreenSetXY(0, 0); 120 printf("PSP Bootstrap, Tewi/%s\n", tw_get_version()); 121 int thid = sceKernelCreateThread("update_thread", psp_callback_thread, 0x11, 0xfa0, 0, NULL); 122 if(thid >= 0) { 123 sceKernelStartThread(thid, 0, NULL); 124 } else { 125 printf("Failed to start thread\n"); 126 while(running) sceKernelDelayThread(50 * 1000); 127 sceKernelExitGame(); 128 } 129 sceCtrlSetSamplingCycle(0); 130 sceCtrlSetSamplingMode(PSP_CTRL_MODE_ANALOG); 131 sceUtilityLoadNetModule(PSP_NET_MODULE_COMMON); 132 sceUtilityLoadNetModule(PSP_NET_MODULE_INET); 133 if(pspSdkInetInit()) { 134 printf("Could not init the network\n"); 135 while(running) sceKernelDelayThread(50 * 1000); 136 sceKernelExitGame(); 137 } else { 138 printf("Network initialization successful\n"); 139 } 140 if(sceWlanGetSwitchState() != 1) { 141 printf("Turn the Wi-Fi switch on\n"); 142 while(sceWlanGetSwitchState() != 1) { 143 sceKernelDelayThread(1000 * 1000); 144 } 145 } else { 146 printf("Wi-Fi is turned on\n"); 147 } 148 int i; 149 int choice[100]; 150 int incr = 0; 151 int last = 0; 152 int cur = 0; 153 for(i = 1; i < 100; i++) { 154 choice[i - 1] = 0; 155 netData name; 156 netData data; 157 if(sceUtilityCheckNetParam(i) != 0) continue; 158 choice[incr++] = i; 159 pspDebugScreenSetXY(0, 1 + 3 + incr - 1); 160 if(incr == 1) printf("> "); 161 pspDebugScreenSetXY(2, 1 + 3 + incr - 1); 162 sceUtilityGetNetParam(i, 0, &name); 163 sceUtilityGetNetParam(i, 1, &data); 164 printf("SSID=%s", data.asString); 165 sceUtilityGetNetParam(i, 4, &data); 166 if(data.asString[0]) { 167 sceUtilityGetNetParam(i, 5, &data); 168 printf(" IPADDR=%s\n", data.asString); 169 } else { 170 printf(" DHCP\n"); 171 } 172 } 173 int press = 0; 174 while(1) { 175 if(!running) { 176 sceKernelExitGame(); 177 } 178 SceCtrlData c; 179 sceCtrlReadBufferPositive(&c, 1); 180 press = 0; 181 if(c.Buttons & PSP_CTRL_DOWN) { 182 if(cur < incr - 1) { 183 cur++; 184 } 185 press = 1; 186 } else if(c.Buttons & PSP_CTRL_UP) { 187 if(cur > 0) { 188 cur--; 189 } 190 press = -1; 191 } else if(c.Buttons & PSP_CTRL_START) { 192 break; 193 } 194 if(last != cur) { 195 pspDebugScreenSetXY(0, 1 + 3 + last); 196 printf(" "); 197 pspDebugScreenSetXY(0, 1 + 3 + cur); 198 printf("> "); 199 last = cur; 200 } 201 if(press != 0) { 202 while(1) { 203 SceCtrlData c; 204 sceCtrlReadBufferPositive(&c, 1); 205 if(press == 1) { 206 if(!(c.Buttons & PSP_CTRL_DOWN)) break; 207 } else if(press == -1) { 208 if(!(c.Buttons & PSP_CTRL_UP)) break; 209 } 210 } 211 } 212 } 213 pspDebugScreenSetXY(0, 1 + 3 + incr + 1); 214 int err = sceNetApctlConnect(choice[cur]); 215 if(err != 0) { 216 printf("Apctl initialization failure\n"); 217 while(running) sceKernelDelayThread(50 * 1000); 218 sceKernelExitGame(); 219 } else { 220 printf("Apctl initialization successful\n"); 221 } 222 printf("Apctl connecting\n"); 223 while(1) { 224 int state; 225 err = sceNetApctlGetState(&state); 226 if(err != 0) { 227 printf("Apctl getting status failure\n"); 228 while(running) sceKernelDelayThread(50 * 1000); 229 sceKernelExitGame(); 230 } 231 if(state == 4) { 232 break; 233 } 234 sceKernelDelayThread(50 * 1000); 235 } 236 union SceNetApctlInfo info; 237 if(sceNetApctlGetInfo(8, &info) != 0) { 238 printf("Got an unknown IP\n"); 239 while(running) sceKernelDelayThread(50 * 1000); 240 sceKernelExitGame(); 241 } 242 printf("Connected, My IP is %s\n", info.ip); 98 243 #endif 99 244 int st = startup(argc, argv); 100 if(st != -1) return st; 245 if(st != -1) { 246 #ifdef _PSP 247 printf("Error code %d\n", st); 248 while(running) sceKernelDelayThread(50 * 1000); 249 sceKernelExitGame(); 250 #else 251 return st; 252 #endif 253 } 101 254 tw_server_loop(); 255 #endif 256 #ifdef _PSP 257 sceKernelExitGame(); 102 258 #endif 103 259 return 0; … … 124 280 i++; 125 281 if(argv[i] == NULL) { 126 fprintf(stderr,"Missing argument\n");282 STDERR_LOG("Missing argument\n"); 127 283 return 1; 128 284 } … … 132 288 i++; 133 289 if(argv[i] == NULL) { 134 fprintf(stderr,"Missing argument\n");290 STDERR_LOG("Missing argument\n"); 135 291 return 1; 136 292 } … … 140 296 logfile = fopen(argv[i], "a"); 141 297 if(logfile == NULL) { 142 fprintf(stderr,"Failed to open logfile\n");298 STDERR_LOG("Failed to open logfile\n"); 143 299 return 1; 144 300 } … … 158 314 return 0; 159 315 } else { 160 fprintf(stderr,"Unknown option: %s\n", argv[i]);316 STDERR_LOG("Unknown option: %s\n", argv[i]); 161 317 return 1; 162 318 } … … 166 322 tw_config_init(); 167 323 if(tw_config_read(confpath) != 0) { 168 fprintf(stderr,"Could not read the config\n");324 STDERR_LOG("Could not read the config\n"); 169 325 return 1; 170 326 } 171 327 if(tw_server_init() != 0) { 172 fprintf(stderr,"Could not initialize the server\n");328 STDERR_LOG("Could not initialize the server\n"); 173 329 return 1; 174 330 }
Note:
See TracChangeset
for help on using the changeset viewer.