summaryrefslogtreecommitdiff
path: root/packages/libndsfpc/examples/dswifi/main9.pp
diff options
context:
space:
mode:
Diffstat (limited to 'packages/libndsfpc/examples/dswifi/main9.pp')
-rw-r--r--packages/libndsfpc/examples/dswifi/main9.pp202
1 files changed, 0 insertions, 202 deletions
diff --git a/packages/libndsfpc/examples/dswifi/main9.pp b/packages/libndsfpc/examples/dswifi/main9.pp
deleted file mode 100644
index fb11077416..0000000000
--- a/packages/libndsfpc/examples/dswifi/main9.pp
+++ /dev/null
@@ -1,202 +0,0 @@
-(*---------------------------------------------------------------------------------
- $Id: template.c,v 1.4 2005/09/17 23:15:13 wntrmute Exp $
-
- Basic Hello World
-
- $Log: template.c,v $
- Revision 1.4 2005/09/17 23:15:13 wntrmute
- corrected iprintAt in templates
-
- Revision 1.3 2005/09/05 00:32:20 wntrmute
- removed references to IPC struct
- replaced with API functions
-
- Revision 1.2 2005/08/31 01:24:21 wntrmute
- updated for new stdio support
-
- Revision 1.1 2005/08/03 06:29:56 wntrmute
- added templates
-
-
----------------------------------------------------------------------------------*)
-program main9;
-
-{$apptype arm9}
-{$define ARM9}
-
-{$mode objfpc}
-
-
-uses
- ctypes, nds9, dswifi9;
-
-{ $include dswifi9.inc}
-{ $include socket.inc}
-{ $include in.inc}
-{ $include netdb.inc}
-
-//---------------------------------------------------------------------------------
-// Dswifi helper functions
-
-// wifi timer function, to update internals of sgIP
-procedure Timer_50ms();
-begin
- Wifi_Timer(50);
-end;
-
-// notification function to send fifo message to arm7
-procedure arm9_synctoarm7();
-begin
-// send fifo message
- REG_IPC_FIFO_TX^ := $87654321;
-end;
-
-// interrupt handler to receive fifo messages from arm7
-procedure arm9_fifo();
-var
- value: cuint32;
-begin
- // check incoming fifo messages
- value := REG_IPC_FIFO_RX^;
- if value = $87654321 then
- Wifi_Sync();
-end;
-
-procedure vblank_irq_handler();
-begin
- Wifi_Update();
-end;
-
-var
- Wifi_pass: cuint32;
- i: integer;
- myhost: PHostent;
- my_socket: cint;
- sain: sockaddr_in;
- recvd_len: cint;
- incoming_buffer: array [0..255] of char;
-
-const
- request_text =
- 'GET /dswifi/example1.php HTTP/1.1'#13#10 +
- 'Host: www.akkit.org'#13#10 +
- 'User-Agent: Nintendo DS'#13#10 +#13#10;
-
-
-begin
- videoSetMode(0); //not using the main screen
- videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text
- vramSetBankC(VRAM_C_SUB_BG);
-
- SUB_BG0_CR^ := BG_MAP_BASE(31);
- BG_PALETTE_SUB[255] := RGB15(31,31,31); //by default font will be rendered with color 255
-
- //consoleInit() is a lot more flexible but this gets you up and running quick
- consoleInitDefault(pcuint16(SCREEN_BASE_BLOCK_SUB(31)), pcuint16(CHAR_BASE_BLOCK_SUB(0)), 16);
- iprintf(#10+#10+#9+'Hello World!' + #10);
-
- // send fifo message to initialize the arm7 wifi
- REG_IPC_FIFO_CR^ := IPC_FIFO_ENABLE or IPC_FIFO_SEND_CLEAR; // enable & clear FIFO
-
- Wifi_pass := Wifi_Init(WIFIINIT_OPTION_USELED);
- REG_IPC_FIFO_TX^ := $12345678;
- REG_IPC_FIFO_TX^ := Wifi_pass;
-
- TIMER3_CR^ := 0; // disable timer3
-
- irqInit();
- irqSet(IRQ_VBLANK, @vblank_irq_handler);
- irqSet(IRQ_TIMER3, @Timer_50ms); // setup timer IRQ
- irqEnable(IRQ_VBLANK or IRQ_TIMER3);
-
- irqSet(IRQ_FIFO_NOT_EMPTY, @arm9_fifo); // setup fifo IRQ
- irqEnable(IRQ_FIFO_NOT_EMPTY);
-
- REG_IPC_FIFO_CR^ := IPC_FIFO_ENABLE or IPC_FIFO_RECV_IRQ; // enable FIFO IRQ
-
- Wifi_SetSyncHandler(@arm9_synctoarm7); // tell wifi lib to use our handler to notify arm7
-
- // set timer3
- //TIMER3_DATA^ := -6553; // 6553.1 * 256 cycles = ~50ms;
- TIMER3_DATA^ := TIMER_FREQ_256(1000 div 50);
- TIMER0_CR^ := TIMER_ENABLE or TIMER_DIV_256 or TIMER_IRQ_REQ; // enable, irq, 1/256 clock
-
- while (Wifi_CheckInit() = 0) do // wait for arm7 to be initted successfully
- begin
- // wait for vblank
- swiWaitForVBlank();
- end;
- // wifi init complete - wifi lib can now be used!
-
- iprintf('Connecting via WFC data' + #10);
-
- // simple WFC connect:
- Wifi_AutoConnect(); // request connect
-
- while true do
- begin
- i := Wifi_AssocStatus(); // check status
- if (i = cint(ASSOCSTATUS_ASSOCIATED)) then
- begin
- iprintf('Connected successfully!' + #10);
- break;
- end;
- if (i = cint(ASSOCSTATUS_CANNOTCONNECT)) then
- begin
- iprintf('Could not connect!' +#10);
- while true do;
- break;
- end;
- end;
- // if connected, you can now use the berkley sockets interface to connect to the internet!
-
- //////////////////////////////////////////////////////////////////////////
- // Let's send a simple HTTP request to a server and print the results!
- // store the HTTP request for later
- // Find the IP address of the server, with gethostbyname
- myhost := gethostbyname('www.akkit.org');
- iprintf('Found IP Address!' + #10);
-
- // Create a TCP socket
- my_socket := socket( AF_INET, SOCK_STREAM, 0 );
- iprintf('Created Socket!' + #10);
-
- // Tell the socket to connect to the IP address we found, on port 80 (HTTP)
- sain.sin_family := AF_INET;
- sain.sin_port := htons(80);
-
- sain.sin_addr.s_addr := culong(Pointer(myhost^.h_addr_list^)^);
-
- iprintf(#10 + 'Accepted %d.%d.%d.%d:%d' + #10, [sain.sin_addr.s_addr and $FF,
- (sain.sin_addr.s_addr shr 8) and $FF,
- (sain.sin_addr.s_addr shr 16) and $FF,
- (sain.sin_addr.s_addr shr 24) and $FF,
- ntohs(sain.sin_port)]);
-
- connect(my_socket, psockaddr(@sain), sizeof(sain));
- iprintf('Connected to server!' + #10);
-
- // send our request
- send(my_socket, pchar(request_text), strlen(request_text), 0);
- iprintf('Sent our request!' + #10);
-
- // Print incoming data
- iprintf('Printing incoming data:' + #10);
-
-
- repeat
- recvd_len := recv( my_socket, @incoming_buffer, 255, 0 ) ;
- // if recv returns 0, the socket has been closed.
- if (recvd_len > 0) then // data was received!
- begin
- incoming_buffer[recvd_len] := #0; // null-terminate
- iprintf(incoming_buffer);
- end;
- until recvd_len <= 0;
-
- iprintf('Other side closed connection!' + #10);
- shutdown(my_socket, 0); // good practice to shutdown the socket.
- closesocket(my_socket); // remove the socket.
-
- while true do;
-end.