Step 2: Adding TCP Comms
This and other projects in the Code Examples section are published on our website under the name "test_wln_lib".
Now let's take the previous example and create a TCP socket that will accept connections over the Wi-Fi interface. We will make a simple loopback socket that echoes back the data.
May we suggest our very own I/O NINJA terminal/sniffer software as the tool for testing the loopback socket? Hint: use Connection Socket plugin. |
Only main.tbs needs to be changed from the previous example. The socket is configured in on_sys_init(). Notice how we don't just pick a random socket number to use. We obtain the socket from the SOCK library by calling sock_get(). This is very important! Once any part of your project uses the SOCK library (and WLN library does), all other parts of your project must do the same. Mess will ensue if you fail to handle socket numbers correctly.
In the code below, we first call wln_start() and then configure the loopback socket. There is no significance to this order and you can reverse it. Same goes for on_sock_data_arrival(). There is no special reason to call wln_proc_data() first, and handle the loopback socket next. You can reverse the order and everything will still work.
** Tibbo Basic **
include "global.tbh"
dim tcp_sock as byte
'====================================================================
sub on_sys_init()
wln.ip="192.168.1.50" '<--- set suitable IP here
if wln_start("TIBB1",WLN_SECURITY_MODE_WEP64,"12345678AB",PL_WLN_DOMAIN_FCC)<>WLN_STATUS_OK then
sys.halt
end if
'configure loopback socket
tcp_sock=sock_get("TCP")
sock.num=tcp_sock
sock.rxbuffrq(1)
sock.txbuffrq(1)
sys.buffalloc
sock.protocol=PL_SOCK_PROTOCOL_TCP
sock.localportlist="1000"
sock.allowedinterfaces="WLN"
sock.inconmode=PL_SOCK_INCONMODE_ANY_IP_ANY_PORT
sock.reconmode=PL_SOCK_RECONMODE_3
end sub
'--------------------------------------------------------------------
sub on_sys_timer()
wln_proc_timer()
end sub
'--------------------------------------------------------------------
sub on_sock_data_arrival()
wln_proc_data()
'loopback tcp data
if sock.num=tcp_sock then
sock.setdata(sock.getdata(sock.txfree))
sock.send
end if
end sub
'--------------------------------------------------------------------
sub on_wln_task_complete(completed_task as pl_wln_tasks)
wln_proc_task_complete(completed_task)
end sub
'--------------------------------------------------------------------
sub on_wln_event(wln_event as pl_wln_events)
wln_proc_event(wln_event)
end sub