Mistake on this page?
Report an issue in GitHub or email us
sio.h
1 /*
2  * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without modification,
6  * are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  * 3. The name of the author may not be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
19  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
21  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
24  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
25  * OF SUCH DAMAGE.
26  *
27  * This file is part of the lwIP TCP/IP stack.
28  */
29 
30 /*
31  * This is the interface to the platform specific serial IO module
32  * It needs to be implemented by those platforms which need SLIP or PPP
33  */
34 
35 #ifndef SIO_H
36 #define SIO_H
37 
38 #include "lwip/arch.h"
39 #include "lwip/opt.h"
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 /* If you want to define sio_fd_t elsewhere or differently,
46  define this in your cc.h file. */
47 #ifndef __sio_fd_t_defined
48 typedef void * sio_fd_t;
49 #endif
50 
51 /* The following functions can be defined to something else in your cc.h file
52  or be implemented in your custom sio.c file. */
53 
54 #ifndef sio_open
55 /**
56  * Opens a serial device for communication.
57  *
58  * @param devnum device number
59  * @return handle to serial device if successful, NULL otherwise
60  */
61 sio_fd_t sio_open(u8_t devnum);
62 #endif
63 
64 #ifndef sio_send
65 /**
66  * Sends a single character to the serial device.
67  *
68  * @param c character to send
69  * @param fd serial device handle
70  *
71  * @note This function will block until the character can be sent.
72  */
73 void sio_send(u8_t c, sio_fd_t fd);
74 #endif
75 
76 #ifndef sio_recv
77 /**
78  * Receives a single character from the serial device.
79  *
80  * @param fd serial device handle
81  *
82  * @note This function will block until a character is received.
83  */
84 u8_t sio_recv(sio_fd_t fd);
85 #endif
86 
87 #ifndef sio_read
88 /**
89  * Reads from the serial device.
90  *
91  * @param fd serial device handle
92  * @param data pointer to data buffer for receiving
93  * @param len maximum length (in bytes) of data to receive
94  * @return number of bytes actually received - may be 0 if aborted by sio_read_abort
95  *
96  * @note This function will block until data can be received. The blocking
97  * can be cancelled by calling sio_read_abort().
98  */
99 u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len);
100 #endif
101 
102 #ifndef sio_tryread
103 /**
104  * Tries to read from the serial device. Same as sio_read but returns
105  * immediately if no data is available and never blocks.
106  *
107  * @param fd serial device handle
108  * @param data pointer to data buffer for receiving
109  * @param len maximum length (in bytes) of data to receive
110  * @return number of bytes actually received
111  */
112 u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len);
113 #endif
114 
115 #ifndef sio_write
116 /**
117  * Writes to the serial device.
118  *
119  * @param fd serial device handle
120  * @param data pointer to data to send
121  * @param len length (in bytes) of data to send
122  * @return number of bytes actually sent
123  *
124  * @note This function will block until all data can be sent.
125  */
126 u32_t sio_write(sio_fd_t fd, u8_t *data, u32_t len);
127 #endif
128 
129 #ifndef sio_read_abort
130 /**
131  * Aborts a blocking sio_read() call.
132  *
133  * @param fd serial device handle
134  */
135 void sio_read_abort(sio_fd_t fd);
136 #endif
137 
138 #ifdef __cplusplus
139 }
140 #endif
141 
142 #endif /* SIO_H */
lwIP Options Configuration
Support for different processor and compiler architectures.
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.