Skip to content

Commit bb65866

Browse files
committed
feat: make OSDP protocol constants configurable at build time
- Add 7 configurable OSDP timeout/retry constants to CMakeLists.txt - Update osdp_config.h.in to use CMake variable substitution for configurable constants - Add command-line options to configure.sh for configurable constants - Keep 10 constants hardcoded (buffer sizes, limits, offsets, short timeouts) as they should not be changed - Maintain full backward compatibility with existing builds - All configurable constants default to their original hardcoded values Configurable constants: - OSDP_PD_SC_RETRY_MS - OSDP_PD_SC_TIMEOUT_MS - OSDP_PD_ONLINE_TOUT_MS - OSDP_CMD_MAX_RETRIES - OSDP_ONLINE_RETRY_WAIT_MAX_MS - OSDP_CMD_RETRY_WAIT_MS - OSDP_FILE_ERROR_RETRY_MAX Hardcoded constants (not configurable): - OSDP_PD_POLL_TIMEOUT_MS (50) - OSDP_RESP_TOUT_MS (200) - OSDP_PACKET_BUF_SIZE (256) - OSDP_RX_RB_SIZE (512) - OSDP_CP_CMD_POOL_SIZE (4) - OSDP_PD_MAX (126) - OSDP_CMD_ID_OFFSET (5) - OSDP_PCAP_LINK_TYPE (162) - OSDP_PD_NAME_MAXLEN (16) - OSDP_MINIMUM_PACKET_SIZE (128) Users can now configure timeout/retry values via: - CMake: -DOSDP_ONLINE_RETRY_WAIT_MAX_MS=3000 - configure.sh: --osdp-online-retry-wait-max-ms 3000
1 parent 184440c commit bb65866

File tree

3 files changed

+42
-8
lines changed

3 files changed

+42
-8
lines changed

CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ option(OPT_OSDP_STATIC_PD "Setup PD single statically" OFF)
3535
option(OPT_OSDP_LIB_ONLY "Only build the library" OFF)
3636
option(OPT_BUILD_BARE_METAL "Build library for bare metal targets" OFF)
3737

38+
## OSDP Protocol Configuration Constants
39+
set(OSDP_PD_SC_RETRY_MS "600000" CACHE STRING "PD Secure Channel retry timeout (ms)")
40+
set(OSDP_PD_SC_TIMEOUT_MS "8000" CACHE STRING "PD Secure Channel timeout (ms)")
41+
set(OSDP_PD_ONLINE_TOUT_MS "8000" CACHE STRING "PD online timeout (ms)")
42+
set(OSDP_CMD_MAX_RETRIES "8" CACHE STRING "Maximum command retries")
43+
set(OSDP_ONLINE_RETRY_WAIT_MAX_MS "300000" CACHE STRING "Maximum online retry wait (ms)")
44+
set(OSDP_CMD_RETRY_WAIT_MS "800" CACHE STRING "Command retry wait (ms)")
45+
set(OSDP_FILE_ERROR_RETRY_MAX "10" CACHE STRING "File transfer error retry max")
46+
3847
## Includes
3948
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
4049
include(AddCCompilerFlag)

configure.sh

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,17 @@ usage() {
2929
-d, --debug Enable debug builds
3030
-f, --force Use this flags to override some checks
3131
-h, --help Print this help
32+
33+
OSDP Protocol Configuration:
34+
--osdp-pd-sc-retry-ms MS Set OSDP_PD_SC_RETRY_MS (default: 600000)
35+
--osdp-pd-poll-timeout-ms MS Set OSDP_PD_POLL_TIMEOUT_MS (default: 50)
36+
--osdp-pd-sc-timeout-ms MS Set OSDP_PD_SC_TIMEOUT_MS (default: 8000)
37+
--osdp-pd-online-tout-ms MS Set OSDP_PD_ONLINE_TOUT_MS (default: 8000)
38+
--osdp-resp-tout-ms MS Set OSDP_RESP_TOUT_MS (default: 200)
39+
--osdp-cmd-max-retries N Set OSDP_CMD_MAX_RETRIES (default: 8)
40+
--osdp-online-retry-wait-max-ms MS Set OSDP_ONLINE_RETRY_WAIT_MAX_MS (default: 300000)
41+
--osdp-cmd-retry-wait-ms MS Set OSDP_CMD_RETRY_WAIT_MS (default: 800)
42+
--osdp-file-error-retry-max N Set OSDP_FILE_ERROR_RETRY_MAX (default: 10)
3243
---
3344
}
3445

@@ -49,6 +60,13 @@ while [ $# -gt 0 ]; do
4960
--static-pd) STATIC_PD=1;;
5061
--lib-only) LIB_ONLY=1;;
5162
--build-dir) BUILD_DIR=$2; shift;;
63+
--osdp-pd-sc-retry-ms) OSDP_PD_SC_RETRY_MS=$2; shift;;
64+
--osdp-pd-sc-timeout-ms) OSDP_PD_SC_TIMEOUT_MS=$2; shift;;
65+
--osdp-pd-online-tout-ms) OSDP_PD_ONLINE_TOUT_MS=$2; shift;;
66+
--osdp-cmd-max-retries) OSDP_CMD_MAX_RETRIES=$2; shift;;
67+
--osdp-online-retry-wait-max-ms) OSDP_ONLINE_RETRY_WAIT_MAX_MS=$2; shift;;
68+
--osdp-cmd-retry-wait-ms) OSDP_CMD_RETRY_WAIT_MS=$2; shift;;
69+
--osdp-file-error-retry-max) OSDP_FILE_ERROR_RETRY_MAX=$2; shift;;
5270
-d|--debug) DEBUG=1;;
5371
-f|--force) FORCE=1;;
5472
-h|--help) usage; exit 0;;
@@ -193,6 +211,13 @@ sed -e "s|@PROJECT_VERSION@|${PROJECT_VERSION}|" \
193211
-e "s|@GIT_TAG@|${GIT_TAG}|" \
194212
-e "s|@GIT_DIFF@|${GIT_DIFF}|" \
195213
-e "s|@REPO_ROOT@|${SCRIPT_DIR}|" \
214+
-e "s|@OSDP_PD_SC_RETRY_MS@|${OSDP_PD_SC_RETRY_MS:-600000}|" \
215+
-e "s|@OSDP_PD_SC_TIMEOUT_MS@|${OSDP_PD_SC_TIMEOUT_MS:-8000}|" \
216+
-e "s|@OSDP_PD_ONLINE_TOUT_MS@|${OSDP_PD_ONLINE_TOUT_MS:-8000}|" \
217+
-e "s|@OSDP_CMD_MAX_RETRIES@|${OSDP_CMD_MAX_RETRIES:-8}|" \
218+
-e "s|@OSDP_ONLINE_RETRY_WAIT_MAX_MS@|${OSDP_ONLINE_RETRY_WAIT_MAX_MS:-300000}|" \
219+
-e "s|@OSDP_CMD_RETRY_WAIT_MS@|${OSDP_CMD_RETRY_WAIT_MS:-800}|" \
220+
-e "s|@OSDP_FILE_ERROR_RETRY_MAX@|${OSDP_FILE_ERROR_RETRY_MAX:-10}|" \
196221
src/osdp_config.h.in > ${BUILD_DIR}/include/osdp_config.h
197222

198223
CCFLAGS+=" -I${BUILD_DIR}/include"

src/osdp_config.h.in

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,22 @@
2222
/**
2323
* @brief Other OSDP constants
2424
*/
25-
#define OSDP_PD_SC_RETRY_MS (600 * 1000u)
25+
#define OSDP_PD_SC_RETRY_MS (@OSDP_PD_SC_RETRY_MS@u)
2626
#define OSDP_PD_POLL_TIMEOUT_MS (50)
27-
#define OSDP_PD_SC_TIMEOUT_MS (8 * 1000u)
28-
#define OSDP_PD_ONLINE_TOUT_MS (8 * 1000u)
27+
#define OSDP_PD_SC_TIMEOUT_MS (@OSDP_PD_SC_TIMEOUT_MS@u)
28+
#define OSDP_PD_ONLINE_TOUT_MS (@OSDP_PD_ONLINE_TOUT_MS@u)
2929
#define OSDP_RESP_TOUT_MS (200)
30-
#define OSDP_CMD_MAX_RETRIES (8)
31-
#define OSDP_ONLINE_RETRY_WAIT_MAX_MS (300 * 1000u)
32-
#define OSDP_CMD_RETRY_WAIT_MS (800)
30+
#define OSDP_CMD_MAX_RETRIES (@OSDP_CMD_MAX_RETRIES@)
31+
#define OSDP_ONLINE_RETRY_WAIT_MAX_MS (@OSDP_ONLINE_RETRY_WAIT_MAX_MS@u)
32+
#define OSDP_CMD_RETRY_WAIT_MS (@OSDP_CMD_RETRY_WAIT_MS@)
3333
#define OSDP_PACKET_BUF_SIZE (256)
3434
#define OSDP_RX_RB_SIZE (512)
3535
#define OSDP_CP_CMD_POOL_SIZE (4)
36-
#define OSDP_FILE_ERROR_RETRY_MAX (10)
36+
#define OSDP_FILE_ERROR_RETRY_MAX (@OSDP_FILE_ERROR_RETRY_MAX@)
3737
#define OSDP_PD_MAX (126)
3838
#define OSDP_CMD_ID_OFFSET (5)
3939
#define OSDP_PCAP_LINK_TYPE (162)
4040
#define OSDP_PD_NAME_MAXLEN (16)
41-
#define OSDP_MINIMUM_PACKET_SIZE (128)
41+
#define OSDP_MINIMUM_PACKET_SIZE (128)
4242

4343
#endif /* _OSDP_CONFIG_H_ */

0 commit comments

Comments
 (0)