From 0b95590b1854a9f38be39a96876067ba3e47db8f Mon Sep 17 00:00:00 2001 From: MAY Date: Wed, 25 Mar 2026 22:00:44 +0100 Subject: [PATCH] Add default value protection for line coding parameters in serial Host classes Add preprocessor guards to allow customization of default line coding parameters. Summary of Changes: - Wrapped default line coding constants (RATE, STOP_BIT, PARITY, DATA_BIT) with #ifndef guards in CDC ACM, GSER, and Prolific host class headers - This allows users to define custom default values before including these headers in (ux_user.h) - Updated Prolific activation code to use DEFAULT constants instead of hardcoded values for consistency and better maintainability Files Modified: - common/usbx_host_classes/inc/ux_host_class_cdc_acm.h - common/usbx_host_classes/inc/ux_host_class_gser.h - common/usbx_host_classes/inc/ux_host_class_prolific.h - common/usbx_host_classes/src/ux_host_class_prolific_activate.c --- .../usbx_host_classes/inc/ux_host_class_cdc_acm.h | 11 +++++++++++ common/usbx_host_classes/inc/ux_host_class_gser.h | 13 +++++++++++++ .../usbx_host_classes/inc/ux_host_class_prolific.h | 13 +++++++++++++ .../src/ux_host_class_prolific_activate.c | 4 ++-- 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/common/usbx_host_classes/inc/ux_host_class_cdc_acm.h b/common/usbx_host_classes/inc/ux_host_class_cdc_acm.h index 24b8fb4e..b8c392f4 100644 --- a/common/usbx_host_classes/inc/ux_host_class_cdc_acm.h +++ b/common/usbx_host_classes/inc/ux_host_class_cdc_acm.h @@ -135,10 +135,21 @@ extern "C" { /* Define CDC ACM default values. */ +#ifndef UX_HOST_CLASS_CDC_ACM_LINE_CODING_DEFAULT_RATE #define UX_HOST_CLASS_CDC_ACM_LINE_CODING_DEFAULT_RATE 9600 +#endif + +#ifndef UX_HOST_CLASS_CDC_ACM_LINE_CODING_DEFAULT_STOP_BIT #define UX_HOST_CLASS_CDC_ACM_LINE_CODING_DEFAULT_STOP_BIT 0 +#endif + +#ifndef UX_HOST_CLASS_CDC_ACM_LINE_CODING_DEFAULT_PARITY #define UX_HOST_CLASS_CDC_ACM_LINE_CODING_DEFAULT_PARITY 0 +#endif + +#ifndef UX_HOST_CLASS_CDC_ACM_LINE_CODING_DEFAULT_DATA_BIT #define UX_HOST_CLASS_CDC_ACM_LINE_CODING_DEFAULT_DATA_BIT 8 +#endif /* Define CDC ACM line coding definitions. */ diff --git a/common/usbx_host_classes/inc/ux_host_class_gser.h b/common/usbx_host_classes/inc/ux_host_class_gser.h index 9332dbfe..8096ff41 100644 --- a/common/usbx_host_classes/inc/ux_host_class_gser.h +++ b/common/usbx_host_classes/inc/ux_host_class_gser.h @@ -115,8 +115,21 @@ extern "C" { /* Define CDC ACM default values. */ +#ifndef UX_HOST_CLASS_GSER_LINE_CODING_DEFAULT_RATE #define UX_HOST_CLASS_GSER_LINE_CODING_DEFAULT_RATE 9600 +#endif + +#ifndef UX_HOST_CLASS_GSER_LINE_CODING_DEFAULT_STOP_BIT +#define UX_HOST_CLASS_GSER_LINE_CODING_DEFAULT_STOP_BIT 0 +#endif + +#ifndef UX_HOST_CLASS_GSER_LINE_CODING_DEFAULT_PARITY +#define UX_HOST_CLASS_GSER_LINE_CODING_DEFAULT_PARITY 0 +#endif + +#ifndef UX_HOST_CLASS_GSER_LINE_CODING_DEFAULT_DATA_BIT #define UX_HOST_CLASS_GSER_LINE_CODING_DEFAULT_DATA_BIT 8 +#endif /* Define CDC ACM line coding definitions. */ diff --git a/common/usbx_host_classes/inc/ux_host_class_prolific.h b/common/usbx_host_classes/inc/ux_host_class_prolific.h index 94b516ff..eb6c9cbe 100644 --- a/common/usbx_host_classes/inc/ux_host_class_prolific.h +++ b/common/usbx_host_classes/inc/ux_host_class_prolific.h @@ -144,8 +144,21 @@ extern "C" { /* Define PROLIFIC default values. */ +#ifndef UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_RATE #define UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_RATE 19200 +#endif + +#ifndef UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_STOP_BIT +#define UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_STOP_BIT 0 +#endif + +#ifndef UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_PARITY +#define UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_PARITY 0 +#endif + +#ifndef UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_DATA_BIT #define UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_DATA_BIT 8 +#endif /* Define PROLIFIC line coding definitions. */ diff --git a/common/usbx_host_classes/src/ux_host_class_prolific_activate.c b/common/usbx_host_classes/src/ux_host_class_prolific_activate.c index e2afb35f..862af1e8 100644 --- a/common/usbx_host_classes/src/ux_host_class_prolific_activate.c +++ b/common/usbx_host_classes/src/ux_host_class_prolific_activate.c @@ -125,8 +125,8 @@ UINT status; if (status == UX_SUCCESS) { line_coding.ux_host_class_prolific_line_coding_dter = UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_RATE; - line_coding.ux_host_class_prolific_line_coding_stop_bit = UX_HOST_CLASS_PROLIFIC_LINE_CODING_STOP_BIT_0; - line_coding.ux_host_class_prolific_line_coding_parity = UX_HOST_CLASS_PROLIFIC_LINE_CODING_PARITY_NONE; + line_coding.ux_host_class_prolific_line_coding_stop_bit = UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_STOP_BIT; + line_coding.ux_host_class_prolific_line_coding_parity = UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_PARITY; line_coding.ux_host_class_prolific_line_coding_data_bits = UX_HOST_CLASS_PROLIFIC_LINE_CODING_DEFAULT_DATA_BIT; status = _ux_host_class_prolific_ioctl(prolific, UX_HOST_CLASS_PROLIFIC_IOCTL_SET_LINE_CODING, (VOID *) &line_coding); }