Better docs for platform functions

This commit is contained in:
Valerio De Benedetto 2022-04-30 13:52:13 +02:00
parent 9d2918b3bb
commit ac66269cda
2 changed files with 21 additions and 14 deletions

View File

@ -101,17 +101,19 @@ client/server instance.
### Transport read/write
```C
int read_byte(uint8_t* b, int32_t, void* arg);
int write_byte(uint8_t b, int32_t, void* arg);
int read_byte(uint8_t* b, int32_t timeout_ms, void* arg);
int write_byte(uint8_t b, int32_t timeout_ms, void* arg);
```
These are your platform-specific functions that read/write data to/from a serial port or a TCP connection.
Both functions should block until the requested byte is read/written.
If your implementation uses a read/write timeout, and the timeout expires, the function should return 0.
Their return values should be:
Both methods should block until either:
- a byte is read/written
- the timeout, with `timeout_ms >= 0`, expires
A value `< 0` for `timeout_ms` means no timeout.
Their return values should be:
- `1` in case of success
- `0` if no data is available immediately or after an internal timeout expiration
- `0` if no data is available immediately or after timeout expiration
- `-1` in case of error
### Sleep

View File

@ -106,11 +106,16 @@ typedef enum nmbs_transport {
* Passed to nmbs_server_create() and nmbs_client_create().
*
* read_byte() and write_byte() are the platform-specific methods that read/write data to/from a serial port or a TCP connection.
* Both methods should block until the requested byte is read/written.
* If your implementation uses a read/write timeout, and the timeout expires, the methods should return 0.
*
* Both methods should block until either:
* - a byte is read/written
* - the timeout, with timeout_ms >= 0, expires
*
* A value < 0 for timeout_ms means no timeout.
*
* Their return values should be:
* - `1` in case of success
* - `0` if no data is available immediately or after an internal timeout expiration
* - `0` if no data is available immediately or after timeout expiration
* - `-1` in case of error
*
* sleep() is the platform-specific method to pause for a certain amount of milliseconds.
@ -120,8 +125,8 @@ typedef enum nmbs_transport {
*/
typedef struct nmbs_platform_conf {
nmbs_transport transport; /*!< Transport type */
int (*read_byte)(uint8_t* b, int32_t, void* arg); /*!< Byte read transport function pointer */
int (*write_byte)(uint8_t b, int32_t, void* arg); /*!< Byte write transport function pointer */
int (*read_byte)(uint8_t* b, int32_t timeout_ms, void* arg); /*!< Byte read transport function pointer */
int (*write_byte)(uint8_t b, int32_t timeout_ms, void* arg); /*!< Byte write transport function pointer */
void (*sleep)(uint32_t milliseconds, void* arg); /*!< Sleep function pointer */
void* arg; /*!< User data, will be passed to functions above */
} nmbs_platform_conf;