Skip to content

Commit 1bd6256

Browse files
committed
Add error callback support to serial interface functions
- Introduced `ErrorCallbackT` type and added error callback parameter to multiple serial interface functions, enhancing error handling capabilities. - Updated documentation to reflect changes in return values and parameters across various headers, ensuring clarity and consistency. This update improves the robustness of the serial API by allowing users to handle errors more effectively.
1 parent fe273d8 commit 1bd6256

20 files changed

+111
-49
lines changed

include/cpp_core.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
* offers the most convenient entry point.
1313
*/
1414

15+
#include "cpp_core/error_callback.h"
1516
#include "cpp_core/serial.h"
1617
#include "cpp_core/status_codes.h"
1718
#include "cpp_core/version.h"

include/cpp_core/error_callback.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#pragma once
2+
3+
#ifdef __cplusplus
4+
extern "C"
5+
{
6+
#endif
7+
8+
using ErrorCallbackT = void (*)(
9+
int error_code,
10+
const char *message
11+
);
12+
13+
#ifdef __cplusplus
14+
} // extern "C"
15+
#endif

include/cpp_core/interface/serial_abort_read.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include "../error_callback.h"
23
#include "../module_api.h"
34
#include <cstdint>
45

@@ -14,8 +15,12 @@ extern "C"
1415
* ::cpp_core::StatusCodes::kAbortReadError.
1516
*
1617
* @param handle Port handle.
18+
* @return 0 on success or a negative error code on failure.
1719
*/
18-
MODULE_API void serialAbortRead(int64_t handle);
20+
MODULE_API auto serialAbortRead(
21+
int64_t handle,
22+
ErrorCallbackT error_callback = nullptr
23+
) -> int;
1924

2025
#ifdef __cplusplus
2126
}

include/cpp_core/interface/serial_abort_write.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include "../error_callback.h"
23
#include "../module_api.h"
34
#include <cstdint>
45

@@ -14,8 +15,12 @@ extern "C"
1415
* ::cpp_core::StatusCodes::kAbortWriteError.
1516
*
1617
* @param handle Port handle.
18+
* @return 0 on success or a negative error code on failure.
1719
*/
18-
MODULE_API void serialAbortWrite(int64_t handle);
20+
MODULE_API auto serialAbortWrite(
21+
int64_t handle,
22+
ErrorCallbackT error_callback = nullptr
23+
) -> int;
1924

2025
#ifdef __cplusplus
2126
}

include/cpp_core/interface/serial_clear_buffer_in.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include "../error_callback.h"
23
#include "../module_api.h"
34
#include <cstdint>
45

@@ -14,8 +15,12 @@ extern "C"
1415
* has not yet read.
1516
*
1617
* @param handle Port handle.
18+
* @return 0 on success or a negative error code on failure.
1719
*/
18-
MODULE_API void serialClearBufferIn(int64_t handle);
20+
MODULE_API auto serialClearBufferIn(
21+
int64_t handle,
22+
ErrorCallbackT error_callback = nullptr
23+
) -> int;
1924

2025
#ifdef __cplusplus
2126
}

include/cpp_core/interface/serial_clear_buffer_out.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include "../error_callback.h"
23
#include "../module_api.h"
34
#include <cstdint>
45

@@ -14,8 +15,12 @@ extern "C"
1415
* remaining data.
1516
*
1617
* @param handle Port handle.
18+
* @return 0 on success or a negative error code on failure.
1719
*/
18-
MODULE_API void serialClearBufferOut(int64_t handle);
20+
MODULE_API auto serialClearBufferOut(
21+
int64_t handle,
22+
ErrorCallbackT error_callback = nullptr
23+
) -> int;
1924

2025
#ifdef __cplusplus
2126
}

include/cpp_core/interface/serial_close.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include "../error_callback.h"
23
#include "../module_api.h"
34
#include <cstdint>
45

@@ -16,7 +17,10 @@ extern "C"
1617
* @param handle Handle obtained from serialOpen().
1718
* @return 0 on success or a negative error code on failure.
1819
*/
19-
MODULE_API auto serialClose(int64_t handle) -> int;
20+
MODULE_API auto serialClose(
21+
int64_t handle,
22+
ErrorCallbackT error_callback = nullptr
23+
) -> int;
2024

2125
#ifdef __cplusplus
2226
}

include/cpp_core/interface/serial_drain.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include "../error_callback.h"
23
#include "../module_api.h"
34
#include <cstdint>
45

@@ -29,7 +30,10 @@ extern "C"
2930
* @param handle Port handle.
3031
* @return 0 on success; negative ::cpp_core::StatusCodes value on error.
3132
*/
32-
MODULE_API auto serialDrain(int64_t handle) -> int;
33+
MODULE_API auto serialDrain(
34+
int64_t handle,
35+
ErrorCallbackT error_callback = nullptr
36+
) -> int;
3337

3438
#ifdef __cplusplus
3539
}

include/cpp_core/interface/serial_get_ports_info.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#pragma once
2+
#include "../error_callback.h"
23
#include "../module_api.h"
34

45
#ifdef __cplusplus
@@ -25,7 +26,8 @@ extern "C"
2526
const char *location_id,
2627
const char *product_id,
2728
const char *vendor_id
28-
)
29+
),
30+
ErrorCallbackT error_callback = nullptr
2931
) -> int;
3032

3133
#ifdef __cplusplus

include/cpp_core/interface/serial_in_bytes_total.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ extern "C"
1111
* @brief Total number of bytes received since the port was opened.
1212
*
1313
* @param handle Port handle.
14-
* @return Total number of bytes read.
14+
* @return Total number of bytes read or a negative error code.
1515
*/
1616
MODULE_API auto serialInBytesTotal(int64_t handle) -> int64_t;
1717

0 commit comments

Comments
 (0)