Contiki 2.6

slip.h

00001 /* -*- C -*- */
00002 /*
00003  * Copyright (c) 2005, Swedish Institute of Computer Science
00004  * All rights reserved.
00005  *
00006  * Redistribution and use in source and binary forms, with or without
00007  * modification, are permitted provided that the following conditions
00008  * are met:
00009  * 1. Redistributions of source code must retain the above copyright
00010  *    notice, this list of conditions and the following disclaimer.
00011  * 2. Redistributions in binary form must reproduce the above copyright
00012  *    notice, this list of conditions and the following disclaimer in the
00013  *    documentation and/or other materials provided with the distribution.
00014  * 3. Neither the name of the Institute nor the names of its contributors
00015  *    may be used to endorse or promote products derived from this software
00016  *    without specific prior written permission.
00017  *
00018  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
00019  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00020  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00021  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
00022  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00023  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
00024  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
00025  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00026  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
00027  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00028  * SUCH DAMAGE.
00029  *
00030  * This file is part of the Contiki operating system.
00031  *
00032  * @(#)$Id: slip.h,v 1.5 2008/02/24 21:00:53 adamdunkels Exp $
00033  */
00034 
00035 #ifndef __SLIP_H__
00036 #define __SLIP_H__
00037 
00038 #include "contiki.h"
00039 
00040 PROCESS_NAME(slip_process);
00041 
00042 /**
00043  * Send an IP packet from the uIP buffer with SLIP.
00044  */
00045 uint8_t slip_send(void);
00046 
00047 /**
00048  * Input a SLIP byte.
00049  *
00050  * This function is called by the RS232/SIO device driver to pass
00051  * incoming bytes to the SLIP driver. The function can be called from
00052  * an interrupt context.
00053  *
00054  * For systems using low-power CPU modes, the return value of the
00055  * function can be used to determine if the CPU should be woken up or
00056  * not. If the function returns non-zero, the CPU should be powered
00057  * up. If the function returns zero, the CPU can continue to be
00058  * powered down.
00059  *
00060  * \param c The data that is to be passed to the SLIP driver
00061  *
00062  * \return Non-zero if the CPU should be powered up, zero otherwise.
00063  */
00064 int slip_input_byte(unsigned char c);
00065 
00066 uint8_t slip_write(const void *ptr, int len);
00067 
00068 /* Did we receive any bytes lately? */
00069 extern uint8_t slip_active;
00070 
00071 /* Statistics. */
00072 extern uint16_t slip_rubbish, slip_twopackets, slip_overflow, slip_ip_drop;
00073 
00074 /**
00075  * Set a function to be called when there is activity on the SLIP
00076  * interface; used for detecting if a node is a gateway node.
00077  */
00078 void slip_set_input_callback(void (*callback)(void));
00079 
00080 /*
00081  * These machine dependent functions and an interrupt service routine
00082  * must be provided externally (slip_arch.c).
00083  */
00084 void slip_arch_init(unsigned long ubr);
00085 void slip_arch_writeb(unsigned char c);
00086 
00087 #endif /* __SLIP_H__ */