Code Example

Top  Previous  Next

Here is a simple example of using the PPPOE library. Pppoe_start() is called on boot(). Once the PPPoE link is established, the device will open an outgoing TCP connection to a certain remote IP and port.

Green status LED is used to indicate the TCP connection status: it will be on when the TCP connection is established.

To test the TCP connection, the code will periodically send a small string of data to the remote end of the connection. If any reply is received, the green status LED will momentarily turn off.

Before running the code, do not forget to change ADSL_NAME, ADSL_LOGIN, REMOTE_IP, and REMOTE_PORT constants.

 

global.tbh:

 

'DEFINES-------------------------------------------------------------

#define PPPOE_DEBUG_PRINT 1

 

'INCLUDES------------------------------------------------------------

include "sock\trunk\sock.tbh"

include "pppoe\trunk\pppoe.tbh"

 

'DECLARATIONS--------------------------------------------------------

declare tcp_sock_o as byte

 

 

main.tbs:

 

include "global.tbh"

 

'--------------------------------------------------------------------

const ADSL_NAME="correct_name"                        '<----- CHANGE THIS AS NEEDED

const ADSL_PASSWORD="correct_password"        '<----- CHANGE THIS AS NEEDED

const REMOTE_IP="59.120.32.27"                        '<----- CHANGE THIS AS NEEDED

const REMOTE_PORT=40000                                        '<----- CHANGE THIS AS NEEDED

 

'--------------------------------------------------------------------

dim tcp_sock_o as byte

 

'====================================================================

sub on_sys_init()

       dim res as en_pppoe_status_codes

       

       '----- this is for the outgoing test connection

       tcp_sock_o=sock_get("TCPA")

       sock.num=tcp_sock_o

       sock.txbuffrq(1)

       sock.rxbuffrq(1)

       sys.buffalloc

       sock.protocol=PL_SOCK_PROTOCOL_TCP

       sock.targetip=REMOTE_IP

       sock.targetport=REMOTE_PORT

       sock.targetinterface=PL_SOCK_INTERFACE_PPPOE

       '----- end

 

       res=pppoe_start(ADSL_NAME,ADSL_PASSWORD)

end sub

 

'--------------------------------------------------------------------

sub on_sock_data_arrival()

       dim s as string(32)

       

       pppoe_proc_data()

 

       '----- this is for the outgoing test connection

       if sock.num=tcp_sock_o then

               s=sock.getdata(255)

               pat.play("-***",PL_PAT_CANINT)

       end if

       '----- end

end sub

 

'--------------------------------------------------------------------

sub on_sys_timer()

       pppoe_proc_timer()

 

       '----- this is for the outgoing test connection

       sock.num=tcp_sock_o

       if sock.statesimple=PL_SSTS_EST then

               sock.setdata("ABC")

               sock.send

       end if

       '----- end

end sub

 

'--------------------------------------------------------------------

sub on_sock_event(newstate as pl_sock_state, newstatesimple as pl_sock_state_simple)

       '----- this is for the outgoing test connection

       if sock.num=tcp_sock_o then

               pat.play("-***",PL_PAT_CANINT)

       end if

       '----- end

end sub

 

'--------------------------------------------------------------------

sub on_pat()

       '----- this is for the outgoing test connection

       sock.num=tcp_sock_o

       if sock.statesimple=PL_SSTS_EST then

               pat.play("G~",PL_PAT_CANINT)

       end if

       '----- end

end sub

 

 

device.tbs:

 

include "global.tbh"

 

'====================================================================

sub callback_pppoe_ok()

       sock.num=tcp_sock_o

       sock.connect

end sub

 

'--------------------------------------------------------------------

sub callback_pppoe_failure(pppoe_code as en_pppoe_status_codes)

       sock.num=tcp_sock_o

       sock.discard

end sub

 

'--------------------------------------------------------------------

sub callback_pppoe_pre_buffrq(required_buff_pages as byte)

end sub