Made SLIP code coexist with ordinary serial code. If WITH_UIP=1, the SLIP code is used instead.
This commit is contained in:
parent
e68d669265
commit
cf5ff2bbb2
3 changed files with 18 additions and 71 deletions
|
@ -1,4 +1,4 @@
|
||||||
# $Id: Makefile.msp430,v 1.22 2008/01/08 08:01:01 adamdunkels Exp $
|
# $Id: Makefile.msp430,v 1.23 2008/02/03 20:59:35 adamdunkels Exp $
|
||||||
|
|
||||||
ifdef nodeid
|
ifdef nodeid
|
||||||
CFLAGS += -DNODEID=$(nodeid)
|
CFLAGS += -DNODEID=$(nodeid)
|
||||||
|
@ -14,7 +14,7 @@ CONTIKI_CPU=$(CONTIKI)/cpu/msp430
|
||||||
CONTIKI_CPU_DIRS = . dev
|
CONTIKI_CPU_DIRS = . dev
|
||||||
|
|
||||||
MSP430 = msp430.c flash.c clock.c leds.c leds-arch.c \
|
MSP430 = msp430.c flash.c clock.c leds.c leds-arch.c \
|
||||||
watchdog.c lpm.c mtarch.c uart1.c rtimer-arch.c
|
watchdog.c lpm.c mtarch.c uart1.c slip_uart1.c rtimer-arch.c
|
||||||
UIPDRIVERS = me.c me_tabs.c slip.c crc16.c
|
UIPDRIVERS = me.c me_tabs.c slip.c crc16.c
|
||||||
#UIPDRIVERS = me.c me_tabs.c crc16.c ppp/ahdlc.c ppp/ipcp.c ppp/lcp.c ppp/pap.c ppp/ppp.c ppp/ppp_process.c
|
#UIPDRIVERS = me.c me_tabs.c crc16.c ppp/ahdlc.c ppp/ipcp.c ppp/lcp.c ppp/pap.c ppp/ppp.c ppp/ppp_process.c
|
||||||
SYSAPPS = #codeprop-tmp.c
|
SYSAPPS = #codeprop-tmp.c
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* @(#)$Id: uart1.c,v 1.4 2008/01/08 08:04:09 adamdunkels Exp $
|
* @(#)$Id: uart1.c,v 1.5 2008/02/03 20:59:35 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -39,8 +39,8 @@
|
||||||
|
|
||||||
#include "lib/energest.h"
|
#include "lib/energest.h"
|
||||||
#include "dev/uart1.h"
|
#include "dev/uart1.h"
|
||||||
|
|
||||||
#include "dev/leds.h"
|
#include "dev/leds.h"
|
||||||
|
#include "dev/watchdog.h"
|
||||||
|
|
||||||
static int (*uart1_input_handler)(unsigned char c);
|
static int (*uart1_input_handler)(unsigned char c);
|
||||||
|
|
||||||
|
@ -54,6 +54,7 @@ uart1_set_input(int (*input)(unsigned char c))
|
||||||
void
|
void
|
||||||
uart1_writeb(unsigned char c)
|
uart1_writeb(unsigned char c)
|
||||||
{
|
{
|
||||||
|
watchdog_periodic();
|
||||||
/* Loop until the transmission buffer is available. */
|
/* Loop until the transmission buffer is available. */
|
||||||
while((IFG2 & UTXIFG1) == 0);
|
while((IFG2 & UTXIFG1) == 0);
|
||||||
|
|
||||||
|
@ -61,12 +62,14 @@ uart1_writeb(unsigned char c)
|
||||||
TXBUF1 = c;
|
TXBUF1 = c;
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#if ! WITH_UIP /* If WITH_UIP is defined, putchar() is defined by the SLIP driver */
|
||||||
int
|
int
|
||||||
putchar(int c)
|
putchar(int c)
|
||||||
{
|
{
|
||||||
uart1_writeb((char)c);
|
uart1_writeb((char)c);
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
#endif /* ! WITH_UIP */
|
||||||
/*---------------------------------------------------------------------------*/
|
/*---------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* Initalize the RS232 port.
|
* Initalize the RS232 port.
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
* @(#)$Id: slip_uart1.c,v 1.7 2007/05/22 21:00:27 adamdunkels Exp $
|
* @(#)$Id: slip_uart1.c,v 1.8 2008/02/03 20:59:35 adamdunkels Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -39,23 +39,22 @@
|
||||||
#include "contiki.h"
|
#include "contiki.h"
|
||||||
|
|
||||||
#include "dev/slip.h"
|
#include "dev/slip.h"
|
||||||
|
#include "dev/uart1.h"
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
void
|
void
|
||||||
slip_arch_writeb(unsigned char c)
|
slip_arch_writeb(unsigned char c)
|
||||||
{
|
{
|
||||||
/* Loop until the transmission buffer is available. */
|
uart1_writeb(c);
|
||||||
while ((IFG2 & UTXIFG1) == 0);
|
|
||||||
|
|
||||||
/* Transmit the data. */
|
|
||||||
TXBUF1 = c;
|
|
||||||
}
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
/*
|
/*
|
||||||
* The serial line is used to transfer IP packets using slip. To make
|
* The serial line is used to transfer IP packets using slip. To make
|
||||||
* it possible to send debug output over the same line we send debug
|
* it possible to send debug output over the same line we send debug
|
||||||
* output as slip frames (i.e delimeted by SLIP_END).
|
* output as slip frames (i.e delimeted by SLIP_END).
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
#if WITH_UIP
|
||||||
int
|
int
|
||||||
putchar(int c)
|
putchar(int c)
|
||||||
{
|
{
|
||||||
|
@ -81,7 +80,8 @@ putchar(int c)
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
/**
|
/**
|
||||||
* Initalize the RS232 port and the SLIP driver.
|
* Initalize the RS232 port and the SLIP driver.
|
||||||
*
|
*
|
||||||
|
@ -89,62 +89,6 @@ putchar(int c)
|
||||||
void
|
void
|
||||||
slip_arch_init(unsigned long ubr)
|
slip_arch_init(unsigned long ubr)
|
||||||
{
|
{
|
||||||
/* RS232 */
|
uart1_set_input(slip_input_byte);
|
||||||
P3DIR &= ~0x80; /* Select P37 for input (UART1RX) */
|
|
||||||
P3DIR |= 0x40; /* Select P36 for output (UART1TX) */
|
|
||||||
P3SEL |= 0xC0; /* Select P36,P37 for UART1{TX,RX} */
|
|
||||||
|
|
||||||
UCTL1 = SWRST | CHAR; /* 8-bit character, UART mode */
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
U1RCTL &= ~URXEIE; /* even erroneous characters trigger interrupts */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
UTCTL1 = SSEL1; /* UCLK = MCLK */
|
|
||||||
|
|
||||||
UBR01 = ubr;
|
|
||||||
UBR11 = ubr >> 8; /* always zero */
|
|
||||||
/*
|
|
||||||
* UMCTL1 values calculated using
|
|
||||||
* http://mspgcc.sourceforge.net/baudrate.html and are not
|
|
||||||
* complete. Also the table assumes that F_CPU = 2,457,600 Hz.
|
|
||||||
*/
|
|
||||||
switch (ubr) {
|
|
||||||
case BAUD2UBR(115200):
|
|
||||||
UMCTL1 = 0x4a;
|
|
||||||
break;
|
|
||||||
case BAUD2UBR(57600):
|
|
||||||
UMCTL1 = 0x5b;
|
|
||||||
break;
|
|
||||||
case BAUD2UBR(19600):
|
|
||||||
UMCTL1 = 0x4a;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
UMCTL1 = 0x00;
|
|
||||||
}
|
|
||||||
|
|
||||||
ME2 &= ~USPIE1; /* USART1 SPI module disable */
|
|
||||||
ME2 |= (UTXE1 | URXE1); /* Enable USART1 TXD/RXD */
|
|
||||||
|
|
||||||
UCTL1 &= ~SWRST;
|
|
||||||
|
|
||||||
/* XXX Clear pending interrupts before enable!!! */
|
|
||||||
|
|
||||||
IE2 |= URXIE1; /* Enable USART1 RX interrupt */
|
|
||||||
}
|
|
||||||
|
|
||||||
interrupt(UART1RX_VECTOR)
|
|
||||||
__uart1_intr()
|
|
||||||
{
|
|
||||||
ENERGEST_ON(ENERGEST_TYPE_IRQ);
|
|
||||||
/* Check status register for receive errors. */
|
|
||||||
if(URCTL1 & RXERR) {
|
|
||||||
volatile unsigned dummy;
|
|
||||||
dummy = RXBUF1; /* Clear error flags by forcing a dummy read. */
|
|
||||||
} else {
|
|
||||||
if(slip_input_byte(RXBUF1)) {
|
|
||||||
LPM4_EXIT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ENERGEST_OFF(ENERGEST_TYPE_IRQ);
|
|
||||||
}
|
}
|
||||||
|
/*---------------------------------------------------------------------------*/
|
||||||
|
|
Loading…
Reference in a new issue