XBee Firmware Library  1.6.0
Files | Functions
Serial Interface

Files

file  serial.h
 

Functions

int xbee_ser_baudrate (xbee_serial_t *serial, uint32_t baudrate)
 Change the baud rate of XBee serial port serial to baudrate bits/second. More...
 
int xbee_ser_break (xbee_serial_t *serial, bool_t enabled)
 Disable the serial transmit pin and pull it low to send a break to the XBee serial port. More...
 
int xbee_ser_close (xbee_serial_t *serial)
 Close the serial port attached to XBee serial port serial. More...
 
int xbee_ser_flowcontrol (xbee_serial_t *serial, bool_t enabled)
 Enable or disable hardware flow control (CTS/RTS) on the serial port for XBee serial port serial. More...
 
int xbee_ser_get_cts (xbee_serial_t *serial)
 Read the status of the /CTS (clear to send) pin on the serial port connected to XBee serial port serial. More...
 
int xbee_ser_getchar (xbee_serial_t *serial)
 Reads a single character from the XBee serial port serial. More...
 
XBEE_BEGIN_DECLS bool_t xbee_ser_invalid (xbee_serial_t *serial)
 Helper function used by other xbee_serial functions to validate the serial parameter. More...
 
int xbee_ser_open (xbee_serial_t *serial, uint32_t baudrate)
 Opens the serial port connected to XBee serial port serial at baudrate bits/second. More...
 
const char * xbee_ser_portname (xbee_serial_t *serial)
 Returns a human-readable string describing the serial port. More...
 
int xbee_ser_putchar (xbee_serial_t *serial, uint8_t ch)
 Transmits a single character, ch, to the XBee serial port serial. More...
 
int xbee_ser_read (xbee_serial_t *serial, void FAR *buffer, int bufsize)
 Reads up to bufsize bytes from XBee serial port serial and into buffer. More...
 
int xbee_ser_rx_flush (xbee_serial_t *serial)
 Deletes all characters in the serial receive buffer for XBee serial port serial. More...
 
int xbee_ser_rx_free (xbee_serial_t *serial)
 Returns the number of bytes of unused space in the serial receive buffer for XBee serial port serial. More...
 
int xbee_ser_rx_used (xbee_serial_t *serial)
 Returns the number of queued bytes in the serial receive buffer for XBee serial port serial. More...
 
int xbee_ser_set_rts (xbee_serial_t *serial, bool_t asserted)
 Disable hardware flow control and manually set the RTS (ready to send) pin on the XBee device's serial port. More...
 
int xbee_ser_tx_flush (xbee_serial_t *serial)
 Flushes (i.e., deletes and does not transmit) characters in the serial transmit buffer for XBee serial port serial. More...
 
int xbee_ser_tx_free (xbee_serial_t *serial)
 Returns the number of bytes of unused space in the serial transmit buffer for XBee serial port serial. More...
 
int xbee_ser_tx_used (xbee_serial_t *serial)
 Returns the number of queued bytes in the serial transmit buffer for XBee serial port serial. More...
 
int xbee_ser_write (xbee_serial_t *serial, const void FAR *buffer, int length)
 Transmits length bytes from buffer to the XBee serial port serial. More...
 

Detailed Description

Function Documentation

int xbee_ser_baudrate ( xbee_serial_t serial,
uint32_t  baudrate 
)

Change the baud rate of XBee serial port serial to baudrate bits/second.

Parameters
[in]serialXBee serial port
[in]baudrateBits per second of serial data transfer speed.
Return values
0Opened serial port within 5% of requested baudrate.
-EINVALserial is not a valid XBee serial port.
-EIOCan't open serial port within 5% of requested baudrate.
See also
xbee_ser_open(), xbee_ser_close(), xbee_ser_break()
int xbee_ser_break ( xbee_serial_t serial,
bool_t  enabled 
)

Disable the serial transmit pin and pull it low to send a break to the XBee serial port.

Parameters
[in]serialXBee serial port
[in]enabledSet to 1 to start the break or 0 to end the break (and resume transmitting).
Return values
0Success
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_open(), xbee_ser_close()
int xbee_ser_close ( xbee_serial_t serial)

Close the serial port attached to XBee serial port serial.

Parameters
[in]serialXBee serial port
Return values
0closed serial port
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_open(), xbee_ser_baudrate(), xbee_ser_break()
int xbee_ser_flowcontrol ( xbee_serial_t serial,
bool_t  enabled 
)

Enable or disable hardware flow control (CTS/RTS) on the serial port for XBee serial port serial.

Parameters
[in]serialXBee serial port
[in]enabledSet to 0 to disable flow control or non-zero to enable flow control.
Return values
0Success
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_set_rts(), xbee_ser_get_cts()
int xbee_ser_get_cts ( xbee_serial_t serial)

Read the status of the /CTS (clear to send) pin on the serial port connected to XBee serial port serial.

Note that this function doesn't return the value of the pin – it returns whether it's asserted (i.e., clear to send to the XBee serial port) or not.

Parameters
[in]serialXBee serial port
Return values
1it's clear to send
0it's not clear to send
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_flowcontrol(), xbee_ser_set_rts()
int xbee_ser_getchar ( xbee_serial_t serial)

Reads a single character from the XBee serial port serial.

Parameters
[in]serialXBee serial port
Return values
0-255character read from XBee serial port
-ENODATAThere aren't any characters in the read buffer.
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_read(), xbee_ser_write(), xbee_ser_getchar()
XBEE_BEGIN_DECLS bool_t xbee_ser_invalid ( xbee_serial_t serial)

Helper function used by other xbee_serial functions to validate the serial parameter.

Confirms that it is non-NULL and is set to a valid port.

Parameters
[in]serialXBee serial port
Return values
1serial is not a valid XBee serial port
0serial is a valid XBee serial port
int xbee_ser_open ( xbee_serial_t serial,
uint32_t  baudrate 
)

Opens the serial port connected to XBee serial port serial at baudrate bits/second.

Parameters
[in]serialXBee serial port
[in]baudrateBits per second of serial data transfer speed.
Return values
0Opened serial port within 5% of requested baudrate.
-EINVALserial is not a valid XBee serial port.
-EIOCan't open serial port within 5% of requested baudrate.
See also
xbee_ser_baudrate(), xbee_ser_close(), xbee_ser_break()
const char* xbee_ser_portname ( xbee_serial_t serial)

Returns a human-readable string describing the serial port.

For example, on a Windows machine this will be "COM1" or "COM999". On a Rabbit, it will be a single letter, "A" through "F". On Freescale HCS08, it will be something like "SCI1" or "SCI2". On POSIX, the name of the device (e.g., "/dev/ttyS0")

Returns "(invalid)" if serial is invalid or not configured.

Parameters
[in]serialport
Returns
null-terminated string describing the serial port
int xbee_ser_putchar ( xbee_serial_t serial,
uint8_t  ch 
)

Transmits a single character, ch, to the XBee serial port serial.

Parameters
[in]serialXBee serial port
[in]chcharacter to send
Return values
0Successfully sent (queued) character.
-ENOSPCThe write buffer is full and the character wasn't sent.
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_read(), xbee_ser_write(), xbee_ser_getchar()
int xbee_ser_read ( xbee_serial_t serial,
void FAR *  buffer,
int  bufsize 
)

Reads up to bufsize bytes from XBee serial port serial and into buffer.

If there is no data available when the function is called, it will return immediately.

Parameters
[in]serialXBee serial port
[out]bufferbuffer to hold bytes read from XBee serial port
[in]bufsizemaximum number of bytes to read
Return values
>=0The number of bytes read from XBee serial port.
-EINVALserial is not a valid XBee serial port.
-EIOI/O error attempting to write to serial port.
See also
xbee_ser_write(), xbee_ser_putchar(), xbee_ser_getchar()
int xbee_ser_rx_flush ( xbee_serial_t serial)

Deletes all characters in the serial receive buffer for XBee serial port serial.

Parameters
[in]serialXBee serial port
Return values
0success
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_tx_free(), xbee_ser_tx_used(), xbee_ser_tx_flush(), xbee_ser_rx_free(), xbee_ser_rx_used()
int xbee_ser_rx_free ( xbee_serial_t serial)

Returns the number of bytes of unused space in the serial receive buffer for XBee serial port serial.

Parameters
[in]serialXBee serial port
Return values
INT_MAXThe buffer size is unlimited (or unknown).
>=0The number of bytes it would take to fill the XBee serial port's serial receive buffer.
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_tx_free(), xbee_ser_tx_used(), xbee_ser_tx_flush(), xbee_ser_rx_used(), xbee_ser_rx_flush()
int xbee_ser_rx_used ( xbee_serial_t serial)

Returns the number of queued bytes in the serial receive buffer for XBee serial port serial.

Parameters
[in]serialXBee serial port
Return values
>=0The number of bytes queued in the XBee serial port's serial transmit buffer.
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_tx_free(), xbee_ser_tx_used(), xbee_ser_tx_flush(), xbee_ser_rx_free(), xbee_ser_rx_flush()
Note
Unlike xbee_ser_tx_used(), this function MUST return the number of bytes available. Some layers of the library wait until enough bytes are ready before continuing.

We may expand on or replace this API. On some platforms (like Win32) we have to do some of our own buffering in order to peek at data in the serial receive buffer. Most of the driver only requires a check to see if some number of bytes are available or not. Consider changing the API to something like:

1 int xbee_ser_rx_avail( xbee_serial_t *serial, uint8_t count)

returns TRUE if count bytes are available, FALSE otherwise.

int xbee_ser_set_rts ( xbee_serial_t serial,
bool_t  asserted 
)

Disable hardware flow control and manually set the RTS (ready to send) pin on the XBee device's serial port.

Typically used to enter the XBee device's boot loader and initiate a firmware update.

Parameters
[in]serialXBee serial port
[in]assertedSet to 1 to assert RTS (ok for XBee to send to us) or 0 to deassert RTS (tell XBee not to send to us).
Return values
0Success
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_flowcontrol(), xbee_ser_get_cts()
int xbee_ser_tx_flush ( xbee_serial_t serial)

Flushes (i.e., deletes and does not transmit) characters in the serial transmit buffer for XBee serial port serial.

Parameters
[in]serialXBee serial port
Return values
0success
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_rx_free(), xbee_ser_rx_used(), xbee_ser_rx_flush(), xbee_ser_tx_free(), xbee_ser_tx_used()
int xbee_ser_tx_free ( xbee_serial_t serial)

Returns the number of bytes of unused space in the serial transmit buffer for XBee serial port serial.

Parameters
[in]serialXBee serial port
Return values
INT_MAXThe buffer size is unlimited (or unknown).
>=0The number of bytes it would take to fill the XBee serial port's serial transmit buffer.
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_rx_free(), xbee_ser_rx_used(), xbee_ser_rx_flush(), xbee_ser_tx_used(), xbee_ser_tx_flush()
int xbee_ser_tx_used ( xbee_serial_t serial)

Returns the number of queued bytes in the serial transmit buffer for XBee serial port serial.

Parameters
[in]serialXBee serial port
Return values
0The buffer size is unlimited (or space used is unknown).
>0The number of bytes queued in the XBee serial port's serial transmit buffer.
-EINVALserial is not a valid XBee serial port.
See also
xbee_ser_rx_free(), xbee_ser_rx_used(), xbee_ser_rx_flush(), xbee_ser_tx_free(), xbee_ser_tx_flush()
int xbee_ser_write ( xbee_serial_t serial,
const void FAR *  buffer,
int  length 
)

Transmits length bytes from buffer to the XBee serial port serial.

Parameters
[in]serialXBee serial port
[in]buffersource of bytes to send
[in]lengthnumber of bytes to write
Return values
>=0The number of bytes successfully written to XBee serial port.
-EINVALserial is not a valid XBee serial port.
-EIOI/O error attempting to write to serial port.
See also
xbee_ser_read(), xbee_ser_putchar(), xbee_ser_getchar()