asterisk-chan-lantiq: apply hook state timing in right order

Apply hook state timing parameters starting from the biggest
time interval down to the shortest, so the required conditions are
always true while applying.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2024-06-20 12:11:56 +01:00
parent a828b9ee17
commit a21103a4de
2 changed files with 29 additions and 29 deletions

View File

@ -8,7 +8,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=asterisk-chan-lantiq
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_SOURCE_URL:=https://github.com/kochstefan/asterisk_channel_lantiq.git
PKG_SOURCE_VERSION:=2f029ec8778420538c8151c6aceba0f7b44b07c9

View File

@ -1,4 +1,4 @@
From 90c67696fa6676487bb40f391d6cae037175f418 Mon Sep 17 00:00:00 2001
From 2a379aa2490218d3f15585a8d77b13a17d9eed6b Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Tue, 18 Jun 2024 19:41:38 +0100
Subject: [PATCH 2/2] configure hook state machine timing
@ -131,6 +131,33 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ /* Configure hook state machine timing */
+ memset(&line_hook_vt, 0, sizeof(line_hook_vt));
+ line_hook_vt.nType = IFX_TAPI_LINE_HOOK_VT_HOOKON_TIME;
+ line_hook_vt.nMinTime = dev_ctx.hook_on_time;
+ line_hook_vt.nMaxTime = dev_ctx.hook_on_time;
+ if (ioctl(dev_ctx.ch_fd[c], IFX_TAPI_LINE_HOOK_VT_SET, &line_hook_vt)) {
+ ast_log(LOG_ERROR, "IFX_TAPI_LINE_HOOK_VT_HOOKON_TIME %d failed\n", c);
+ goto load_error_st;
+ }
+
+ memset(&line_hook_vt, 0, sizeof(line_hook_vt));
+ line_hook_vt.nType = IFX_TAPI_LINE_HOOK_VT_HOOKOFF_TIME;
+ line_hook_vt.nMinTime = dev_ctx.hook_off_time;
+ line_hook_vt.nMaxTime = dev_ctx.hook_off_time;
+ if (ioctl(dev_ctx.ch_fd[c], IFX_TAPI_LINE_HOOK_VT_SET, &line_hook_vt)) {
+ ast_log(LOG_ERROR, "IFX_TAPI_LINE_HOOK_VT_HOOKOFF_TIME %d failed\n", c);
+ goto load_error_st;
+ }
+
+ memset(&line_hook_vt, 0, sizeof(line_hook_vt));
+ line_hook_vt.nType = IFX_TAPI_LINE_HOOK_VT_HOOKFLASH_TIME;
+ line_hook_vt.nMinTime = dev_ctx.flash_time_min;
+ line_hook_vt.nMaxTime = dev_ctx.flash_time_max;
+ if (ioctl(dev_ctx.ch_fd[c], IFX_TAPI_LINE_HOOK_VT_SET, &line_hook_vt)) {
+ ast_log(LOG_ERROR, "IFX_TAPI_LINE_HOOK_VT_HOOKFLASH_TIME %d failed\n", c);
+ goto load_error_st;
+ }
+
+ memset(&line_hook_vt, 0, sizeof(line_hook_vt));
+ line_hook_vt.nType = IFX_TAPI_LINE_HOOK_VT_DIGITLOW_TIME;
+ line_hook_vt.nMinTime = dev_ctx.digit_low_time_min;
+ line_hook_vt.nMaxTime = dev_ctx.digit_low_time_max;
@ -147,33 +174,6 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
+ ast_log(LOG_ERROR, "IFX_TAPI_LINE_HOOK_VT_DIGITHIGH_TIME %d failed\n", c);
+ goto load_error_st;
+ }
+
+ memset(&line_hook_vt, 0, sizeof(line_hook_vt));
+ line_hook_vt.nType = IFX_TAPI_LINE_HOOK_VT_HOOKFLASH_TIME;
+ line_hook_vt.nMinTime = dev_ctx.flash_time_min;
+ line_hook_vt.nMaxTime = dev_ctx.flash_time_max;
+ if (ioctl(dev_ctx.ch_fd[c], IFX_TAPI_LINE_HOOK_VT_SET, &line_hook_vt)) {
+ ast_log(LOG_ERROR, "IFX_TAPI_LINE_HOOK_VT_HOOKFLASH_TIME %d failed\n", c);
+ goto load_error_st;
+ }
+
+ memset(&line_hook_vt, 0, sizeof(line_hook_vt));
+ line_hook_vt.nType = IFX_TAPI_LINE_HOOK_VT_HOOKOFF_TIME;
+ line_hook_vt.nMinTime = dev_ctx.hook_off_time;
+ line_hook_vt.nMaxTime = dev_ctx.hook_off_time;
+ if (ioctl(dev_ctx.ch_fd[c], IFX_TAPI_LINE_HOOK_VT_SET, &line_hook_vt)) {
+ ast_log(LOG_ERROR, "IFX_TAPI_LINE_HOOK_VT_HOOKOFF_TIME %d failed\n", c);
+ goto load_error_st;
+ }
+
+ memset(&line_hook_vt, 0, sizeof(line_hook_vt));
+ line_hook_vt.nType = IFX_TAPI_LINE_HOOK_VT_HOOKON_TIME;
+ line_hook_vt.nMinTime = dev_ctx.hook_on_time;
+ line_hook_vt.nMaxTime = dev_ctx.hook_on_time;
+ if (ioctl(dev_ctx.ch_fd[c], IFX_TAPI_LINE_HOOK_VT_SET, &line_hook_vt)) {
+ ast_log(LOG_ERROR, "IFX_TAPI_LINE_HOOK_VT_HOOKON_TIME %d failed\n", c);
+ goto load_error_st;
+ }
+
/* Configure Caller ID type */
memset(&cid_cfg, 0, sizeof(cid_cfg));