Moved PPP code that was inadvertedly put into the net/ directory into its own ppp/ subdirectory
This commit is contained in:
parent
c9e808d638
commit
5221a7b124
13 changed files with 12 additions and 12 deletions
234
core/net/ppp/ppp_process.c
Normal file
234
core/net/ppp/ppp_process.c
Normal file
|
@ -0,0 +1,234 @@
|
|||
/*
|
||||
* $Id: ppp_process.c,v 1.1 2006/06/17 22:48:09 adamdunkels Exp $
|
||||
*/
|
||||
|
||||
#include "contiki.h"
|
||||
#include "contiki-net.h"
|
||||
#include "net/ppp/ppp.h"
|
||||
|
||||
PROCESS(ppp_process, "PPP");
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Note, that the UART RX-FIFO must be polled often enough so we don't get an
|
||||
// overrun at the used baudrate.
|
||||
//-----------------------------------------------------------------------------
|
||||
#define PPP_POLL_INTERVAL (CLOCK_SECOND / 256)
|
||||
#define AT_TIMEOUT (2 * CLOCK_SECOND / PPP_POLL_INTERVAL)
|
||||
#define AT_RX_BUF 64
|
||||
|
||||
enum {
|
||||
AT_CONNECT_DIRECT,
|
||||
AT_CONNECT_AUTO,
|
||||
AT_CONNECT_MANUAL
|
||||
} At_connect;
|
||||
|
||||
enum {
|
||||
AT_IDLE,
|
||||
AT_CONNECT,
|
||||
AT_CONNECT1,
|
||||
AT_CONNECT2,
|
||||
AT_CONNECTED,
|
||||
AT_RESET,
|
||||
AT_RESET1,
|
||||
AT_RESET2,
|
||||
AT_RESET3,
|
||||
AT_RESET4,
|
||||
AT_RESET5
|
||||
};
|
||||
|
||||
static struct etimer pppTimer;
|
||||
static u8_t at_state;
|
||||
static u8_t at_connect_mode = AT_CONNECT_MODE;
|
||||
static int at_timeout = -1;
|
||||
static u8_t at_rxBuf[ AT_RX_BUF ];
|
||||
|
||||
|
||||
static void
|
||||
at_puts(char *s) {
|
||||
while(*s) {
|
||||
ppp_arch_putchar(*s);
|
||||
s++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static u8_t
|
||||
*at_gets() {
|
||||
static u8_t consumed;
|
||||
int len;
|
||||
int i;
|
||||
|
||||
if (consumed) {
|
||||
consumed = 0;
|
||||
at_rxBuf[0] = 0;
|
||||
}
|
||||
len = strlen(at_rxBuf);
|
||||
|
||||
for (i=len; i<AT_RX_BUF-1; i++) {
|
||||
if ( ppp_arch_getchar(&at_rxBuf[i])) {
|
||||
at_rxBuf[i+1] = 0;
|
||||
if (at_rxBuf[i] == '\n') {
|
||||
//printf("at_gets=(%s)\n", at_rxBuf);
|
||||
consumed = 1;
|
||||
return at_rxBuf;
|
||||
}
|
||||
} else {
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
// overflow -> reset the buf
|
||||
at_rxBuf[0] = 0;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
at_poll() {
|
||||
|
||||
static u8_t loopCnt = 0;
|
||||
u8_t *s;
|
||||
|
||||
if (at_timeout > 0) {
|
||||
at_timeout--;
|
||||
}
|
||||
|
||||
if (at_state == AT_CONNECTED) {
|
||||
ppp_poll();
|
||||
if(uip_len > 0) {
|
||||
tcpip_input();
|
||||
}
|
||||
|
||||
if (loopCnt++ > 16) {
|
||||
int i;
|
||||
loopCnt = 0;
|
||||
for (i=0; i<UIP_CONNS; i++) {
|
||||
uip_periodic(i);
|
||||
if(uip_len > 0) {
|
||||
tcpip_output();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
switch (at_state) {
|
||||
|
||||
case AT_IDLE:
|
||||
switch (at_connect_mode) {
|
||||
|
||||
case AT_CONNECT_DIRECT:
|
||||
at_state = AT_CONNECTED;
|
||||
ppp_connect();
|
||||
break;
|
||||
|
||||
case AT_CONNECT_AUTO:
|
||||
at_state = AT_CONNECT;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case AT_CONNECT:
|
||||
at_gets(); // make the input buffer empty
|
||||
at_puts("ATE1\r\n");
|
||||
at_state = AT_CONNECT1;
|
||||
at_timeout = AT_TIMEOUT;
|
||||
break;
|
||||
|
||||
case AT_CONNECT1:
|
||||
if (at_timeout == 0) {
|
||||
at_state = AT_RESET;
|
||||
} else if ((s=at_gets())) {
|
||||
if (strcmp(s,"OK\r\n") == 0) {
|
||||
at_puts("AT+CGDCONT=1,\"IP\",\"online.telia.se\",\"\",0,0\r\n");
|
||||
at_timeout = AT_TIMEOUT;
|
||||
at_state = AT_CONNECT2;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case AT_CONNECT2:
|
||||
if (at_timeout == 0) {
|
||||
at_state = AT_RESET;
|
||||
} else if ((s=at_gets())) {
|
||||
if (strcmp(s,"OK\r\n") == 0) {
|
||||
at_puts("ATD*99***1#\r\n");
|
||||
at_state = AT_CONNECTED;
|
||||
ppp_connect();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case AT_RESET:
|
||||
//printf("AT_RESET\n");
|
||||
at_timeout = AT_TIMEOUT;
|
||||
at_state = AT_RESET1;
|
||||
break;
|
||||
|
||||
case AT_RESET1:
|
||||
if (at_timeout == 0) {
|
||||
lcp_disconnect(random_rand() & 0xff);
|
||||
at_timeout = AT_TIMEOUT;
|
||||
at_state = AT_RESET2;
|
||||
}
|
||||
break;
|
||||
|
||||
case AT_RESET2:
|
||||
if (at_timeout == 0) {
|
||||
lcp_disconnect(random_rand() & 0xff);
|
||||
at_timeout = AT_TIMEOUT;
|
||||
at_state = AT_RESET3;
|
||||
}
|
||||
break;
|
||||
|
||||
case AT_RESET3:
|
||||
if (at_timeout == 0) {
|
||||
at_puts("+++");
|
||||
at_timeout = AT_TIMEOUT;
|
||||
at_state = AT_RESET4;
|
||||
}
|
||||
break;
|
||||
|
||||
case AT_RESET4:
|
||||
if (at_timeout == 0) {
|
||||
at_puts("ATZ\r\n");
|
||||
at_timeout = AT_TIMEOUT;
|
||||
at_state = AT_RESET5;
|
||||
}
|
||||
break;
|
||||
|
||||
case AT_RESET5:
|
||||
at_gets(); // make the input buffer empty
|
||||
if (at_timeout == 0) {
|
||||
at_state = AT_IDLE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ppp_reconnect() {
|
||||
at_state = AT_RESET;
|
||||
uip_fw_unregister(&pppif);
|
||||
}
|
||||
|
||||
|
||||
PROCESS_THREAD(ppp_process, ev, data)
|
||||
{
|
||||
PROCESS_BEGIN();
|
||||
|
||||
at_state = AT_IDLE;
|
||||
at_rxBuf[0] = 0;
|
||||
|
||||
ppp_init();
|
||||
etimer_set(&pppTimer, PPP_POLL_INTERVAL);
|
||||
|
||||
while(1) {
|
||||
PROCESS_WAIT_EVENT_UNTIL(ev == PROCESS_EVENT_TIMER);
|
||||
|
||||
if(etimer_expired(&pppTimer)) {
|
||||
etimer_set(&pppTimer, PPP_POLL_INTERVAL);
|
||||
at_poll();
|
||||
}
|
||||
}
|
||||
|
||||
PROCESS_END();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue