diff --git a/CMakeLists.txt b/CMakeLists.txt index 24849926..b2e2cdb8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,15 @@ option(OPT_OSDP_STATIC_PD "Setup PD single statically" OFF) option(OPT_OSDP_LIB_ONLY "Only build the library" OFF) option(OPT_BUILD_BARE_METAL "Build library for bare metal targets" OFF) +## OSDP Protocol Configuration Constants +set(OSDP_PD_SC_RETRY_MS "600000" CACHE STRING "PD Secure Channel retry timeout (ms)") +set(OSDP_PD_SC_TIMEOUT_MS "8000" CACHE STRING "PD Secure Channel timeout (ms)") +set(OSDP_PD_ONLINE_TOUT_MS "8000" CACHE STRING "PD online timeout (ms)") +set(OSDP_CMD_MAX_RETRIES "8" CACHE STRING "Maximum command retries") +set(OSDP_ONLINE_RETRY_WAIT_MAX_MS "300000" CACHE STRING "Maximum online retry wait (ms)") +set(OSDP_CMD_RETRY_WAIT_MS "800" CACHE STRING "Command retry wait (ms)") +set(OSDP_FILE_ERROR_RETRY_MAX "10" CACHE STRING "File transfer error retry max") + ## Includes list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") include(AddCCompilerFlag) diff --git a/configure.sh b/configure.sh index e97d65ec..811cfd7d 100755 --- a/configure.sh +++ b/configure.sh @@ -29,6 +29,15 @@ usage() { -d, --debug Enable debug builds -f, --force Use this flags to override some checks -h, --help Print this help + + OSDP Protocol Configuration: + --osdp-pd-sc-retry-ms MS Set OSDP_PD_SC_RETRY_MS (default: 600000) + --osdp-pd-sc-timeout-ms MS Set OSDP_PD_SC_TIMEOUT_MS (default: 8000) + --osdp-pd-online-tout-ms MS Set OSDP_PD_ONLINE_TOUT_MS (default: 8000) + --osdp-cmd-max-retries N Set OSDP_CMD_MAX_RETRIES (default: 8) + --osdp-online-retry-wait-max-ms MS Set OSDP_ONLINE_RETRY_WAIT_MAX_MS (default: 300000) + --osdp-cmd-retry-wait-ms MS Set OSDP_CMD_RETRY_WAIT_MS (default: 800) + --osdp-file-error-retry-max N Set OSDP_FILE_ERROR_RETRY_MAX (default: 10) --- } @@ -49,6 +58,20 @@ while [ $# -gt 0 ]; do --static-pd) STATIC_PD=1;; --lib-only) LIB_ONLY=1;; --build-dir) BUILD_DIR=$2; shift;; + --osdp-pd-sc-retry-ms) OSDP_PD_SC_RETRY_MS=$2; shift;; + --osdp-pd-sc-timeout-ms) OSDP_PD_SC_TIMEOUT_MS=$2; shift;; + --osdp-pd-online-tout-ms) OSDP_PD_ONLINE_TOUT_MS=$2; shift;; + --osdp-cmd-max-retries) OSDP_CMD_MAX_RETRIES=$2; shift;; + --osdp-online-retry-wait-max-ms) OSDP_ONLINE_RETRY_WAIT_MAX_MS=$2; shift;; + --osdp-cmd-retry-wait-ms) OSDP_CMD_RETRY_WAIT_MS=$2; shift;; + --osdp-file-error-retry-max) OSDP_FILE_ERROR_RETRY_MAX=$2; shift;; + --osdp-pd-sc-retry-ms) OSDP_PD_SC_RETRY_MS=$2; shift;; + --osdp-pd-sc-timeout-ms) OSDP_PD_SC_TIMEOUT_MS=$2; shift;; + --osdp-pd-online-tout-ms) OSDP_PD_ONLINE_TOUT_MS=$2; shift;; + --osdp-cmd-max-retries) OSDP_CMD_MAX_RETRIES=$2; shift;; + --osdp-online-retry-wait-max-ms) OSDP_ONLINE_RETRY_WAIT_MAX_MS=$2; shift;; + --osdp-cmd-retry-wait-ms) OSDP_CMD_RETRY_WAIT_MS=$2; shift;; + --osdp-file-error-retry-max) OSDP_FILE_ERROR_RETRY_MAX=$2; shift;; -d|--debug) DEBUG=1;; -f|--force) FORCE=1;; -h|--help) usage; exit 0;; @@ -193,6 +216,20 @@ sed -e "s|@PROJECT_VERSION@|${PROJECT_VERSION}|" \ -e "s|@GIT_TAG@|${GIT_TAG}|" \ -e "s|@GIT_DIFF@|${GIT_DIFF}|" \ -e "s|@REPO_ROOT@|${SCRIPT_DIR}|" \ + -e "s|@OSDP_PD_SC_RETRY_MS@|${OSDP_PD_SC_RETRY_MS:-600000}|" \ + -e "s|@OSDP_PD_SC_TIMEOUT_MS@|${OSDP_PD_SC_TIMEOUT_MS:-8000}|" \ + -e "s|@OSDP_PD_ONLINE_TOUT_MS@|${OSDP_PD_ONLINE_TOUT_MS:-8000}|" \ + -e "s|@OSDP_CMD_MAX_RETRIES@|${OSDP_CMD_MAX_RETRIES:-8}|" \ + -e "s|@OSDP_ONLINE_RETRY_WAIT_MAX_MS@|${OSDP_ONLINE_RETRY_WAIT_MAX_MS:-300000}|" \ + -e "s|@OSDP_CMD_RETRY_WAIT_MS@|${OSDP_CMD_RETRY_WAIT_MS:-800}|" \ + -e "s|@OSDP_FILE_ERROR_RETRY_MAX@|${OSDP_FILE_ERROR_RETRY_MAX:-10}|" \ + -e "s|@OSDP_PD_SC_RETRY_MS@|${OSDP_PD_SC_RETRY_MS:-600000}|" \ + -e "s|@OSDP_PD_SC_TIMEOUT_MS@|${OSDP_PD_SC_TIMEOUT_MS:-8000}|" \ + -e "s|@OSDP_PD_ONLINE_TOUT_MS@|${OSDP_PD_ONLINE_TOUT_MS:-8000}|" \ + -e "s|@OSDP_CMD_MAX_RETRIES@|${OSDP_CMD_MAX_RETRIES:-8}|" \ + -e "s|@OSDP_ONLINE_RETRY_WAIT_MAX_MS@|${OSDP_ONLINE_RETRY_WAIT_MAX_MS:-300000}|" \ + -e "s|@OSDP_CMD_RETRY_WAIT_MS@|${OSDP_CMD_RETRY_WAIT_MS:-800}|" \ + -e "s|@OSDP_FILE_ERROR_RETRY_MAX@|${OSDP_FILE_ERROR_RETRY_MAX:-10}|" \ src/osdp_config.h.in > ${BUILD_DIR}/include/osdp_config.h CCFLAGS+=" -I${BUILD_DIR}/include" diff --git a/python/setup.py b/python/setup.py index e3d8e5de..13aadec1 100644 --- a/python/setup.py +++ b/python/setup.py @@ -73,6 +73,14 @@ def try_vendor_sources(src_dir, src_files, vendor_dir): "GIT_TAG": git["tag"], "GIT_DIFF": git["diff"], "REPO_ROOT": git["root"], + # OSDP Configuration Constants (must match CMakeLists.txt defaults) + "OSDP_PD_SC_RETRY_MS": "600000", + "OSDP_PD_SC_TIMEOUT_MS": "8000", + "OSDP_PD_ONLINE_TOUT_MS": "8000", + "OSDP_CMD_MAX_RETRIES": "8", + "OSDP_ONLINE_RETRY_WAIT_MAX_MS": "300000", + "OSDP_CMD_RETRY_WAIT_MS": "800", + "OSDP_FILE_ERROR_RETRY_MAX": "10", }) utils_sources = [ diff --git a/src/osdp_config.h.in b/src/osdp_config.h.in index 597fc1ef..422ffd23 100644 --- a/src/osdp_config.h.in +++ b/src/osdp_config.h.in @@ -22,22 +22,22 @@ /** * @brief Other OSDP constants */ -#define OSDP_PD_SC_RETRY_MS (600 * 1000u) +#define OSDP_PD_SC_RETRY_MS (@OSDP_PD_SC_RETRY_MS@u) #define OSDP_PD_POLL_TIMEOUT_MS (50) -#define OSDP_PD_SC_TIMEOUT_MS (8 * 1000u) -#define OSDP_PD_ONLINE_TOUT_MS (8 * 1000u) +#define OSDP_PD_SC_TIMEOUT_MS (@OSDP_PD_SC_TIMEOUT_MS@u) +#define OSDP_PD_ONLINE_TOUT_MS (@OSDP_PD_ONLINE_TOUT_MS@u) #define OSDP_RESP_TOUT_MS (200) -#define OSDP_CMD_MAX_RETRIES (8) -#define OSDP_ONLINE_RETRY_WAIT_MAX_MS (300 * 1000u) -#define OSDP_CMD_RETRY_WAIT_MS (800) +#define OSDP_CMD_MAX_RETRIES (@OSDP_CMD_MAX_RETRIES@) +#define OSDP_ONLINE_RETRY_WAIT_MAX_MS (@OSDP_ONLINE_RETRY_WAIT_MAX_MS@u) +#define OSDP_CMD_RETRY_WAIT_MS (@OSDP_CMD_RETRY_WAIT_MS@) #define OSDP_PACKET_BUF_SIZE (256) #define OSDP_RX_RB_SIZE (512) #define OSDP_CP_CMD_POOL_SIZE (4) -#define OSDP_FILE_ERROR_RETRY_MAX (10) +#define OSDP_FILE_ERROR_RETRY_MAX (@OSDP_FILE_ERROR_RETRY_MAX@) #define OSDP_PD_MAX (126) #define OSDP_CMD_ID_OFFSET (5) #define OSDP_PCAP_LINK_TYPE (162) #define OSDP_PD_NAME_MAXLEN (16) -#define OSDP_MINIMUM_PACKET_SIZE (128) +#define OSDP_MINIMUM_PACKET_SIZE (128) #endif /* _OSDP_CONFIG_H_ */