+/**
+ @}
+\defgroup Data Reading, writing & flushing data
+@{
+*/
+
+/**
+ Reads bytes from the specified serial port. Note that this function may
+ return after reading less than the specified number of bytes; it is the
+ user's responsibility to iterate as necessary in this case.
+
+ @param port Pointer to port structure.
+ @param buf Buffer in which to store the bytes read.
+ @param count Maximum number of bytes to read.
+
+ @return The number of bytes read, SP_ERR_FAIL on failure,
+ or SP_ERR_ARG for invalid arguments.
+*/
+enum sp_return sp_read(struct sp_port *port, void *buf, size_t count);
+
+/**
+ Write bytes to the specified serial port. Note that this function may
+ return after writing less than the specified number of bytes; it is the
+ user's responsibility to iterate as necessary in this case.
+
+ @param port Pointer to port structure.
+ @param buf Buffer containing the bytes to write.
+ @param count Maximum number of bytes to write.
+
+ @return The number of bytes written, SP_ERR_FAIL on failure,
+ or SP_ERR_ARG for invalid arguments.
+*/
+enum sp_return sp_write(struct sp_port *port, const void *buf, size_t count);
+
+/**
+ Flushes serial port buffers.
+
+ @return SP_OK on success, SP_ERR_FAIL on failure, or SP_ERR_ARG
+ if an invalid port is passed.
+*/
+enum sp_return sp_flush(struct sp_port *port);
+
+/**
+ @}
+\defgroup Errors Obtaining error information
+@{
+*/
+