Compare commits

..

1603 Commits

Author SHA1 Message Date
Hemlata
9a01d85693 Dectmngr: add a uci option dect.global.log_level for log level configuration 2022-03-01 16:19:42 +01:00
Jakob Olsson
4a53405944 map-agent: 7.1.10 2022-03-01 13:14:44 +01:00
Jakob Olsson
f4175d1056 wfadatad: 6.10.13 2022-03-01 11:13:43 +01:00
sverma
ca89942898 wfadatad: 6.10.12 2022-02-28 15:03:18 +00:00
Filip Matusiak
719ef4d172 map-controller: update encryption options in script 2022-02-28 15:19:16 +01:00
Jakob Olsson
be0c9d79b0 map-controller: 6.0.5 2022-02-28 14:42:43 +01:00
Jakob Olsson
72ecd3d35e ieee1905: 4.6.19 2022-02-28 14:42:01 +01:00
Yalu Zhang
445cfef73e Update package endptmngr
Change the way to configure tx/rx gain
2022-02-28 11:42:59 +01:00
Anjan Chanda
e398b994da wfadatad: 6.10.11 2022-02-26 08:54:21 +01:00
Jakob Olsson
2cddf06c61 map-agent: 7.1.9 2022-02-25 17:29:33 +01:00
Anjan Chanda
f42b9b4a62 wfadatad: 6.10.10 2022-02-25 15:46:41 +01:00
Jakob Olsson
e3dcdd6c4d ieee1905: 4.6.18 2022-02-25 15:20:09 +01:00
Jakob Olsson
acac9f08d2 ieee1905: 4.6.17 2022-02-25 14:23:11 +01:00
Jakob Olsson
3f5708e292 map-topology: 3.2.5 2022-02-25 12:42:21 +01:00
Jakob Olsson
c49e2ed7de map-agent: 7.1.8 2022-02-24 15:48:30 +01:00
vdutta
70a000f674 sulu: Deploy config parameters in json 2022-02-23 18:50:06 +01:00
Anjan Chanda
4748533fa2 map-controller: 6.0.4: add Config.in 2022-02-23 18:35:08 +01:00
Jakob Olsson
ad1966b1ba map-controller: 6.0.4 2022-02-23 18:30:56 +01:00
Jakob Olsson
89b367fcf4 map-agent: 7.1.7 2022-02-23 18:27:15 +01:00
Stanislaw Gruszka
3bec20d547 multi-ap: ts rework for eth suport 2022-02-23 18:26:41 +01:00
Anjan Chanda
dde30f9d4a map-agent: 7.1.6 2022-02-23 17:54:53 +01:00
Anjan Chanda
f93ba6ec61 map-agent: 7.1.5 2022-02-23 16:52:47 +01:00
Jakob Olsson
13b3bdde7e easy-soc-libs: 6.4.40 2022-02-23 14:39:16 +01:00
Stanislaw Gruszka
1ccd68992f wfadatad: 6.10.6 2022-02-23 13:30:29 +01:00
Nevadita
3ddbb176aa map-topology: 3.2.4 2022-02-23 13:04:40 +01:00
Anjan Chanda
bea0ee5aa5 ieee1905: 4.6.16 2022-02-23 11:36:53 +01:00
Jakob Olsson
d30a942adb map-agent: 7.1.4 2022-02-22 16:01:50 +01:00
vdutta
f53496233d bbf: 6.4.27
- Ticket refs #7349: Failed to re-created lan interface
- bbf: Operate commands exposed from json file not working properly
2022-02-22 20:07:21 +05:30
Jakob Olsson
a8f3bea932 map-controller: 6.0.3 2022-02-22 11:28:05 +01:00
Jakob Olsson
95dd997cc9 map-agent: 7.1.3 2022-02-22 11:27:28 +01:00
Jakob Olsson
62eb925e8c map-agent: multiap: retain wps credentials in ieee1905 config 2022-02-22 11:24:20 +01:00
Jakob Olsson
3b6e2ad2d7 map-agent: 7.1.2 2022-02-21 17:17:50 +01:00
sverma
3199e091c4 wfadatad: 6.10.5 2022-02-21 15:01:31 +01:00
Jakob Olsson
723be11ebc map-controller: 6.0.2 2022-02-21 12:46:43 +01:00
Jakob Olsson
6c6a81bacb map-agent: 7.1.1 2022-02-18 15:44:16 +01:00
Jakob Olsson
8dc5820987 map-controller: 6.0.1 2022-02-18 15:22:55 +01:00
Jakob Olsson
60e0730a6d map-topology: 3.2.3 2022-02-18 15:12:30 +01:00
Jakob Olsson
aed486f1f9 ieee1905: 4.6.10 2022-02-18 12:47:50 +01:00
Filip Matusiak
f2c11f12c3 map-topology: validate config options 2022-02-18 12:00:00 +01:00
Filip Matusiak
b71fecbb6a ieee1905: validate config options 2022-02-18 12:00:00 +01:00
Filip Matusiak
76310d7e6e map-agent: validate config options 2022-02-18 12:00:00 +01:00
Filip Matusiak
eac345c3e3 map-controller: validate config options 2022-02-18 12:00:00 +01:00
Arun Muthusamy
9570193737 qosmngr: Rearrange queue and shaper function call execution order 2022-02-18 09:50:01 +00:00
vdutta
c1d8341be7 bbf: 6.4.26 2022-02-18 14:17:30 +05:30
Jakob Olsson
ae033eb05e map-agent: 7.1.0 2022-02-17 16:47:53 +01:00
Jakob Olsson
e16b9c7a0e map-controller: 6.0.0 2022-02-17 16:47:03 +01:00
Anjan Chanda
53fb4d46c1 ieee1905: 4.6.9 2022-02-17 15:25:56 +01:00
vdutta
0fd29ae954 bbf: 6.4.25 2022-02-17 19:26:51 +05:30
Grzegorz Sluja
0be6005691 endptmngr: Add support for RTCP-XR packets 2022-02-16 17:11:01 +01:00
Nevadita
0f1e642fe0 map-topology: 3.2.2 2022-02-16 14:29:20 +01:00
Stanislaw Gruszka
0ead07e668 wfadatad: 6.10.4 2022-02-16 12:09:19 +01:00
Yalu Zhang
5bcc5d05dc dectmngr-3.5.1: Fix a bug that handsets cannot receive incoming calls reliably 2022-02-16 10:42:40 +01:00
Anjan Chanda
ab91bd9941 ieee1905: add openssl dependency 2022-02-15 16:24:56 +01:00
Jakob Olsson
314f90a0f4 map-agent: 7.0.2 2022-02-15 10:19:14 +01:00
Anjan Chanda
429112ba92 easy-soc-libs: 6.4.39 2022-02-15 09:59:21 +01:00
Jakob Olsson
b3c54526c2 map-agent: 7.0.1 2022-02-14 17:55:11 +01:00
Hemlata Bhatt
b624d52243 dectmngr : don't allow failure in static code analysis 2022-02-11 17:52:18 +01:00
Hemlata Bhatt
1b661a7407 endptmngr :Enable compiling options -Wall and -Werror 2022-02-11 17:34:42 +01:00
vdutta
ec55634131 icwmp: 8.2.27 2022-02-11 21:46:03 +05:30
Stanislaw Gruszka
12dfd9be28 wfadatad: 6.10.3 2022-02-11 16:12:47 +01:00
nevadita.chatterjee
466d442666 map-topology:3.2.1 2022-02-11 13:01:57 +01:00
Stanislaw Gruszka
28b4fa040a map-agent: 7.0.0: traffic separation fixes 2022-02-11 11:24:16 +00:00
vdutta
2077f29acf bbf: 6.4.24 2022-02-10 19:31:29 +05:30
Anjan Chanda
7335034c2b ieee1905: 4.6.8 2022-02-10 14:31:50 +01:00
vdutta
9ae0800d77 bbf: 6.4.23 2022-02-10 18:23:53 +05:30
vdutta
5d74e693c7 bbf: 6.4.22 2022-02-09 21:15:09 +05:30
Jakob Olsson
d513b5b799 map-controller: 5.4.7 2022-02-09 16:39:33 +01:00
Sukru Senli
40503fc42d sulu: 0.2.28 2022-02-09 12:43:59 +01:00
vdutta
34acd302be bbf: 6.4.21 2022-02-09 09:58:09 +05:30
Sukru Senli
705fb9e41b netmode: do not run netmode if mode is same as last saved mode 2022-02-08 23:04:55 +01:00
Sukru Senli
8fb0ffc766 netmode: do not rely on mode folder 2022-02-08 15:08:48 +01:00
vdutta
8e8442e508 bbf: 6.4.20 2022-02-08 15:36:23 +05:30
vdutta
e7486f4538 stunc: 1.0.4
(cherry picked from commit 2bc7ff558e)
2022-02-08 08:36:27 +00:00
vdutta
957d176f26 udpechoserver: Added static code analysis pipeline
(cherry picked from commit df0b0ec7ea)
2022-02-08 08:30:08 +00:00
Amin Ben Ramdhane
454afbbc98 udpechoserver: 1.0.1
(cherry picked from commit 1fbbaa8c59)
2022-02-08 08:29:05 +00:00
Amin Ben Ramdhane
ebda97fe62 stunc: 1.0.3
(cherry picked from commit b214f5213b)
2022-02-08 08:27:52 +00:00
Sukru Senli
b261816fe4 netmode: do nothing if mode is not set 2022-02-07 21:17:25 +01:00
Jakob Olsson
0fe82491e3 map-agent: 6.6.4 2022-02-07 12:17:12 +01:00
Jakob Olsson
a4e457a3ee map-controller: 5.4.6 2022-02-07 12:15:10 +01:00
Sukru Senli
1a4ab4713e netmode: remove default netmodes 2022-02-07 10:27:23 +01:00
Sukru Senli
4cce081fd3 netmode: strip netmoded out of netmode package 2022-02-07 10:27:16 +01:00
Jakob Olsson
a730c6a2e0 map-agent: 6.6.3 2022-02-04 16:06:25 +01:00
Yalu Zhang
932385bec1 dectmngr-3.5.0: Upgrading to CMBS 4.13 Build 16 official release
This includes both the binary firmware on the target and dectmngr on the host.
2022-02-04 14:42:03 +01:00
Anjan Chanda
642ffec9cd wifimngr: 14.0.6 2022-02-04 14:15:14 +01:00
Anjan Chanda
d1cd14742e ieee1905: 4.6.4 2022-02-04 14:12:01 +01:00
Amit KUmar
c9309739a6 easy-soc-libs: libqos static warning corrected 2022-02-04 10:58:49 +01:00
Amit KUmar
979fe82336 easy-soc-libs: dsl ethernet static error resolved 2022-02-04 10:58:47 +01:00
vdutta
e7c84ac6ba bbf: 6.4.19 2022-02-04 15:23:42 +05:30
vdutta
9a8f2cb393 icwmp: 8.2.26 2022-02-04 15:03:52 +05:30
Hemlata Bhatt
7af3534bc9 dectmngr: Remove extra verbose syslog for firmware upgrading on the base station 2022-02-04 10:32:29 +01:00
Jakob Olsson
f1795e0263 map-agent: 6.6.2 2022-02-03 12:45:18 +01:00
Jakob Olsson
a2115711bb map-controller: 5.4.5 2022-02-02 17:07:02 +01:00
Jakob Olsson
2b26e9083b map-agent: 6.6.1 2022-02-02 17:06:20 +01:00
Sukru Senli
1978d357c9 crun: remove as it is now available under openwrt feed packages 2022-02-02 11:16:01 +01:00
Jakob Olsson
822f77590d wifimngr: 05-wifi: update to new map backhaul file 2022-01-31 14:59:04 +01:00
Sukru Senli
3d31052d40 sulu: 0.2.27 2022-01-28 14:33:01 +01:00
Erik Karlsson
dc56c93b73 icwmp: Use correct syntax with tr
The tr command does not take regular expressions. In addition,
unquoted use of [] is unsafe as it is subject to wildcard expansion by
the shell.
2022-01-28 12:26:07 +00:00
Amin Ben Ramdhane
0dd95029e6 bbf: 6.4.18 2022-01-28 13:20:18 +01:00
Amin Ben Ramdhane
5f92faf0a1 bbf: 6.4.17 2022-01-28 11:55:09 +01:00
Sukru Senli
31ed1f802b iop: genconfig: remove unused targets 2022-01-27 16:42:43 +01:00
Jakob Olsson
c73ac6665b map-agent: 6.6.0: multiap.backhaul 2022-01-27 15:48:14 +01:00
Sukru Senli
431d1fbf34 port-management: populate ports config from device-tree if db does not exist 2022-01-27 14:55:41 +01:00
Sukru Senli
2ddb4fb5fc iop: genconfig: remove unsupported targets 2022-01-27 11:15:34 +01:00
vdutta
1835fe7a50 swmodd: Remove cgroup config from iopsys template 2022-01-27 13:49:51 +05:30
vdutta
d0e30dade4 icwmp: 8.2.25 2022-01-27 12:03:35 +05:30
Amin Ben Ramdhane
be867f1b25 uspd: 2.1.43 2022-01-26 13:22:34 +01:00
Amin Ben Ramdhane
9b2318242b bbf: 6.4.16 2022-01-26 13:21:28 +01:00
Anjan Chanda
8fee87c3c6 ieee1905: 4.6.0 2022-01-26 10:09:41 +01:00
vdutta
2fbdb4b3d2 obuspa: Added coverage in module test 2022-01-26 12:27:04 +05:30
Rahul
337c9a52f9 qosmngr: fix static code warnings
Updated the makefile version and bump the minor version
2022-01-25 18:32:09 +05:30
vdutta
6c86adbf86 uspd: 2.1.42 2022-01-25 18:19:56 +05:30
vdutta
e316bea78f bbf: 6.4.15 2022-01-25 18:17:49 +05:30
vdutta
233d714564 icwmp: Use db device for sn instead of db hw 2022-01-25 10:32:05 +05:30
Sukru Senli
13b742fe44 sulu: 0.2.26 2022-01-24 19:02:23 +01:00
Sukru Senli
c23ae5dad1 obuspa: read oui and sn from db device instead of db hw 2022-01-24 17:46:50 +01:00
Fredrik Eriksson
3c7aa191ea iop/config: deselect glib2
To our knowledge this is not needed and takes space.
2022-01-24 16:38:26 +00:00
Jakob Olsson
d8bbc9de81 map-agent: 6.5.3 2022-01-24 13:16:43 +01:00
Sukru Senli
92e353bb49 questd: 5.2.3 2022-01-21 17:08:57 +01:00
Sukru Senli
17fd78bc94 Revert "sulu: install sulu-full instead"
This reverts commit 68ca3b1d07.
2022-01-21 15:21:52 +01:00
Sukru Senli
68ca3b1d07 sulu: install sulu-full instead 2022-01-21 15:16:20 +01:00
Jakob Olsson
05a5616347 ieee1905: 4.2.2 2022-01-21 13:25:36 +01:00
Jakob Olsson
90f102b36a map-controller: 5.4.4 2022-01-21 11:34:22 +01:00
Sukru Senli
3e95e599e4 sulu: 0.2.25 2022-01-20 21:05:05 +01:00
Jakob Olsson
12d1e79339 map-controller: 5.4.3 2022-01-20 17:24:15 +01:00
Jakob Olsson
9ffed931c6 map-agent: 6.5.2 2022-01-20 17:22:58 +01:00
Amin Ben Ramdhane
aa8949e9e4 bbf: 6.4.14 2022-01-20 15:21:11 +01:00
sandeep sharma
c31e10cd88 Fixed: QoS statistics for Eagle LAN ports end up on the wrong queue 2022-01-20 12:38:44 +00:00
Amin Ben Ramdhane
1257c11c69 bbf: 6.4.13 2022-01-18 17:55:00 +01:00
vdutta
147c6de58c obuspa: 4.1.0.17 2022-01-18 21:22:48 +05:30
Jakob Olsson
b821b189d1 map-controller: 5.4.2 2022-01-17 14:00:16 +01:00
Jakob Olsson
cae7d71907 map-controller: 5.4.1 2022-01-17 10:48:25 +01:00
vdutta
92748d489a uspd: 2.1.41 2022-01-17 14:41:44 +05:30
Jakob Olsson
9847af7e74 map-agent: 6.5.1 2022-01-17 10:02:52 +01:00
Anjan Chanda
8e98dc9526 map-controller: 5.4.0 2022-01-14 21:11:42 +01:00
Anjan Chanda
1fe4fbdd4e wfadatad: 6.10.2 2022-01-14 21:11:06 +01:00
Anjan Chanda
e4f24b2223 map-topology: 3.2.0 2022-01-14 21:10:42 +01:00
Anjan Chanda
ec905407f0 map-agent: 6.5.0 2022-01-14 21:09:52 +01:00
vdutta
0c0c7316fa bbf: 6.4.12 2022-01-14 21:03:38 +05:30
vdutta
72da7b55c2 icwmp: 8.2.23 2022-01-14 20:54:34 +05:30
vdutta
60fe16d7ce swmodd: 2.0.20 2022-01-14 20:53:18 +05:30
Jakob Olsson
cb1fa79dcd ieee1905: 4.2.2 2022-01-14 14:43:09 +01:00
vdutta
15ab89ef7d icwmp: Fix no-wan-tr069-inform issue 2022-01-14 13:14:00 +05:30
Andreas Gnau
975f4e7552 Update feed [ iopsys ] package [ u-boot ] variant [ex400]
This is mostly for documentation purposes. U-Boot for EX400 does no longer
build with latest binutils used in OpenWrt 21.02, which is why we do not ship
U-Boot in our images for EX400 at the moment. This is the U-Boot that has been
shipped in the migrator image
EX400-X-IOPSYS-6.3.0ALPHA4-28-g556c4319d1-U-Boot-826af23a77-210826_1419-ubifs-MIGRATOR.y3

-------------------------------------------------------------------------------
* 826af23a77 ex400: Autodetect squashfs vs UBIFS
* 3077d68ddf ex400: Enable setexpr command
* 5aa83e12bc cmd: itest: correct calculus for long format
* 0cd508d8dd ex400: enable network by default
* 2fdb548516 use iopsys FIT image when doing a web upgrade
* b4f73f52f5 added a new command to flash an an iopsys FIT image
* dd6f5d4609 ex400: update environment variables to be aligned with IOPSYS 6 design
* cb68482deb Merge branch 'ex400_add_fit_support' into 'ex400'
* 4e46ac74e0 ex400: uboot: add FIT support
-------------------------------------------------------------------------------
commit 826af23a7723ee05dc9bc023d12a83f44aa649f4
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-08-25 14:29:46 +0200

    ex400: Autodetect squashfs vs UBIFS

Base directory -> /
 include/configs/inteno_mt7621.h | 37 ++++++++++++++++++++++++-------------
 1 file changed, 24 insertions(+), 13 deletions(-)
-------------------------------------------------------------------------------
commit 3077d68ddf31a0ad999485e5144098a3399ce0c5
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-08-10 12:24:00 +0200

    ex400: Enable setexpr command

    Enable setexpr command in config. This is needed for calculating the UBI
    volume id of the rootfs volume which is needed for squashfs as root.

Base directory -> /
 configs/ex400_defconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 5aa83e12bc1195366485b70cc6dfc41f0d5f992f
Author: Sebastien Colleur <sebastienx.colleur@intel.com>
Date: 2017-02-10 15:59:15 +0300

    cmd: itest: correct calculus for long format

    itest shell command doesn't work correctly in long format when doing
    comparaison due to wrong mask value calculus that overflow on 32 bits
    values.

    Signed-off-by: Sebastien Colleur <sebastienx.colleur@intel.com> Reviewed-by:
    Simon Glass <sjg@chromium.org>
    (cherry picked from commit 2c79fd401982c7d6c5e77c09bc7035f8a3766c88)

Base directory -> /
 cmd/itest.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 0cd508d8dd077d62baa59a0d74e2e5f24cff8926
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2021-07-27 16:36:35 +0200

    ex400: enable network by default

    as the equipement is used for development purpose only then enable network
    by default for convinence

Base directory -> /
 board/inteno/common/board.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 2fdb54851610838e35e4d889a0fbc14fb766a78b
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2021-07-23 10:52:32 +0200

    use iopsys FIT image when doing a web upgrade

Base directory -> /
 board/inteno/common/httpd.c | 18 +-----------------
 1 file changed, 1 insertion(+), 17 deletions(-)
-------------------------------------------------------------------------------
commit b4f73f52f515fb19552b4a5183a5aaecbb4b4cd1
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2021-07-23 10:49:34 +0200

    added a new command to flash an an iopsys FIT image

Base directory -> /
 cmd/Makefile         |   1 +
 cmd/iopsys_upgrade.c | 289 +++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 290 insertions(+)
-------------------------------------------------------------------------------
commit dd6f5d4609df08d808931c4ca01e186d59cbbea1
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2021-07-23 10:43:18 +0200

    ex400: update environment variables to be aligned with IOPSYS 6 design

    Use separate volumne for kernel use u-boot for mtd name instead of uboot

    fix

Base directory -> /
 include/configs/inteno_mt7621.h | 40 +++++++++++++++-------------------------
 1 file changed, 15 insertions(+), 25 deletions(-)
-------------------------------------------------------------------------------
commit cb68482debf9b5a3ef7471cc4182f189ab743b09
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2021-03-24 10:10:17 +0000

    Merge branch 'ex400_add_fit_support' into 'ex400'

    ex400: uboot: add FIT support

    See merge request fork/uboot!2
Base directory -> /
 configs/ex400_defconfig | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 4e46ac74e0944684590899f969de9b6335a8f69a
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2021-03-23 09:28:21 +0100

    ex400: uboot: add FIT support

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 configs/ex400_defconfig | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
2022-01-12 17:41:46 +01:00
Amin Ben Ramdhane
a3a7c6da1b bbf: 6.4.11 2022-01-10 15:07:30 +01:00
vdutta
dca442ce01 bbf: 6.4.10 2022-01-10 09:04:32 +05:30
vdutta
6f00aa22fd icwmp: 8.2.21 2022-01-07 18:10:46 +05:30
Neeraj Bijalwan
575f5c9d19 icwmp: 8.2.20 2022-01-06 13:07:33 +00:00
Janusz Dziedzic
a699302f46 wifimngr: 05-wifi add multiap param
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-01-05 17:11:05 +00:00
vdutta
4ef7a8034b twamp: Added TWAMP Light support 2022-01-04 23:10:22 +05:30
Artee Roy
9675953bf6 Enables setting of bridge as a proxy interface.
Setting of dfault value for mcast interfaces.
2022-01-04 11:40:13 +00:00
Janusz Dziedzic
d3d4c87f82 easy-soc-libs: new version 6.4.34
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2022-01-03 15:58:47 +00:00
Bartlomiej Grzeskowiak
52ced81af6 uboot: allow ensemble uboot compilation
Not tested yet. Build succesfull.

Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
2022-01-03 15:45:54 +00:00
Amin Ben Ramdhane
20f17b81c5 bbf: 6.4.9 2021-12-31 22:24:25 +01:00
Grzegorz Sluja
aafcebaf3d endptmngr: Add averageRoundTripDelay rtp statistic 2021-12-30 12:29:07 +01:00
vdutta
6126333ad9 uspd: Updated schema updater algo 2021-12-30 12:59:22 +05:30
vdutta
fc15efe427 bbf: 6.4.8 2021-12-30 12:58:31 +05:30
Jakob Olsson
59d28497d9 map-controller: 5.3.0 2021-12-29 12:36:12 +01:00
Jakob Olsson
3a4a1b64bf map-agent: 6.4.0 2021-12-29 12:35:24 +01:00
Anjan Chanda
1ce127080e ieee1905: 4.2.1 2021-12-29 11:08:39 +01:00
Amit KUmar
f9a4bfa6d6 ponmngr: added omcid start 2021-12-28 15:18:38 +05:30
Grzegorz Sluja
e4365786b9 dectmngr-3.4.7 Retry mechanism in cmbs api init 2021-12-28 10:03:26 +01:00
Jakob Olsson
65c619060d wfadatad: enable respawn 2021-12-27 16:42:06 +01:00
Amin Ben Ramdhane
ef370bc886 bbf: 6.4.7 2021-12-27 15:26:06 +01:00
Rahul
0730c65372 qosmngr: resolve dscp to q mapping in L2 scenarios 2021-12-27 17:12:56 +05:30
Amin Ben Ramdhane
626e1241d6 bbf: 6.4.6 2021-12-26 15:45:25 +01:00
Amin Ben Ramdhane
b86544da9a bbf: 6.4.5 2021-12-24 11:00:06 +01:00
Yalu Zhang
3e38df2389 Revert 2f8a76e34d
Fix the bug that dectmngr fails to start at the first attempt

Wait for the target up and running before starting dectmngr. Otherwise HELLO_REPLY
cannot be received and dectmngr exits and is started again by procd.
2021-12-23 14:19:45 +01:00
Grzegorz Sluja
d34d6e8bf0 dectmngr-3.4.6 Fix for checking the dspg firmware version in file 2021-12-23 13:02:29 +01:00
Yalu Zhang
2f8a76e34d Fix the bug that dectmngr fails to start at the first attempt
Wait for the target up and running before starting dectmngr. Otherwise HELLO_REPLY
cannot be received and dectmngr exits and is started again by procd.
2021-12-23 10:58:57 +01:00
Grzegorz Sluja
55f1310daa dectmngr-3.4.5 Set RXTUN value during the start up 2021-12-23 09:23:06 +01:00
Grzegorz Sluja
57b528f2af dectmngr-3.4.4 changes
95214c4 Fix for restoring EEPROM parameters after FW upgrade
5ca32de Check country and play proper tones for UK
2021-12-22 14:55:03 +01:00
Grzegorz Sluja
670904cd6c dectmngr: Integrate new binary CMBS 4.13 Build 16 RC28 2021-12-22 13:08:11 +01:00
Amin Ben Ramdhane
ad0633029c bbf: 6.4.3 2021-12-22 12:57:01 +01:00
vdutta
9b823e5937 icwmp: 8.2.19 2021-12-22 17:09:55 +05:30
vdutta
431325e6e6 bbf: 6.4.2 2021-12-22 16:23:26 +05:30
Yalu Zhang
fd8fa1d7e2 dectmngr-3.4.3: remove those unreferenced keyb_* files and fix compiling warnings 2021-12-22 10:07:44 +01:00
Amin Ben Ramdhane
572bfa61dd bbf: 6.4.1 2021-12-21 16:52:30 +01:00
Jakob Olsson
5963ff1139 map-agent: 6.3.10 2021-12-21 16:21:12 +01:00
vdutta
363d3dfcb7 swmodd: 2.0.19 2021-12-21 20:12:16 +05:30
vdutta
cf12bbe6e2 swmodd: 2.0.18 2021-12-21 20:07:28 +05:30
Jakob Olsson
426437c233 map-agent: 6.3.9 2021-12-21 15:16:44 +01:00
Jakob Olsson
742ded177d map-agent: 6.3.8 2021-12-21 14:45:15 +01:00
Jakob Olsson
a5f6b10a50 ieee1905: 4.1.2 2021-12-21 14:26:02 +01:00
Grzegorz Sluja
c25139968a Update package dectmngr
bb941c1 Fixes for static code analysis
0105a0c Update the general module document
2021-12-21 14:22:01 +01:00
Jakob Olsson
f52700c0f0 map-agent: 6.3.7 2021-12-21 14:21:02 +01:00
Jakob Olsson
5bc8757a3e map-controller: 5.2.6 2021-12-21 12:27:44 +01:00
Jakob Olsson
5b0fe1d2dc map-controller: 5.2.5 2021-12-21 11:35:08 +01:00
Filip Matusiak
a31ae89e79 map-agent: multiap: fix missing BSSID on some interfaces 2021-12-21 09:48:38 +00:00
Yalu Zhang
bd72194d2d bbf: 6.4.0 2021-12-21 09:55:03 +01:00
Jakob Olsson
babb25709b map-agent: 6.3.6 2021-12-21 09:35:31 +01:00
Janusz Dziedzic
ea37c333f9 wifimngr: new version 14.0.5
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-12-20 19:25:30 +00:00
Amin Ben Ramdhane
be07b58cf5 periodicstats: 1.1.0 2021-12-20 17:06:26 +01:00
Amin Ben Ramdhane
13a6a59469 bbf: 6.3.9 2021-12-20 17:03:43 +01:00
Amin Ben Ramdhane
b6301bba94 bbf: 6.3.8 2021-12-20 16:37:59 +01:00
vdutta
dd627b7f70 rulengd: 1.2.6
- remove regex matching logic for event
2021-12-20 19:39:15 +05:30
Sukru Senli
0d2a12f029 sulu: 0.2.24
jakub <jakub.blaszkowski@iopsys.eu>
2021-12-20 09:59:01 +01:00
Jakob Olsson
0f1460f45f map-controller: 5.2.4 2021-12-17 16:57:51 +01:00
Sukru Senli
022e506a56 sulu: 0.2.23
jakub <jakub.blaszkowski@iopsys.eu>
2021-12-17 16:40:49 +01:00
Jakob Olsson
9025395702 Revert "map-controller: make uci wireless to mapcontroller sync configurable"
This reverts commit 5173b01cb2.
2021-12-17 15:55:00 +01:00
Sukru Senli
35ce40b964 sulu: 0.2.22 2021-12-17 15:39:14 +01:00
Jakob Olsson
0c915ba8b8 map-agent: 6.3.5 2021-12-17 14:45:58 +01:00
vdutta
60ab6d1a6b swmodd: Use DUStateChange! to notify faults 2021-12-17 18:40:40 +05:30
sverma
8ec45319bc rulengd: 1.2.5
regex match for event data only
2021-12-17 13:57:27 +01:00
Jakob Olsson
1536d860dd wfadatad: 6.10.1 2021-12-16 16:35:33 +01:00
Jakob Olsson
49858f3601 map-agent: 6.3.4 2021-12-16 16:33:47 +01:00
Sukru Senli
1c305c69e4 wfadatad: remove .init from init script 2021-12-16 16:28:51 +01:00
Anjan Chanda
e592e2d567 wfadatad: rename procd init filenames to match daemon names 2021-12-16 15:27:32 +01:00
Erik Karlsson
ff7714c88e endptmngr: do not start if board does not have voice
Prevents the following issue on boards without voice:

Thu Dec 2 12:45:07 2021 daemon.info procd: Instance endptmngr::instance1 s in a crash loop 4 crashes, 0 seconds since last crash
2021-12-15 13:11:48 +00:00
Fredrik Eriksson
9dda4d7ffa Remove redundant dependency on map-plugin 2021-12-15 13:10:34 +00:00
Jakob Olsson
10cee1f785 map-agent: 6.3.3 2021-12-15 14:09:34 +01:00
Erik Karlsson
8816c26e2a Use correct ranges with tr
The tr command does not take regular expressions and should not be
used with ranges such as [a-z] which furthermore can cause issues if
unquoted as they are interpreted by the shell.
2021-12-15 13:08:18 +00:00
Janusz Dziedzic
aba742a5e7 easy-soc-libs: 6.4.33
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-12-15 12:26:30 +00:00
suvendhu
d199dadd39 swmodd: config option to select host as EE 2021-12-15 16:49:15 +05:30
Jakob Olsson
fca18d2da5 wifimngr: 14.0.4 2021-12-15 09:33:43 +01:00
Janusz Dziedzic
3b819f5b1d easy-soc-libs: kick hash
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-12-14 19:29:47 +00:00
Amin Ben Ramdhane
b49d14370d bbf: 6.3.7 2021-12-14 18:24:31 +01:00
Jakob Olsson
3f2befa23a map-agent: corrections to example config 2021-12-14 17:31:22 +01:00
Andreas Gnau
52809e1e94 Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* 15ba90f Add support for external LED application.
* da6eb1d Add functionality to change default brightness for SK9822 LEDs.
-------------------------------------------------------------------------------
commit 15ba90f01914113e7c5e8f8a6df6279c882e8265
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2021-05-11 09:52:55 +0200

    Add support for external LED application.

    Add support for a callback script/application to control LEDs.

    This commits adds the ability to control a LED via an external application.
    The API is simple and is described in
    'iopsys-brcm63xx-arm/tiger/base-files/sbin/external_led_ctrl.sh'.

    To avoid unnecessary execution of the callback-script, logic has been added
    to keep track on when to update the LEDs.

Base directory -> /
 src/gpio_led.c | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 132 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit da6eb1d6c0fd03d45cbf5213acd5c2ff07b45bf5
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2021-05-11 09:40:00 +0200

    Add functionality to change default brightness for SK9822 LEDs.

    This commit adds the 'sk9822_brightness_file' option. The option can be used
    to adjust the default maximum brightness for the SK9822 LED driver.

Base directory -> /
 src/gpio_led.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
-------------------------------------------------------------------------------
2021-12-14 17:29:55 +01:00
Jakob Olsson
52ff5c79dd map-controller: 5.2.3 2021-12-14 17:15:21 +01:00
Jakob Olsson
09ad1ffa91 map-agent: 6.3.2: mapagent config changes 2021-12-14 17:05:21 +01:00
Yalu Zhang
1d2d9b7b97 dectmngr-3.4.2: Send notification of line and handset use status only to those handsets in range 2021-12-14 14:25:41 +01:00
Amit KUmar
7f405f04ac ponmngr: removed config file 2021-12-14 06:03:10 +00:00
Amit KUmar
16134d0a2d ponmngr: initial implementation 2021-12-14 06:03:10 +00:00
Yalu Zhang
5fbc784901 dectmngr-3.4.1: Create or update the entry for every line in list LineDiagnostic 2021-12-13 18:16:40 +01:00
Jakob Olsson
0eaba859a7 map-agent: remove uplink tmp file when restarting dynbhd 2021-12-13 16:24:44 +01:00
Jakob Olsson
7828e67308 map-controller: 5.2.2 2021-12-13 13:48:37 +01:00
vdutta
985ccf339f icwmp: 8.2.18 2021-12-13 16:11:10 +05:30
vdutta
b8f36d23ec bbf: 6.3.6 2021-12-13 15:45:57 +05:30
Amin Ben Ramdhane
4f7aeaaec2 bbf: 6.3.5 2021-12-13 09:26:47 +01:00
Anjan Chanda
d976140484 iop: config: add wfadatad-collector to build 2021-12-11 10:19:12 +01:00
vdutta
747436ce8f obuspa: Handle retries and lockout for challenges 2021-12-10 21:29:53 +05:30
Jakob Olsson
dde560d314 map-agent: 6.3.1 2021-12-10 15:45:22 +01:00
Amin Ben Ramdhane
34ec63d1f2 bbf: 6.3.4 2021-12-10 14:39:59 +01:00
vdutta
d4465d81f7 uspd: 2.1.39 2021-12-10 18:19:20 +05:30
vdutta
022ec4d6bb icwmp: 8.2.17 2021-12-10 17:50:31 +05:30
vdutta
6c68ff3be7 swmodd: Added auto-boot for lxc containers 2021-12-10 17:48:18 +05:30
Jakob Olsson
9e1e0eb0df map-controller: 5.2.14 2021-12-10 13:13:39 +01:00
Jakob Olsson
63ba56b87e map-agent: 6.3.0: introduce dynbhd 2021-12-10 13:13:08 +01:00
Anjan Chanda
53ab41ea2f ieee1905: 4.1.1 2021-12-10 12:58:31 +01:00
Anjan Chanda
d1477636f9 wfadatad: 6.10.0 (deagent + decollector) 2021-12-10 12:57:10 +01:00
Grzegorz Sluja
b2e8affb08 dectmngr: Do not create new LineDiagnostic entry each startup 2021-12-10 12:44:35 +01:00
Hemlata Bhatt
2dc9b89cd5 Voice : fix extension provider value type 2021-12-10 12:41:43 +01:00
Anjan Chanda
77acc69dbe wfadatad: 5.1.1 2021-12-09 20:09:43 +01:00
Anjan Chanda
5ac418113e map-controller: 5.2.13 2021-12-09 20:09:18 +01:00
Anjan Chanda
1ba55b753e map-agent: 6.2.12 2021-12-09 20:08:50 +01:00
Anjan Chanda
d483abe7d2 ieee1905: 4.1.0 2021-12-09 20:08:20 +01:00
Anjan Chanda
511d471d54 wifimngr: 14.0.3 2021-12-09 20:07:56 +01:00
Anjan Chanda
206ecd46db easy-soc-libs: 6.4.32 2021-12-09 20:07:29 +01:00
Andreas Gnau
f9f31384c2 Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* 7e013f0 Do not read entire file into buffer when extracting
-------------------------------------------------------------------------------
commit 7e013f0afa68378d38a6bdc9b0c5a342bd3dd0a5
Author: Erik Karlsson <erik.karlsson@genexis.eu>
Date: 2021-11-30 00:09:44 +0100

    Do not read entire file into buffer when extracting

    Only read FDT into buffer, and then in case of external image, use lseek
    followed by sendfile if supported or otherwise read/write.

    Remove unnecessary strdup of option arguments that would leak memory in case
    options are repeated.

    Fix confusing error message with --attribute when --image is used to specify
    a non-existing image.

Base directory -> /
 fdtextract.c | 169 +++++++++++++++++++++++++++++++++++++----------------------
 1 file changed, 106 insertions(+), 63 deletions(-)
-------------------------------------------------------------------------------
2021-12-09 18:24:19 +01:00
vdutta
2c4e50ab10 swmodd: optimize du_list get time 2021-12-09 21:04:40 +05:30
vdutta
ac46849475 obuspa: 4.1.0.15 2021-12-09 21:01:14 +05:30
Amin Ben Ramdhane
4db7061884 bbf: 6.3.3 2021-12-09 12:14:09 +01:00
Grzegorz Sluja
de40d120e2 dectmngr: Fix unitialized ptr value causing crash 2021-12-09 10:03:10 +01:00
Wenpeng Song
e54e20de45 dectmngr: Add the option to direct CMBS debug messages to syslog 2021-12-08 17:02:15 +00:00
Wenpeng Song
7add2a163d merge together with dectmngr feeds update 2021-12-08 16:32:34 +00:00
Yalu Zhang
499709e2df dectmngr-3.4.0: Support implicit intrusion call 2021-12-08 15:53:03 +01:00
vdutta
c566d23c78 sulu: 0.2.21 2021-12-07 19:49:30 +05:30
vdutta
a5c8b7145f rulengd: 1.2.4 2021-12-07 17:56:52 +05:30
vdutta
0419beb911 periodicstats: 1.0.5 2021-12-07 17:46:29 +05:30
vdutta
8bb22efe7d swmodd: Improved memoryinfo and SetRequestedState 2021-12-07 17:37:48 +05:30
vdutta
bff8f75bbb icwmp: Remove manual seeding of openssl RAND generator 2021-12-07 17:29:22 +05:30
Jakob Olsson
be57a189f7 map-controller: 5.2.3 2021-12-07 12:48:42 +01:00
Grzegorz Sluja
9c365459bb dectmngr: Update uci when DECT hs name is changed from hs menu 2021-12-07 11:53:18 +01:00
Amin Ben Ramdhane
f4e9f29d3d bbf: 6.3.2 2021-12-07 11:18:23 +01:00
Jakob Olsson
ac56460fec map-agent: 6.2.2 2021-12-07 10:52:49 +01:00
Omar Kallel
cb2077377a icwmp: 8.2.15 2021-12-06 18:25:04 +01:00
Amin Ben Ramdhane
673dfc8589 bbf: 6.3.1 2021-12-06 12:18:44 +01:00
Jakob Olsson
a287107ee1 map-controller: 5.2.2 2021-12-06 11:32:21 +01:00
vdutta
47396a4e4f obuspa: Boot time improvements 2021-12-03 19:38:37 +05:30
vdutta
d82756305c icwmp: Boot time improvements 2021-12-03 19:35:38 +05:30
Omar Kallel
5bd754fc9a icwmp: 8.2.13 2021-12-03 11:40:34 +01:00
Dominic Lake
bed5379108 obuspa: Add NotifRetry option to UCI
Added support for NotifRetry in UCI for use with subscriptions.
2021-12-03 09:47:41 +00:00
Yalu Zhang
d8e5dcf859 dectmngr 3.3.1: add some extensions to Line Settings List defined in CAT-iq 2.0
- /etc/init.d/dectmngr: set model id from hw.board.dect_model_id if the value in the database
  is valid. Otherwise set to 30.3B.06
- Add a config option: ENABLE_LINE_SETTINGS_EXTENSION in the package
2021-12-02 18:15:51 +01:00
Jakob Olsson
64f9e23850 map-agent: 6.2.1 2021-12-01 17:28:54 +01:00
Suru Dissanaike
aaffffdba2 quickjs-websocket: 1.1 2021-12-01 16:22:58 +01:00
arne.jonsson
0d6980e0ec Disabled and removed DEVTMPS from config 2021-12-01 15:00:27 +00:00
arne.jonsson
61f454043d Disabled and removed DEVTMPS from config 2021-12-01 15:00:27 +00:00
Janusz Dziedzic
defe48e4e8 ieee1905: allow local dev build
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-12-01 08:30:54 +00:00
Janusz Dziedzic
4d893499a5 map-controller: add local dev build option
After that ~/git/map-controller code will
be used/compiled.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-12-01 08:30:54 +00:00
Grzegorz Sluja
e32f2f09be dectmngr: Move DECT chip independent functions to dect_common.h 2021-11-30 18:51:39 +01:00
Jakob Olsson
183ba5d634 map-controller: 5.2.1 2021-11-30 17:30:41 +01:00
Grzegorz Sluja
809113d4b2 dectmngr: Remove handset's name section from config on deregistration 2021-11-30 12:24:12 +01:00
vdutta
927b002aa6 obuspa: Updated uci schema
- prototrace uci option to enable protocol trace
 - Added BootParamName for controller boot parameters
2021-11-29 17:54:25 +05:30
vdutta
c5654ad9ab icwmp: 8.2.12-2021-11-29 2021-11-29 11:14:46 +05:30
vdutta
2e3013dc56 uspd: 2.1.38 2021-11-26 19:19:43 +05:30
suvendhu
a7dd783b49 swmodd: use curl for du_install 2021-11-26 18:48:23 +05:30
Jakob Olsson
d3451b7bd4 ieee1905: 4.0.6 2021-11-26 13:18:39 +01:00
vdutta
776860187d icwmp: Fix race condition in dhcp ACS provisioning 2021-11-26 17:27:56 +05:30
Grzegorz Sluja
d2dda88aad dectmngr: Do not restart dectmngr on dect config change 2021-11-26 12:37:49 +01:00
Yalu Zhang
22871d2410 Update package dectmngr 3.3.0
Multiple line support with m:n mapping between extensions and DECT handsets
2021-11-26 11:59:42 +01:00
Amin Ben Ramdhane
707203b42a bbf: 6.3.0 2021-11-26 10:41:55 +01:00
Omar Kallel
60fb332fff icwmp: Remove set dhcp reqopt from uci-defaults && set dhcp_url to icwmp config 2021-11-25 18:05:39 +01:00
Omar Kallel
bd0d27ebc9 Start icwmp only if EnableCWMP is true 2021-11-25 17:39:51 +01:00
Jakob Olsson
0af83a4892 wfadatad: 5.1.0 2021-11-25 17:15:35 +01:00
Jakob Olsson
715f58db4d map-topology: 3.1.0 2021-11-25 16:49:23 +01:00
Jakob Olsson
cdfa0a7313 map-controller: 5.2.0 2021-11-25 15:57:06 +01:00
Jakob Olsson
9b12400c0b map-agent: 6.2.0 2021-11-25 15:54:00 +01:00
Dominic Lake
b59e3250af obuspa: Support different boot params per controller
Added support to specify the boot params for each controller separately in the controller UCI section.
2021-11-24 16:35:50 +00:00
vdutta
f742ce11ae obuspa: Publish endpoint id to mqtt broker for usp-js 2021-11-24 19:52:25 +05:30
vdutta
7a6ff46b8a swmodd: 2.0.11 2021-11-24 19:22:14 +05:30
Amin Ben Ramdhane
e3d9a24ed7 bbf: 6.2.6 2021-11-24 12:13:42 +01:00
vdutta
88fcb2e4df uspd: Fix schema updater 2021-11-24 13:55:39 +05:30
vdutta
0f05633d74 obuspa: updated default interface to loopback 2021-11-24 13:20:38 +05:30
Jakob Olsson
5173b01cb2 map-controller: make uci wireless to mapcontroller sync configurable 2021-11-23 17:16:24 +01:00
Omar Kallel
86cf6fc81e icwmp: 8.2.11-2021-11-23 2021-11-23 16:44:28 +01:00
Omar Kallel
2ee29d8252 Add BOOT event when starting icwmp 2021-11-23 16:38:16 +01:00
Omar Kallel
ef178897ba Add BOOT event when starting icwmp 2021-11-23 15:24:33 +01:00
Suru Dissanaike
1d4b28acd4 quickjs: added quickjs package graciously provided by Genexis 2021-11-23 10:34:34 +01:00
Anjan Chanda
2b6e74fb80 map-topology: include libnl3 in target-cflags 2021-11-23 09:21:34 +01:00
Janusz Dziedzic
32cfd29d74 map-agent: add local dev build option
After that ~/git/map-agent code will
be used/compiled.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-11-22 17:18:54 +00:00
Omar Kallel
63959e908e icwmp: 8.2.10-2021-11-22 2021-11-22 15:50:33 +01:00
vdutta
80e2035662 uspd: 2.1.36 2021-11-22 20:06:12 +05:30
Amin Ben Ramdhane
7527faca9c bbf: 6.2.5 2021-11-22 14:18:27 +01:00
Erik Karlsson
b7e010be3b gryphon-led-module: use the right toolchain on Broadcom targets
Userspace toolchain was being used to build the kernel module which
although not correct happened to work on 32-bit kernel but obviously
does not work on 64-bit kernel with 32-bit userspace.

Ideally, it should but enough to set KERNEL_CROSS if Build/Compile is
updated to use KERNEL_CROSS instead of TARGET_CROSS, but not changing
TARGET_CROSS breaks scripts/strip-kmod.sh which for some reason uses
TARGET_CROSS rather than KERNEL_CROSS.
2021-11-19 16:16:19 +01:00
Amin Ben Ramdhane
84ad0eec4e bbf: 6.2.4 2021-11-19 14:49:31 +01:00
vdutta
bd188aaed2 swmodd: Multiple fixes
- Handle frozen containers
 - Handle libgcc package name miss-match
2021-11-19 11:08:38 +05:30
Amit Kumar
4d244eb31e mcastmngr: corrected P1 break of mcast stats 2021-11-18 06:48:52 +00:00
nevadita.chatterjee
14aab50849 easy-soc-libs: 6.4.28 2021-11-17 16:53:40 +05:30
sverma
3a605fd8f5 bbf: 6.2.3 2021-11-17 15:57:12 +05:30
Amin Ben Ramdhane
f9bbce19dd bbf: 6.2.2 2021-11-16 18:10:45 +01:00
Omar Kallel
a1677793d3 icwmp: Remove the use of .icwmpd_boot file 2021-11-16 11:51:50 +01:00
Grzegorz Sluja
d7a8913072 dectmngr: Refresh Contact List on handset after change from ubus 2021-11-16 09:51:05 +01:00
Omar Kallel
34c5ea3c75 Ticket refs #5876: icwmp: Init scripts enhancements and cleanup 2021-11-15 15:58:56 +01:00
Grzegorz Sluja
c006db0e21 dectmngr: Remove dependency to libiconv from dectmngr 2021-11-15 14:59:33 +01:00
Amin Ben Ramdhane
4e42968aca bbf: 6.2.1 2021-11-15 13:39:36 +01:00
vdutta
9b48e54734 icwmp: Fix random crashes 2021-11-13 16:21:52 +05:30
Amin Ben Ramdhane
77a41d56a1 bbf: 6.2.0 2021-11-12 14:11:43 +01:00
Andreas Gnau
90fa843074 gryphon-led-module: Build against bcmkernel on Broadcom platforms
Due to the complexity of the Broadcom build system which amongst others
puts dynamically generated symlinks into the kernel dir, we have a fake
kernel "bcmlinux" to please the OpenWrt build system. This kernel is not
used for anything but building the OpenWrt toolchain. To compile against
the right kernel that is running on the target, we need to compile the
kernel module against the kernel inside bcmkernel which is the one
compiled by the BCM SDK.
2021-11-12 12:11:08 +00:00
Jakob Olsson
524c718242 map-agent: 6.1.1 2021-11-12 11:21:52 +01:00
Jakob Olsson
e00102c2b9 map-controller: 5.1.1 2021-11-12 11:19:38 +01:00
Anjan Chanda
2c0b6b76e2 wfadatad: 5.0.5 2021-11-12 09:38:15 +01:00
Anjan Chanda
9e9dc5b1a9 wifimngr: 14.0.0 2021-11-12 09:37:33 +01:00
Anjan Chanda
4535b14305 easy-soc-libs: 6.4.27 2021-11-12 09:36:29 +01:00
Yalu Zhang
478e3a5c8b dectmngr: keep /etc/dect/LA_DB during sysupgrade 2021-11-11 15:24:40 +01:00
Amin Ben Ramdhane
98302e0523 periodicstats: 1.0.4 2021-11-11 13:57:02 +01:00
Amin Ben Ramdhane
4dc45c779a bbf: 6.1.9 2021-11-11 13:56:06 +01:00
Yalu Zhang
c1bef47f50 dectmngr: update Makefile to include the path for external libraries 2021-11-11 12:14:03 +01:00
Andreas Gnau
9fb0c48a22 dectmngr: Add missing iconv-full dependency
dectmngr has required libiconv-full, but did not declare the dependency.
This creates a risk for the build failing due to race conditions. After
we removed another config-option that depended on libiconv-full the
build started to fail because nothing depended on libiconv-full anymore.

Fixes: f6f1644b (iop: config: Don't enable CONFIG_BUILD_NLS, 2021-11-04)
2021-11-11 10:56:08 +01:00
Anjan Chanda
d8e35df684 wfa-capi: 1.1.0 2021-11-11 10:51:12 +01:00
Yalu Zhang
d0189d605f dectmngr: bump the package version to 3.2.0 2021-11-10 14:37:35 +00:00
Grzegorz Sluja
8de1704440 dectmngr: Add phonebook support 2021-11-10 11:18:09 +01:00
Andreas Gnau
f6f1644bab iop: config: Don't enable CONFIG_BUILD_NLS
It seems like CONFIG_BUILD_NLS it is not needed by anything, so disable
it. On an embedded device, we do not need localised output. End-users
will probably never interact via SSH with the device. So it is unclear
why it had been enabled in the first place.
2021-11-10 09:47:40 +00:00
vdutta
b1c705544b Added ifupdate in hotplug 2021-11-09 17:58:36 +01:00
Omar Kallel
bd8d574177 Remove init script logs 2021-11-09 17:57:02 +01:00
Omar Kallel
4b5c88b015 icwmp: Reduce I/O on filesystem 2021-11-09 17:51:48 +01:00
Omar Kallel
32245d37c3 Revert "Added ifupdate in hotplug"
This reverts commit 08244c5392.
2021-11-09 16:35:09 +01:00
Omar Kallel
56d2b9c4e3 Revert "icwmp: Reduce I/O on filesystem"
This reverts commit 146bc95709.
2021-11-09 16:34:59 +01:00
vdutta
08244c5392 Added ifupdate in hotplug 2021-11-09 16:24:21 +01:00
Omar Kallel
146bc95709 icwmp: Reduce I/O on filesystem 2021-11-09 16:23:31 +01:00
Amin Ben Ramdhane
25a861a55f bbf: 6.1.7 2021-11-09 15:49:15 +01:00
vdutta
86fab6969f uspd: Option to configure dm version to use 2021-11-08 11:26:01 +05:30
Amin Ben Ramdhane
5463df37e1 bbf: 6.1.6 2021-11-05 10:55:41 +01:00
Grzegorz Sluja
a480a0c95d dectmngr: Update package dectmngr
c2b5452 Disable dectmngr logging to file by default
6d0af6c SUOTA implementation
79fa843 Fix the bug of syslog messages with incorrect ident and facility
2021-11-04 07:52:37 +01:00
vdutta
89068fa876 icwmp: 8.2.6-2021-11-03 2021-11-03 21:23:20 +05:30
vdutta
c3cee3431c uspd: Enable caching of ubus data 2021-11-03 21:17:08 +05:30
Amin Ben Ramdhane
bf70b518bd bbf: 6.1.5 2021-11-03 16:42:09 +01:00
nevadita.chatterjee
ad293962c1 topology: 3.0.4 2021-11-03 13:36:41 +05:30
nevadita.chatterjee
6badc20bcc map-topology:3.0.3 2021-11-02 16:43:43 +05:30
vdutta
f8b51b9ca5 uspd: Add TransferComplete event with bbf plugin 2021-11-01 16:23:46 +05:30
Jakob Olsson
a5c390efdd ieee1905: 4.0.5 2021-10-29 16:08:31 +02:00
vdutta
6d011f8626 uspd: Extend TransferComplete with json plugin 2021-10-29 18:48:12 +05:30
vdutta
f1d5e5d7cd bbf: Support operate and events with json plugins 2021-10-29 18:45:12 +05:30
vdutta
0fed56903c icwmp: 8.2.6-2021-10-29 2021-10-29 17:20:09 +05:30
Jakob Olsson
2ac7be4652 map-agent: 6.1.0 2021-10-29 13:36:55 +02:00
Jakob Olsson
7e34649ce7 map-controller: 5.1.0 2021-10-29 13:36:26 +02:00
Amit Kumar
a404da9124 libqos: updated broadcom header file 2021-10-29 16:43:19 +05:30
Amit Kumar
d152eb0f17 qosmngr: porttminit added before qcfg 2021-10-29 10:45:10 +00:00
Hemlata Bhatt
fb8ed439b8 Adjustment for the restructure of asterisk UCI config 2021-10-29 11:58:40 +02:00
nevadita.chatterjee
6b23da2314 map-topology: 3.0.2 2021-10-29 13:19:02 +05:30
sverma
bc90649202 wfadatad: 5.0.3 2021-10-28 20:56:19 +05:30
Jakob Olsson
0f31eb632f map-agent: rename map-loop-detection to map-dynamic-backhaul 2021-10-28 16:23:13 +02:00
Stanislaw Gruszka
5c37dc2165 ieee1905: export cmdu_ackq.h 2021-10-28 12:48:19 +00:00
Erik Karlsson
b4ce04d317 map-controller: fix enabling via uci
The service must be started but without any instance in case it is
disabled via uci. If it is stopped entirely, the reload trigger does
not work and it is impossible to re-enable mapcontroller via uci
without explicit reload.
2021-10-28 07:09:23 +00:00
Erik Karlsson
1f817c4e8f map-agent: trigger reload on the right configuration file
Trigger reload, which is currently implemented as restart, when
mapagent rather than ieee1905 configuration is changed.
2021-10-28 07:09:23 +00:00
vdutta
26599ba94e uspd: Added get_supported_dm 2021-10-27 20:17:38 +05:30
vdutta
26fe0bc7de bbf: 6.1.3 2021-10-27 20:16:44 +05:30
Marek Puzyniak
37493eb8be easy-soc-libs: 6.4.6
Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>
2021-10-27 09:54:18 +00:00
vdutta
b3dda9b4e5 uspd: align with bbf changes 2021-10-27 13:27:00 +05:30
vdutta
94879c6de9 bbf: 6.1.2 2021-10-27 13:25:55 +05:30
vdutta
a15f586ecf icwmp: Fix raise condition for con-req 2021-10-26 20:04:02 +05:30
nevadita.chatterjee
f3c5face44 ieee1905: version 4.0.4 2021-10-26 15:43:00 +05:30
Jakob Olsson
4488510e4b map-agent: 6.0.8 2021-10-25 11:20:00 +02:00
vdutta
4685cb49d4 icwmpd: 8.2.4-2021-10-25 2021-10-25 12:16:35 +05:30
vdutta
6ad633cbf4 uspd: 2.1.29 2021-10-25 12:14:32 +05:30
vdutta
d97c335cb5 obuspa: Fix compilation errors for gcc 11 2021-10-25 12:03:48 +05:30
vdutta
3563683cec swmodd: Fix compilation error on gcc v11 2021-10-25 11:59:24 +05:30
vdutta
330bb08d1b bbf: 6.1.1 2021-10-25 11:57:29 +05:30
Jakob Olsson
93f2090d0e map-agent: 6.0.7 2021-10-22 16:58:33 +02:00
Jakob Olsson
d9ae18761b map-agent: map-loop-detection: speed up interface removal from bridge and harmonize disconnection 2021-10-22 16:56:15 +02:00
Jakob Olsson
40a1a45412 wifimngr: 05-wifi: publish wps over fronthauls when eth connected 2021-10-22 16:51:41 +02:00
Jakob Olsson
f459eaafb9 map-agent: 6.0.6 2021-10-22 15:21:56 +02:00
Jakob Olsson
a80ed328c3 map-controller: get source url from https 2021-10-22 15:19:04 +02:00
Jakob Olsson
15d9fc0339 map-agent: get source url from https 2021-10-22 15:11:26 +02:00
Amin Ben Ramdhane
916edb4ba3 bbf: 6.1.0 2021-10-22 12:56:13 +01:00
Amin Ben Ramdhane
eb67d5ab6e icwmp: 8.2.4-2021-10-22 2021-10-22 11:13:24 +01:00
Amin Ben Ramdhane
dd43b90e91 bulkdata: 1.0.3 2021-10-22 11:11:46 +01:00
Jakob Olsson
5fee9aa7b4 map-agent: multiap: enable bsta being swapped to 2021-10-22 10:28:32 +02:00
Jakob Olsson
b821c760df map-agent: multiap: implement swap to link function 2021-10-21 17:09:30 +02:00
Andreas Gnau
2dbcf3c75c Update feed [ iopsys ] package [ endptmngr ]
-------------------------------------------------------------------------------
* 6d7b2e9 Adapt Broadcom SDK 5.04 workaround version check to 5.04L.02p1
* f28a1b7 BCM: Adapt to SDK 5.04L.02p1 endpoint_api changes
-------------------------------------------------------------------------------
commit 6d7b2e9c90234767cb56a1e7885f42825bd6287a
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-10-20 17:43:37 +0200

    Adapt Broadcom SDK 5.04 workaround version check to 5.04L.02p1

    Adapt the version check for the workaround for BCM SDK 5.04 a9e612c (Add a
    workaround need for building with Broadcom 5.04., 2020-11-08) to cover BCM
    SDK 5.04L.02p1.

Base directory -> /
 src/Makefile | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit f28a1b7b08a0bcc8faa2b25e1acebf811e05e87c
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-09-21 16:32:17 +0200

    BCM: Adapt to SDK 5.04L.02p1 endpoint_api changes

    In SDK 5.04L.02p1, Broadcom has changed rtcpXRMode in struct EPZCNXPARAM
    with a bitfield rtcpXRConfig which enables a more fine-grained control of
    the RTCP XR configuration.

    For now, set it to HAPI_RTP_RTCP_XR_GENERATE_VOIP_REPORT as recommended by
    the comment in endpoint_api.h. More bits to set can be found in hapi_rtp.h
    in the SDK.

Base directory -> /
 src/connection.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
2021-10-20 17:59:05 +02:00
Jakob Olsson
952366cbc6 map-agent: multiap: write bssid for same bands when writing bsta section 2021-10-20 12:49:09 +02:00
Jakob Olsson
23a18999d5 ieee1905: 4.0.3 2021-10-20 10:11:43 +02:00
Jakob Olsson
2d2dffbec2 map-agent: 6.0.5 2021-10-20 10:08:24 +02:00
Sukru Senli
758ee8ec9f sulu: 0.2.20 2021-10-19 17:18:48 +02:00
Amin Ben Ramdhane
c38ce1be3b bbf: 6.0.9 2021-10-19 14:43:55 +01:00
Andreas Gnau
2b5332adc3 Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* ef46eb3 Add --image switch for getting attributes from image nodes. Also update the indentation and fix some minor naming issues.
-------------------------------------------------------------------------------
commit ef46eb3be68ae1216d8699234f237fb2243289f1
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2021-10-14 10:22:48 +0200

    Add --image switch for getting attributes from image nodes. Also update the
    indentation and fix some minor naming issues.

Base directory -> /
 fdtextract.c  | 122 +++++++++++++++++++++++++++++++++++-----------------------
 util.c        |   2 +-
 version_gen.h |   2 +-
 3 files changed, 76 insertions(+), 50 deletions(-)
-------------------------------------------------------------------------------
2021-10-18 16:56:32 +02:00
Jakob Olsson
70c3d5d5e1 map-agent: multiap: comment out debug print 2021-10-18 13:17:09 +02:00
vdutta
df41990929 icwmp: Revert Init scripts enhancements and cleanup 2021-10-15 20:41:25 +05:30
Jakob Olsson
6edc7cbb94 map-controller: 5.0.3 2021-10-15 10:21:05 +02:00
Jakob Olsson
d7bffebd5b map-agent: 6.0.4 2021-10-15 10:21:05 +02:00
Jakob Olsson
8f81a71b57 ieee1905: 4.0.2 2021-10-15 10:21:05 +02:00
Jakob Olsson
9452ada64f map-agent: 6.0.3 2021-10-15 09:42:41 +02:00
Jakob Olsson
1a3d267ee1 map-agent: map-loop-detection: reconnect enabled supplicants 2021-10-15 09:35:46 +02:00
Jakob Olsson
2f6b40bdd2 map-agent: multiap: add dynamic backhaul funcs 2021-10-15 09:35:46 +02:00
Jakob Olsson
d1c2be5b08 map-agent: multiap: supress uci errors 2021-10-15 09:35:46 +02:00
vdutta
fdee0c734c icwmp: 8.2.4-2021-10-14 2021-10-14 22:01:48 +05:30
Sukru Senli
88513db735 questd: remove reload trigger 2021-10-14 16:12:01 +02:00
Amin Ben Ramdhane
8bdbefcc80 bbf: 6.0.8 2021-10-14 13:51:20 +01:00
Omar Kallel
ee33f0ae7d icwmp: 8.2.4-2021-10-13 2021-10-13 16:21:33 +01:00
Omar Kallel
5cd57a3ee9 Ticket refs #5876: icwmp: Init scripts enhancements and cleanup 2021-10-13 16:11:27 +01:00
Amin Ben Ramdhane
56a6cbf04a bbf: 6.0.7 2021-10-13 14:35:36 +01:00
Omar Kallel
1fb879fca0 icwmp: get dhcp 43 option in icwmp hotplug script instead of netifd package 2021-10-13 11:17:51 +01:00
Omar Kallel
a3fd03c390 icwmp: use both ipv4 and ipv6 addresses for firewall rules 2021-10-12 11:41:07 +01:00
Amin Ben Ramdhane
00594ba01e bbf: 6.0.6 2021-10-11 16:13:33 +01:00
Anjan Chanda
132bba5c20 wfa-capi: 1.0.0 2021-10-11 16:34:22 +02:00
Grzegorz Sluja
06f160af35 dectmngr: Fixes for registration and set HS name
0e937cf Set the HS name during registration if it has the name set in uci
62421c0 Do not send LocateSuggest req when registration mode is opened
2021-10-11 14:42:52 +02:00
Sukru Senli
04bf025b8f questd: remove deprecated router.network object 2021-10-11 09:54:59 +02:00
Sukru Senli
1daa8d7f1a iop: genconfig: remove references to juci 2021-10-11 09:49:07 +02:00
Sukru Senli
97a302a20a juci: remove deprecated package 2021-10-11 09:40:05 +02:00
Anjan Chanda
87a0fbe8bf wfadatad: 5.0.2 2021-10-08 21:48:36 +02:00
Yalu Zhang
54b4140e09 dectmngr 3.1.18: support DECT multiple line mode 2021-10-08 17:16:10 +02:00
vdutta
99267f902b bbf: 6.0.5 2021-10-08 12:45:53 +05:30
vdutta
0338a2fd7c uspd: Configure option for subprocess on get cmd 2021-10-08 11:12:10 +05:30
vdutta
e134a5ed08 obuspa: Align permission for set 2021-10-08 11:08:30 +05:30
vdutta
0d8f4a3de8 obuspa: Fail init if required data is missing 2021-10-08 11:01:47 +05:30
Jakob Olsson
d5e7cb1a28 map-controller: 5.0.2 2021-10-07 17:15:50 +02:00
Jakob Olsson
e995fcb14d map-agent: 6.0.2 2021-10-07 17:12:22 +02:00
vdutta
f865531fa5 bbf: 6.0.4 2021-10-07 17:11:26 +05:30
Markus Gothe
104f3e2e83 qosmngr: updated broadcom.sh to get the ports from the runner.
When using the runner accelerator we need to check how to
map between ethernet interfaces (i.e eth0) and the internal
names used by the runner (i.e. port/index=lan2). Depending on
the hardware the mapping is not always 1:1 as assumed earlier.

This commit also fixes a minor bug with resetting traffic
shaping for the archer accelerator.
2021-10-07 05:12:04 +00:00
Sukru Senli
d298757300 obudpst: install as udpst 2021-10-06 18:48:39 +02:00
vdutta
b66ade378a bbf: 6.0.3 2021-10-06 10:33:58 +05:30
Omar Kallel
be36f2e3e8 icwmp: uci enhancements 2021-10-05 14:37:52 +01:00
Anjan Chanda
00dc43eb39 map-agent: 6.0.1 2021-10-04 14:34:58 +02:00
Anjan Chanda
efeeb00a0a map-topology: 3.0.1 2021-10-04 14:18:57 +02:00
Anjan Chanda
cc5b7a8a17 wfadatad: 5.0.1 2021-10-04 14:18:19 +02:00
Anjan Chanda
ce8425ce70 map-controller: 5.0.1 2021-10-04 14:16:53 +02:00
Anjan Chanda
ce5b916828 ieee1905: 4.0.1 2021-10-04 14:01:39 +02:00
Anjan Chanda
7f04196f58 easy-soc-libs: 6.4.5 2021-10-04 14:01:13 +02:00
Stanislaw Gruszka
762d5a5daa map-agent: fix configuring ssid's and keys with spaces 2021-10-04 10:21:58 +00:00
Anjan Chanda
abc997d3f3 easy-soc-libs: 6.4.1 2021-10-03 21:16:14 +02:00
Markus Gothe
924b54d8d3 grpyhon-led-module: Add ability to read back color
To aid remote debugging we want to be able to
read back the set color on the RGB LED. This commit
implements this functionality.
2021-10-01 16:16:32 +00:00
Jakob Olsson
bd8dd65766 map-topology: 2.1.10 2021-10-01 16:08:21 +02:00
Jakob Olsson
5372956a9a map-agent: multiap: func to sync mapcontroller from wireless
To accomodate datamodel
2021-10-01 10:52:44 +02:00
Jakob Olsson
bf0ddc5321 map-agent: 5.4.2 2021-09-30 16:37:58 +02:00
Jakob Olsson
7895966aa2 map-agent: 5.4.1 2021-09-30 16:28:54 +02:00
Jakob Olsson
0f716b5197 map-controller: 4.2.6 2021-09-30 16:28:19 +02:00
Jakob Olsson
dd56712aa4 map-controller: 4.2.5 2021-09-30 16:28:19 +02:00
Jani Juvan
b7de0cf4bb map-agent: 5.4: traffic separation 2021-09-30 16:28:19 +02:00
Amin Ben Ramdhane
09f6449a6e bbf: 6.0.0 2021-09-30 15:19:19 +01:00
Andreas Gnau
f00e7fe965 iop: config: Use OpenSSL instead of WolfSSL for libustream
In IOPSYSWRT, we use OpenSSL. Instead of shipping WolfSSL just for the
OpenWrt libustream library (which powers the uclient-fetch / wget
commands), make libustream use OpenSSL as well. This decreases security
maintenance and reduces overhead in image size and memory usage.
2021-09-30 15:05:04 +02:00
vdutta
dd7aac2a8c swmodd: Fix compilation issues 2021-09-30 18:27:32 +05:30
vdutta
49ffec4bc9 swmodd: Improve get time 2021-09-30 16:21:32 +05:30
Grzegorz Sluja
0a638e202b dectmngr: Fix some compilation warnings 2021-09-30 12:39:56 +02:00
Grzegorz Sluja
82676d8390 dectmngr: Fixes for setting DECT HS name and setting MWI 2021-09-30 09:24:06 +02:00
Yalu Zhang
95d6cadee1 dectmngr 3.1.17: Fix an issue that the call can't be released properly 2021-09-29 17:34:56 +02:00
vdutta
4672442d50 obuspa: Startup improvements 2021-09-29 16:26:49 +05:30
Amin Ben Ramdhane
7a8759e46a bbf: 5.0.8 2021-09-28 13:39:26 +01:00
Grzegorz Sluja
f28659ebe0 dectmngr: Change uci config file from dectmngr to dect 2021-09-28 13:26:50 +02:00
Grzegorz Sluja
f10457c8cb dectmngr: fixup! Implementation for setting DECT Handset's name 2021-09-27 10:50:12 +02:00
Grzegorz Sluja
bd3f962614 dectmngr: Add dectmngr trigger so that change in uci config reloads it 2021-09-27 10:49:13 +02:00
Grzegorz Sluja
a4aa0b3521 Revert "dectmngr: Add handset name to uci configuration"
This reverts commit 67169eff2a.
2021-09-27 10:49:13 +02:00
Anjan Chanda
06204d8523 wifimngr: 13.0.1 2021-09-26 21:33:52 +02:00
Anjan Chanda
4b5dbec851 easy-soc-libs: 6.3.4 2021-09-26 21:31:51 +02:00
vdutta
ab6035acbd icwmp: Default incoming rule based on port only 2021-09-25 17:22:00 +05:30
vdutta
72b7726f1e icwmp: 8.1.10-2021-09-24 2021-09-24 19:26:16 +05:30
Jakob Olsson
56ab101640 map-controller: 4.2.4 2021-09-24 15:50:33 +02:00
Amin Ben Ramdhane
4ee030a2ea bbf: 5.0.7 2021-09-24 14:10:26 +01:00
Jakob Olsson
ec402a2ea1 map-controller: 4.2.3 2021-09-24 14:32:43 +02:00
Jakob Olsson
52466671ab map-controller: 4.2.2 2021-09-24 13:41:02 +02:00
Jakob Olsson
3a54432533 map-controller: update default pkg config 2021-09-24 12:26:11 +02:00
Jakob Olsson
7a8e1b9076 map-controller: 4.2.1 2021-09-24 12:23:03 +02:00
Jakob Olsson
237e8d7b6d map-agent: 5.3.1 2021-09-24 12:22:31 +02:00
Grzegorz Sluja
bd468e4761 dctmngr: Implementation for setting DECT Handset's name 2021-09-24 10:18:56 +02:00
Grzegorz Sluja
67169eff2a dectmngr: Add handset name to uci configuration 2021-09-24 10:18:47 +02:00
Jakob Olsson
1ad1ef12b4 map-controller: 4.2.0: update default config 2021-09-24 10:11:27 +02:00
Jakob Olsson
a012f98b4c map-agent: bump version 5.3.0 2021-09-24 10:10:51 +02:00
Yalu Zhang
1f3c696867 dectmngr: fix an error in Makefile for PKG_SOURCE_SUBDIR 2021-09-23 15:37:57 +02:00
Sukru Senli
b861a89031 Revert "dectmngr: avoid multiple directories in build_dir when lifting versions"
This reverts commit a94c701f66.
2021-09-23 15:19:31 +02:00
Amin Ben Ramdhane
ca9e4f1765 bbf: 5.0.6 2021-09-23 13:52:44 +01:00
Yalu Zhang
a94c701f66 dectmngr: avoid multiple directories in build_dir when lifting versions 2021-09-23 12:35:09 +02:00
Yalu Zhang
13684e1ce6 dectmngr: 3.1.16
Fix issues in ubus dect status
2021-09-23 11:56:27 +02:00
vdutta
00d5c0849c uspd: module test enhancements 2021-09-22 19:56:41 +05:30
Amin Ben Ramdhane
2ae25830e7 bbf: 5.0.5 2021-09-22 13:47:00 +01:00
nevadita.chatterjee
645a3bb5e5 topology:2.1.9 2021-09-22 14:31:43 +05:30
vdutta
85fbea1d40 Revert "uspd: Fix memory leak"
This reverts commit bb6131b1f7.
2021-09-21 22:28:19 +05:30
Sukru Senli
4be8594678 sulu-0.2.19 2021-09-21 18:17:00 +02:00
Yalu Zhang
1cb7520cb9 Update package dectmngr
Fix compilation error when set ENABLE_DECTMNGR_DEBUG to 1
2021-09-21 17:18:20 +02:00
vdutta
bb6131b1f7 uspd: Fix memory leak 2021-09-21 19:51:21 +05:30
Jakob Olsson
f268b27622 map-agent: 5.3.0 2021-09-21 16:11:15 +02:00
Jakob Olsson
85387d16b1 map-agent: multiap - add backhaul priority sync for bstas 2021-09-21 16:04:30 +02:00
vdutta
566a5ebcc7 obuspa: 4.1.0.5 2021-09-21 14:53:34 +05:30
vdutta
48104e2831 icwmp: Code enhancement 2021-09-21 14:44:48 +05:30
vdutta
f9e6d17778 obuspa: Reverting interface trigger 2021-09-20 20:34:43 +05:30
Sukru Senli
47ffb81c08 obudpst: remove unnecessary Build/InstallDev section 2021-09-19 17:57:43 +02:00
Erik Karlsson
fd050bc759 Revert "owsd: hotplug: map aliases against interface on ifup"
This reverts commit 051826305e.

Reason for revert: This appears unnecessary as individual ifup events
are already being generated for main and alias interfaces. The logic
is also broken. It causes owsd to be reloaded every time there is ifup
event on alias interface, regardless of owsd configuration.
2021-09-19 14:38:18 +00:00
Sukru Senli
76d1fd9cb3 obudpst-7.2.1 2021-09-19 16:32:39 +02:00
vdutta
3bf86b8652 icwmp: 8.1.9-2021-09-17 2021-09-17 20:26:23 +05:30
Yalu Zhang
c914639104 Update package dectmngr
Play dial tone when handset goes off hook without called number
2021-09-17 16:24:38 +02:00
Omar Kallel
425d48e974 icwmp: firewall improvement 2021-09-17 11:33:35 +01:00
Amin Ben Ramdhane
c339eae256 icwmp: 8.1.7-2021-09-17 2021-09-17 10:49:26 +01:00
suvendhu
fa7ef67b91 uspd: Added config option for max blob msg len 2021-09-17 14:36:05 +05:30
sverma
fc374d0f29 ieee1905: 3.3.7 2021-09-17 12:49:58 +05:30
Sukru Senli
01808d21b2 iop: sync genconfig_min versioning with genconfig 2021-09-17 09:06:37 +02:00
Amit Kumar
5a1fdc0b07 qosmngr: updated broadcom.sh for queue shapingrate 2021-09-16 18:19:00 +00:00
Amin Ben Ramdhane
6a84c4511a bbf: 5.0.4 2021-09-16 17:19:40 +01:00
vdutta
11704f2f91 obuspa: Init script enhancement 2021-09-16 19:08:31 +05:30
Amin Ben Ramdhane
d48965a03f bbf: 5.0.3 2021-09-15 15:12:53 +01:00
Janusz Dziedzic
bd12c3d6e8 onboarding, start wps on all available sta ifaces
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-09-15 10:11:09 +00:00
Sukru Senli
249072f280 iop: genconfig: update TARGET_VERSION generation
for non-tagged commits, TARGET_VERSION becomes <LAST_TAG>_<SHORT_COMMIT_HASH>
2021-09-14 19:47:38 +02:00
Yalu Zhang
ece01dd366 Update package dectmngr
Show boolean parameters correctly in ubus outputs
2021-09-14 14:52:39 +02:00
Yalu Zhang
2d82d20613 Update package dectmngr
Add two parameters to UBUS "dect status" for base station
2021-09-14 14:14:40 +02:00
Amin Ben Ramdhane
e6371c74d6 bbf: 5.0.1 2021-09-14 12:03:32 +01:00
Andreas Gnau
aa25a78ff1 iop: feeds_update: Make dev-check check for SSH instead of non-HTTP
Similarly to 986fc5ea (Make dev-check check for SSH instead of non-HTTP,
2020-06-23), check for SSH instead of whether the repo was cloned via
HTTP. Developers might have other remotes such as OpenWrt's configured.
2021-09-14 09:57:48 +02:00
jjoseph
60d1c43735 Update feed [iopsys] package [dslmngr] 2021-09-14 13:10:38 +05:30
vdutta
795fc9e805 icwmp: Reverted uci validation
- Partially reverted ae186df3c9
2021-09-13 19:53:47 +05:30
Hemlata Bhatt
1af894cba6 Digitmap DM parameters implemented 2021-09-13 14:26:48 +02:00
vdutta
4ba1558caa obuspa: Fix read only db warning 2021-09-10 17:08:33 +05:30
Jakob Olsson
cfb06f61d0 map-controller: 4.1.1 2021-09-10 11:01:11 +02:00
Jakob Olsson
d786c69d46 Revert "map-agent: 5.2.4"
This reverts commit 5d2b838d3e.
2021-09-10 11:00:37 +02:00
Jakob Olsson
5d2b838d3e map-agent: 5.2.4 2021-09-10 10:58:23 +02:00
Amit Kumar
88060bc42a libqos: updated log level 2021-09-10 13:03:59 +05:30
Jakob Olsson
16c3f49ff5 map-agent: 5.2.3 2021-09-10 08:44:23 +02:00
Omar Kallel
4b6eaad9a8 icwmp: 8.1.6-2021-09-10 2021-09-10 06:59:22 +01:00
Amit Kumar
af241bb222 qosmngr: corrected portid and unit for rxratecrtl 2021-09-10 05:03:02 +00:00
Amin Ben Ramdhane
ae621822c4 periodicstats: 1.0.3 2021-09-09 18:24:06 +01:00
Amin Ben Ramdhane
1a6ac9fa87 swmodd: 2.0.6 2021-09-09 18:21:46 +01:00
Amin Ben Ramdhane
749e38735a xmppc: 1.0.2 2021-09-09 18:19:54 +01:00
Amin Ben Ramdhane
292276ce75 bulkdata: 1.0.2 2021-09-09 18:17:04 +01:00
Amin Ben Ramdhane
1bcc2854af twamp: 1.0.1 2021-09-09 18:14:40 +01:00
Amin Ben Ramdhane
cee063223e bbf: 5.0.0 2021-09-09 18:13:02 +01:00
Jakob Olsson
44e1f1c867 map-agent: 5.2.2 2021-09-09 16:53:07 +02:00
Jakob Olsson
0b2d89a810 map-agent: 5.2.1 2021-09-09 16:15:33 +02:00
Jakob Olsson
d16a53087d map-controller: 4.1.0 2021-09-09 15:24:55 +02:00
Jakob Olsson
f4ca987fae map-agent: 5.2.0 2021-09-09 15:24:04 +02:00
Jakob Olsson
c6e8ad013c map-agent: increase wpa supplicant related steer functionality 2021-09-09 15:23:14 +02:00
Jakob Olsson
76e6d34d67 map-agent: 5.1.5 2021-09-09 15:22:50 +02:00
Jakob Olsson
3bdc80057b wfadatad: 4.0.10 2021-09-09 13:25:03 +02:00
Amin Ben Ramdhane
87f6ea2a1c bbf: 4.5.9 2021-09-08 15:03:43 +01:00
Roman Azarenko
24e065f9a8 iop: remove legacy Open SDK support in genconfig 2021-09-08 11:28:30 +02:00
Jakob Olsson
ba7d1c1153 map-agent: 5.1.4 2021-09-08 10:56:30 +02:00
Jakob Olsson
42a13509a4 easy-soc-libs: 6.3.2 2021-09-08 10:56:01 +02:00
Roman Azarenko
d5b529311a iop: sync genconfig_min to genconfig, workaround for IOP-5730 2021-09-07 16:41:38 +02:00
Grzegorz Sluja
dd7e804cab Update package dectmngr
Fixes for DCX81 FW update implementation
2021-09-06 15:12:37 +02:00
Anjan Chanda
ea779bb6c7 wfa-capi: 0.0.17 2021-09-06 14:40:55 +02:00
Omar Kallel
7ea1adc2d9 icwmp: 8.1.5-2021-09-03 2021-09-03 12:18:29 +01:00
Omar Kallel
ae186df3c9 icwmp: Remove the check of the file /etc/icwmpd/.icwmpd_boot && add uci validatation of cwmp config 2021-09-03 12:17:44 +01:00
Grzegorz Sluja
8fe00c184f Update package dectmngr
1) Implementation of DCX81 firmware upgrade
2) Do not enable registration upon dectmngr start
3) Implementation for periodic DECT HS presence check
2021-09-03 12:58:58 +02:00
Grzegorz Sluja
a5f99f4fc3 dectmngr: Add new dspg FW 4.13 Build16 RC18 2021-09-03 12:57:42 +02:00
Jakob Olsson
5c2c368800 map-controller: 4.0.5 2021-09-03 11:06:04 +02:00
Sukru Senli
8d078181f9 dectmngr: 3.1.12
aligh handset registration status enum with tr-104
2021-09-02 12:52:27 +02:00
Yalu Zhang
6b8e047d33 Update package dectmngr
Align ubus handset parameter values with TR-104 enums
2021-09-02 12:27:46 +02:00
Omar Kallel
b073b86450 icwmp: 8.1.4-2021-09-01 2021-09-01 14:07:23 +01:00
Omar Kallel
61eccddf93 icwmp: 8.1.3-2021-09-01 2021-09-01 11:56:24 +01:00
Omar Kallel
98465ecf62 icwmp: 8.1.3-2021-09-01 2021-09-01 11:37:22 +01:00
Omar Kallel
fdad57f796 icwmp: 8.1.2-2021-09-01 2021-09-01 11:23:03 +01:00
Amin Ben Ramdhane
8da760a491 bbf: 4.5.8 2021-08-31 13:00:45 +01:00
Yalu Zhang
fb8010b5fd Update package endptmngr
Reformatting voice ubus events
2021-08-30 15:32:54 +02:00
Sukru Senli
7a669d7e1b dslmngr: reverted commits breaking fast object 2021-08-27 16:34:41 +02:00
vdutta
21cb7c14e0 bbf: 4.5.7 2021-08-27 17:48:47 +05:30
Anjan Chanda
7fc00dbbda wifimngr: 12.0.3 2021-08-27 13:00:24 +02:00
Anjan Chanda
4cf278cbf1 easy-soc-libs: 6.3.1 2021-08-27 13:00:02 +02:00
Rahul
7ac322b707 qosmngr: qosmngr not restarted 2021-08-27 15:33:29 +05:30
Omar Kallel
818bf818a3 icwmp: 8.1.1-2021-08-26 2021-08-26 16:38:23 +01:00
Jakob Olsson
e7f75bba07 map-agent: 5.1.3 2021-08-26 16:25:23 +02:00
Jakob Olsson
542e9d02e1 map-controller: 4.0.4 2021-08-26 16:09:19 +02:00
Jakob Olsson
266a8d27a0 Revert "map-agent: 5.1.3"
This reverts commit 52bd1b02c4.
2021-08-26 16:08:33 +02:00
Jakob Olsson
52bd1b02c4 map-agent: 5.1.3 2021-08-26 16:08:06 +02:00
Amin Ben Ramdhane
79f9a81d66 bbf: 4.5.6 2021-08-26 14:40:56 +01:00
Amit Kumar
5722b66e40 libqos: qos stats for DISC 2021-08-26 15:56:30 +05:30
Jakob Olsson
03ab529375 Revert "map-controller: sync mapcontroller creds from wireless uci"
This reverts commit b1dbd89de8.
2021-08-26 12:23:19 +02:00
Amin Ben Ramdhane
fa071854de bbf: 4.5.5 2021-08-26 10:34:10 +01:00
vdutta
6f5d1b88f9 swmodd: Fix ubus timeout issue and du_list 2021-08-26 14:53:20 +05:30
Jakob Olsson
326c9b75b9 map-agent: 5.1.2 2021-08-26 08:43:08 +02:00
Jakob Olsson
1568031ba3 map-controller: 4.0.3 2021-08-26 08:42:44 +02:00
Jakob Olsson
b1dbd89de8 map-controller: sync mapcontroller creds from wireless uci 2021-08-26 07:50:18 +02:00
Wenpeng Song
aef1a050fa bbf:TR104 Rotate CDR csv call log 2021-08-25 14:23:18 +00:00
Rahul
e42c88e453 qosmngr: add -w flag to iptables commands
to fix l3 rules sometime not being applied leading to QoS failures,
introduced the -w flag to iptables commands.
2021-08-25 18:07:01 +05:30
jjoseph
7b0dd92085 Update feed [iopsys] package [dslmngr] 2021-08-25 17:05:51 +05:30
Jakob Olsson
88a46d54d5 map-topology: 2.1.8 2021-08-20 17:14:10 +02:00
Jakob Olsson
3ccf98a642 map-agent: 5.1.1 2021-08-20 17:14:01 +02:00
sverma
fa449667fe ieee1905: 3.3.6 2021-08-20 18:56:47 +05:30
sverma
2abf0f63df wfadatad: 4.0.9 2021-08-20 18:36:19 +05:30
Andreas Gnau
c53c3dcfc7 Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* 4557526 Do not hardcode hash node name
-------------------------------------------------------------------------------
commit 45575262de7a9690bcb2c760f35e2c74e88e1176
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-08-19 15:29:52 +0200

    Do not hardcode hash node name

    Align hash-support with U-Boot which accepts hashes in any node starting
    with "hash".

Base directory -> /
 fdtextract.c | 29 +++++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)
-------------------------------------------------------------------------------
2021-08-20 11:47:08 +02:00
nevadita.chatterjee
ab3e270238 map-topology:2.1.7 2021-08-19 18:00:19 +05:30
Jakob Olsson
1d5f1647b1 ieee1905: 3.3.5 2021-08-18 15:51:52 +02:00
Amin Ben Ramdhane
a3b5bf68b8 bbf: 4.5.4 2021-08-18 13:44:32 +01:00
Yalu Zhang
92ec110e27 Update package dectmngr
Allow num_messages being zero in "ubus call dect send_mwi"
2021-08-18 12:25:58 +02:00
Arun Muthusamy
fbf8cea8af easy-soc-libs: Fix, Incorrect DSL parameter values while FAST line is used 2021-08-18 09:22:31 +02:00
Arun Muthusamy
3843bcea55 dslmngr: Fix, Incorrect DSL LinkStatus with FAST line 2021-08-18 09:20:07 +02:00
vdutta
b9ef557a02 uspd: Update module tests 2021-08-17 19:07:32 +05:30
vdutta
c3924d5761 obuspa: Optimize datamodel caching algorithm 2021-08-17 19:03:30 +05:30
Amin Ben Ramdhane
a7f537e734 bbf: 4.5.3 2021-08-16 10:35:04 +01:00
Amin Ben Ramdhane
24f09d7048 bbf: Add '-Wall -Werror' flags to TARGET_CFLAGS 2021-08-16 09:31:44 +00:00
Omar Kallel
973cd18a45 icwmp: 8.1.0-2021-08-13 2021-08-13 15:29:21 +01:00
Jakob Olsson
99717b5254 map-controller: 4.0.2 2021-08-13 15:43:28 +02:00
Jakob Olsson
61641f1b14 ieee1905: 3.3.4 2021-08-13 15:42:54 +02:00
Jakob Olsson
c6eadab0b8 map-agent: 5.1.0 2021-08-13 15:41:41 +02:00
Amin Ben Ramdhane
73c1c6aee0 bbf: Adapt Provider Bridge Object to OpenWrt 21.02 network stack 2021-08-12 14:50:46 +01:00
Amit Kumar
f096e3a76c libqos: package version update 2021-08-12 18:27:10 +05:30
vdutta
25c9a7ebac obuspa: Merge obuspa-4.1.0 release 2021-08-12 12:41:35 +05:30
Omar Kallel
89ff50412e icwmp: 8.0.1 2021-08-11 17:33:47 +01:00
Jakob Olsson
1f839c80bb map-topology: 2.1.6 2021-08-11 14:47:20 +02:00
Jakob Olsson
e3a42fc8cf map-agent: 5.0.4: move iface teardown to platform script 2021-08-11 14:44:32 +02:00
Rahul
8f5d47b5d5 mcastmngr: openwrt 21.02 changes
make iptv work with openwrt 21.02 lift
2021-08-11 17:22:31 +05:30
Amin Ben Ramdhane
5bab70dee7 bbf: 4.5.1 2021-08-10 11:48:39 +01:00
sverma
e1b385b676 wfadatad: 4.0.8 2021-08-10 13:24:52 +05:30
vdutta
c55f8790ff uspd: Align with bbf changes 2021-08-09 22:51:17 +05:30
Omar Kallel
1171e41fe5 bbf: 4.5.0 2021-08-09 17:56:47 +01:00
Omar Kallel
5ef2844c7b icwmp: 8.0.0-2021-08-09 2021-08-09 17:40:19 +01:00
Grzegorz Sluja
99efedcf0f fixup! dectmngr: Disable dect_cmbs logging to file by default
To enable logging of communication between Host and DECT CMBS target the
following steps needs to be run:
$uci set dectmngr.general.log_dect_cmbs='1'
$uci commit
$/etc/init.d/dectmngr restart

Signed-off-by: Grzegorz Sluja <grzegorz.sluja@iopsys.eu>
2021-08-09 11:33:21 +02:00
Grzegorz Sluja
f5afeba8ac endptmngr: Move endptmngr logging to syslog by default
Signed-off-by: Grzegorz Sluja <grzegorz.sluja@iopsys.eu>
2021-08-09 08:57:41 +02:00
Grzegorz Sluja
0f5dfa0395 dectmngr: Move dectmngr logging to syslog by default
Signed-off-by: Grzegorz Sluja <grzegorz.sluja@iopsys.eu>
2021-08-09 08:56:23 +02:00
Grzegorz Sluja
377e940927 dectmngr: Disable dect_cmbs logging to file by default
To enable logging of communication between Host and DECT CMBS target the
following steps needs to be run:
$uci set asterisk.general.log_dect_cmbs='1'
$uci commit
$/etc/init.d/dectmngr restart

Signed-off-by: Grzegorz Sluja <grzegorz.sluja@iopsys.eu>
2021-08-06 14:14:19 +02:00
Grzegorz Sluja
41df4b3105 endptmngr: Add support for local source build
Signed-off-by: Grzegorz Sluja <grzegorz.sluja@iopsys.eu>
2021-08-06 09:59:48 +02:00
Andreas Gnau
88cc1792d8 iop: genconfig: Remove config options set in targets already
Remove CONFIG_TARGET_MULTI_PROFILE=y and
CONFIG_TARGET_PER_DEVICE_ROOTFS=y that were hardcoded in genconfig and
genconfig_min. Since feeds/targets commit 295d1566 (treewide: Add
MULTI_PROFILE and PER_DEVICE_ROOTFS config, 2021-08-05), the options are
added in feeds/targets.

Also bring the unmaintainable copy-paste of genconfig that is
genconfig_min in sync with genconfig with regards target-specific config
options.
2021-08-05 17:21:18 +02:00
vdutta
b775d2b45b swmodd: Fix opkg dependencies in iopsys template 2021-08-05 18:19:59 +05:30
Jakob Olsson
28e3fc9223 map-topology: 2.1.5 2021-08-05 13:21:50 +02:00
Jakob Olsson
1f6145e16b ieee1905: 3.3.3 2021-08-05 13:21:00 +02:00
sverma
44fbd4c993 wfadatad: 4.0.7 2021-08-05 11:26:21 +05:30
Jakob Olsson
a082f44bba map-agent: 5.0.3 2021-08-04 16:13:14 +02:00
Lukasz Kotasa
a06e9017bd iopsys-econet: Clean warnings in genconfig 2021-08-04 12:03:28 +00:00
Andreas Gnau
860d5c40a6 Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* cc2831a Support FIT-images with embedded data
-------------------------------------------------------------------------------
commit cc2831addca083f86c74fbaec2630d080c981aa4
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-07-21 15:30:53 +0200

    Support FIT-images with embedded data

    Support the older way of storing image data directly inside the FIT rather
    than after the FIT specified by offset or absolute position.

Base directory -> /
 fdtextract.c | 43 +++++++++++++++++++++++++------------------
 1 file changed, 25 insertions(+), 18 deletions(-)
-------------------------------------------------------------------------------
2021-08-03 15:07:05 +02:00
Amin Ben Ramdhane
7dcc594fba bbf: 4.4.1 2021-08-02 13:32:51 +01:00
vdutta
9ebc827e85 swmodd: Added iopsys lxc template 2021-07-30 15:51:49 +05:30
Amit Kumar
7002da04e2 libqos: updated package version 2021-07-30 14:41:13 +05:30
Omar Kallel
e47a300305 icwmp: 7.4.2-2021-07-29 2021-07-29 14:31:31 +01:00
Amit Kumar
40a04b8615 qosmngr: Makefile package version updated 2021-07-29 17:02:06 +05:30
Amit Kumar
c45a0ceae4 libqos: updated package version and commit hash 2021-07-29 16:48:58 +05:30
Grzegorz Sluja
a4f53e11da Update package dectmngr
Add entry in Line Status and Diagnostic List
2021-07-29 09:43:59 +02:00
Arun Muthusamy
2936f538aa Bug_5569: FIx, unknown operand & argument expected warnings 2021-07-27 14:47:42 +02:00
Janusz Dziedzic
49634a0c0e kick easy-soc-libs
14.0.1

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-07-23 12:46:36 +00:00
vdutta
c191553de2 swmodd: Align with bbf changes 2021-07-23 16:35:26 +05:30
vdutta
04b0490017 uspd: Align with bbf changes 2021-07-23 16:23:36 +05:30
Amin Ben Ramdhane
984f5454ef bbf: 4.4.0 2021-07-23 11:13:50 +01:00
vdutta
3f60546197 bbf: 4.3.9
- Fix firewall rule time
 - Updated bbf tools
2021-07-21 18:05:47 +05:30
Grzegorz Sluja
33a8f7fe81 Update package dectmngr
Do not restart registration on timeout
2021-07-21 12:32:04 +02:00
Sukru Senli
ae1a0b0738 sulu: do not overwrite nginx config for sulu section if already exists 2021-07-16 20:19:03 +02:00
Oussama Ghorbel
04205b9ac2 iopsys_ramips: switch to CONFIG_TARGET_PER_DEVICE_ROOTFS 2021-07-16 17:00:18 +02:00
Amin Ben Ramdhane
55fd3f6241 bbf: 4.3.8 2021-07-16 14:06:24 +01:00
Jomily K Joseph
7bab39b4b2 qosmngr : Shaper rate configuration needs to be in kbps 2021-07-16 07:51:13 +00:00
Sukru Senli
095a635ac2 qosmngr: add PKG_VERSION to PKG_SOURCE 2021-07-15 20:07:47 +02:00
Amin Ben Ramdhane
f1a9452b56 bbf: 4.3.7 2021-07-15 11:40:32 +01:00
nevadita.chatterjee
cdd1f7ab75 map-topology:2.1.4 2021-07-15 15:04:58 +05:30
Rahul
f709852ae3 qosmngr: resolve vlan qos issues
In 5.04, broadcom seems to have removed the support for skbvlan extension
from the kernel, although its presence still in the userspace application
is confusing, ideally, it should be removed from the userspace application
as well. Instead of skbvlan, the vlan extension is used for configuring the
vlan qos.

Hence, the qosmngr is updated to use vlan extension instead of skbvlan.
2021-07-15 12:09:19 +05:30
Andreas Gnau
b84033c641 iop: ssh_(install_key): Unify scripts and rework
Unify the iop-subcommands install_key and ssh_install_key to one script.
In addition:

* Support new key types such as ssh-ed25519 which is supported by
  Dropbear nowadays. Also add unsupported ones to make them work
  automatically in the future.
* For the install_key command, do not re-add keys already added
* Read keys loaded into SSH Agent as well, which is useful when working
  with agent forwarding on a remote host or in a Docker container.
* For the ssh_install_key command also add keys added manually to the
  build dir.
2021-07-14 18:02:17 +02:00
Amit Kumar
aadbbda3e9 mcast: updated verion for change to remove lan_to_lan option 2021-07-14 09:33:27 +05:30
Amit Kumar
c9e6cf8428 mcast: removed lan_to_lan option 2021-07-14 03:23:39 +00:00
Amit Kumar
7265b88a70 mcast: correction for warning message in mcast restart.
removed the bcmmcastctl cli call for l2l option that is not supported.
2021-07-14 03:23:39 +00:00
vdutta
ec3128865b sulu: Added init file to publish usp endpointid 2021-07-13 20:56:56 +05:30
vdutta
78c895f23a obuspa: Remove dependency of mosquitto_pub in init 2021-07-13 20:53:46 +05:30
Janusz Dziedzic
f87742703b kick wifimngr and easy-soc-libs
Kick to newer version.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-07-13 10:19:45 +00:00
Grzegorz Sluja
27e2d73ae1 Update package [ endptmngr ]
Add lineId information on ubus response for get rtp_stats
Enable RTCP-XR packets in brcm connection creation
2021-07-13 11:05:29 +02:00
Jakob Olsson
3de93cf5c2 map-controller: 4.0.1 2021-07-09 15:58:56 +02:00
Jakob Olsson
4b0041f6fd map-agent: 5.0.2 2021-07-09 15:57:34 +02:00
vdutta
f020406a90 obuspa: Override default roles if present in json 2021-07-09 18:04:06 +05:30
nevadita.chatterjee
74b15fdca3 map-topology: 2.1.3 2021-07-09 15:33:37 +05:30
Jakob Olsson
e113ff5534 wfadatad: 4.0.6 2021-07-08 15:55:13 +02:00
Jakob Olsson
4e3216e405 Revert "wfadatad: 4.0.6"
This reverts commit 58c8fe5bb4.
2021-07-08 15:54:50 +02:00
Jakob Olsson
58c8fe5bb4 wfadatad: 4.0.6 2021-07-08 15:44:21 +02:00
Jakob Olsson
5cf12fea90 map-topology: 2.1.2 2021-07-08 15:42:28 +02:00
Jakob Olsson
ca74205ac1 map-controller: 3.0.13 2021-07-08 13:54:39 +02:00
Jakob Olsson
c8b670737a map-controller: 3.0.12 2021-07-08 13:04:53 +02:00
Jakob Olsson
89314cae0b ieee1905: remove '22' identifier from map header files 2021-07-08 10:43:46 +02:00
Anjan Chanda
d85d2048c0 map-agent: 5.0.1 2021-07-08 10:43:46 +02:00
Amit Kumar
426a2b89a3 urlfilter: iptable and ip6tables rules for DNS added
in FORWARD chain.
2021-07-06 12:26:56 +05:30
Amin Ben Ramdhane
1a8a95e2f6 icwmp: 7.4.1-2021-07-05 2021-07-05 13:35:14 +01:00
Amin Ben Ramdhane
cec2fe6f92 bbf: 4.3.6 2021-07-05 13:33:07 +01:00
Jakob Olsson
dba7f1f97c map-agent: 4.1.3 2021-07-05 12:59:51 +02:00
Sukru Senli
15a5c5dedf sulu: 0.2.17 2021-07-05 11:48:28 +02:00
Sukru Senli
0c20ed1c78 urlfilter: flush conntrack only if urlfilter is enabled 2021-07-05 11:35:38 +02:00
Anjan Chanda
6995815f77 ieee1905: 3.3.2 2021-07-02 16:28:59 +02:00
Rahul
eb8d678e0f periodicstats: fix memory leak
fix memory leak and other general improvements
2021-07-02 18:22:22 +05:30
Jakob Olsson
f831eb5259 map-agent: 4.1.2 2021-07-02 13:04:34 +02:00
Omar Kallel
3a19aca30f icwmp: 7.4.0-2021-07-01 2021-07-01 18:48:41 +01:00
Anjan Chanda
4a039722fc ieee1905: 3.3.1 2021-07-01 16:51:34 +02:00
Anjan Chanda
6a51fb87de ieee1905: 3.3.0 2021-07-01 15:05:56 +02:00
Jakob Olsson
6eb4364b48 map-topology: 2.1.1 2021-07-01 14:09:24 +02:00
Jakob Olsson
730335f7d2 map-agent: 4.1.1 2021-07-01 11:32:30 +02:00
Erik Karlsson
9775ac0bb4 map-agent: rework loop prevention script to use wpa_cli instead of UCI 2021-07-01 11:30:52 +02:00
Yalu Zhang
0c779bb73b Update package dectmngr
Change status for dect.base registration ubus events
2021-07-01 09:54:29 +02:00
Yalu Zhang
9d8957d853 Update package dectmngr
Add UBUS events for base registration
2021-06-30 17:27:40 +02:00
Amin Ben Ramdhane
bb9cfdf487 bbf: 4.3.5 2021-06-30 14:40:40 +01:00
vdutta
dcb6cad37d obuspa: Align with mosquitto config 2021-06-30 19:08:07 +05:30
Jakob Olsson
379d6b878b map-agent: 4.1.0 2021-06-30 13:33:14 +02:00
Jakob Olsson
1e0e15653a map-topology: 2.1.0 2021-06-30 13:12:31 +02:00
Amit Kumar
bd25c841d4 urlfilter: Updated Makefile for issue fix for ipv6 support. 2021-06-30 09:51:26 +05:30
Jakob Olsson
5a67915eec ieee1905: 3.2.1 2021-06-29 14:27:11 +02:00
Jakob Olsson
f78381e0d2 map-controller: 3.0.11 2021-06-29 14:17:12 +02:00
Jakob Olsson
c657b6cd76 map-agent: 4.0.16 2021-06-29 14:15:54 +02:00
vdutta
cdb6bed47c uspd: Updated logging 2021-06-29 10:21:02 +05:30
vdutta
fe8ac41906 swmodd: Datamodel improvements 2021-06-29 10:20:03 +05:30
vdutta
b0c0230535 obuspa: Update init script for enabled parameter 2021-06-29 10:16:28 +05:30
Jakob Olsson
36ae18c95b map-agent: 4.0.15 2021-06-28 11:25:16 +02:00
Jakob Olsson
963af3d4b5 ieee1905: remove macaddress from default ieee1905
This will be set by uci-default or default to auto
2021-06-28 10:33:26 +02:00
Sukru Senli
08825a3914 crun: version 0.20 2021-06-27 16:28:13 +02:00
vdutta
cd3c3669c3 uspd: Allow DynOperate to call dmoperate functions 2021-06-26 23:48:16 +05:30
jjoseph
8141f9d62c dslmngr: 1.1.1
Fix Device.FAST.Line.{i}.Stats. showing 0
2021-06-25 17:31:35 +02:00
Omar Kallel
2603da87a7 icwmp: 7.3.0-2021-06-25 2021-06-25 15:33:32 +01:00
vdutta
98a9ee7ba5 swmodd: Use libbbf_api to expose SoftwareModules DM 2021-06-25 17:53:33 +05:30
Amit Kumar
8dd0627a3f urlfilter: Updated Makefile for ipv6 support. 2021-06-25 17:21:19 +05:30
Amit Kumar
bf73f20997 [iopsys] [urlfilter]
ip6tables rules addition for dns,http,https packets to nfqueue.
2021-06-25 11:29:15 +00:00
Markus Gothe
ecba6c9067 Use the actual HW platform for generating QoS config.
We need to use 'brcm_fw_tool' instead of /proc/cpuinfo
to check the hardware platform. The /proc/cpuinfo API
is not stable. It only works as expected for BCM96846.
2021-06-25 11:20:19 +00:00
Jakob Olsson
2778420bcd map-agent: issue topology discovery over vlan interfaces upon port up 2021-06-25 11:17:40 +00:00
Anjan Chanda
abc2c6c233 ieee1905: 3.2.0 2021-06-25 09:12:12 +02:00
Anjan Chanda
3c96d7d3b9 easy-soc-libs: 6.2.33 2021-06-25 09:11:13 +02:00
Suru Dissanaike
a0165dcc73 SULU: updated package to 0.2.16 2021-06-24 16:16:51 +00:00
Suru Dissanaike
5ae47c1892 SULU: update package to 0.2.15 2021-06-24 16:11:07 +00:00
Amin Ben Ramdhane
882d6911d4 icwmp: 7.2.1-2021-06-24 2021-06-24 14:54:57 +01:00
Amin Ben Ramdhane
6e49e15db6 bbf: 4.3.4 2021-06-24 14:53:34 +01:00
Suru Dissanaike
c1f4516d8e SULU: update package to 0.2.14 2021-06-23 13:29:19 +00:00
Jakob Olsson
26a05cbb75 ieee1905: 3.1.1 2021-06-23 14:09:10 +02:00
nevadita.chatterjee
30baf028d7 topology: 2.0.7: add host global config 2021-06-23 12:00:56 +02:00
jjoseph
678d8ad567 Update feed [iopsys] package [dslmngr] 2021-06-23 11:43:51 +05:30
Amin Ben Ramdhane
47f5c981f7 bbf: 4.3.2 2021-06-22 15:31:09 +01:00
sverma
656f9fb27b wfadatad: modified wfadatad init script. 2021-06-22 15:30:47 +05:30
Anjan Chanda
402669463a wfadatad: 4.0.5 2021-06-21 20:40:45 +02:00
Jakob Olsson
f9b9d172ef map-agent: 4.0.14 2021-06-21 15:21:43 +02:00
Jakob Olsson
6a8445c545 map-agent: fix multiap script sync credentials 2021-06-21 15:20:53 +02:00
Yalu Zhang
92addd0ba0 Update package: dectmngr
Set the region of the DECT base station
2021-06-18 16:57:39 +02:00
Grzegorz Sluja
4f061b4b66 Update package [ endptmngr ]
Add ubus call to get RTP stats from brcm
Event enabled for voice
2021-06-18 15:58:12 +02:00
sverma
bc3991024d wfadatad: 4.0.4 2021-06-18 19:20:51 +05:30
sverma
e42b1097a1 wfadatad: 4.0.3 2021-06-18 18:21:18 +05:30
Anjan Chanda
84bd79bdd6 easy-soc-libs: 6.2.32 2021-06-18 14:49:05 +02:00
vdutta
156fd4f766 uspd: Transaction commit with restart service option 2021-06-18 16:10:53 +05:30
Anjan Chanda
3fc4b8a73e ieee1905: 3.1.0 2021-06-18 12:11:56 +02:00
Jakob Olsson
3706e0b9ef map-topology: 2.0.6 2021-06-18 12:04:34 +02:00
Jakob Olsson
5017b9155e map-controller: 3.0.10 2021-06-18 12:03:42 +02:00
Jakob Olsson
f1a24d7008 map-agent: 4.0.13 2021-06-18 12:03:32 +02:00
Omar Kallel
11efefb309 icwmp: 7.2.0-2021-06-18 2021-06-18 09:17:07 +01:00
Yalu Zhang
864c69d8ae Update package: dectmngr
Set model-id
2021-06-18 09:39:18 +02:00
sverma
66290ca8bb wfadatad: refresh dataelements in every 15 sec. 2021-06-18 12:45:58 +05:30
Anjan Chanda
3a603c64eb wifimngr: 11.2.0 2021-06-17 11:30:07 +02:00
Amin Ben Ramdhane
904cc86836 bbf: 4.3.1 2021-06-17 10:10:55 +01:00
Jakob Olsson
a6b4cccfcc map-agent: hotplug: send topology discovery on eth link up 2021-06-17 09:38:31 +02:00
Jakob Olsson
1ba929a1bc map-agent: 4.0.12 2021-06-17 09:22:16 +02:00
Sukru Senli
27db3c5545 iop: deselect iopupgrade 2021-06-16 17:48:54 +02:00
Sukru Senli
c0d178f2a5 iopupgrade: remove unused package 2021-06-16 17:43:35 +02:00
Anjan Chanda
b76cf64e03 wifimngr: 11.1.1 2021-06-16 11:43:16 +02:00
Anjan Chanda
cb0f28ef56 easy-soc-libs: 6.2.30 2021-06-16 11:38:28 +02:00
Amin Ben Ramdhane
cad2b4be1f bbf: 4.3.0 2021-06-15 23:46:22 +01:00
Yalu Zhang
1b3b27088b Update package: dectmngr
Redesign DECT UBUS events
2021-06-15 17:16:53 +02:00
Jakob Olsson
52ede67c78 map-controller: 3.0.9 2021-06-15 14:54:02 +02:00
Jakob Olsson
da710a8ea5 ieee1905: 3.0.7 2021-06-15 14:53:21 +02:00
Jakob Olsson
e0685ee791 map-agent: 4.0.11 2021-06-15 14:52:55 +02:00
Sukru Senli
77d1a1fe79 Revert "iop: deselect luci-nginx and sulu"
This reverts commit 4a088ffd1c.
2021-06-14 21:08:10 +02:00
Jonas Höglund
f8af9dc5ec Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* 573bf95 Only read the FIT header when possible to speed up reading attributes.
-------------------------------------------------------------------------------
commit 573bf9543f8dc792b6d5dc8760cb69c64f11e932
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-06-11 16:42:26 +0200

    Only read the FIT header when possible to speed up reading attributes.

Base directory -> /
 fdtextract.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 48 insertions(+), 8 deletions(-)
-------------------------------------------------------------------------------
2021-06-14 14:29:56 +02:00
Jakob Olsson
2948186053 map-agenmt: 4.0.10 2021-06-14 12:23:56 +02:00
Jakob Olsson
7750caf7f5 map-controller: 3.0.8 2021-06-14 12:23:56 +02:00
Sukru Senli
317145634e easy-soc-libs: 6.2.28 2021-06-12 12:32:36 +02:00
Jakob Olsson
a0bca11b5e wfadatad: 4.0.2 2021-06-11 16:14:35 +02:00
Amin Ben Ramdhane
b92491464e bbf: Fix Freq conversion to hexbin for ieee1905 2021-06-11 15:10:12 +01:00
Suru Dissanaike
f9e82d7b5b sulu: update package to version 0.2.13 2021-06-11 13:55:59 +00:00
Suru Dissanaike
6ce90a657e Revert "Update Makefile"
This reverts commit 00f9ef780c
2021-06-11 13:55:16 +00:00
Suru Dissanaike
00f9ef780c Update Makefile 2021-06-11 13:54:19 +00:00
Anjan Chanda
ae820c047d easy-soc-libs: 6.2.27 2021-06-11 15:47:18 +02:00
Anjan Chanda
c00060ccd6 wifimngr: 11.1.0 2021-06-11 15:46:56 +02:00
Anjan Chanda
99fe0ef701 ieee1905: 3.0.6 2021-06-11 15:28:25 +02:00
Omar Kallel
3272f6a7ca icwmp: update init file 2021-06-11 14:26:41 +01:00
Jakob Olsson
be779fb032 map-topology: 2.0.5 2021-06-11 15:14:35 +02:00
Jakob Olsson
cdaa705bf2 map-controller: 3.0.7 2021-06-11 15:14:35 +02:00
Jakob Olsson
b25640f5cd map-agent: 4.0.9 2021-06-11 15:14:35 +02:00
Amin Ben Ramdhane
3e1eb2c26a bbf: 4.2.8 2021-06-11 14:00:34 +01:00
vdutta
502a2208da obuspa: Fix DM object values and caching interval
- Adaptive caching time interval for dm objects from ubus
 - Fix minor issues in datamodel value registered from obuspa
2021-06-11 18:27:47 +05:30
Omar Kallel
f5b4997f5a icwmp: 7.1.1-2021-06-01 2021-06-11 11:26:34 +01:00
Sukru Senli
7f3363ed1b iop: update_package: if feed is given, update feeds.conf for that feed only 2021-06-11 11:06:00 +02:00
Sukru Senli
4a088ffd1c iop: deselect luci-nginx and sulu 2021-06-10 17:11:12 +02:00
Jakob Olsson
b3a24bc064 map-topology: 2.0.4 2021-06-10 16:42:15 +02:00
Yalu Zhang
b8b49c884a Update package: dectmngr
Reply an empty "software version identifier" (length=0) to SUOTA request
2021-06-10 16:27:40 +02:00
Jakob Olsson
3bbd300a6f map-agent: 4.0.8 2021-06-10 15:44:24 +02:00
Amin Ben Ramdhane
228e5d6e2c bbf: Align with ieee1905 object 2021-06-10 13:45:55 +01:00
Amin Ben Ramdhane
5073a86a81 bbf: 4.2.6 2021-06-10 10:27:47 +01:00
Jakob Olsson
09fb98d1a8 map-controller: 3.0.6 2021-06-10 11:14:35 +02:00
Jakob Olsson
c8fcae0267 map-agent: 4.0.7 2021-06-10 11:14:35 +02:00
Jakob Olsson
bb1a867ba9 ieee1905: 3.0.4 2021-06-10 11:14:35 +02:00
Sukru Senli
12f7b56d8e Revert "iop: deselect luci-nginx and sulu"
This reverts commit 9e7915e0b8.
2021-06-09 18:49:31 +02:00
Jakob Olsson
9b9b69db8f map-controller: 3.0.5 2021-06-09 15:24:24 +02:00
Jakob Olsson
bfd89fed46 map-agent: 4.0.6 2021-06-09 12:29:42 +02:00
Jakob Olsson
6b3dd5818f map-controller: 3.0.4 2021-06-09 10:15:48 +02:00
Jakob Olsson
fdd1dca318 map-controller: 3.0.3 2021-06-08 17:44:42 +02:00
Yalu Zhang
598b38c030 Updage package: dectmngr
Remove argument "base" from dect.base.1 UBUS methods
2021-06-08 17:34:12 +02:00
Jakob Olsson
3faff63044 wfadatad: 4.0.1 2021-06-08 14:14:24 +02:00
Jakob Olsson
8f7c3669b4 ieee1905: 3.0.3 2021-06-08 14:14:24 +02:00
Jakob Olsson
f719073b64 map-controller: 3.0.2 2021-06-08 14:14:24 +02:00
Jakob Olsson
38324be853 map-agent: 4.0.5 2021-06-08 14:14:24 +02:00
Yalu Zhang
eda07c2623 Update package: dectmngr
Add some handset info in the sqlite3 database
2021-06-08 14:08:31 +02:00
Jakob Olsson
8e57bbc89b map-agent: 4.0.4 2021-06-07 11:03:21 +02:00
Anjan Chanda
d96302eea4 wifimngr: 11.0.0 2021-06-05 10:55:00 +02:00
Anjan Chanda
d808393085 easy-soc-libs: 6.2.20 2021-06-05 10:44:00 +02:00
Jakob Olsson
be10424499 map-controller: 3.0.1 2021-06-04 17:39:06 +02:00
Jakob Olsson
885f7f1239 map-agent: 4.0.3 2021-06-04 17:38:14 +02:00
Jakob Olsson
3267182a19 map-agent: 4.0.2 2021-06-04 17:35:34 +02:00
Amin Ben Ramdhane
1b5c95d390 bbf: 4.2.5 2021-06-04 16:30:02 +01:00
vdutta
ab22b4c6b1 uspd: Added longjump to prevent segfaults 2021-06-04 20:03:39 +05:30
Omar Kallel
58734bc8f3 icwmp: 7.1.0-2021-06-04 2021-06-04 15:05:06 +01:00
Jakob Olsson
16a80f24ec map-agent: 4.0.1 2021-06-04 15:53:02 +02:00
Jakob Olsson
9f23a4e63c wfadatad: 4.0.0 2021-06-04 12:29:26 +02:00
Jakob Olsson
2154f7c134 map-controller: 3.0.0: version bump 2021-06-04 12:26:23 +02:00
Jakob Olsson
1327943b0d map-agent: 4.0.0 2021-06-04 12:26:11 +02:00
Jakob Olsson
3511b47856 ieee1905: 3.0.2 2021-06-04 12:25:59 +02:00
Shubham Sharma
d9ddb5f128 periodicstatsd : default global sample interval for implementing calculation mode 2021-06-04 12:32:49 +05:30
Sukru Senli
9e7915e0b8 iop: deselect luci-nginx and sulu 2021-06-03 17:34:13 +02:00
Amin Ben Ramdhane
df488dcfb4 bbf: 4.2.4 2021-06-03 12:28:41 +01:00
Sukru Senli
529cb0aeb2 iop: config: remove reference to non-existent packages 2021-06-02 19:24:20 +00:00
Yalu Zhang
5ab09d60df Update package: dectmngr
Add UBUS method "base_reset"
2021-06-02 17:41:37 +02:00
Jakob Olsson
f7121e0e84 map-agent: multiap script func to sync ieee1905 creds 2021-06-02 17:37:46 +02:00
Suru Dissanaike
9f632e96a7 sulu: added nginx conf for fileupload 2021-06-02 14:57:57 +02:00
Yalu Zhang
64d79c39bc Update package: dectmngr
Add more UBUS methods
2021-06-01 17:02:58 +02:00
Anjan Chanda
ae15ae5dd7 wfadatad: 3.3.4 2021-05-31 21:20:33 +02:00
Anjan Chanda
313fb95cdd map-topology: 2.0.3 2021-05-31 21:20:33 +02:00
Anjan Chanda
b56536c1e0 map-controller: 2.4.19 2021-05-31 20:53:24 +02:00
Anjan Chanda
5a6c51162c map-agent: 3.5.27 2021-05-31 20:51:53 +02:00
Anjan Chanda
358b411758 map-1905: remove ieee1905-meshcomm compat plugin 2021-05-31 20:46:40 +02:00
Anjan Chanda
d3dbf90646 ieee1905: 3.0.1 2021-05-31 20:43:15 +02:00
Sukru Senli
8539d6cfe8 ieee1905-meshcomm: remove old ieee1905 stack 2021-05-29 19:20:36 +02:00
Sukru Senli
7c173a7357 ieee1905: version and license correction for new the stack 2021-05-29 19:16:18 +02:00
Jakob Olsson
219d8e7557 map-agent: workaround: wait for wifi and sleep to let radios initialize 2021-05-28 18:26:26 +02:00
Jakob Olsson
10a7f18099 ieee1905: add back init.d script and fix default config 2021-05-28 17:22:58 +02:00
Jakob Olsson
da2393edec iop: deselect old ieee1905 stack, select new stack 2021-05-28 16:54:19 +02:00
Jakob Olsson
36c46c3717 wfadatad: 3.3.3 2021-05-28 16:40:43 +02:00
Jakob Olsson
6272cb32de ieee1905: install correct directory 2021-05-28 16:38:31 +02:00
Jakob Olsson
9ce26b7f23 wfadatad: remove dependency on non-existing package 2021-05-28 16:38:17 +02:00
Nevadita
15134a7247 topology: 2.0.2 2021-05-28 14:21:47 +00:00
Jakob Olsson
2de708e08b map-controller: 2.4.18 2021-05-28 16:17:56 +02:00
Jakob Olsson
38e5604fed map-agent: 3.5.25 2021-05-28 16:16:49 +02:00
Jakob Olsson
131c152165 ieee1905: 1.0.0 2021-05-28 16:14:09 +02:00
sverma
242327a978 wfadatad: 3.3.2, aligned with new ieee1905. 2021-05-28 19:13:10 +05:30
vdutta
c25e6ab28f obuspa: Updated numentry handling and docs 2021-05-28 18:21:27 +05:30
Oskar Viljasaar
fe1e1af143 taas: Remove usage of CONFIG_TARGET_NAND_BLOCKSZ
This is not used anymore.
2021-05-28 14:25:25 +02:00
Suru Dissanaike
891e294746 Update sulu/Makefile 2021-05-28 08:55:53 +00:00
Suru Dissanaike
61f2920db1 sulu:0.2.10 2021-05-27 18:37:46 +00:00
Suru Dissanaike
ca051ca489 sulu: 0.2.9 2021-05-27 15:52:56 +00:00
Jakob Olsson
afbb5646bd ieee1905: 0.3.3 2021-05-27 17:18:46 +02:00
Jakob Olsson
1647299798 map-controller: 2.4.17 2021-05-27 17:18:46 +02:00
Jakob Olsson
efbdd85054 map-agent: 3.5.24 2021-05-27 17:18:43 +02:00
Jakob Olsson
0b2f5dda9a ieee1905: 0.3.2 2021-05-27 16:30:54 +02:00
Jakob Olsson
bea9ff0f87 rename prj-unish to ieee1905 2021-05-27 16:30:54 +02:00
Jakob Olsson
9bbfeee6aa rename ieee1905 to ieee1905-mescomm 2021-05-27 16:30:54 +02:00
Jakob Olsson
8a1f53463d map-agent/cntlr: add prj-unish dependency 2021-05-27 16:30:54 +02:00
Jakob Olsson
dd41b4b573 map-controller: 2.4.16 2021-05-27 16:30:54 +02:00
Jakob Olsson
abee9b7f90 map-agent: 3.5.22 2021-05-27 16:30:54 +02:00
Jakob Olsson
7bb1e1fabe prj-unish: 0.3.1 2021-05-27 16:30:54 +02:00
Amin Ben Ramdhane
1f06ccede8 bbf: 4.2.3 2021-05-27 15:10:55 +01:00
Rahul
b111eb1246 urlfilter: Update makefile
To include urlfilter daemon improvements.
2021-05-27 19:03:50 +05:30
Rahul
c3eeb956d9 urlfilter: update makefile and fix https filtering
* make use of conntrack to flush exiting tcp connection
* update init file to
    * not accelerate https packets so that they are can be trapped
      by urlfilter daemon
    * flush connections when daemon reloaded
    * make firewall rules more secure
2021-05-27 18:53:01 +05:30
Suru Dissanaike
fdabc69dfa sulu: 0.2.8 2021-05-27 10:16:11 +00:00
vdutta
e4f56f549c obuspa: Updated system cert path 2021-05-27 13:13:54 +05:30
Amin Ben Ramdhane
debc7f9ec6 bbf: 4.2.2 2021-05-26 19:14:55 +01:00
vdutta
0c8cdd6297 uspd: ubus notifications for add/del instances 2021-05-26 21:25:00 +05:30
vdutta
6cecf882b8 obuspa: B#4770 Get is throwing erroneous messages 2021-05-26 21:20:18 +05:30
Amin Ben Ramdhane
4d12bc6833 bbf: 4.2.1 2021-05-25 15:42:59 +01:00
Amin Ben Ramdhane
2dbce56aa9 bbf: 4.2.0 2021-05-25 11:09:38 +01:00
Sukru Senli
00b1d90297 dectmngr: update version and license 2021-05-24 21:59:34 +02:00
Suru Dissanaike
63bb34d06a sulu: fix makefile 2021-05-21 18:19:04 +00:00
Suru Dissanaike
aede464e88 iop: added sulu 2021-05-21 17:17:14 +00:00
Jakob Olsson
6ab355131f map-controller: 2.4.13 2021-05-21 15:58:51 +02:00
Jakob Olsson
8564d6081e map-agent: 3.5.21 2021-05-21 15:58:44 +02:00
Suru Dissanaike
c01d17de44 sulu: 0.2.6 2021-05-21 13:54:59 +00:00
Bartlomiej Grzeskowiak
f5cdc3a3e7 iop: Add iopsys-econet en7562
./iop genconfig en7562

Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
2021-05-21 13:19:14 +00:00
Suru Dissanaike
10b20e8fd4 sulu: package 0.2.5 2021-05-21 10:05:17 +00:00
Sukru Senli
49f3ec4cd4 iop: select periodicstats by default 2021-05-20 20:34:17 +02:00
vdutta
ae23f756ec obuspa: Align role_name with uci 2021-05-20 22:34:11 +05:30
Amin Ben Ramdhane
c7ae8699ca bbf: 4.1.9 2021-05-20 13:03:09 +01:00
Amin Ben Ramdhane
df6a493b47 bbf: 4.1.8 2021-05-19 20:16:05 +01:00
Omar Kallel
14136cd10a icwmp: 7.0.3-2021-05-19 2021-05-19 17:42:32 +01:00
vdutta
923747dc4e obuspa: Integrate OBUSPA-4.0 2021-05-19 18:18:26 +05:30
Suru Dissanaike
efb2c35438 sulu: fixed tabs issue in makefile 2021-05-19 06:12:14 +02:00
Suru Dissanaike
00887c2cfc sulu: fixed config to work with LUCI 2021-05-18 19:15:03 +00:00
Suru Dissanaike
6afb559fe3 sulu: copy files to target 2021-05-18 18:20:41 +00:00
Sukru Senli
be301272fa iop: select luci nginx instead of luci uhttpd 2021-05-18 19:06:16 +02:00
Suru Dissanaike
b2ac4d3a46 sulu: added nginx conf via uci-default script 2021-05-18 18:18:24 +02:00
Jonas Höglund
52b4f37130 Do not touch juci Makefile as it's been removed 2021-05-18 16:03:15 +02:00
Amin Ben Ramdhane
88fc0d3692 bbf: 4.1.7 2021-05-18 13:55:43 +01:00
vdutta
a9c8166acd B#5181: Fix mqtts conn with libmosquitto v2.0.10 2021-05-18 17:52:10 +05:30
Omar Kallel
8e21ad37f7 icwmp: 7.0.2-2021-05-18 2021-05-18 12:41:00 +01:00
Amin Ben Ramdhane
329458ea54 bbf: 4.1.6 2021-05-17 15:42:17 +01:00
Jakob Olsson
aa34cd098e map-controller: only parse for -w flag if mapagent config exists 2021-05-17 16:03:19 +02:00
Yalu Zhang
c2fad5fad2 Update package: dectmngr
Always put the list access database file in /tmp/LA_DB
2021-05-17 14:58:25 +02:00
Rahul
32a9117209 periodicstats: update makefile 2021-05-14 19:11:36 +05:30
Anjan Chanda
0c04b05abe easy-soc-libs: 6.2.19 2021-05-14 15:38:01 +02:00
Shubham Sharma
a8bd624873 periodicstatsd : Changes for periodic statistics.
- missing library files under /usr/lib/bbfdm
	- Added global enable for periodicstats & disabled by default
	- updated to latest devel
2021-05-14 12:45:20 +00:00
vdutta
7a3dee480e bbf: Align ra option tag with dhcp option 2021-05-14 17:46:33 +05:30
Adam Borowski
ff67433326 updated endpoint manager to support howler tone 2021-05-14 13:31:53 +02:00
Sukru Senli
c2627f0005 urlfilter: disable by default 2021-05-14 12:46:23 +02:00
vdutta
eb8152c1c5 icwmp: Align with ubus socket path 2021-05-14 13:21:26 +05:30
Sukru Senli
94f5d5b98b owsd: adapt to ubus socket default path 2021-05-13 22:17:49 +02:00
vdutta
9d5b9d46e2 xmppc: Added test and docs 2021-05-13 23:50:59 +05:30
Suru Dissanaike
de27e0408d sulu: replace nginx with uci default 2021-05-12 19:45:00 +00:00
vdutta
61321b369c obuspa: Fix service entry 2021-05-12 23:42:38 +05:30
vdutta
d5071bf28d uspd: Fix uspd service entry 2021-05-12 23:40:37 +05:30
vdutta
b87959cc61 stunc: Added stun related params
- Moved stun related datamodel parameters from bbf to stunc
- Rename/align stun uci with package
- Updated schema and docs
2021-05-12 23:37:29 +05:30
vdutta
567e6d9870 bbf: Refactor stun related parameters to stunc 2021-05-12 23:35:22 +05:30
Anjan Chanda
13ed87c4be prj-unish: 1.0.0 2021-05-12 14:53:41 +02:00
Anjan Chanda
b084d4498b wifimngr: 10.0.4 2021-05-12 14:52:28 +02:00
Anjan Chanda
14253e84ac easy-soc-libs: 6.2.18 2021-05-12 14:51:16 +02:00
Suru Dissanaike
163c543147 sulu: avoid conflict with luci 2021-05-12 12:16:23 +00:00
Sukru Senli
7af90d69ee iop: switch from juci to luci as default webui 2021-05-12 13:12:14 +02:00
Sukru Senli
4e1a1c45a0 owsd: disable by default 2021-05-12 13:11:50 +02:00
Jakob Olsson
40612ae2ef map-topology: 2.0.1 2021-05-12 12:39:30 +02:00
Suru Dissanaike
2aae4c8109 sulu: added nginx dependency 2021-05-12 11:23:57 +02:00
Suru Dissanaike
4fe198c7bf sulu: changed path of nginx.conf 2021-05-12 11:20:40 +02:00
Suru Dissanaike
f514d81709 sulu: added nginx conf for port 8080 2021-05-12 09:16:58 +00:00
Jakob Olsson
2e6ac5bb49 rulengd: 1.2.3 2021-05-12 10:42:13 +02:00
Yalu Zhang
1d06631503 Update package [ dectmngr ]
Change the design of mapping between term_id, line_id and handset number
2021-05-12 10:12:47 +02:00
Jakob Olsson
dec1cb5146 owsd: 1.1.3 2021-05-12 10:03:18 +02:00
vdutta
1b5be728d2 obuspa: Align with ubus path 2021-05-12 13:29:52 +05:30
vdutta
5915f5a7c3 uspd: Align with ubus and event support 2021-05-12 13:27:56 +05:30
Jakob Olsson
1d41fce2a3 owsd: use NULL socket by default 2021-05-12 09:26:58 +02:00
Jakob Olsson
02fa994bce map-topology: 2.0.0 2021-05-12 08:58:19 +02:00
Sukru Senli
bed1a643a5 urlfilter: add dependency to iptables-mod-nfqueue 2021-05-12 00:10:21 +02:00
Sukru Senli
c8a33d6aaf endptmngr: 0.5
give silabs driver include path explicitly
2021-05-11 23:43:55 +02:00
Amin Ben Ramdhane
6ce52f1c87 bbf: 4.1.3 2021-05-11 19:57:28 +01:00
Jakob Olsson
a74127ade7 map-topology: 1.5.23 2021-05-11 16:46:34 +02:00
Sukru Senli
3095a304be imonitor: 1.0.1
adapt to new default ubus sock path
2021-05-11 15:56:56 +02:00
Suru Dissanaike
ae26c1e9a8 sulu: update makefile for vite settings 2021-05-11 11:42:28 +00:00
Suru Dissanaike
64dbe2aac5 sulu: 0.2.3 2021-05-11 11:40:46 +00:00
Suru Dissanaike
6cad2afe3a sulu: 0.2.2 2021-05-11 10:32:53 +00:00
Yalu Zhang
501193da98 Rename etc/init.d/dect to etc/init.d/dectmngr
Also remove some files for USB DECT sound driver configuration
2021-05-11 11:15:35 +02:00
Sukru Senli
21cabf5141 endptmngr: remove copyright from init script 2021-05-11 10:59:29 +02:00
Sukru Senli
aa91b4d17e endptmngr: add init script and remove ENDPT_OPEN 2021-05-11 10:58:17 +02:00
jjoseph
119f285d84 Update feed [iopsys] package [urlfilter] 2021-05-11 10:00:52 +05:30
Suru Dissanaike
75bbf1524a sulu: update pkg_version 2021-05-10 13:41:57 +00:00
Suru Dissanaike
082bf1560d Update Makefile 2021-05-10 13:29:39 +00:00
jjoseph
fec3683f7c urlfilter : Change permission of init.d file 2021-05-10 14:18:52 +05:30
Marin Karamihalev
8a02e8dedf Update Makefile 2021-05-07 13:11:28 +00:00
Bartlomiej Grzeskowiak
1c9afee81c iopsys-mediatek: Add iopsys-mediatek (bpi_bananapi-r64)
- ./iop genconfig -c bpi_bananapi-r64
2021-05-07 11:15:39 +00:00
Sukru Senli
97e44aac0a iop: genconfig: fix juci makefile path 2021-05-06 18:43:23 +02:00
Sukru Senli
8aa7978f70 easy-soc-libs: remove intel dependency 2021-05-06 18:01:17 +02:00
Sukru Senli
8319f90d8b juci: move from juci to iopsys feed 2021-05-06 17:27:17 +02:00
Sukru Senli
989ff55cc7 bulut: move from 3rdparty to iopsys feed 2021-05-06 17:14:06 +02:00
Sukru Senli
0e8ecee541 sulu: move from 3rdparty to iopsys feed 2021-05-06 17:13:53 +02:00
Yalu Zhang
e82f77983d Update package [ dectmngr ]
Explicitly enable the encryption between the base station and handsets
2021-05-06 14:44:21 +00:00
Andreas Gnau
181b7688e8 Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* 485a38b Merge branch 'agnau-print-to-stderr' into 'master'
* bedf694 Print errors to stderr instead of stdout
-------------------------------------------------------------------------------
commit 485a38bc4eaf2a54d080b8529d5130b2955626d1
Author: Jonas Höglund <jonas.hoglund@iopsys.eu>
Date: 2021-05-05 15:06:22 +0000

    Merge branch 'agnau-print-to-stderr' into 'master'

    Print errors to stderr instead of stdout

    See merge request iopsys/fdtextract!1
Base directory -> /
 fdtextract.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
-------------------------------------------------------------------------------
commit bedf694df0eee164f3b21f3bbffaf4dc379fa002
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-05-05 10:16:41 +0200

    Print errors to stderr instead of stdout

Base directory -> /
 fdtextract.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)
-------------------------------------------------------------------------------
2021-05-06 13:45:29 +02:00
Yalu Zhang
c8de1c1d35 Update package [ dectmngr ]
Reject SUOTA request from the base station as it may cause handset hang
2021-05-05 15:33:22 +00:00
Sukru Senli
8540d5ebbf crun: use openwrt upstream version 2021-05-05 00:16:58 +02:00
Amin Ben Ramdhane
c48cd18584 bbf: 4.1.2 2021-05-04 16:14:32 +01:00
Jakob Olsson
3ccc71658f map-controller: 2.4.12 2021-05-04 11:10:33 +02:00
Amin Ben Ramdhane
c9f0c9c92b bulkdata: fix compilation error 2021-05-04 09:14:01 +01:00
Amin Ben Ramdhane
18ff1d3965 bbf: 4.1.1 2021-05-03 19:06:44 +01:00
Andreas Gnau
d6bb313565 iop: Remove tc
The tc-utility from iproute2 is seldomly needed. In OpenWrt 21.02 there
are two variants, tc-full and tc-tiny, but since it is not needed,
remove it.
2021-05-03 16:46:58 +02:00
Jakob Olsson
13d33c03a2 map-agent: add loop detection script 2021-05-03 15:03:58 +02:00
Anjan Chanda
0a91cd5acb wfadatad: 3.3.1 2021-05-03 09:58:12 +02:00
vdutta
ad0867991f stunc: Added ci and docs 2021-04-30 20:48:56 +05:30
Andreas Gnau
18545a1fb9 iop: Remove usbreset from config
usbreset has been moved to the usbutils package, but it is not needed,
anyways. Remove it.
2021-04-30 11:35:01 +02:00
Andreas Gnau
0378afa773 iop: Remove alsa-lib from config
One of its dependencies causes issues and alsalib is not used by
anything.
2021-04-30 11:35:01 +02:00
Jakob Olsson
06b4b106e1 map-agent: 3.5.20 2021-04-30 11:33:00 +02:00
Jakob Olsson
916ecab7c9 map-agent: 3.5.19 2021-04-29 18:39:12 +02:00
Jakob Olsson
543c3da5dc map-topology: 1.5.22 2021-04-29 14:06:45 +02:00
Anjan Chanda
2bfd924868 wifimngr: 9.3.2 2021-04-28 22:00:22 +02:00
Anjan Chanda
c12bc7eee9 easy-soc-libs: 6.2.12 2021-04-28 21:59:40 +02:00
Jonas Höglund
e9c5c111c5 Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* e92fb43 Enable output of extrated file to stdout.
-------------------------------------------------------------------------------
commit e92fb432f7ec61d8cb2066dba38cf955dcd6c676
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-28 10:06:23 +0200

    Enable output of extrated file to stdout.

Base directory -> /
 fdtextract.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)
-------------------------------------------------------------------------------
2021-04-28 11:14:58 +02:00
Sukru Senli
f6c3a62378 urlfilter: install default config file 2021-04-27 23:00:05 +02:00
Andreas Gnau
362fb7b238 peripheral_manager: Remove bcmkernel dependency
As Broadcom has moved to standard interfaces, peripheral_manager no
longer depends on Broadcom headers or executables.

Remove the dependency and preprocessor options.
2021-04-27 14:21:40 +02:00
Andreas Gnau
020c8f29e1 Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* 785166a Remove BRCM_BOARD define
* 86178d8 Remove prox_px3220 driver
* 6069bf5 Remove vox driver
* 3897735 Remove wlctl driver
* 3aadf4a CMakeLists.txt: Run cmake-format
* 636c4e1 update README for doc portal
* d055dd8 update README.md
-------------------------------------------------------------------------------
commit 785166a9861a119623556163179915727896156b
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-04-23 12:37:22 +0200

    Remove BRCM_BOARD define

    No drivers depend on Broadcom headers anymore, remove the BRCM_BOARD define.

    Peripheral-manager has neither a build nor a runtime dependency on the
    Broadcom SDK.

Base directory -> /
 CMakeLists.txt | 4 ----
 1 file changed, 4 deletions(-)
-------------------------------------------------------------------------------
commit 86178d8dfc51f67b3492ad603106b1fc29d6b285
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-04-23 12:32:39 +0200

    Remove prox_px3220 driver

    This driver is no longer used by any supported target. Remove it.

Base directory -> /
 src/button.c      |  16 -----
 src/prox_px3220.c | 193 ------------------------------------------------------
 src/prox_px3220.h |   9 ---
 src/server.c      |   6 --
 4 files changed, 224 deletions(-)
-------------------------------------------------------------------------------
commit 6069bf5aea4dbb2ebfdd912ebb2d3c95f90ba86c
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-04-21 20:10:06 +0200

    Remove vox driver

    This driver is no longer used by any supported target and neither is it
    built or referenced by any other file. Remove it.

Base directory -> /
 src/vox.c      | 176 --------------------------------------------------------
 src/vox_test.c | 178 ---------------------------------------------------------
 2 files changed, 354 deletions(-)
-------------------------------------------------------------------------------
commit 3897735e4b55bed66a2b4a2ffc3ee3766e502ec5
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-04-21 19:44:50 +0200

    Remove wlctl driver

    This driver is no longer used by any supported target. Remove it.

Base directory -> /
 CMakeLists.txt  |   2 +-
 src/server.c    |   4 --
 src/wlctl_led.c | 133 --------------------------------------------------------
 3 files changed, 1 insertion(+), 138 deletions(-)
-------------------------------------------------------------------------------
commit 3aadf4a6d69ed1db02376e7a20f751e8bbf408c5
Author: Andreas Gnau <andreas.gnau@iopsys.eu>
Date: 2021-04-21 10:49:42 +0200

    CMakeLists.txt: Run cmake-format

    Amongst consistent indendation and following best-practices such as
    lowercase function-names, this puts individual list items on a separate
    line, making diffs easier to read.

Base directory -> /
 CMakeLists.txt | 190 +++++++++++++++++++++++++++++++++++----------------------
 1 file changed, 118 insertions(+), 72 deletions(-)
-------------------------------------------------------------------------------
commit 636c4e1568828d85def657c324c78e341edccaad
Author: Sukru Senli <sukru.senli@iopsys.eu>
Date: 2021-04-11 13:11:29 +0200

    update README for doc portal

Base directory -> /
 README.md                      | 494 ++++++++++-------------------------------
 img/peripheral-manager.png     | Bin 0 -> 60660 bytes
 img/peripheral_led_mapping.png | Bin 0 -> 25497 bytes
 3 files changed, 115 insertions(+), 379 deletions(-)
-------------------------------------------------------------------------------
commit d055dd8a4a3aa53550a1b1f9db94225fe7c0f61b
Author: Benjamin Larsson <benjamin.larsson@iopsys.eu>
Date: 2021-04-11 13:08:18 +0200

    update README.md

Base directory -> /
 README.md | 477 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 420 insertions(+), 57 deletions(-)
-------------------------------------------------------------------------------
2021-04-27 13:44:23 +02:00
Anjan Chanda
10bf43efa9 wfadatad: 3.3.0 2021-04-27 11:51:50 +02:00
Anjan Chanda
5e3a7e7af0 prj-unish: 0.7.0 2021-04-27 11:50:38 +02:00
Anjan Chanda
a76c0a433d wifimngr: 9.3.0 2021-04-27 11:47:53 +02:00
Anjan Chanda
026ccd759e easy-soc-libs: 6.2.10 2021-04-27 11:47:11 +02:00
nevadita.chatterjee
0df9c6fc36 host: Adding sighup for network change 2021-04-27 08:52:15 +00:00
Jakob Olsson
3751ae692a map-topology: 1.5.21 2021-04-27 10:50:24 +02:00
Filip Matusiak
0160f21f10 map-controller: init.d start on reload if not running 2021-04-27 08:48:10 +00:00
Jakob Olsson
52f35c0763 map-agent: 3.5.18 2021-04-27 10:44:44 +02:00
Sukru Senli
e650d27f76 urlfilter: start urlfilter only if globally enabled 2021-04-27 09:50:48 +02:00
Sukru Senli
8d6d7626b8 iop: select urlfilter by default 2021-04-27 09:35:23 +02:00
Jakob Olsson
e6c6b2c9ae rulengd: 1.2.2 2021-04-26 17:10:52 +02:00
Amin Ben Ramdhane
67693a8954 bbf: 4.1.0 2021-04-26 15:24:32 +01:00
Amin Ben Ramdhane
88ed893a07 bbf: 4.0.9 2021-04-23 11:47:10 +01:00
Amin Ben Ramdhane
fd369ac2fb bbf: 4.0.8 2021-04-22 14:50:19 +01:00
Amin Ben Ramdhane
c1bb3a5c0f bbf: 4.0.7 2021-04-22 10:25:26 +01:00
Anjan Chanda
d1d455a51d wifimngr: 9.2.3 2021-04-21 22:21:10 +02:00
Simon Tate
fe63598021 shflags: skip PKG_MIRROR_HASH check
with latest OpenWRT, the mirror hash is now checked, even if dl/ item exists. Adding skip, stops it from always downloading again.
2021-04-21 10:45:58 +00:00
Simon Tate
7853733a75 libtrace: skip PKG_MIRROR_HASH check
with latest OpenWRT, the mirror hash is now checked, even if dl/ item exists. Adding skip, stops it from always downloading again.
2021-04-21 10:45:58 +00:00
Sukru Senli
7d991d89be move bulkdata, twamp and udpechoserver to their individual repos 2021-04-20 19:19:26 +02:00
Sukru Senli
88892e5f7c move xmppc & stunc code to their individual repos 2021-04-20 18:58:47 +02:00
jjoseph
b30434d872 Update feed [iopsys] package [urlfilter] 2021-04-20 19:05:10 +05:30
Sukru Senli
9995b4a3f2 icwmp: remove CONFIG_CWMP_SCRIPTS_FULL 2021-04-16 18:45:31 +02:00
Anjan Chanda
27c515e258 wifimngr: 9.2.1 2021-04-16 16:51:52 +02:00
Marek Puzyniak
8373ffae75 easy-soc-libs: update version and hash
Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>
2021-04-16 13:39:33 +00:00
sverma
888b247706 wfadatad: HE caps support added (3.2.5). 2021-04-16 15:51:34 +05:30
Jakob Olsson
86eed4ba84 map-agent: 3.5.17 2021-04-16 10:18:23 +02:00
Grzegorz Sluja
63335fb119 Update package [ dectmngr ]
Fix dectmngr crash when caller id is empty
2021-04-16 07:44:44 +02:00
Jakob Olsson
bc3dc5c3db map-controller: 2.4.11 2021-04-15 17:30:38 +02:00
Filip Matusiak
0097bc5d89 map-controller: add external trigger logic to init.d 2021-04-15 15:17:00 +00:00
Yalu Zhang
4b04b8445f Update package [ dectmngr ]
Set RFPI value during the start up
2021-04-15 17:08:59 +02:00
Jakob Olsson
317e644e11 3.5.16 2021-04-15 17:08:34 +02:00
Yalu Zhang
1ac9c4f057 Update package [ dectmngr ]
/etc/init.d/dect: gets DECT RFPI from the board DB and passes it to dectmngr
via a command line argument.
2021-04-15 17:05:34 +02:00
Omar Kallel
35f02d2891 icwmp: 7.0.1-2021-04-15 2021-04-15 12:19:44 +01:00
Omar Kallel
067e3dc7b8 icwmp: Fix compiling error 2021-04-15 11:49:06 +01:00
Omar Kallel
3d9cfc03fb icwmp: 7.0.0-2021-04-15 2021-04-15 11:11:02 +01:00
Erik Karlsson
a6c3c54091 mcastmngr: do not overwrite configuration if snooping section exists 2021-04-15 07:57:06 +00:00
Janusz Dziedzic
dbe1a31d09 easy-soc-libs: by default use MAC80211 target
If TARGET_PLATFORM is not set, by default use
MAC80211 target.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-04-14 13:24:16 +00:00
Janusz Dziedzic
d5f0c80b2e update easy-soc-libs
Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-04-14 13:21:51 +00:00
Jakob Olsson
fd60b8121c map-controller: 2.4.10 2021-04-13 15:11:00 +02:00
Jakob Olsson
0001b91c41 map-agent: 3.5.15 2021-04-13 15:10:03 +02:00
Janusz Dziedzic
733c88df8c update easy-soc-libs and wifimngr
kick to newer version

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-04-12 18:35:01 +00:00
Oskar Viljasaar
1d1c8a25f2 iop: select the nohup utility in the busybox config
This is related to the ubus fwbank.upgrade() work as we would
like to implement this function in an asynchronous way.
2021-04-08 15:45:29 +00:00
Jonas Höglund
c47857f950 Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* 152a2d9 Pad hash hex output
-------------------------------------------------------------------------------
commit 152a2d96fea896c1607bd5259e3076750693dd59
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-08 11:00:12 +0200

    Pad hash hex output

Base directory -> /
 fdtextract.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
2021-04-08 11:01:20 +02:00
Sukru Senli
d503d4390e iop: select gre by default 2021-04-08 10:12:52 +02:00
Anjan Chanda
15165b3066 prj-unish: 0.2.0 2021-04-07 15:03:49 +02:00
Jonas Höglund
0fe9ac1a0d Update feed [ iopsys ] package [ fdtextract ]
-------------------------------------------------------------------------------
* a15079b Update README
* 97c3897 Update README
* 31e6cc7 Don't print the algo with the hash.
* 9246b1c Get attribute from root node.
* 1d1556a Print hash algo.
* cdb7ee7 Check hash algo.
* 30d1aed Get hash of image.
* b5bb0eb Extract image to file.
* 34c12c4 Write image to file
* 03328f9 Get size and offset of image.
-------------------------------------------------------------------------------
commit a15079b20b8ded68e5f91f69b79993ef8afd52ab
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-07 09:24:33 +0200

    Update README

Base directory -> /
 README.md | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
-------------------------------------------------------------------------------
commit 97c38977f0f843b02b82c156fbffb56ebd49246c
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-07 09:23:05 +0200

    Update README

Base directory -> /
 README.md | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)
-------------------------------------------------------------------------------
commit 31e6cc7e7ecdc6aec29c99c7feedfb19624f3b59
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-07 09:20:01 +0200

    Don't print the algo with the hash.

Base directory -> /
 fdtextract.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 9246b1c36f083bda292c876273465a7713a5727a
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-07 09:18:09 +0200

    Get attribute from root node.

Base directory -> /
 fdtextract.c | 54 +++++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 47 insertions(+), 7 deletions(-)
-------------------------------------------------------------------------------
commit 1d1556a5b1f5a4206bb24430562227e8727b9d88
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 15:05:11 +0200

    Print hash algo.

Base directory -> /
 fdtextract.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
-------------------------------------------------------------------------------
commit cdb7ee7e3365841bd944b897328cebe441083b9c
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 14:53:19 +0200

    Check hash algo.

Base directory -> /
 fdtextract.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 30d1aedc1643f53ea0465a096f5ed1bf6f94b876
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 14:32:29 +0200

    Get hash of image.

Base directory -> /
 fdtextract.c | 34 +++++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)
-------------------------------------------------------------------------------
commit b5bb0eb23b47298603553e4a99f7c60c59386018
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 13:49:28 +0200

    Extract image to file.

Base directory -> /
 fdtextract.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)
-------------------------------------------------------------------------------
commit 34c12c48bc6900b0c7d70ad95f12fc102507b816
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 11:47:56 +0200

    Write image to file

Base directory -> /
 fdtextract.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 03328f97927199df098cb1fe49efc842d213a7a4
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-06 11:13:28 +0200

    Get size and offset of image.

Base directory -> /
 fdtextract.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
-------------------------------------------------------------------------------
2021-04-07 09:45:24 +02:00
Amin Ben Ramdhane
99a4fe3f05 bbf: 4.0.6 2021-04-06 15:10:52 +01:00
Jonas Höglund
ca1e348b5c Rename dumpimage to fdtextract 2021-04-06 10:46:22 +02:00
Jonas Höglund
550330cb33 Update feed [ iopsys ] package [ dumpimage ]
-------------------------------------------------------------------------------
* 9ca11d5 Check input
-------------------------------------------------------------------------------
commit 9ca11d5171989c728ed80a641c0d405b5db8e96b
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-01 11:10:08 +0200

    Check input

Base directory -> /
 dumpimage.c | 5 +++++
 1 file changed, 5 insertions(+)
-------------------------------------------------------------------------------
2021-04-01 11:12:40 +02:00
Jonas Höglund
e427dd0f09 Fix spelling error 2021-04-01 11:12:06 +02:00
Jonas Höglund
2eb3c89f36 Update feed [ iopsys ] package [ dumpimage ]
-------------------------------------------------------------------------------
* b70c60b Fix compilation
-------------------------------------------------------------------------------
commit b70c60b751e22d8286028fed3c7bfbf4b576cbf0
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-04-01 10:52:38 +0200

    Fix compilation

Base directory -> /
 .gitignore | 8 ++++++++
 Makefile   | 8 ++++----
 2 files changed, 12 insertions(+), 4 deletions(-)
-------------------------------------------------------------------------------
2021-04-01 10:53:04 +02:00
Jonas Höglund
6408e0254c Fix dumpimage Makefile 2021-04-01 10:41:17 +02:00
Jonas Höglund
7db30978e3 Add dumpimage tool. 2021-04-01 10:36:16 +02:00
Jakob Olsson
cbc7711204 map-controller: 2.4.9 2021-03-31 17:54:40 +02:00
Amin Ben Ramdhane
263cdbc501 bbf: 4.0.5 2021-03-31 16:44:53 +01:00
Jakob Olsson
0bc5379667 ieee1905: dont log stdout to syslog 2021-03-31 17:19:02 +02:00
Jakob Olsson
f334f25b12 wfadatad: 3.2.4 2021-03-31 16:50:49 +02:00
Jakob Olsson
b54a6f9f52 map-agent: 3.1.14 2021-03-31 15:50:46 +02:00
Jakob Olsson
5eba44b51f map-controller: 2.4.8 2021-03-31 15:19:54 +02:00
Amin Ben Ramdhane
79aa793d47 TWAMP: fix the parent path of TWAMPReflector object 2021-03-31 10:01:43 +01:00
Jakob Olsson
6f40b3fe47 map-topology: 1.5.20 2021-03-31 10:49:55 +02:00
vdutta
57401ea50e obuspa: Percent encode default EndpointID 2021-03-31 13:03:05 +05:30
Jakob Olsson
469a1f3dd2 map-topology: 1.5.19 2021-03-31 08:14:05 +02:00
Jakob Olsson
ab77076213 map-topology: 1.5.18 2021-03-30 17:40:23 +02:00
Jakob Olsson
f377f135bd map-topology: 1.5.17 2021-03-30 17:24:50 +02:00
Jakob Olsson
0041b46b67 map-topology: 1.5.16 2021-03-30 16:53:17 +02:00
Amin Ben Ramdhane
bf14a2013c bbf: 4.0.4 2021-03-30 14:58:22 +01:00
Amin Ben Ramdhane
3706193d98 bbf: 4.0.3 2021-03-29 16:39:49 +01:00
Jakob Olsson
323376f6a0 map-topology: 1.5.15 2021-03-29 17:05:48 +02:00
Jakob Olsson
d09cc5cf02 map-topology: 1.5.14 2021-03-29 15:52:00 +02:00
Jakob Olsson
218faefc0f map-topology: 1.5.13 2021-03-29 14:39:32 +02:00
Amin Ben Ramdhane
d80f3147fd bbf: 4.0.2 2021-03-29 12:56:03 +01:00
Yalu Zhang
2d8c76ba58 Update package [ dectmngr ]
Change log path from /tmp to /var/log/dectmngr
2021-03-29 11:45:07 +02:00
Sukru Senli
083fd0376f questd: 5.2.2
disable network module

simulate router.network object via rpcd script to support juci clients widget
2021-03-27 09:47:30 +01:00
Sukru Senli
22e2cb491a bbf: 4.0.1 2021-03-26 18:54:25 +01:00
Jakob Olsson
3f63c60a9d map-topology: 1.5.12 2021-03-26 17:55:16 +01:00
Jakob Olsson
e9c6d5d4a4 map-topology: 1.5.11 2021-03-26 16:32:28 +01:00
Jakob Olsson
b26e80748c map-topology: 1.5.10 2021-03-26 15:55:42 +01:00
Jakob Olsson
d683c240a9 map-topology: 1.5.9 2021-03-26 15:18:51 +01:00
vdutta
defb23338a uspd: Fix vendor extn in parallel calls 2021-03-26 17:47:37 +05:30
Jakob Olsson
aabf092369 map-topology: 1.5.8 2021-03-26 10:27:59 +01:00
Sukru Senli
84b63deafa uspd: correct commit hash 2021-03-25 20:26:47 +01:00
Amin Ben Ramdhane
1ffc4255ad bbf: new vendor extension mechanism 2021-03-25 19:37:47 +01:00
Jakob Olsson
481a055d54 map-topology: 1.5.7 2021-03-25 17:43:56 +01:00
Jakob Olsson
9cd40a75d5 map-agent: 3.5.13 2021-03-25 16:42:29 +01:00
Jakob Olsson
b606d834d7 map-controller: 2.4.7 2021-03-25 15:23:45 +01:00
Jakob Olsson
f752c9fbce ieee1905: 2.1.44 2021-03-25 15:22:16 +01:00
Anjan Chanda
d7ad33b2ba iop: select package uuidgen 2021-03-25 14:19:27 +01:00
Omar Kallel
425be291f8 icwmp: 6.5.5-2021-03-25 2021-03-25 10:59:00 +01:00
Jakob Olsson
3f4e770a3f ieee1905: 2.1.43 2021-03-25 10:06:57 +01:00
Janusz Dziedzic
9b27f7c349 wifimngr: start wps on all APs
Enumerate all APs and start WPS.
Check if supplicant connected.

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
2021-03-24 17:07:36 +00:00
vdutta
184cb1c823 obuspa: Verify object create/delete notifications 2021-03-24 19:05:10 +05:30
vdutta
69fc6842c2 uspd: Align error message format 2021-03-24 18:04:53 +05:30
Anjan Chanda
d607931a2d wifimngr: 9.1.1 2021-03-23 20:00:10 +01:00
Anjan Chanda
5ce6004d58 easy-soc-libs: 6.1.89 2021-03-23 19:59:43 +01:00
Jonas Höglund
febe4679bc Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* d9c2222 Revert "If state is the same as what has already been applied, don't do"
-------------------------------------------------------------------------------
commit d9c22221f6cb414126978c92295fdcc0885e3285
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-03-23 17:24:33 +0100

    Revert "If state is the same as what has already been applied, don't do"

    This reverts commit 4763b55173a50c572ef91ae4c9889d37200a3997.

Base directory -> /
 src/gpio_led.c | 7 +------
 1 file changed, 1 insertion(+), 6 deletions(-)
-------------------------------------------------------------------------------
2021-03-23 17:25:36 +01:00
Omar Kallel
73448b888b icwmp: 6.5.4-2021-03-23 2021-03-23 13:42:21 +01:00
Jani Juvan
31de1fdb65 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* d17c699 Module test and docs updates to get in sync with code
* 9490d1a If stats missing from channel part of dsl stats
* c0af1a4 Added set -e to CI scripts
* 5199acf Update functional-test.sh
-------------------------------------------------------------------------------
commit d17c699c1fc9588303d6da35ac2250903bf17cd8
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-19 14:55:45 +0000

    Module test and docs updates to get in sync with code

Base directory -> /
 docs/api/atm.link.md                      |  12 +-
 docs/api/dsl.channel.md                   | 183 ++++++------
 docs/api/dsl.line.md                      | 295 ++++++++++---------
 docs/api/dsl.md                           | 457 ++++++++++++++++--------------
 docs/api/fast.line.md                     | 205 +++++++-------
 docs/api/ptm.link.md                      |   4 +-
 dslmngr.c                                 | 100 +++----
 dslmngr.h                                 |   2 +-
 dslmngr_nl.c                              |   2 +-
 gitlab-ci/functional-api-test.sh          |   5 +-
 gitlab-ci/functional-test.sh              |   3 +
 gitlab-ci/install-dependencies.sh         |   2 +-
 gitlab-ci/iopsys-supervisord.conf         |   2 +-
 schemas/ubus/dsl.line_stats.json          |  18 +-
 test/api/json/atm.link.validation.json    |   2 +-
 test/api/json/dsl.channel.validation.json |   2 +-
 test/api/json/dsl.line.validation.json    |   2 +-
 test/api/json/fast.line.validation.json   |   2 +-
 test/api/json/ptm.link.validation.json    |   2 +-
 test/cmocka/Makefile                      |   2 +-
 test/cmocka/functional_test_dslmngr.c     |  20 +-
 test/cmocka/unit_test_dslmngr.c           |   6 +-
 test/cmocka/utils.c                       |  11 +-
 test/files/etc/config/dsl                 |   7 +
 24 files changed, 709 insertions(+), 637 deletions(-)
-------------------------------------------------------------------------------
commit 9490d1ab5f1718dae2bec26fc6a47dd8ea625623
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-17 17:31:30 +0100

    If stats missing from channel part of dsl stats

Base directory -> /
 dslmngr.c | 3 +++
 1 file changed, 3 insertions(+)
-------------------------------------------------------------------------------
commit c0af1a40adac40d5b27eae15dc49601302365e83
Author: Suru Dissanaike <suru.dissanaike@iopsys.eu>
Date: 2021-03-15 15:01:21 +0000

    Added set -e to CI scripts

Base directory -> /
 gitlab-ci/functional-api-test.sh | 2 +-
 gitlab-ci/unit-test.sh           | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 5199acfd0c9bbb2c5c27c82664ad1ffe53915831
Author: Suru Dissanaike <suru.dissanaike@iopsys.eu>
Date: 2021-03-15 14:57:09 +0000

    Update functional-test.sh

Base directory -> /
 gitlab-ci/functional-test.sh | 1 +
 1 file changed, 1 insertion(+)
-------------------------------------------------------------------------------
2021-03-19 16:01:39 +01:00
Jakob Olsson
7a04489b26 map-controller: 2.4.6 2021-03-19 15:14:30 +01:00
Jakob Olsson
9f6a17e38a map-agent: 3.5.12 2021-03-19 15:13:39 +01:00
Anjan Chanda
b2b6f4a4b1 wfadatad: 3.2.3 2021-03-19 14:27:24 +01:00
Amin Ben Ramdhane
6eabe4170f bbf: 3.7.9 2021-03-19 12:25:06 +01:00
Jakob Olsson
5e8a9b461a map-agent: 3.5.11 2021-03-19 11:11:09 +01:00
Anjan Chanda
55b5312443 easy-soc-libs: 6.1.84 2021-03-19 09:45:50 +01:00
Jakob Olsson
214ded2ce8 map-controler: 2.4.5 2021-03-18 23:46:19 +01:00
Jakob Olsson
28177ccd12 map-agent: 3.5.10 2021-03-18 23:45:27 +01:00
vdutta
9f08eb3ba0 obuspa: Multiple fixes
- Test improvements
 - Fix notification for object create/delete
 - Optimize get time for non-grouped objects
2021-03-18 20:04:56 +05:30
Jakob Olsson
497c700d1b Revert "map-topology: 1.5.7"
This reverts commit 6fdd2ba9ad.
2021-03-18 14:42:14 +01:00
Jakob Olsson
5159e04508 ieee1905: 2.1.42 2021-03-18 09:53:33 +01:00
Jakob Olsson
d034408de9 map-1905: 0.0.19 2021-03-18 08:56:15 +01:00
Jakob Olsson
d953dadccc map-controller: 2.4.4 2021-03-17 17:12:02 +01:00
Jakob Olsson
49b466b8ef map-agent: 3.5.9 2021-03-17 17:06:08 +01:00
Amin Ben Ramdhane
3ca52b35ad bbf: 3.7.8 2021-03-17 11:02:09 +01:00
Raphael Derensy
051826305e owsd: hotplug: map aliases against interface on ifup 2021-03-17 09:48:22 +01:00
Anjan Chanda
7f3e3d9c3e wfadatad: 3.2.1 2021-03-16 20:25:39 +01:00
Anjan Chanda
4790d3b915 easy-soc-libs: 6.1.78 2021-03-16 15:51:53 +01:00
Jakob Olsson
69c430e502 ieee1905: 2.1.41 2021-03-16 11:56:54 +01:00
Andreas Gnau
e5db655422 inbd: Update version number 2021-03-15 11:02:20 +01:00
Andreas Gnau
d2b9140468 treewide: Add PKG_MIRROR_HASH:=skip to pkgs downloaded from git
OpenWrt 21.02 will redownload from git over and over if PKG_MIRROR_HASH
is not set. Set it to skip to prevent it from happening.
2021-03-15 10:57:13 +01:00
Andreas Gnau
7a7097facc inbd: Make compatible with newer json-c version 2021-03-15 10:57:13 +01:00
Amin Ben Ramdhane
cec3913238 icwmp: cleanup 2021-03-14 00:28:48 +01:00
Anjan Chanda
722cca0d26 wfadatad: 3.2.0 2021-03-13 13:04:33 +01:00
Sukru Senli
0c418c8d4e wifimngr: add wps overlap state to rule engine 2021-03-12 19:32:52 +01:00
Janusz Dziedzic
9038766677 Update package [easy-soc-libs, wifimngr] 2021-03-12 17:30:15 +01:00
vdutta
5b0a9699f0 obuspa: Fix access type for grouped multi-instance objects 2021-03-12 20:46:33 +05:30
vdutta
1732abca49 uspd: Change intra process ipc to mmap 2021-03-12 20:41:50 +05:30
Yalu Zhang
5bbda10e68 Update package [ dectmngr ]
Some improvement that the remote party can hear DECT handset clearly. But there
is still big noise from handset side.
2021-03-12 13:56:16 +01:00
Nevadita
6fdd2ba9ad map-topology: 1.5.7 2021-03-12 12:01:38 +00:00
Omar Kallel
e0ba35300f icwmp: 6.5.2-2021-03-11 2021-03-11 13:03:30 +01:00
Filip Matusiak
c354891742 easy-soc-libs: flag for enabling ctrl iface socket 2021-03-10 20:04:55 +01:00
Filip Matusiak
e86b12fcbd Revert "libwpa: Add new package"
This reverts commit c558d65793.
2021-03-10 19:24:45 +01:00
Filip Matusiak
cee10ef824 Revert "libwpa: build only libwpa_client.so"
This reverts commit af0bedc16c.
2021-03-10 19:24:29 +01:00
Filip Matusiak
aab3799f3f Revert "easy-soc-libs: add libwpa_client dependency"
This reverts commit b84c1e6775.
2021-03-10 19:24:20 +01:00
Amin Ben Ramdhane
0c9e81565e bbf: 3.7.6 2021-03-09 17:23:10 +01:00
Filip Matusiak
af0bedc16c libwpa: build only libwpa_client.so 2021-03-09 14:36:51 +01:00
Filip Matusiak
b84c1e6775 easy-soc-libs: add libwpa_client dependency 2021-03-09 14:36:51 +01:00
Filip Matusiak
c558d65793 libwpa: Add new package 2021-03-09 14:36:51 +01:00
Omar Kallel
eaed835d1c icwmp: 6.5.1-2021-03-09 2021-03-09 11:52:18 +01:00
Rahul
1ad4d6b0fb Update makefile [ easy-soc-libs ] library [ libethernet ]
To include change for supporting br-lan counter stats
2021-03-09 14:20:15 +05:30
Jakob Olsson
4378f26209 map-1905: 0.0.18 2021-03-09 08:58:29 +01:00
Yalu Zhang
df7f1090b3 Update package [ dectmngr ]
Synchronise the event process between the host and base station during
the start up.
2021-03-08 14:47:57 +01:00
Omar Kallel
0b3bd71b0c icwmp: 6.5.0-2021-03-05 2021-03-05 16:43:27 +01:00
Anjan Chanda
fa397d90a3 wifimngr: 9.0.1 2021-03-05 15:50:55 +01:00
Anjan Chanda
94d061bb74 easy-soc-libs: 6.1.70 2021-03-05 15:50:26 +01:00
Amin Ben Ramdhane
365f071e9c bbf: 3.7.5 2021-03-05 15:07:44 +01:00
Jani Juvan
e17db02d67 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* b547594 If stats bugfix on fast
* a5bb606 If stats now always presented, even if device missing
-------------------------------------------------------------------------------
commit b5475949442eedcb2781d3c71ea5aacfcce19f34
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-05 13:58:46 +0100

    If stats bugfix on fast

Base directory -> /
 dslmngr.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
-------------------------------------------------------------------------------
commit a5bb6062f5de80422f8c7078d6b90c4643eb147e
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-05 12:56:00 +0100

    If stats now always presented, even if device missing

Base directory -> /
 dslmngr.c | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)
-------------------------------------------------------------------------------
2021-03-05 14:09:51 +01:00
vdutta
4a6420b5b4 obuspa: Fix dm thread freeze issue 2021-03-05 18:19:19 +05:30
Jani Juvan
55b85a5fe0 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* a5bb606 If stats now always presented, even if device missing
-------------------------------------------------------------------------------
commit a5bb6062f5de80422f8c7078d6b90c4643eb147e
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-05 12:56:00 +0100

    If stats now always presented, even if device missing

Base directory -> /
 dslmngr.c | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)
-------------------------------------------------------------------------------
2021-03-05 12:58:07 +01:00
Yalu Zhang
419eaf87a5 Update package [ dectmngr ]
Make term_id always 1 for all outgoing calls
Set codec between base sation and handset to PCM_LINEAR_NB
2021-03-05 12:18:30 +01:00
Jakob Olsson
f7b842b06a map-controller: 2.4.3 2021-03-05 11:32:26 +01:00
Jakob Olsson
b5dd7861ca map-agent: 3.5.8 2021-03-05 10:10:44 +01:00
Jakob Olsson
680a39cbea map-agent: 3.5.7 2021-03-04 22:51:47 +01:00
Jakob Olsson
5495066a88 map-1905: 0.0.17 2021-03-04 18:18:40 +01:00
Jakob Olsson
796063ea6d ieee1905: 2.1.40 2021-03-04 18:17:07 +01:00
Jakob Olsson
ad7ca90872 map-agent: 3.5.6 2021-03-04 18:16:34 +01:00
Yalu Zhang
563024c9a5 Update package dectmngr
Always ring all active handsets for an incoming call
2021-03-04 16:08:23 +01:00
Jani Juvan
0a8e0ffdec Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* a825f26 If stats
-------------------------------------------------------------------------------
commit a825f26a46318d95e3580054108fb5082a8a59f9
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-03-04 08:11:20 +0000

    If stats

Base directory -> /
 Makefile  |   2 +-
 dslmngr.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 105 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
2021-03-04 10:35:57 +01:00
Omar Kallel
755c0d3a3a icwmp: 6.4.8-2021-03-03 2021-03-03 16:58:30 +01:00
vdutta
7c4bd1e415 obuspa: Fix get with empty referenced paths 2021-03-03 17:55:58 +05:30
vdutta
5fff31c8b1 obuspa: build with CONFIG_OPENSSL_NO_DEPRECATED 2021-03-03 16:27:08 +05:30
vdutta
518adb78bc obuspa: Wait for dependent service to start 2021-03-02 16:29:45 +05:30
Anjan Chanda
a5ea97e248 wifimngr: 9.0.0 2021-03-01 21:44:56 +01:00
Anjan Chanda
ba111ca23a easy-soc-libs: 6.1.66 2021-03-01 21:44:11 +01:00
Raphael Derensy
9066a3b852 rulengd: 1.2.1 2021-03-01 16:41:34 +01:00
Amin Ben Ramdhane
da9c130053 bbf: 3.7.4 2021-03-01 15:05:37 +01:00
Sukru Senli
e68b0bdd29 topologyd: remove deprecated package 2021-03-01 13:10:49 +01:00
Jakob Olsson
62afe68988 easy-soc-libs: 6.1.61 2021-03-01 10:19:06 +01:00
Raphael Derensy
32c1ac029d rulengd: 1.2.1 2021-03-01 10:07:11 +01:00
Jakob Olsson
1c26adf945 map-agent: 3.5.5 2021-02-26 16:39:03 +01:00
Jani Juvan
ad1e36bd51 dslmngr: add dependency to libeasy 2021-02-26 15:05:20 +01:00
vdutta
5877112f5e obuspa: Add reference follow in search queries 2021-02-26 15:32:35 +05:30
Anjan Chanda
6e1f635f40 easy-soc-libs: 6.1.60 2021-02-26 07:55:01 +01:00
Sukru Senli
b468a999b9 iop: deselect unused libraries 2021-02-25 20:34:38 +01:00
Anjan Chanda
a845c00b61 easy-soc-libs: 6.1.59 2021-02-25 16:35:44 +01:00
Jakob Olsson
e4f14cde2a map-agent: 3.5.4 2021-02-25 13:35:38 +01:00
Jakob Olsson
9c1d0111c0 map-agent: 3.5.3 2021-02-25 11:57:16 +01:00
Jakob Olsson
51e2dc8996 map-controller: 2.4.2 2021-02-25 11:56:05 +01:00
Jakob Olsson
1583a152a3 map-controller: update init.d script reload trigger 2021-02-25 10:57:32 +01:00
Amin Ben Ramdhane
4b48ec0049 bbf: 3.7.3 2021-02-25 09:30:15 +01:00
vdutta
d10066a1cf obuspa: Optimize time for get of complete dm 2021-02-23 15:42:14 +05:30
Jakob Olsson
93d6848507 ieee1905: 2.1.39 2021-02-23 09:02:18 +01:00
Sukru Senli
c108347db8 netmode: move internet led handling from testnet to ruleng 2021-02-22 22:44:47 +01:00
Anjan Chanda
2619b78b80 easy-soc-libs: 6.1.50 2021-02-22 18:33:24 +01:00
Yalu Zhang
df6f24731e Update package dectmngr
Adjust handset starting number from 2 to 1
2021-02-21 22:00:02 +01:00
Yalu Zhang
9f7bf5d3e0 Update package dectmngr
Configure the number of TDM time slots correctly
2021-02-21 21:16:39 +01:00
Erik Karlsson
06665246e5 Stop all services before unmounting filesystems
K99umount has been moved to K90umount as of OpenWrt 19.07, to make
room for init scripts that may need to run after umount. We need to
stop all services before unmounting the filesystems. The stop()
function is dead code when procd is being used and can be removed.
2021-02-20 15:55:39 +00:00
Sukru Senli
2f51c4fc69 wifimngr: use ruleng for WPS LED handling instead of script 2021-02-20 14:01:49 +01:00
Sukru Senli
262e346eb4 bbf: 3.7.2 2021-02-19 20:31:50 +01:00
vdutta
6eeb07a738 obuspa: Revert duplicate search keys to optimize time 2021-02-19 22:13:16 +05:30
Amin Ben Ramdhane
cda2c6f628 bbf: 3.7.1 2021-02-19 17:42:41 +01:00
Anjan Chanda
89cd93fa45 easy-soc-libs: 6.1.47 2021-02-19 17:30:33 +01:00
Anjan Chanda
1d7f102b55 wfadatad: 3.1.1 2021-02-19 17:23:30 +01:00
Amin Ben Ramdhane
d7dd7e3645 bbf: 3.7.0 2021-02-19 16:49:28 +01:00
Jakob Olsson
ecc67fa3a5 map-agent: 3.5.2 2021-02-19 15:19:18 +01:00
Jakob Olsson
bf06ef8bd4 map-controller: 2.4.1 2021-02-19 14:43:33 +01:00
Jakob Olsson
8271b3b9b8 map-agent: 3.5.1 2021-02-19 14:43:01 +01:00
Jonas Höglund
1bdab0bf97 Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* 4763b55 If state is the same as what has already been applied, don't do anything.
* 27b0656 sk9822: Add brightness capability
* 44a458c Add advanced LED indicators for button-press
-------------------------------------------------------------------------------
commit 4763b55173a50c572ef91ae4c9889d37200a3997
Author: Jonas Höglund <jonas.hoglund@embeddednation.com>
Date: 2021-02-19 13:15:03 +0100

    If state is the same as what has already been applied, don't do anything.

    This is a workaround for a bug in the Broadcom CLED driver which causes
    flickering of LED:s when brightness is repeatedly set.

Base directory -> /
 src/gpio_led.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 27b06566339f22ec0fdc3c71bb9e45c7b22cad86
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2021-01-29 10:38:07 +0100

    sk9822: Add brightness capability

    When using the sk9822 interface we can set the brightness via an updated
    kernel module.

    This commit adds support for using the updated API.

Base directory -> /
 src/gpio_led.c | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 44a458c77543da8f7b97cc5e7c11fa16b986831e
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2021-01-29 10:42:27 +0100

    Add advanced LED indicators for button-press

    On some products it's necessary to disable the button indicators for certain
    buttons or only enable a short-press indicator when the long-press event
    occurs.

    This commit adds a third state to solve this as well as options to disable
    the press indicators for a specific button.

Base directory -> /
 src/button.c | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
2021-02-19 13:22:39 +01:00
Jakob Olsson
a0c094b5a1 map-controller: 2.4.0 2021-02-19 12:27:04 +01:00
Jakob Olsson
defab5f8a1 map-agent: 3.5.0 2021-02-19 12:26:29 +01:00
Jakob Olsson
7894d505e4 map-agent: 3.4.7 2021-02-18 18:01:07 +01:00
Jakob Olsson
a7785b1a2d map-controller: update default cfg 2021-02-18 17:42:05 +01:00
Jakob Olsson
ac7dd3ea14 map-agent: 3.4.6 2021-02-18 17:03:43 +01:00
Jakob Olsson
a58a2a95f2 rulengd: libeasy dependency 2021-02-18 14:02:27 +01:00
Jakob Olsson
2e26726bce map-agent: 3.4.5 2021-02-18 13:54:25 +01:00
Raphael Derensy
b46d737152 rulengd: 1.2.0 2021-02-18 13:15:10 +01:00
Jakob Olsson
f78010b8b3 map-agent: 3.4.4 2021-02-18 12:31:35 +01:00
Jakob Olsson
88524fdbc9 map-controller: 2.3.2 2021-02-17 17:29:02 +01:00
Jakob Olsson
1a399a9332 map-agent: 3.4.3 2021-02-17 17:28:28 +01:00
Anjan Chanda
533614b4f4 easy-soc-libs: 6.1.42 2021-02-17 13:04:27 +01:00
Omar Kallel
ada468f63b bbf: 3.6.8 2021-02-16 18:47:57 +01:00
Yalu Zhang
f4dd679f2e dectmngr: disable dectmngr temporarily for the FXS issues
This is a temporary workaround for https://project.iopsys.eu/issues/4141, i.e. DTMF events
can not be detected and silent egress RTP payload for incoming calls.

The latest working version is SMARTHUB3-GFAST-IOPSYS-6.1.0ALPHA0-210112_0249. The problem
starts with SMARTHUB3-GFAST-IOPSYS-6.1.0ALPHA0-210113_0331. Note that this was just a test
result on one SmartHub3 device. It may vary on other devices.

Between these two nightly build versions, there were some dectmngr changes. Simply stopping
dectmngr process by "service dect stop" may cause the bug disappears. Copy dectmngr from the
second firmware to the first one, then the problem happens too.

So it seems that changes in dectmngr causes the FXS issues. Further investigation in dectmngr
will be undertaken.
2021-02-16 16:58:02 +01:00
Anjan Chanda
b9ecd3513d easy-soc-libs: 6.1.40 2021-02-16 15:39:07 +01:00
vdutta
6e1c57dc91 obuspa: Use local mqtt credential for endpointid publish 2021-02-16 19:28:22 +05:30
Vivek Kumar Dutta
f54729e36e Revert "obuspa: Use local mqtt credential for endpointid publish"
This reverts commit afae7a9d3f
2021-02-16 13:56:23 +00:00
vdutta
afae7a9d3f obuspa: Use local mqtt credential for endpointid publish 2021-02-16 19:24:03 +05:30
Anjan Chanda
61ebc2c3a3 wifimngr: 8.5.9 2021-02-16 13:19:19 +01:00
Rahul
4f820cd74c qosmngr: fix bug #4389 on devel
More generic fix to extract port index from port itself.
2021-02-16 15:30:28 +05:30
Rahul
a8e48ca428 qosmngr: fix 4323 on devel
Although no devel panther or FT is not supported as yet but that
might be the case in near future so keeping it same here plus,
bs alias should be replaced with proper bdmf_shell command anyway
so this is done here as well. No regression, no harm.
2021-02-16 13:29:06 +05:30
Jakob Olsson
a92b3c004c map-agent: update default config 2021-02-16 08:47:27 +01:00
Jakob Olsson
b5bb871de5 map-controller: update default config 2021-02-16 08:45:57 +01:00
Amin Ben Ramdhane
c22b03a510 bbf: 3.6.7 2021-02-15 21:25:42 +01:00
Amin Ben Ramdhane
a828ecbd14 BulkData: Align with latest bbf changes 2021-02-15 21:24:30 +01:00
Amin Ben Ramdhane
272f77e46d XMPP: Align with latest bbf changes 2021-02-15 21:24:16 +01:00
Amin Ben Ramdhane
eab05e10a5 TWAMP: Align with latest bbf changes 2021-02-15 21:24:01 +01:00
Amin Ben Ramdhane
08adc4f106 UDPEchoServer: Align with latest bbf changes 2021-02-15 21:23:46 +01:00
Omar Kallel
8a4397b82e icwmp: 6.4.8-2021-02-15 2021-02-15 17:01:12 +01:00
Erik Karlsson
00952364da peripheral_manager: Wait for 'buttons' object
Object was misspelled as 'button' leading to a 2 s delay every boot.
2021-02-15 11:37:24 +00:00
Sukru Senli
cbc988c360 iop: config: select at package 2021-02-14 14:19:00 +01:00
Anjan Chanda
13f34d166e wifimngr: 8.5.8 2021-02-13 13:15:33 +01:00
Anjan Chanda
16a1b5b361 easy-soc-libs: 6.1.38 2021-02-13 13:15:08 +01:00
Omar Kallel
c25f70efc4 icwmp: 6.4.7-2021-02-12 2021-02-12 21:10:08 +01:00
Amin Ben Ramdhane
47dbd02ab4 bbf: 3.6.6 2021-02-12 18:04:44 +01:00
Jakob Olsson
64d5f38931 ieee1905: 2.1.38 2021-02-12 10:10:32 +01:00
Sukru Senli
298a8e8c78 crun: initial port: v0.17
This is a crude port of crun tailored towards Linux kernel 4.19 and disabling 5.4 Linux kernel features

A proper integration should create selectable sub config options
2021-02-11 19:58:47 +01:00
Amin Ben Ramdhane
f8e68aa249 bbf: 3.6.5 2021-02-11 19:27:04 +01:00
Sukru Senli
72de25fb65 iop: deselect rsync 2021-02-11 19:20:39 +01:00
Amin Ben Ramdhane
e38d07407f bbf: add support for all operstate mappings related to Status parameter 2021-02-11 18:37:46 +01:00
Amin Ben Ramdhane
5418076f88 bbf: 3.6.3 2021-02-11 16:23:06 +01:00
Amin Ben Ramdhane
29af99d53e bbf: 3.6.2 2021-02-11 14:17:55 +01:00
Amin Ben Ramdhane
ad0dfafa9e bbf: 3.6.1 2021-02-10 17:39:46 +01:00
vdutta
16df43ccdc obuspa: Fix duplicate unique key search param error 2021-02-10 17:47:18 +05:30
Amin Ben Ramdhane
3e07e3cd0d bbf: Correct UCI mapping for NAT.PortMapping object 2021-02-09 21:56:47 +01:00
Amin Ben Ramdhane
c6be1e0c6b bbf: 3.5.9 2021-02-09 15:55:50 +01:00
Jakob Olsson
606e8e4518 map-agent: 3.4.2 2021-02-09 12:25:12 +01:00
Jakob Olsson
4aaf074694 map-controller: 2.3.1 2021-02-09 12:24:33 +01:00
Sukru Senli
b3716a9f42 iop: generate rootfs tar file 2021-02-09 11:05:34 +01:00
Omar Kallel
bfdb9eda4f icwmp: 6.4.6-2021-02-09 2021-02-09 10:12:35 +01:00
Amin Ben Ramdhane
3a92a09f66 bbf: 3.5.8 2021-02-08 22:54:59 +01:00
Omar Kallel
78a07d7719 icwmp: 6.4.5-2021-02-08 2021-02-08 19:06:10 +01:00
Omar Kallel
255d5ea39e icwmp: 6.4.4-2021-01-08 2021-02-08 16:23:55 +01:00
Amin Ben Ramdhane
d50a164af7 bbf: 3.5.7 2021-02-06 22:28:01 +01:00
Erik Karlsson
5d6c215f23 port-management: Fix failing uci-defaults script
Remove leftover debug printout that was causing uci-defaults script to
fail at first boot due populate_config() returning non-zero.
2021-02-06 10:08:44 +00:00
Jakob Olsson
4de73e9cb0 map-agent: 3.4.1 2021-02-05 11:25:23 +01:00
Amin Ben Ramdhane
bfee02596a bbf: 3.5.6 2021-02-04 22:33:00 +01:00
Jakob Olsson
f52a5fb870 map-controller: add libeasy dependency 2021-02-04 17:21:56 +01:00
Jakob Olsson
4ec5d4ca03 map-agent: add libeasy dependency 2021-02-04 17:21:41 +01:00
Jakob Olsson
fbdfe7493a map-agent: 3.4.0 2021-02-04 16:54:14 +01:00
Jakob Olsson
495dec638a map-controller: 2.3.0 2021-02-04 16:50:28 +01:00
Jakob Olsson
32e44b7b5e map-agent: 3.3.1 2021-02-04 13:53:35 +01:00
Jakob Olsson
21d30f18a7 map-controller: 2.2.2 2021-02-04 13:51:23 +01:00
Jakob Olsson
2617f831a2 ieee1905: 2.1.37 2021-02-04 13:47:17 +01:00
vdutta
130d8c243e obuspa: Publish agent endpointid in local broker 2021-02-04 15:00:28 +05:30
Amin Ben Ramdhane
e4494f9958 bbf: 3.5.5 2021-02-03 21:33:03 +01:00
Jakob Olsson
40228bda04 map-controller: 2.2.1 2021-02-03 13:56:20 +01:00
Anjan Chanda
27e0257e6a wifimngr: 8.5.5 2021-02-02 21:07:47 +01:00
Anjan Chanda
4e812c4e18 easy-soc-libs: 6.1.20 2021-02-02 21:07:10 +01:00
Jakob Olsson
1d6b8e3271 ieee1905: 2.1.36 2021-02-02 16:42:12 +01:00
Amin Ben Ramdhane
8f718e80fd bbf: 3.5.4 2021-02-02 15:08:32 +01:00
Jakob Olsson
6baa72c846 map-agent: 3.3.0 2021-02-02 14:16:54 +01:00
Jakob Olsson
779c964b3f map-controller: 2.2.0 2021-02-02 14:16:05 +01:00
Amin Ben Ramdhane
d120f2e63d bbf: fix a crash in Bridging object 2021-02-01 19:59:18 +01:00
Amin Ben Ramdhane
bc2e7077ec bbf: 3.5.2 2021-02-01 16:00:16 +01:00
Anjan Chanda
924eb2e39c wifimngr: 8.5.3 2021-02-01 15:57:43 +01:00
Anjan Chanda
64ce9b009f easy-soc-libs: 6.1.18 2021-01-29 20:35:44 +01:00
Sukru Senli
50c6a07027 icwmp: remove notify command from init script 2021-01-29 20:20:34 +01:00
Markus Gothe
ac02982008 RM#27829 - RMON statistics not received on request
Everytime we change the target we need to make sure
that easy-soc-libs are rebuilt since different
targets have different definitions of the
structs.

Change-Id: Id973dea4ddb5ffe4e48837650fff56dc67292b8d
2021-01-28 19:33:02 +00:00
jjoseph
69c9f88730 Update package ethmngr : source version 2021-01-28 23:28:56 +05:30
Markus Gothe
cb5c1979e6 gryphon-led-module: add get/set brightness
To be able to dim the LED from user-space
we need to export an API. This is done
like we currently do for setting the color,
a file which handles hexadecimal numbers.

Change-Id: I4636d16e24cdae38ccd6b501e41f71ce7012dbad
2021-01-28 17:05:53 +00:00
Amin Ben Ramdhane
20d31ec7c6 bbf: 3.5.1 2021-01-28 16:54:22 +01:00
Anjan Chanda
f5b8fbb033 easy-soc-libs: 6.1.15 2021-01-28 13:36:56 +01:00
Yalu Zhang
5e01100d14 Update package dectmngr
Handle events CMBS_EV_DSR_TARGET_UP and CMBS_EV_DSR_RECONNECT_REQ properly
2021-01-27 18:33:02 +01:00
vdutta
748e2500f6 obuspa: Reload when schema update available 2021-01-27 19:39:16 +05:30
Yalu Zhang
dc5001c949 Update package dectmngr
Add the callback function for event CMBS_EV_DSR_CORD_CLOSEREG
2021-01-27 14:57:39 +01:00
vdutta
b84fb8e456 uspd: Notify schema updates on usp.raw object 2021-01-27 19:12:28 +05:30
Yalu Zhang
6bbf691df1 Update package dectmngr: disable checksum 2021-01-27 12:18:16 +01:00
jjoseph
ff6fcd8438 Updating package source version 2021-01-27 14:00:49 +05:30
Amin Ben Ramdhane
d454e5eb38 bbf: 3.5.0 2021-01-26 19:03:07 +01:00
Yalu Zhang
9cfeee53e9 Update package dectmngr
Also improve /etc/init.d/dect for service stop
2021-01-26 11:03:20 +01:00
Amin Ben Ramdhane
2b8c0a26ae bbf: 3.4.9 2021-01-25 19:39:18 +01:00
Janusz Dziedzic
d752678875 easy-soc-libs: install qos.h file 2021-01-25 17:02:37 +01:00
Janusz Dziedzic
6df6762cd7 easy-soc-libs: use brcm sdk headers 2021-01-25 13:09:23 +01:00
Anjan Chanda
40d4f72784 easy-soc-libs: refactor package Makefiles 2021-01-25 11:56:59 +01:00
Amin Ben Ramdhane
b7cd1f15f9 bbf: wifi: add support for WPA3 security modes 2021-01-25 09:57:07 +01:00
vdutta
ff2ae72bd2 obuspa: Improve refresh instances logic 2021-01-24 20:22:57 +05:30
Jakob Olsson
93180ac277 easy-soc-libs: 6.1.14 2021-01-22 19:32:34 +01:00
Jakob Olsson
84831d3d95 map-agent: 3.2.3 2021-01-22 17:56:42 +01:00
Jakob Olsson
09de34b98a map-agent: 3.2.2 2021-01-22 14:56:44 +01:00
Sukru Senli
7da60b67cc bbf: 3.4.7
add Device.Firewall.Chain.{i}.Rule.{i}.Log parameter support
2021-01-22 13:51:33 +01:00
Jakob Olsson
ce5541aef8 map-controller: init.d: don't start if enabled is explicitly set to 0 2021-01-22 11:27:01 +01:00
Jakob Olsson
4b564df4c0 map-agent: init.d: don't start if enabled is explicitly set to 0 2021-01-22 11:26:38 +01:00
Amin Ben Ramdhane
5e6580ccf2 bbf: 3.4.6 2021-01-21 21:32:48 +01:00
Anjan Chanda
15a055ffdd ethmngr: 2.0.1 2021-01-21 17:04:09 +01:00
Jakob Olsson
e68fac5e9b map-agent: 3.2.1 2021-01-21 16:33:21 +01:00
Jakob Olsson
df82765a3b map-controller: 2.1.0 2021-01-21 16:16:21 +01:00
Jakob Olsson
f9070e4c3f map-agent: 3.2.0 2021-01-21 14:17:16 +01:00
Anjan Chanda
9d94b7d594 wifimngr: 8.5.2 2021-01-21 12:06:43 +01:00
Anjan Chanda
d1ed021a04 easy-soc-libs: 6.1.13 2021-01-21 12:05:26 +01:00
Sukru Senli
9987882a1c inbd: 1.2.1 2021-01-21 11:12:47 +01:00
Amin Ben Ramdhane
83b6fb7330 bbf: fix crash when adding a static route 2021-01-20 22:00:53 +01:00
Amin Ben Ramdhane
8c3d54ff7d bbf: 3.4.3 2021-01-20 20:50:57 +01:00
Sukru Senli
4e78d1c075 wfadata: get controller enabled option from correct section 2021-01-20 18:50:54 +01:00
Jakob Olsson
2109e5ff4f map-controller: 2.0.7 2021-01-20 17:23:19 +01:00
Jakob Olsson
e417f30841 map-agent: 3.1.14 2021-01-20 17:21:14 +01:00
Jakob Olsson
6610f42769 map-controller: 3.1.13 2021-01-20 14:39:21 +01:00
Jakob Olsson
81cdd1a9ea map-controller: 2.0.6 2021-01-20 14:36:47 +01:00
Jakob Olsson
d69061f95e ieee1905: 3.1.35 2021-01-20 14:33:46 +01:00
Omar Kallel
7f757e9291 icwmp: 6.4.3-2021-01-20 2021-01-20 14:17:32 +01:00
Yalu Zhang
5c4719c6e4 Update package dectmngr
Solves the issue that incoming calls were released by CMBS
2021-01-20 11:07:55 +01:00
Omar Kallel
0ea0df8b82 icwmp: 6.4.2-2021-01-20 2021-01-20 10:10:02 +01:00
Omar Kallel
2dceba94a8 icwmp: 6.4.1-2021-01-19 2021-01-19 17:29:07 +01:00
Anjan Chanda
f34380326f wfadatad: 3.1.0 2021-01-19 16:36:09 +01:00
Anjan Chanda
547a976981 wifimngr: 8.5.0 2021-01-18 17:31:39 +01:00
Anjan Chanda
116d6370ca easy-soc-libs: 6.1.4 2021-01-18 17:29:01 +01:00
Jakob Olsson
6024f034ea map-agent: 3.1.12 2021-01-18 13:01:00 +01:00
Amin Ben Ramdhane
4fb8ec2016 bbf: 3.4.2 2021-01-17 18:55:35 +01:00
Amin Ben Ramdhane
5dfa4996a6 bbf: 3.4.1 2021-01-15 17:49:08 +01:00
Jakob Olsson
eaf990c616 ieee1905: 2.1.34 2021-01-15 15:41:43 +01:00
Jakob Olsson
d6cf5b6dfe ieee1905: 2.1.33 2021-01-15 15:34:42 +01:00
Jakob Olsson
03c62cd618 Revert "ieee1905: 2.1.33"
This reverts commit ba0e921101.
2021-01-15 15:33:53 +01:00
Jakob Olsson
ba0e921101 ieee1905: 2.1.33 2021-01-15 15:25:04 +01:00
Jakob Olsson
8428773a9c map-agent: 3.1.11 2021-01-15 13:58:15 +01:00
Amin Ben Ramdhane
0c33f36c88 bbf: 3.4.0 2021-01-14 21:22:56 +01:00
Amin Ben Ramdhane
1c2b381072 bbf: fix the crash on startup 2021-01-13 18:36:01 +01:00
vdutta
4482e7defd uspd: Change startup sequence 2021-01-13 19:44:50 +05:30
Amin Ben Ramdhane
3740560fd3 bbf: 3.3.8 2021-01-12 22:58:30 +01:00
Yalu Zhang
e4cea887e2 Update package: dectmngr 2021-01-12 18:16:29 +01:00
Yalu Zhang
4e42c07257 endptmngr: replace ubus call uci with libuci API calls directly 2021-01-12 18:15:00 +01:00
Jakob Olsson
26e48a7b83 map-agent: 3.1.10 2021-01-12 17:08:09 +01:00
Jakob Olsson
105dab05d2 map-agent: 2.0.5 2021-01-12 16:12:36 +01:00
Jakob Olsson
40e062550b map-agent: 3.1.9 2021-01-12 16:11:34 +01:00
Jani Juvan
7bc068c0c6 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* 1fa1cee Merge branch 'jani-vendor_id' into 'devel'
* 698eb79 added init of oem parameters
-------------------------------------------------------------------------------
commit 1fa1cee62c52c69c321ddf93399fef9483520996
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2021-01-12 10:31:33 +0000

    Merge branch 'jani-vendor_id' into 'devel'

    dslmngr: add init of oem parameters

    See merge request iopsys/dslmngr!3
Base directory -> /
 dslmngr.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dslmngr.h |  1 +
 main.c    |  1 +
 3 files changed, 69 insertions(+)
-------------------------------------------------------------------------------
commit 698eb796df310797d7eed7d1d7eb590a9990c66c
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-12-18 13:47:20 +0100

    added init of oem parameters

Base directory -> /
 dslmngr.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 dslmngr.h |  1 +
 main.c    |  1 +
 3 files changed, 69 insertions(+)
-------------------------------------------------------------------------------
2021-01-12 13:42:34 +01:00
Jani Juvan
ae243101f1 Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* 0c6fab5 libdsl: add support to set oem parameters
-------------------------------------------------------------------------------
commit 0c6fab539a15ec4b9bd7e5e8b1e9257ae4f68398
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-12-17 16:36:17 +0100

    libdsl: add support to set oem parameters

Base directory -> /
 libdsl/broadcom/bcm_dsl_api.c | 29 +++++++++++++++++++++++++++++
 libdsl/xdsl.h                 | 14 ++++++++++++++
 2 files changed, 43 insertions(+)
-------------------------------------------------------------------------------
2021-01-12 13:42:09 +01:00
Shubham Sharma
613ef10273 qosmngr: C daemon for gathering queue stats 2021-01-12 14:17:06 +05:30
Shubham Sharma
06c2d704a9 easy-soc-libs: libqos with APIs for fetching queue stats 2021-01-12 14:17:06 +05:30
Amin Ben Ramdhane
14f7f0d328 bbf: 3.3.7 2021-01-11 21:15:23 +01:00
Jakob Olsson
a0324b3f5e map-agent: bump version 2021-01-10 16:58:57 +01:00
Jakob Olsson
16a9b07497 map-agent: 3.1.8 2021-01-10 16:56:50 +01:00
Jakob Olsson
7c91b86d01 map-agent: 3.1.7
use if_utils easy API
2021-01-08 20:07:50 +01:00
Anjan Chanda
2076e35808 wfadatad: 3.0.5 2021-01-08 19:33:59 +01:00
Sukru Senli
8f04c3e3b3 iop: config: deselect gplv3 wget from default config 2021-01-08 16:45:07 +01:00
Omar Kallel
76b7d03f5e icwmp: 6.4.0-2021-01-08 2021-01-08 16:29:39 +01:00
Anjan Chanda
c3bf9de599 wifimngr: 8.4.0 2021-01-08 12:27:27 +01:00
Anjan Chanda
a3c0948a46 easy-soc-libs: 6.0.4 2021-01-08 10:46:54 +01:00
Omar Kallel
084995366f icwmp: 6.3.9-2021-01-07
add --anyauth to curl as argument for image download
2021-01-07 21:59:24 +01:00
Jakob Olsson
a2468234cd map-agent: 3.1.6 2021-01-07 17:19:33 +01:00
Sukru Senli
39445eaec0 iop: config: select jq 2021-01-07 14:22:33 +01:00
vdutta
898455ceee uspd: Multiple fixes
- Handle SIGSEGV while access libbbf API
 - Logic improvement for result printing
2021-01-07 16:14:16 +05:30
Jakob Olsson
7a422d4244 map-1905: 0.0.16 2021-01-07 08:57:38 +01:00
Amin Ben Ramdhane
cbc1f3b798 bbf: 3.3.6 2021-01-06 23:04:53 +01:00
Amin Ben Ramdhane
7e1d84b6d6 twamp: fixed a crash
The IP.Interface object has been reworked in ticket 2920 without updating twamp accordingly causing this crash
2021-01-06 22:59:20 +01:00
Omar Kallel
9821c3fbac icwmp: 6.3.8-2021-01-06 2021-01-06 11:37:48 +01:00
Omar Kallel
1eb318b09a icwmp: cleanup 2021-01-05 16:00:38 +01:00
Yalu Zhang
b1e3ef111b Install /etc/init.d/dect 2021-01-05 11:26:56 +01:00
Yalu Zhang
e57d5962d1 Add etc/init.d/dect 2021-01-05 11:18:40 +01:00
Omar Kallel
556cd32a18 icwmp: 6.3.6-2021-01-04 2021-01-04 20:04:06 +01:00
Yalu Zhang
61cf78c264 Add package dectmngr 2021-01-04 17:21:18 +01:00
Jakob Olsson
9dfcb15415 map-agent: 3.1.5 2021-01-04 17:18:48 +01:00
Jakob Olsson
1420241d40 map-controller: 2.0.4 2021-01-04 17:18:11 +01:00
Jakob Olsson
530a4b99bd map-agent: 3.1.4 2021-01-04 16:22:47 +01:00
Amin Ben Ramdhane
21b3284b75 bbf: remove cwmp dependency 2021-01-04 10:31:52 +01:00
Omar Kallel
04d13dc7a4 icwmp: 6.3.5-2021-01-04 2021-01-04 09:07:15 +01:00
Omar Kallel
a290ae71ee icwmp: 6.3.4 04-01-2021 2021-01-04 08:24:13 +01:00
Omar Kallel
d45f42427f icwmp: make diagnostics independent from libbbf and remove libbbf dependency 2020-12-31 18:30:58 +01:00
Amin Ben Ramdhane
a230016663 bbf: 3.3.3 2020-12-30 20:57:45 +01:00
Amin Ben Ramdhane
60314e6a42 bbf: 3.3.2 2020-12-29 14:57:27 +01:00
Sukru Senli
38702b44c4 iop: remove reference to unavailable packages 2020-12-28 13:04:44 +01:00
Sukru Senli
75b9f292a0 natalie-dect-h: remove package 2020-12-28 12:59:23 +01:00
Sukru Senli
2fc567be5d tr098: remove package 2020-12-28 11:04:55 +01:00
Omar Kallel
94db04db83 icwmp: Werror flag 2020-12-24 11:24:10 +01:00
Omar Kallel
d9ae8fac97 icwmp: source enhancements 2020-12-23 19:30:27 +01:00
Amin Ben Ramdhane
34dda55644 bbf: 3.3.1 2020-12-23 17:14:02 +01:00
Amin Ben Ramdhane
a6ee4c8122 bbf: 3.3.0 2020-12-23 16:08:12 +01:00
Amin Ben Ramdhane
368ddf1d31 bbf: 3.2.9 2020-12-23 15:37:12 +01:00
Oussama Ghorbel
bcdc8e5dc0 Update feed [ iopsys ] package [ questd ]
-------------------------------------------------------------------------------
* d554541 added Idle support for processs state
* 5ef2891 Questd network module tests
* 435c348 network: increment max client to 256
-------------------------------------------------------------------------------
commit d554541ac6fb8ef14431fcec9a31dbcb52181279
Author: Oussama Ghorbel <oussama.ghorbel@iopsys.eu>
Date: 2020-12-23 15:17:00 +0100

    added Idle support for processs state

Base directory -> /
 system/system.c | 2 ++
 1 file changed, 2 insertions(+)
-------------------------------------------------------------------------------
commit 5ef2891e3ab55e42a5f84af4f678ec5b8e2d6a17
Author: Ozan Tanfener <ozan.tanfener@iopsys.eu>
Date: 2020-09-18 15:11:56 +0200

    Questd network module tests

Base directory -> /
 .gitignore                                    |   3 +-
 .gitlab-ci.yml                                |  40 +-
 CMakeLists.txt                                |   2 +-
 cmake/modules/FindJSON-EDITOR.cmake           |  35 ++
 docs/api/router.network.md                    | 492 +++++++++++++++
 docs/api/router.system.md                     | 823 ++++++++++++++++++++++++++
 docs/functionspec.md                          |  99 ++++
 docs/testspec.md                              | 210 +++++++
 docs/ubus.splash.md                           |   5 +
 gitlab-ci/functional-api-test.sh              |  23 +
 gitlab-ci/functional-test.sh                  |  19 +
 gitlab-ci/install-dependencies.sh             |  40 ++
 gitlab-ci/iopsys-supervisord.conf             |   8 +
 gitlab-ci/setup.sh                            |  45 ++
 network/network.c                             | 274 ++++-----
 schemas/router.network.json                   | 138 +++++
 schemas/router.system.json                    |  22 +-
 supervisord.conf                              |  11 -
 test/CMakeLists.txt                           |  47 --
 test/api/json/router.network.validation.json  |   9 +
 test/cmocka/CMakeLists.txt                    |  44 ++
 test/{ => cmocka}/db-setup.sh                 |   0
 test/cmocka/files/etc/config/dhcp             |  48 ++
 test/cmocka/files/etc/config/network          |  46 ++
 test/cmocka/files/etc/config/wireless         |  55 ++
 test/cmocka/files/etc/wifi.json               |  13 +
 test/cmocka/files/odhcpd                      |   4 +
 test/cmocka/files/var/dhcp.client.options     |   3 +
 test/cmocka/files/var/dhcp.leases             |   3 +
 test/cmocka/network_tests.c                   | 231 ++++++++
 test/cmocka/network_tests.h                   |  16 +
 test/{system-test.c => cmocka/system_tests.c} |   0
 tools.c                                       |   2 +-
 33 files changed, 2594 insertions(+), 216 deletions(-)
-------------------------------------------------------------------------------
commit 435c34859a36ff09813b19f9f7220db3f08c19af
Author: Sukru Senli <sukru.senli@iopsys.eu>
Date: 2020-09-08 16:28:28 +0200

    network: increment max client to 256

Base directory -> /
 network/network.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
2020-12-23 15:36:17 +01:00
Yalu Zhang
781f3409ad Remove package natalie-dect 2020-12-23 15:02:49 +01:00
Yalu Zhang
4cc72a2dc6 Remove package dectmngr2 2020-12-23 14:49:09 +01:00
Amin Ben Ramdhane
93dee37808 bbf: 3.2.8 2020-12-23 09:53:17 +01:00
Sukru Senli
42bc8f91ce wifimngr: start WPS in client mode correctly 2020-12-22 16:24:07 +01:00
Sukru Senli
5d16f075ab wifimngr: remove extra file 2020-12-22 16:13:00 +01:00
Sukru Senli
841751d7e2 wifimngr: put all files under correct directory and use a temporary wps-monitor script for LED handling 2020-12-22 15:57:02 +01:00
Yalu Zhang
8bc324c3b4 Update feed: endptmngr 2020-12-22 11:20:55 +01:00
Sukru Senli
20287be7e2 obuspa: install hotplug script 2020-12-22 10:27:35 +01:00
Sukru Senli
6d1e026af4 obuspa: do not reload if data changes with ifupdate 2020-12-22 09:52:57 +01:00
Sukru Senli
2cfabc4eb2 obuspa: use hotplug instead of procd interface trigger 2020-12-22 09:43:17 +01:00
Amin Ben Ramdhane
8f0e98f50b bbf: 3.2.7 2020-12-21 21:00:55 +01:00
Amin Ben Ramdhane
d3cf57ef77 swmodd: 1.1.0 2020-12-21 20:58:43 +01:00
Amin Ben Ramdhane
036e27876a icwmp: 6.3.2-2020-12-21 2020-12-21 20:55:23 +01:00
Omar Kallel
69f8fcb047 icwmp: 6.3.1 memleak fixes 2020-12-21 11:27:19 +01:00
Jakob Olsson
c344fbe2ea map-agent: 3.1.3 2020-12-20 11:58:03 +01:00
Jakob Olsson
0a29c12e09 map-controller: 2.0.3: update cfg file name 2020-12-20 10:54:05 +01:00
Jakob Olsson
68ca5f7fb8 map-agent: 3.1.2: update cfg file name 2020-12-20 10:50:09 +01:00
Jakob Olsson
8cb7c61007 map-agent: 3.1.1 2020-12-20 10:15:39 +01:00
Jakob Olsson
61359cb291 map-controller: disable logging by default 2020-12-18 17:39:09 +01:00
Jakob Olsson
4a439783c8 map-agent: disable logging by default 2020-12-18 17:39:09 +01:00
Jakob Olsson
cd1ad2ec7a map-agent: 3.1.0 2020-12-18 17:39:09 +01:00
Jakob Olsson
9a25147997 map-controller: 2.0.2 2020-12-18 17:39:09 +01:00
Jakob Olsson
ad4c0f5cf1 map-agent: 3.0.4 2020-12-18 17:39:09 +01:00
Jakob Olsson
3f6076369f wifimngr: add reload trigger on wireless config 2020-12-18 17:39:09 +01:00
Jakob Olsson
fbc699524a map-1905: 0.0.15 2020-12-18 17:39:09 +01:00
Jakob Olsson
f7c45760da map-controller: 2.0.0 2020-12-18 17:39:05 +01:00
Jakob Olsson
e03c14ae2b map-agent: 3.0.0 2020-12-18 17:16:45 +01:00
Omar Kallel
355e042820 icwmp: Memory leak fix 2020-12-18 13:33:55 +01:00
Amin Ben Ramdhane
53d2088715 bbf: 3.2.6 2020-12-18 11:33:35 +01:00
Sukru Senli
833c97d216 bulkdata: use correct json get api from libbbf 2020-12-18 08:25:24 +01:00
vdutta
59d2324acd obuspa: Added mqtt test in module test 2020-12-18 11:48:59 +05:30
Omar Kallel
e3cb3586d7 icwmp: json enhancements 2020-12-17 18:34:58 +01:00
Omar Kallel
a5e43567b3 icwmp: jsong and segfault Fixes 2020-12-17 17:19:47 +01:00
vdutta
e03568f9b1 obuspa: Added tests 2020-12-17 17:32:01 +05:30
Omar Kallel
ea23e1489c icwmp: make check_value_change independent from bbf 2020-12-17 12:52:47 +01:00
Amin Ben Ramdhane
32db63deb0 bbf: Added support for FAST object 2020-12-17 11:44:13 +01:00
Jani Juvan
5211a49f67 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* 400cc66 added root object for G.fast
-------------------------------------------------------------------------------
commit 400cc66081f2b10b481d5a745bc505b78af098bd
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-12-16 14:39:24 +0100

    added root object for G.fast

Base directory -> /
 dslmngr.c | 137 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 128 insertions(+), 9 deletions(-)
-------------------------------------------------------------------------------
2020-12-16 17:31:59 +01:00
Jakob Olsson
907f2fc59b easy-soc-libs: 6.0.2 2020-12-16 15:18:43 +01:00
Omar Kallel
cf8571b217 bbf: enhancements 2020-12-16 11:34:54 +01:00
vdutta
86bab4da22 uspd: Multiple fixes
- Uci Schema updated
- Ubus schema updated
- Config option for sock path
- config option for transaction_timeout
- config option to disable uspd
- Align with latest bbf
- Added tests
2020-12-16 15:53:19 +05:30
Amin Ben Ramdhane
3bdf2ba11b bbf: remove tr064 feature and cleanup 2020-12-16 10:17:41 +01:00
Amin Ben Ramdhane
4ee3a92064 icwmp: Align with latest bbf changes 2020-12-16 10:15:06 +01:00
Amin Ben Ramdhane
f1b4cbc520 bulkdata: Align with latest bbf changes 2020-12-16 10:13:34 +01:00
Omar Kallel
dff5045437 icwmp: use usp.raw methods instead of call ubus swmodules 2020-12-15 19:22:06 +01:00
Anjan Chanda
80a057b727 wifimngr: 8.3.0 2020-12-15 17:18:01 +01:00
Anjan Chanda
84a8afe5da easy-soc-libs: 6.0.1 2020-12-15 17:07:17 +01:00
Omar Kallel
609035d250 icwmp: Move and update some bbf functions to icwmp 2020-12-15 15:32:11 +01:00
Sukru Senli
bb0299fe26 tr064: remove package 2020-12-15 10:19:18 +01:00
vdutta
57f6e54646 obuspa: Updated schema and defaults
- Added interface option in global section
- Rebuild persistent db on uci change
- Updated keep.d with db_file
- Updated uci schema and docs
2020-12-14 16:31:26 +05:30
Sukru Senli
859a2af38e icwmp: temporary upgrade fix 2020-12-13 11:50:38 +01:00
Sukru Senli
477284e1a6 obuspa: add interface trigger and update default config 2020-12-13 07:30:24 +01:00
Omar Kallel
a9d10a8642 bbf: 3.1.1 2020-12-12 15:00:48 +01:00
Rahul
01cf113338 qosmngr: fix regression
Changes to resolve bug #4010 and #4011 are moved to devel as well.

Test: regression run on dg400prime devel, all test pass now
2020-12-12 16:23:58 +05:30
Sukru Senli
7da94735b5 icwmp: temporary fix for image verification
cwmp upgrade still does not work reliably on bcm
2020-12-11 21:40:34 +01:00
vdutta
baccd9ad56 obuspa: Fix log_level error in init script 2020-12-12 00:18:53 +05:30
vdutta
1642841acd obuspa: Added transaction id in transactions 2020-12-11 16:22:45 +05:30
vdutta
c3157ef44e uspd: Enhancement in transaction APIs 2020-12-11 16:15:17 +05:30
Omar Kallel
127f732831 icwmp: transaction_id 2020-12-11 11:32:23 +01:00
vdutta
be91f797dc obsupa: Updated uci for easy setup 2020-12-10 21:04:35 +05:30
vdutta
ae7a3e329f obsupa: Reduce number of groups 2020-12-10 19:43:37 +05:30
Jani Juvan
ef37f8d9c1 Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* db2ced9 libdsl improvements for Broadcom platform
* 6d26413 libwifi: handle radio oper std for only STA iface
* fe5ba89 libwifi: mtk: add single/multi_ap mode
-------------------------------------------------------------------------------
commit db2ced904ddbd6ab936403ae193b2e343845fdf1
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-12-10 11:00:40 +0000

    libdsl improvements for Broadcom platform

    - Report supported profiles based on current config in DSL driver
    - Replace deprecated StandardsSupported and StandardUsed with XTSE and
    XTSUsed

Base directory -> /
 libdsl/broadcom/bcm_dsl_api.c | 260 +++++++++++++++++++++++++++++++++---------
 libdsl/xdsl.h                 |   1 +
 2 files changed, 210 insertions(+), 51 deletions(-)
-------------------------------------------------------------------------------
commit 6d26413522242a352715fafc1e9fc62626fc61f9
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-11-27 18:30:47 +0000

    libwifi: handle radio oper std for only STA iface

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c  | 13 ++++++++-----
 libwifi/wpactrl_util.c | 27 ++++++++++++++++-----------
 libwifi/wpactrl_util.h |  1 +
 3 files changed, 25 insertions(+), 16 deletions(-)
-------------------------------------------------------------------------------
commit fe5ba89b8479ba5574fe8cf6e38904125f6aa9fb
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-30 18:32:43 +0100

    libwifi: mtk: add single/multi_ap mode

    Extend wifi API with wps multi_ap parameter.

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 libwifi/wifi.h         | 9 +++++----
 libwifi/wpactrl_util.c | 2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)
-------------------------------------------------------------------------------
2020-12-10 12:17:45 +01:00
vdutta
07ca78f548 uspd: Multiple fixes
- Initialise and commit dmmap on startup
- Fix transaction_ api related issues
- Configure socket buf size as per blob len
- Added option to register with named ubus sockets
- list_notify: Added method to list notification params
- Fix usp.raw schema and tests
2020-12-09 18:21:52 +05:30
Amin Ben Ramdhane
10a11f0cb8 BulkData & XMPP & TWAMP: align with latest bbf changes 2020-12-07 22:47:29 +01:00
Amin Ben Ramdhane
4c11cdac89 bbf: 3.1.0 2020-12-07 22:45:13 +01:00
Omar Kallel
8b51e8c03b icwmp: fix transactions 2020-12-07 16:19:12 +01:00
Sukru Senli
2d9f03d6ab iop: select mosquitto packages 2020-12-07 15:47:41 +01:00
Amin Ben Ramdhane
e19674ea70 Align BulkData & XMPP & TWAMP with latest bbf changes 2020-12-06 22:49:29 +01:00
Amin Ben Ramdhane
0af09b123c bbf: improve and cleanup the code 2020-12-06 22:47:40 +01:00
Amin Ben Ramdhane
6e6f7289ad bbf: init context before commit cwmp changes 2020-12-04 14:43:22 +01:00
Jakob Olsson
25f6109691 ieee1905: 2.1.32 2020-12-04 14:32:15 +01:00
Amin Ben Ramdhane
7e0fe946cd bbf: Multiple fixes in DHCPv4 object 2020-12-04 11:46:09 +01:00
Omar Kallel
c831c34a94 icwmp: Fix GPV issue 2020-12-04 10:25:55 +01:00
Amin Ben Ramdhane
a9180d3a2b bbf: commit cwmp changes without restarting its service 2020-12-03 21:40:56 +01:00
vdutta
3ad8ef4b40 uspd: Apply changes only if no fault for cwmp proto 2020-12-04 00:00:12 +05:30
Rahul
17fd0ab28a qosmngr: update default config
Precedence value update to map with tr181 in default config,
now goes from 1 to 8, 8 meaning queue has lowest priority and 1
meaning that the queue has highest priority.

The broadcom script takes care of reversing this and mapping this
to 0 to 7 before configuring actual queues.
2020-12-03 17:50:45 +01:00
Omar Kallel
8ae15aa39b icwmp: Fix GPA issue 2020-12-03 16:03:39 +01:00
Vivek Dutta
1ed5f0c0f6 uspd: update to transaction support 2020-12-03 16:01:47 +01:00
Amin Ben Ramdhane
939ff109c2 bbf: update libbbf to support transactions 2020-12-03 15:50:30 +01:00
Sukru Senli
5c9469589c icwmp: sync files 2020-12-03 12:42:20 +01:00
Sukru Senli
d6dae7cd0b icwmp: make wait for service ubus object based 2020-12-02 19:42:23 +01:00
Omar Kallel
0872d45d63 icwmp: Fix fails returned by CD-Router 2020-12-02 15:14:02 +01:00
Rahul
14e54fbf04 qosmngr: fix regression
latest patch to resolve precedence issue causes regression.
Bug: queues for any port not configured at boot
fix: create the folders which store queue precedence
2020-12-02 19:10:16 +05:30
vdutta
105edbfada obuspa: Align with uspd 2020-12-02 17:13:48 +05:30
vdutta
a77deb3f36 uspd: Transaction support and setm_values improvements 2020-12-02 17:09:18 +05:30
jjoseph
38f737fa20 qosmngr: Bug #3822: TR-181: Some Device.QoS.Queue parameters are returning invalid values 2020-12-02 06:26:48 +00:00
Amin Ben Ramdhane
600209795d bbf: 3.0.4 2020-12-01 19:27:52 +01:00
Omar Kallel
6819ccef9c icwmp: use transactions 2020-12-01 18:38:37 +01:00
Amin Ben Ramdhane
8d257729ef bbf: wifi: adapt OperatingChannelBandwidth get value to WiFi6 2020-11-30 19:35:29 +01:00
Amin Ben Ramdhane
78c84db435 bbf: 3.0.3 2020-11-29 23:12:38 +01:00
Sukru Senli
1b1e071b1b iop: deselect miniupnpc by default 2020-11-29 15:18:51 +01:00
vdutta
38bf0e3c89 obuspa: Free cached data and fix init script 2020-11-28 20:03:15 +05:30
Sukru Senli
2506c9874a obuspa: set db_file explicitly in uci until init script is fixed 2020-11-28 14:08:21 +01:00
Jani Juvan
ee486af38b Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* 44ecccf libdsl: fixed missing test stub updates
* 7b299da libwifi: mtk: correct non-existing include
* 79ba626 libwifi: mtk: fix oper_std when no ap iface
* 905c729 libwifi: update phy to netdev with type parameter
* 9094176 libwifi: simplify get_assoclist
* bda31e8 bwifi: mtk: Add time to station and backhaul status
* b50dd79 libwifi: mtk: include staging_dir mac header instead of kernel
-------------------------------------------------------------------------------
commit 44ecccf9892e4b1a80d98964d67050026035eb2b
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-27 18:21:41 +0100

    libdsl: fixed missing test stub updates

Base directory -> /
 libdsl/test_stub/stub.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 7b299da891065b3a02f8e07bd9a835d0b0c74912
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-24 19:47:00 +0100

    libwifi: mtk: correct non-existing include

    nl80211.h does not exist in staging dir while esl is built. Copy of
    nl80211.h must be stored in esl.

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 libwifi/modules/copy_nl80211.h | 6930 ++++++++++++++++++++++++++++++++++++++++
 libwifi/modules/nlwifi.c       |    2 +-
 2 files changed, 6931 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 79ba626ecdd15175c6375364e8eecac77c2193b1
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-11-18 12:17:19 +0000

    libwifi: mtk: fix oper_std when no ap iface

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 63 insertions(+), 6 deletions(-)
-------------------------------------------------------------------------------
commit 905c729efe237f2dc2088d00d4fac9b301dd52d7
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-11-23 14:58:22 +0000

    libwifi: update phy to netdev with type parameter

    Introduce nlwifi_phy_to_netdev_with_type function which allows to get netdev
    from phy wiyh requested type. Possible options are:
    -NLWIFI_MODE_AP,
    -NLWIFI_MODE_STA,
    -NLWIFI_MODE_AP_STA,
    -NLWIFI_MODE_ANY.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 40 ++++++++++++++++++++++++++++++++--------
 libwifi/modules/nlwifi.h |  6 ++++++
 2 files changed, 38 insertions(+), 8 deletions(-)
-------------------------------------------------------------------------------
commit 909417616eea5e4ecc3059ae766fc8a55c21a6b1
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-11-24 11:02:32 +0000

    libwifi: simplify get_assoclist

    Use only one hostapd_cli command list_sta in order to collect assoctiated
    stations.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/wpactrl_util.c | 63 +++++++++-----------------------------------------
 1 file changed, 11 insertions(+), 52 deletions(-)
-------------------------------------------------------------------------------
commit bda31e8fa970f7eb5c5077fc17a64c3ca07fc1b6
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-24 08:28:34 +0100

    bwifi: mtk: Add time to station and backhaul status

    Numbers taken from station dump: iw dev wlan1_1 station dump | egrep
    "inactive time|connected time| duration" idle 		-> inactive
    time:	450 ms in_network 	-> connected time:	2949 seconds
    tx_airtime	-> tx duration:		57214 us rx_airtime	-> rx duration:
    1117926 us

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 10 ++++++++++
 1 file changed, 10 insertions(+)
-------------------------------------------------------------------------------
commit b50dd79423dcdf9c9eace5945c29641d849876db
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-24 08:25:02 +0100

    libwifi: mtk: include staging_dir mac header instead of kernel

    nl80211.h header in linux-4.14.195 not contain TX_DURATION define in status
    enum. Fixed by including staging header from mac80211.

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
2020-11-27 18:26:51 +01:00
Sukru Senli
bf871111a5 iop: config: select uledd 2020-11-27 16:54:45 +01:00
vdutta
1388b566bc obsupa: Change debug level 2020-11-27 20:54:08 +05:30
vdutta
a63295be52 obsupa: Integrate 3.0.0 release
- Optimise uci to support configuration of multiple controllers
- Optimise init script to support MQTT proto
2020-11-27 20:47:16 +05:30
Amin Ben Ramdhane
450b9eaee9 Align XMPP & UDPEchoserver & TWAMP with latest bbf changes 2020-11-27 10:52:16 +01:00
Sukru Senli
e22a60c637 bulkdata: adapt to updated libbbf api 2020-11-27 08:43:08 +01:00
Hemlata Bhatt
32817656e1 bbf : Fix 3847 2020-11-26 12:20:19 +01:00
Jakob Olsson
da017f98e2 ieee1905: 2.1.31 2020-11-25 10:49:58 +01:00
Jakob Olsson
1e3c338abb Revert "ieee1905: 2.1.31"
This reverts commit 034f69408a.
2020-11-24 14:45:28 +01:00
Jakob Olsson
034f69408a ieee1905: 2.1.31 2020-11-24 14:43:05 +01:00
vdutta
d86e277461 obuspa: Align with transaction_* APIs 2020-11-24 17:14:12 +05:30
vdutta
2f333148b2 uspd: Multiple fixes
- 'transaction_*' apis with usp.raw object
 - new method 'setm_values' to set multiple values at once
 - 'dump_schema' with usp specific proto
 - Fix multiple output in 'getm_*' methods
 - Generate fault when set/add/del operations called without transaction
   using usp.raw object
 - Generate fault when set/add/del operation called using usp object and
   another transaction is in progress
2020-11-24 16:58:14 +05:30
Ronny Nilsson
8a275944e3 endptmngr: add a file necessary for build. 2020-11-24 11:29:48 +01:00
Ronny Nilsson
76d40e2e1e Update feed [ iopsys ] package [ endptmngr ]
-------------------------------------------------------------------------------
* c1d337a Fix a crash when endptmngr runs in Iopsys 6 with Broadcom 5.04.
-------------------------------------------------------------------------------
commit c1d337a584b42b5872fb3f3d043d487299d4f826
Author: Ronny Nilsson <ronny.nilsson@iopsys.eu>
Date: 2020-11-23 16:41:10 +0100

    Fix a crash when endptmngr runs in Iopsys 6 with Broadcom 5.04.

Base directory -> /
 src/Makefile              |  1 +
 src/brcm-504-workaround.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++
 src/line.c                |  2 ++
 src/main.c                |  2 ++
 4 files changed, 83 insertions(+)
-------------------------------------------------------------------------------
2020-11-23 21:36:31 +01:00
Sukru Senli
e00394f158 iop: sync config 2020-11-23 12:31:00 +01:00
sverma
64944425f5 wfadatad: Change UBUS object name to 'wifi.dataelements'. 2020-11-23 16:22:46 +05:30
Omar Kallel
9d996bdf9e icwmp: remove the use of forced_inform and force_notifications uci sections 2020-11-23 11:16:39 +01:00
Amin Ben Ramdhane
5c8e7cb740 bbf: 3.0.2 2020-11-20 21:47:49 +01:00
vdutta
201fb45c6c obuspa: Align with uspd 2020-11-20 23:24:47 +05:30
vdutta
7e2cdb88fb uspd: Fix getm_ method and pretty print 2020-11-20 23:11:14 +05:30
Jani Juvan
f750ab67d7 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* 6d32414 fixes for G.fast support
-------------------------------------------------------------------------------
commit 6d32414514842b70fae1ee96069d0712b900151e
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-18 18:03:52 +0100

    fixes for G.fast support

Base directory -> /
 dslmngr.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
-------------------------------------------------------------------------------
2020-11-20 13:35:22 +01:00
Jani Juvan
1ba812351d Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* bb551b4 libdsl: add G.fast support
-------------------------------------------------------------------------------
commit bb551b434ac9de31581e905cf5516644c12a877c
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-06 16:01:47 +0100

    libdsl: add G.fast support

Base directory -> /
 libdsl/broadcom/bcm_dsl_api.c | 241 +++++++++++++++++++++++++++++++++++++++++-
 libdsl/utils.c                |   3 +
 libdsl/xdsl.h                 |  12 ++-
 3 files changed, 249 insertions(+), 7 deletions(-)
-------------------------------------------------------------------------------
2020-11-20 13:35:02 +01:00
Jani Juvan
efc11f8c6d dslmngr: update minor version number for adding G.fast support 2020-11-20 13:13:24 +01:00
Ronny Nilsson
69cf19cc8e TaaS: added boostrap support.
Nice to have feature which wipes the flash in a
remote lab DUT and writes the localy built image.
Note: no testing of the image is done.
2020-11-19 22:30:13 +01:00
Ronny Nilsson
085ec84436 taas: we have EX600 too in the dev remote lab. 2020-11-19 22:30:13 +01:00
Ronny Nilsson
faec0f002a taas: prerequisite check has been moved to a common lib. 2020-11-19 22:30:13 +01:00
Amin Ben Ramdhane
436a57f8d6 bbf: Fix some parameters that have invalid values 2020-11-19 20:54:53 +01:00
Janusz Dziedzic
e3d0362d1f Update feed [ iopsys ] package [ easy-soc-libs ]
1cb7c8 libwifi: bcm: get assoclist from hostap
eb0c403 libwifi: bcm: use wl command for neighbors
80c1a24 libwifi: wpactrl: fix neighbor handling
a2c17f7 libwifi: bcm: use reload_config
2020-11-19 18:12:01 +01:00
Jani Juvan
3135ad4865 Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* 97e29e3 fixup for variable mixup in previous commit
-------------------------------------------------------------------------------
commit 97e29e3bb7bece10f728b09f8031b26b61b1debe
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-19 14:55:57 +0100

    fixup for variable mixup in previous commit

Base directory -> /
 dslmngr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
2020-11-19 14:56:48 +01:00
Jani Juvan
12f4a5380b Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* a81fc07 added missing index updates for stats
-------------------------------------------------------------------------------
commit a81fc073f54ba0d0c46685fff26bf074b40dc690
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-19 14:18:23 +0100

    added missing index updates for stats

Base directory -> /
 dslmngr.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
2020-11-19 14:27:31 +01:00
Jani Juvan
3887bab7f7 dslmngr: update minor version for index change 2020-11-19 14:26:22 +01:00
vdutta
a6a54316e8 uspd: Multiple fixes
- instance_mode parameter in usp ubus object methods
 - Remove list_inform to align with latest bbf changes
 - transaction related usp.raw methods
 - Segregate usp and usp.raw object methods
 - Support of percent escaped double quote in unique key search
 - set: Show end_session_flag for cwmp proto
 - Parallel processing support for operate and get commands
 - unique_keys in 'dump_schema' method
 - In/Out parameters in 'list_operate' method
 - Performance optimizations
2020-11-19 18:04:07 +05:30
Amin Ben Ramdhane
0273969b9c icwmp: 6.0-2020-10-19 2020-11-19 13:20:24 +01:00
Andreas Gnau
0781d5620d natalie-dect: Change open SDK download URL to https 2020-11-19 13:18:03 +01:00
Andreas Gnau
d8d42400b1 endptmngr: Change open SDK download URL to https 2020-11-19 13:18:03 +01:00
Amin Ben Ramdhane
c3ee0a2d8a Align BulkData & XMPP & UDPEchoserver & TWAMP with latest bbf changes
- remove unnecessary arguments from object/parameter definition
2020-11-19 13:16:47 +01:00
Amin Ben Ramdhane
d66c3c0bbf bbf: 3.0-2020-11-19 2020-11-19 13:15:55 +01:00
Andreas Gnau
a57d03d7e9 iop: config: Change CONFIG_LOCALMIRROR to https 2020-11-19 13:11:42 +01:00
Jani Juvan
ec35396ffc Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* c04da97 ubus indexes for line and channel starting from 1
-------------------------------------------------------------------------------
commit c04da9743198041de1fbaa05600d997a4f71c174
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-18 10:10:06 +0100

    ubus indexes for line and channel starting from 1

Base directory -> /
 dslmngr.c | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)
-------------------------------------------------------------------------------
2020-11-18 13:22:41 +01:00
Jani Juvan
7e9a109466 Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* 656dc78 libwifi: mtk: add SCAN_ABORT event
-------------------------------------------------------------------------------
commit 656dc782fda897559d5e3b336cab571162daee5f
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-16 11:46:52 +0100

    libwifi: mtk: add SCAN_ABORT event

    Add SCAN_ABORT event for radio interface.

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 3 +++
 libwifi/wifi.h           | 1 +
 2 files changed, 4 insertions(+)
-------------------------------------------------------------------------------
2020-11-18 13:22:27 +01:00
Omar Kallel
21c9d13b7a cwmp: get forced inform and froced notifications from cwmp uci config instead of bbf 2020-11-18 10:16:16 +01:00
Jani Juvan
f467f2a90f Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* db4be52 fix for handling negative uints
-------------------------------------------------------------------------------
commit db4be520b7d03cfa576a95850ea44e59b41381ec
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-17 16:30:17 +0100

    fix for handling negative uints

Base directory -> /
 dslmngr.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
2020-11-17 16:39:27 +01:00
Sukru Senli
8ffe458009 remove reference to non-existing parameters 2020-11-17 13:22:09 +01:00
Sukru Senli
a9122f9909 cifsd, cifsd-tools: replaced by ksmbd and ksmbd-tools 2020-11-17 13:21:16 +01:00
Sukru Senli
cea453c91c correct copyright headers in package Makefiles 2020-11-17 13:14:22 +01:00
Rahul
4b707a26f4 Fix Bug #3822: BurstSize default value updated
The default value of burst size in config is set to -1 which is one
part of the problem. The other part of the problem is that the check
in tr181 is not good enough to disallow negative values. That will
be fixed in a seprate patch.
2020-11-17 16:32:29 +05:30
Amin Ben Ramdhane
81a39308cc bbf: 2.9-2020-11-16 2020-11-16 22:07:04 +01:00
Jani Juvan
73d7e51afa Update feed [ iopsys ] package [ dslmngr ]
-------------------------------------------------------------------------------
* 2da1a3f clean-up json-files api-testing
* 21b0119 fixed invalid json
* 549a924 Fix a compilation error in testing
* c06c317 moved dependencies to shell-script instead of having them in docker file
-------------------------------------------------------------------------------
commit 2da1a3fc3d7ba2babfd88032af05c0e226e89008
Author: Suru Dissanaike <suru.dissanaike@iopsys.eu>
Date: 2020-08-12 17:14:11 +0200

    clean-up json-files api-testing

Base directory -> /
 test/api/json/atm.link.validation.json    | 12 ------------
 test/api/json/dsl.channel.validation.json |  2 +-
 test/api/json/dsl.line.validation.json    | 13 -------------
 3 files changed, 1 insertion(+), 26 deletions(-)
-------------------------------------------------------------------------------
commit 21b0119c090832da9f8a3e4882876649f747ed22
Author: Suru Dissanaike <suru.dissanaike@iopsys.eu>
Date: 2020-08-12 08:45:15 +0200

    fixed invalid json

Base directory -> /
 test/api/json/atm.link.validation.json | 3 ---
 1 file changed, 3 deletions(-)
-------------------------------------------------------------------------------
commit 549a924c5f3d48db43f02b469e7261feec10c47e
Author: Yalu Zhang <yalu.zhang@iopsys.eu>
Date: 2020-08-10 12:39:18 +0200

    Fix a compilation error in testing

Base directory -> /
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit c06c31728555a091f2807e64ddf7849829c57fef
Author: Suru Dissanaike <suru.dissanaike@iopsys.eu>
Date: 2020-08-05 15:15:41 +0200

    moved dependencies to shell-script instead of having them in docker file

Base directory -> /
 .gitlab-ci.yml                    |  9 ++++++---
 gitlab-ci/install-dependencies.sh | 22 ++++++++++++++++++++++
 2 files changed, 28 insertions(+), 3 deletions(-)
-------------------------------------------------------------------------------
2020-11-16 15:49:31 +01:00
Jani Juvan
557f2693d3 Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* 03a776e libdsl: dsl line and channel parameter corrections
* 1a0d70d libdsl: add support for gfast in makefile
* 82dd72a libwifi: mtk: Fix survey dump
* 6c0ba2a libwifi: mtk: nlwifi_phy_to_netdev correct name and behaviour
* f04cd96 libwifi: mtk: fill ifaces field in wifi_radio
-------------------------------------------------------------------------------
commit 03a776e8af7399e11d1405b351df0dafa3b9ae33
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-12 11:58:31 +0100

    libdsl: dsl line and channel parameter corrections

Base directory -> /
 libdsl/broadcom/bcm_dsl_api.c | 56 ++++++++++++++++++++++++++-----------------
 libdsl/xdsl.h                 |  4 ++--
 2 files changed, 36 insertions(+), 24 deletions(-)
-------------------------------------------------------------------------------
commit 1a0d70dddb5dbf8f23d902024ffbb7526e0fcf52
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-16 13:51:45 +0100

    libdsl: add support for gfast in makefile

Base directory -> /
 libdsl/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 82dd72a5b989b3a57d829c00100b89a1f53a908a
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-10 11:34:04 +0100

    libwifi: mtk: Fix survey dump

    nlwifi_phy_to_netdev commit introduce the bug in survey dump fetching.
    Variable name corrected here.

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 6c0ba2ae1b35298ea93b85fb3989d084b20fb113
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-09 13:20:52 +0100

    libwifi: mtk: nlwifi_phy_to_netdev correct name and behaviour

    phy_to_netdev -> nlwifi_phy_to_netdev This function does not depend on
    carrier any more. It uses get_ifstatus instead

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    | 16 +++++++--------
 libwifi/modules/nlwifi.c | 51 +++++++++++++++++++-----------------------------
 libwifi/modules/nlwifi.h |  2 +-
 3 files changed, 29 insertions(+), 40 deletions(-)
-------------------------------------------------------------------------------
commit f04cd96dd16136b66f58be6e21d34bdd34f25294
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-11-06 21:55:04 +0100

    libwifi: mtk: fill ifaces field in wifi_radio

    ifaces will be listed for given phy.

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 36 ++++++++++++++++++++++++++++++++++++
 1 file changed, 36 insertions(+)
-------------------------------------------------------------------------------
2020-11-16 15:48:24 +01:00
Sukru Senli
c9b2973ac8 qosmngr: correct cpu_model check 2020-11-13 22:51:13 +01:00
Sukru Senli
6f15e7ff27 qos: skip policer config for BCM6755 2020-11-13 22:37:38 +01:00
Sukru Senli
f431a3ddf5 icwmp: remove icwmp-tr098 subpackage 2020-11-13 21:51:08 +01:00
Anjan Chanda
4ce6578aa7 ieee1905-2.1.30 2020-11-13 21:45:44 +01:00
Amin Ben Ramdhane
39ab8e9282 bbf: 2.9-2020-11-13 2020-11-13 17:10:38 +01:00
Jani Juvan
e5694c1429 easy-soc-lib: Fix Makefile to pass correct broadcom chip config 2020-11-13 15:36:07 +01:00
Andreas Gnau
0c998dbb66 endptmngr: Renaming and clean-up of config-options
* Don't pass unused config options to Makefile
* Account for rename TARGET_NO_VOICE => !BCM_VOICE
2020-11-11 21:15:40 +01:00
Amin Ben Ramdhane
d8b5f3e1f0 bbf: 2.8-2020-11-11 2020-11-11 20:34:43 +01:00
Ronny Nilsson
0b39626067 Update feed [ iopsys ] package [ libpicoevent ]
-------------------------------------------------------------------------------
* f446f18 LICENSE: GPLv2 -> LGPLv2.1
-------------------------------------------------------------------------------
commit f446f186102539cceedaa15a95a33547ac3c1fd7
Author: Sukru Senli <sukru.senli@iopsys.eu>
Date: 2020-04-27 14:38:26 +0200

    LICENSE: GPLv2 -> LGPLv2.1

Base directory -> /
 LICENSE | 631 +++++++++++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 406 insertions(+), 225 deletions(-)
-------------------------------------------------------------------------------
2020-11-11 20:07:31 +01:00
Ronny Nilsson
5665076321 endptmngr: restore autostart of endptmngr at boot. 2020-11-11 16:26:44 +01:00
Anjan Chanda
db5c1613f5 wfadatad: 3.0.0 2020-11-11 12:33:51 +01:00
Benjamin Larsson
c82cf9ebb0 Update feed [ iopsys ] package [ peripheral_manager ]
-------------------------------------------------------------------------------
* dd4a72a Dimmed LEDs should light up when press indicator is used.
* 68606f4 Remove test/include/mock_board.h
* c7e50cb Update path for IOP6.
* 5e2a45b Fully implement Linux GPIO and remove Broadcom ioctl().
* aff6aaf Update README.md
* 4dd33de Each button object needs to change lowercase, otherwise the button object will report error in ubus call.
-------------------------------------------------------------------------------
commit dd4a72aca663bf3c9a57f20e889e43a55d3da1b3
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2020-10-06 10:06:15 +0200

    Dimmed LEDs should light up when press indicator is used.

    When having dimmed LEDs and press indicator event occurs, we do want to them
    to temporarily light up 100%.

Base directory -> /
 src/led.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
-------------------------------------------------------------------------------
commit 68606f4dd3dbfe03d4256cd256e797f035d36c51
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2020-10-09 14:58:55 +0200

    Remove test/include/mock_board.h

    The file 'mock_board.h' serves no purpose and should be removed.

    This commit removes it.

Base directory -> /
 test/include/mock_board.h | 109 ----------------------------------------------
 1 file changed, 109 deletions(-)
-------------------------------------------------------------------------------
commit c7e50cb16c2f583e842ccb0622631e7e03dc3079
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2020-10-09 14:40:42 +0200

    Update path for IOP6.

    The paths have changed on IOP6, this change reflects the current paths.

Base directory -> /
 src/peripheral_manager.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 5e2a45b15b231da37764d00469137609471ae4c6
Author: Markus Gothe <markus.gothe@genexis.eu>
Date: 2020-10-09 14:38:12 +0200

    Fully implement Linux GPIO and remove Broadcom ioctl().

    This also removes the obsolete use of sprintf() and correctly initializes
    the variables (with cacheline alignment).

    What needs further testing is bit-banging via the /sys/class/gpio-interface.
    My initial testing on the EX600 showed however that this is possible.

Base directory -> /
 CMakeLists.txt            | 15 +------------
 src/eco_bug.c             |  4 +---
 src/gpio.c                | 56 -----------------------------------------------
 src/gpio.h                | 42 ++++++++---------------------------
 src/gpio_button.c         | 15 -------------
 src/gpio_led.c            |  7 ------
 src/gpio_linux.c          | 52 +++++++++++++++++++++----------------------
 src/gpio_test.c           | 13 ++++-------
 src/led.c                 |  4 ++--
 src/prox_px3220.c         |  2 +-
 src/touch_sx9512.c        | 23 +++++--------------
 test/include/mock_board.h |  1 -
 12 files changed, 48 insertions(+), 186 deletions(-)
-------------------------------------------------------------------------------
commit aff6aafa04d908dca48852babe7dc0b0fa900aa8
Author: Andreas Jonson <andreas.jonson@iopsys.eu>
Date: 2020-09-09 11:09:44 +0200

    Update README.md

Base directory -> /
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 4dd33de8f7b023c5260dc493ed37337fb2c2dc31
Author: pitchaiah prakash <pitchaiah.murugan@iopsys.eu>
Date: 2020-07-08 20:29:24 +0200

    Each button object needs to change lowercase, otherwise the button object
    will report error in ubus call.

Base directory -> /
 src/button.c | 1 +
 1 file changed, 1 insertion(+)
-------------------------------------------------------------------------------
2020-11-10 15:34:17 +01:00
Ronny Nilsson
1f7565536d endptmngr: Adaptions for working with Broadcom 5.04L.02 2020-11-10 15:01:51 +01:00
Ronny Nilsson
1922fa2560 iop: TaaS need the trickle application too. 2020-11-08 01:12:27 +01:00
Ronny Nilsson
fe86ade858 iop: Refactor, extract to separate function. 2020-11-08 01:11:10 +01:00
Ronny Nilsson
f49c4f4a64 Rename due to several remote lab TaaS commands will be added to same file. 2020-11-08 00:35:51 +01:00
Jani Juvan
ac7491c010 Update feed [ iopsys ] package [ easy-soc-libs ]
-------------------------------------------------------------------------------
* 92f1e5a libdsl: broadcom header fixup
* 4c72c1f libwifi: mtk: use reload_config
* e1f9fb9 libwifi: refactor ap_info call
* 321445d libwifi: nlwifi: fill survey in channels_info
* c723e0a libwifi: nlwifi: add channels_info
* f3368e4 libwifi: nlwifi: get vendor/product id
* 24dca3f libwifi: wifi: add channels_info callback
* 012de6c libwifi: mtk: add req_btm
* b900276 libwifi: mtk: add oper_std indication for backhaul
* 2deb863 libwifi: mtk: get_param - empty outupt buffer
* 89cd623 libwifi: iterate wildcard SSID IE correctly
* 6f508cb libwifi: introduce IE defines
* 4b582a3 libwifi: nlwifi: get channel correctly
* 22d94bb libwifi: nlwifi: introduce nlwifi_get_survey()
* 3ca5d99 libwifi: nlwifi: check max for supp channels
* 846cf76 libwifi: nlwifi: move phy_to_netdev()
* ef7c9c6 libwifi: wifi: use u64 for radio diagnostic
* 78b05b3 libwifi: nlwifi: get noise level
* 3e356a9 libwifi: nlwifi: use nlwifi_cmd() for scan
* 57b7659 libwifi: nlwifi: use nlwifi_cmd()
* 9a9fedf libwifi: nlwifi: use nlwifi_cmd()
* af18d6d libwifi: nlwifi: unlock phy commands
* b63aa97 libwifi: nlwifi: prepare for DFS
* 38e0638 libwifi: nlwifi: introduce nlwifi_cmd()
* 96eb796 libwifi: mtk: implement get_beacon_ies
-------------------------------------------------------------------------------
commit 92f1e5a99226bd18897b1832e1879555e9953751
Author: Jani Juvan <jani.juvan@iopsys.eu>
Date: 2020-11-05 15:55:05 +0100

    libdsl: broadcom header fixup

Base directory -> /
 libdsl/Makefile              |  2 +-
 libdsl/broadcom/AdslMibDef.h | 53 +++++++++++++++++++++++++++-----------------
 libdsl/broadcom/bcmadsl.h    | 31 ++++++++++++++++++--------
 3 files changed, 56 insertions(+), 30 deletions(-)
-------------------------------------------------------------------------------
commit 4c72c1ff3c7e1d45d2007f68b6eb867e583b9bb7
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-28 10:24:41 +0100

    libwifi: mtk: use reload_config

    Use reload_config command when add/remove interfaces.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
-------------------------------------------------------------------------------
commit e1f9fb9f62876029f83be79e51a9ccdce706edb5
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-10-12 10:05:57 +0000

    libwifi: refactor ap_info call

    Use beacon ie in ap_info call to collect information about AP. Use size_t
    instead of int to pass size arguments. Add some generic functions to parse
    ies content. Move generic functions from wpactrl_util to util.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c  |  31 +-----
 libwifi/util.c         | 114 ++++++++++++++++++++++
 libwifi/util.h         |   3 +
 libwifi/wpactrl_util.c | 256 ++++++++++++++++---------------------------------
 libwifi/wpactrl_util.h |  17 +++-
 5 files changed, 216 insertions(+), 205 deletions(-)
-------------------------------------------------------------------------------
commit 321445d0a8edfb171400cada477e15d154cb1c61
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-20 20:49:58 +0200

    libwifi: nlwifi: fill survey in channels_info

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 104 +++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 96 insertions(+), 8 deletions(-)
-------------------------------------------------------------------------------
commit c723e0ae1224212ec352161cf02cd328bcc2c07a
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-20 14:42:35 +0200

    libwifi: nlwifi: add channels_info

    Add implementation for channels_info. Fill DFS related params.

    We still need to add survey data.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    |  1 +
 libwifi/modules/nlwifi.c | 90 ++++++++++++++++++++++++++++++++++++++++++------
 libwifi/modules/nlwifi.h |  1 +
 3 files changed, 81 insertions(+), 11 deletions(-)
-------------------------------------------------------------------------------
commit f3368e44b69287499bde0206dca312c22ea2f73e
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-20 12:03:53 +0200

    libwifi: nlwifi: get vendor/product id

    Fill driver info vendor/product id.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    |  1 +
 libwifi/modules/nlwifi.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++
 libwifi/modules/nlwifi.h |  1 +
 3 files changed, 76 insertions(+)
-------------------------------------------------------------------------------
commit 24dca3f513087668117bd3d9127eab4051148380
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-23 15:50:41 +0200

    libwifi: wifi: add channels_info callback

    Will be used to get information about channels, like:
    - dfs
    - dfs state
    - busy percent
    - our busy_tx/busy_rx percent
    - noise flour
    - CAC time
    - left NOP time

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/wifi.c | 11 +++++++++++
 libwifi/wifi.h | 37 ++++++++++++++++++++++++++++++++++++-
 2 files changed, 47 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 012de6c2776f745d4578fa34c7489ddbdb862515
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-15 16:27:37 +0200

    libwifi: mtk: add req_btm

    Add implementation for req_btm()

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    | 23 +++++++++++++++++++++++
 libwifi/modules/nlwifi.c |  2 +-
 libwifi/wpactrl_util.c   |  3 +++
 libwifi/wpactrl_util.h   |  2 ++
 4 files changed, 29 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit b9002767a83303d2a833948e9086bd85cd306d96
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-10-15 08:51:50 +0200

    libwifi: mtk: add oper_std indication for backhaul

    oper_std will return the information about link standard. 5GHz: a/n/ac are
    supported separatelly 2,4GHz: b/g or n are supported.

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c  |  8 +++++-
 libwifi/wpactrl_util.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++-
 libwifi/wpactrl_util.h |  3 +++
 3 files changed, 75 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 2deb86307a763a288eb8735b390ad7953f56ff01
Author: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>
Date: 2020-10-14 12:39:23 +0200

    libwifi: mtk: get_param - empty outupt buffer

    get_param function called multiple times, might not refresh output buffer.
    Clear buffer before filling up with new data.

    Signed-off-by: Bartlomiej Grzeskowiak <bartlomiej.grzeskowiak@iopsys.eu>

Base directory -> /
 libwifi/wpactrl_util.c | 1 +
 1 file changed, 1 insertion(+)
-------------------------------------------------------------------------------
commit 89cd6237ba90346101f62721424408202785e1c8
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-10-14 10:36:32 +0000

    libwifi: iterate wildcard SSID IE correctly

    For wildcard SSID lenght of information element is zero, change macro
    wifi_foreach_ie to handle also this case.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/wifi.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 6f508cbe6d958cdfc5f60c6827ce9b0cf939e53e
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-10-05 20:53:50 +0000

    libwifi: introduce IE defines

    Replace raw IE ids with more redable defines like:
    "0" -> IE_SSID

    It will be usefull in IE's composition/decomposition.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/bcm.c    | 14 +++++++-------
 libwifi/modules/intel.c  | 14 +++++++-------
 libwifi/modules/nlwifi.c | 22 +++++++++++-----------
 libwifi/util.c           | 12 ++++++------
 libwifi/wifi.h           | 15 +++++++++++++++
 5 files changed, 46 insertions(+), 31 deletions(-)
-------------------------------------------------------------------------------
commit 4b582a3b69b7196ed7784d1f23b93523e49d0e1a
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-06 14:33:32 +0200

    libwifi: nlwifi: get channel correctly

    In case we don't have netdev, get channel from supported channels.

    In other case upper layer could show band incorrectly.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    |  7 ++-----
 libwifi/modules/nlwifi.c | 50 ++++++++++++++++++++++++++++++++++++++++--------
 2 files changed, 44 insertions(+), 13 deletions(-)
-------------------------------------------------------------------------------
commit 22d94bb33d7a876ef8a6c588ba7f91b0c56e11a7
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-06 14:31:44 +0200

    libwifi: nlwifi: introduce nlwifi_get_survey()

    Get survey and fill radio diagnostic counters.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 76 +++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 62 insertions(+), 14 deletions(-)
-------------------------------------------------------------------------------
commit 3ca5d99a6d56699fdb0f5c7ee3d7690c49f110e7
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-06 14:26:17 +0200

    libwifi: nlwifi: check max for supp channels

    Check max for supported channels.

    This is important while we are using NLM_F_DUMP - so cb() could be called
    multiple times.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 846cf765afec559effe2fcb3598f4f88f1c2bbd4
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-06 14:07:23 +0200

    libwifi: nlwifi: move phy_to_netdev()

    Move phy_to_netdev() to nlwifi, while this is specyfic for opensource wifi
    stack.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    | 35 -----------------------------------
 libwifi/modules/nlwifi.c | 36 ++++++++++++++++++++++++++++++++++++
 libwifi/modules/nlwifi.h |  1 +
 3 files changed, 37 insertions(+), 35 deletions(-)
-------------------------------------------------------------------------------
commit ef7c9c6a90cc5b85ce1c6ad1300aeddbda260ca8
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-06 14:03:51 +0200

    libwifi: wifi: use u64 for radio diagnostic

    Use larger type for radio diagnostic counters.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/wifi.h | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
-------------------------------------------------------------------------------
commit 78b05b31fb07e5daefd3052a00e3dc1693772892
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-10-01 16:51:13 +0200

    libwifi: nlwifi: get noise level

    Get noise level for the current channel.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 64 insertions(+), 2 deletions(-)
-------------------------------------------------------------------------------
commit 3e356a934396ae8b354c3096f97c01c90689d6ec
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 19:06:16 +0200

    libwifi: nlwifi: use nlwifi_cmd() for scan

    Use it also for NL80211_CMD_GET_SCAN.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 42 +++++++++++-------------------------------
 1 file changed, 11 insertions(+), 31 deletions(-)
-------------------------------------------------------------------------------
commit 57b7659c33b6a90963f95e251a8ab0b58b151861
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 18:42:22 +0200

    libwifi: nlwifi: use nlwifi_cmd()

    Use it for NL80211_CMD_GET_STATION command.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 168 +++++++++++------------------------------------
 1 file changed, 38 insertions(+), 130 deletions(-)
-------------------------------------------------------------------------------
commit 9a9fedf0317820ad193ab457000a2cec193b4877
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 17:13:30 +0200

    libwifi: nlwifi: use nlwifi_cmd()

    Use it for NL80211_CMD_GET_INTERFACE.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 257 ++++++++++-------------------------------------
 1 file changed, 52 insertions(+), 205 deletions(-)
-------------------------------------------------------------------------------
commit af18d6dcb14b8e643cc5a51655b9bedff3f033ba
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 12:13:30 +0200

    libwifi: nlwifi: unlock phy commands

    Before we allow only netdev commands.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c    | 45 ++++++++++++++++-----------------------------
 libwifi/modules/nlwifi.c | 44 +++++++++++++++++++++++++++++++++++++++-----
 2 files changed, 55 insertions(+), 34 deletions(-)
-------------------------------------------------------------------------------
commit b63aa970233edb3ab75c8e5b48021669928ad410
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 11:56:00 +0200

    libwifi: nlwifi: prepare for DFS

    Request and show DFS channel state. This is preparation for real
    implementation.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 32 +++++++++++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)
-------------------------------------------------------------------------------
commit 38e063868ba27f6bea61b5f4fb905bd5480bc41c
Author: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>
Date: 2020-09-30 08:44:21 +0200

    libwifi: nlwifi: introduce nlwifi_cmd()

    Intruduce function that will send NL commands. As example use this command
    for all calls that using NL80211_CMD_GET_WIPHY.

    Signed-off-by: Janusz Dziedzic <janusz.dziedzic@iopsys.eu>

Base directory -> /
 libwifi/modules/nlwifi.c | 274 +++++++++++++++++++----------------------------
 1 file changed, 108 insertions(+), 166 deletions(-)
-------------------------------------------------------------------------------
commit 96eb796d35f53a540ed93b2a2a3c7f4575573021
Author: Marek Puzyniak <marek.puzyniak@iopsys.eu>
Date: 2020-09-29 19:24:45 +0000

    libwifi: mtk: implement get_beacon_ies

    Beacon IEs are taken from hostapd via new hostapd_cli command "get_beacon
    ies". IEs from hex string format are converted to binary array.

    Signed-off-by: Marek Puzyniak <marek.puzyniak@iopsys.eu>

Base directory -> /
 libwifi/modules/mtk.c  |  7 +++++++
 libwifi/wpactrl_util.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 libwifi/wpactrl_util.h |  2 ++
 3 files changed, 57 insertions(+)
-------------------------------------------------------------------------------
2020-11-06 08:37:44 +01:00
Jani Juvan
63db10eb1f easy-soc-lib: Fix Makefile to pass broadcom chip id properly 2020-11-06 08:35:41 +01:00
vdutta
651ad4ce22 map-1905: Add validate function in plugin 2020-11-06 10:14:22 +05:30
vdutta
51a3b0ad35 uspd: Added ubus methods to list_inform and init_notify 2020-11-05 15:50:09 +05:30
Oskar Viljasaar
0c8b1ea046 iop: genconfig: add iopsys-bcm2711 (rpi-4) support 2020-11-02 17:33:21 +01:00
Oskar Viljasaar
104805a36e feeds_update: add support for iopsys-bcm27xx 2020-11-02 17:32:25 +01:00
Oskar Viljasaar
a1bfb1b568 iop: genconfig_min: add iopsys-bcm2711 (rpi-4) support 2020-11-02 17:31:41 +01:00
Sukru Senli
5c744f71e3 remove reference to iopsys_brcm63xx_mips target 2020-11-01 10:42:32 +01:00
Sukru Senli
20ca483d80 iop: genconfig: change juci theme directory 2020-10-31 12:28:24 +01:00
Sukru Senli
7a466c989c iop: do not select loop-detector 2020-10-31 12:14:53 +01:00
Kenneth Johansson
ff63939e84 ssh_upgrade: Add handling for config option.
can now handle no reboot and keep config options.
2020-10-30 19:06:22 +01:00
Kenneth Johansson
3b283b8f3a iop: ssh_upgrade: use sysupgrade as default.
sysupgrade is now more functional than iopu so use that instead.
2020-10-29 18:33:00 +01:00
Jakob Olsson
d93d72587e ieee1905: 20.0.30 2020-10-29 13:51:52 +01:00
Ronny Nilsson
b098ef3dc2 Add support for TaaS smoketesting of images.
For developers and Jenkins etc. A short hand command for
testing the just built image on real hardware. To be
used before pushing commits and nightly images to public.
2020-10-28 16:11:26 +01:00
Simon Tate
8c69fc062a bulkdata: Bulkdata fails to build on x86
To get bulkdata to build on x86, added limitation on the asprintf %.*s
to use integer type (as per the programming manual).
2020-10-27 13:05:24 +01:00
Amin Ben Ramdhane
8ad4f32786 bbf: 2.7-2020-10-23 2020-10-23 18:08:30 +01:00
vdutta
71b66376f0 uspd: Fix fault codes
- Generate fault for add_object/del_object if path is invalid
 - Generate fault in case of add_object/del_object/operate/set if the search query is failed
 - Fix set_attribute method to apply the attribute changes
2020-10-23 11:15:14 +05:30
Amin Ben Ramdhane
48525b051a icwmp: 5.2-2020-10-19 2020-10-19 23:44:00 +01:00
Amin Ben Ramdhane
753e894b69 bbf: 2.6-2020-10-19 2020-10-19 23:40:23 +01:00
Amin Ben Ramdhane
ce701702c5 XMPP,BulkData,UDPecho,TWAMP: Fixed invalid int && unsignedInt && hexBinary parameter values 2020-10-19 23:37:01 +01:00
Omar Kallel
11550d140a Add new notification feature & delete icwmp_notifd
(cherry picked from commit 37865ab486)
2020-10-18 11:31:14 +02:00
Sukru Senli
f622a96054 icwmp: keep cwmp session backup xml file over upgrade
(cherry picked from commit 2284fcabbd)
2020-10-18 11:29:55 +02:00
Jakob Olsson
3f19a43df2 map-1905: 0.0.13 2020-10-15 12:31:24 +02:00
Amin Ben Ramdhane
d2fedc407a icwmp: 5.1-2020-10-09 2020-10-15 07:28:50 +01:00
Amin Ben Ramdhane
783fd44680 uspd: Fix compilation issue 2020-10-14 17:15:36 +01:00
Amin Ben Ramdhane
614774cb8b bbf: 2.5-2020-10-14 2020-10-14 17:14:57 +01:00
Amin Ben Ramdhane
84521942ca XMPP, BulkData, TWAMP: add unique keys 2020-10-14 17:07:02 +01:00
Rahul
bbbbdf9650 qosmngr: add log
Syslog added to log non-availability of traffic policing on the wan
port on 63138, this is a chip level limitation.
2020-10-14 15:13:50 +05:30
Rahul
98071d157d qosmngr: add support for dhcp options as classification params
DHCP option value 60, 61 and 77 can now be used to identify lan
clients. Details of UCI as follows:

config classify
    option src_vendor_class_id 'abc' // DHCP option 60.
    option dst_vendor_class_id 'abc' // DHCP option 60.
    option src_client_id 'xyz'       // DHCP option 61
    option dst_client_id 'xyz'       // DHCP option 61
    option src_user_class_id 'dfg'   // DHCP option 77
    option dst_user_class_id 'dfg'   // DHCP option 77
2020-10-14 11:31:48 +05:30
Kenneth Johansson
d829f00e07 iop: ssh_upgrade: remove debug printout 2020-10-13 21:56:33 +02:00
Kenneth Johansson
640535a2ef iop: ssh_upgrade now defaults to use the last.pkgtb file. 2020-10-13 21:46:30 +02:00
Amin Ben Ramdhane
7837417219 bbf: 2.4-2020-10-13 2020-10-13 13:00:10 +01:00
Amin Ben Ramdhane
269cbe364e udpecho: Fix invalid dateTime parameter values 2020-10-13 12:57:33 +01:00
Rahul
54cc458a2d qosmngr: add support for upstream policing on dg400prime 2020-10-12 22:32:39 +05:30
Sukru Senli
fdc882b6e0 iop: select icwmp instead of icwmp-curl 2020-10-11 15:15:20 +02:00
vdutta
346eaf0414 map-1905: Fix parsing of channel preference tlv 2020-10-08 17:29:10 +05:30
nevadita.chatterjee
d946f11c32 map-topology:Added version 2020-10-07 17:48:53 +05:30
Sukru Senli
c0957a425a icwmp: remove unnecessary parts from init script 2020-10-07 13:58:05 +02:00
vdutta
8015a503ac ieee1905: Fix crash in ex400 2020-10-07 16:37:49 +05:30
vdutta
a7d09f5ede map-1905: Multiple fixes
- Change structure for countrycode in CAC capability
 - Fix segfault in timestamp tlv
2020-10-07 16:34:18 +05:30
Amin Ben Ramdhane
8a5b49d585 icwmp: 5.0-2020-09-29 2020-10-01 22:59:32 +01:00
Amin Ben Ramdhane
ac69ea616e bbf: 2.3-2020-09-29 2020-10-01 22:58:13 +01:00
Amin Ben Ramdhane
f358d6338d Update XMPP & BulkData & UDPEcho to the latest version of bbf 2020-10-01 22:57:00 +01:00
Jakob Olsson
c514903145 wifimngr: 8.2.9 2020-10-01 15:36:45 +02:00
Anjan Chanda
dd69c371ae wifimngr: 8.2.8 2020-09-30 07:36:40 +02:00
Anjan Chanda
4a1ab17bd4 easy-soc-libs: 5.3.14 2020-09-30 07:33:41 +02:00
Rahul
208b2cc8e5 qosmngr: add support for traffic policing
Support for traffic policing added to allow configuration of
ingress rate limiting.

Test (on panther):
- ingress rate limiting on per lan port basis for US traffic.
- ingress rate limiting on wan port for DS traffic.
- when ingress rate limiting is applied on traffic in one direction,
  then traffic in other direction remains un-affected, that is, if
  ingress rate limiting is applied in DS, then US traffic on the port
  is unaffected

Note: Autotest are ready and will be merge for now with the tag not_ready.
Once devel is ready or if we decide to merge this to release-5.3, the same
can be tagged ready and executed as part of nightly suite.
2020-09-29 19:36:03 +05:30
vdutta
2e934a7169 uspd: B#3272 improvements in resolving paths 2020-09-24 13:38:38 +05:30
Anjan Chanda
b06980688a map-topology: 1.5.5 - notify topology change event 2020-09-24 09:41:28 +02:00
Amin Ben Ramdhane
29b9605e02 icwmp: 5.0-2020-09-15 2020-09-23 19:26:53 +01:00
Amin Ben Ramdhane
0afa721bca bbf: 2.2-2020-09-21 2020-09-23 19:24:18 +01:00
Amin Ben Ramdhane
3c0de388d1 Ticket refs #3228: QEMU - ICWMP is segfaulting
Fix missing objects
2020-09-23 19:19:04 +01:00
vdutta
aa1741e87a ieee1905: Get auth mode from bss.security 2020-09-23 18:59:24 +05:30
Anjan Chanda
3040359e85 map-controller: 1.0.3-internal 2020-09-23 14:58:20 +02:00
Anjan Chanda
237286f42d map-agent: 2.0.3-internal 2020-09-23 14:57:50 +02:00
vdutta
7758b30397 ieee1905: Remove redundant info from ubus objects 2020-09-22 19:54:22 +05:30
Sukru Senli
7b0dce915c iop: genconfig: comment out mediatek open parts 2020-09-22 12:33:23 +02:00
Grzegorz Sluja
b6fdd0115a wifimngr: Add support of local source build
If You want to build wifimngr from Your local sources downloaded into
~/git, the following actions are needed:

1) set LOCAL_DEV=1 in wifimngr/Makefile

2) clean and compile wifimngr with command:
make V=s package/feeds/iopsys/wifimngr/{clean,compile}

Signed-off-by: Grzegorz Sluja <grzegorz.sluja@iopsys.eu>
2020-09-22 11:34:31 +02:00
Kenneth Johansson
392e08e2fc genconfig: rename variable.
just to make it clear what config path this is.
2020-09-21 18:18:56 +02:00
Jakob Olsson
2ae2110799 rearrange start orders for topology and ieee1905 2020-09-21 16:16:15 +02:00
Jakob Olsson
773e7af7f6 wfadatad: use service_running hook to wait for ieee1905 object 2020-09-21 09:13:51 +02:00
Jakob Olsson
75e9a5360f ieee1905: config trigger to reload 2020-09-21 09:13:51 +02:00
Jakob Olsson
db5e42434e ieee1905: change start order from 99 to 13 2020-09-21 09:13:51 +02:00
Jakob Olsson
00fd7efa3b wfadatad: wait up to 2 seconds if ieee1905 is not up before start 2020-09-21 09:13:51 +02:00
Jakob Olsson
34f495f0a5 map-topology: iterate til ieee1905 object is up 2020-09-18 16:14:30 +02:00
Anjan Chanda
e3b7c9c238 ieee1905d: enable map plugin in default config 2020-09-18 15:16:56 +02:00
Anjan Chanda
e3f2e715c1 wfadatad: 2.3.0 2020-09-18 15:12:37 +02:00
Anjan Chanda
4c149ff680 map-topology: 1.5.1 2020-09-17 21:29:07 +02:00
Anjan Chanda
959b0546bc wifimngr: 8.2.3 2020-09-17 21:28:28 +02:00
Anjan Chanda
e39430ceaf easy-soc-libs: 5.3.3 2020-09-17 21:27:45 +02:00
Amin Ben Ramdhane
6ea9942320 xmpp, udpecho, twamp: compile with fPIC 2020-09-17 18:12:03 +01:00
Amin Ben Ramdhane
a5e812f785 bbf: 2.1-2020-09-17 2020-09-17 10:20:34 +01:00
vdutta
a604987a3e uspd: Optimize to reduce cpu usages 2020-09-17 11:12:52 +05:30
Anjan Chanda
7b2d8edacf map-topology: 1.5.0 2020-09-17 07:40:40 +02:00
Jakob Olsson
47b2b4fc51 map-topology: include mdns changes 2020-09-16 18:24:01 +02:00
Jakob Olsson
6b3e6bcd11 map-topology: add dependency on libavahi-nodbus-support 2020-09-16 16:30:09 +02:00
Anjan Chanda
52726289cc wifimngr: 8.1.0 2020-09-16 16:07:37 +02:00
Anjan Chanda
6c2aac5db5 easy-soc-libs: 5.0.3 2020-09-16 16:07:15 +02:00
Sukru Senli
bfc2b17a72 bulkdata: compile with fPIC 2020-09-16 10:03:12 +02:00
Sukru Senli
e98422f81e icwmp: set userid empty in cwmp config; it will be filled by uci-default 2020-09-16 08:22:26 +02:00
Sukru Senli
841a76a7e6 move tr-069 packages out of trx69 folder 2020-09-15 16:20:11 +02:00
Grzegorz Sluja
1760ea526c wifimngr: Set default debug level to ERR
When wifimngr debugging is enabled debug level is set to ERR only
by default.

Signed-off-by: Grzegorz Sluja <grzegorz.sluja@iopsys.eu>
2020-09-15 10:50:01 +02:00
Yalu Zhang
b5a493e540 Update package bbf
TR-104: add some missing parameters
2020-09-15 09:56:45 +02:00
Omar Kallel
7f00d0419f Add the file /lib/upgrade/keep.d/icwmp when installing icwmp 2020-09-14 17:32:42 +01:00
Markus Gothe
64da6686af Fix gryphon LED module crash.
Update gryphon LED module to work with Linux 4.1
and not to crash when 'gpiod_get_index()' fails.

Change-Id: I27fcbe3ad9dbc755eabdd3f2120544b171b07885
2020-09-14 16:18:01 +02:00
Amin Ben Ramdhane
8cc1877efd bbf: 2.0-2020-09-12 2020-09-12 15:44:13 +01:00
Roman Azarenko
6673a85a21 iop: generate_tarballs: bcmkernel: add symlink if missing, partially fix shellcheck warnings 2020-09-11 19:01:53 +02:00
nevadita.chatterjee
3e07ea7f8d map-topology: Config file change 2020-09-11 19:28:47 +05:30
sverma
8b4ef46681 wfadatad: Changes UBUS objects name 2020-09-11 18:54:27 +05:30
Anjan Chanda
f35e41cc0c wifimngr: 8.0.4 2020-09-11 13:14:57 +02:00
Anjan Chanda
0aff258e29 easy-soc-libs: 4.9.1 2020-09-11 13:14:11 +02:00
Amin Ben Ramdhane
d919f4440e icwmp: 5.0-2020-09-10 2020-09-11 10:13:42 +01:00
Kenneth Johansson
9d20839041 make ./iop ssh_upgrade work on sdk504
./iop ssh_upgrade will now install latest image on broadcom boards.
2020-09-10 19:54:59 +02:00
Kenneth Johansson
36ec134e33 genconfig: make sure there is an empty line.
when concatenating configurations there has to be an empty line at
the end otherwise the last line could be combined with the next
configuration option.
2020-09-10 17:32:31 +02:00
Amin Ben Ramdhane
ea57418313 Ticket #2910: Separate BBF packages to their own packages with their own config files 2020-09-10 10:59:47 +01:00
Omar Kallel
c61aa804ce icwmp: 09-09-2020 2020-09-09 15:37:22 +01:00
Omar Kallel
19bbb87682 icwmp: Active notification 08/09/2020 2020-09-08 17:42:40 +01:00
Amin Ben Ramdhane
3ee01927b1 bbf: 2.0-2020-09-08 2020-09-08 12:29:00 +01:00
Roman Azarenko
d9f6b37bd7 questd: 5.2.1 2020-09-08 11:42:30 +02:00
Ronny Nilsson
c3dd0a996b base-files: move db to etc
Due to read only rootfs the /lib/db will move into /etc.
2020-09-07 12:27:43 +02:00
516 changed files with 7450 additions and 353026 deletions

View File

@@ -24,6 +24,7 @@ PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/mediatek/ated.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)

View File

@@ -1,19 +1,37 @@
if PACKAGE_libbbfdm
config LIBBBFDM_VENDOR_PREFIX
string "Vendor Prefix"
default "X_IOPSYS_EU_"
menu "Configuration"
config BBF_VENDOR_EXTENSION
bool "Enable Vendor Extension"
default y
config BBF_VENDOR_LIST
string "Vendor List"
default "iopsys"
config BBF_VENDOR_PREFIX
string "Vendor Prefix"
default "X_IOPSYS_EU_"
config BBF_TR181
bool "Compile with tr181 device features"
bool "Enable TR-181 Data Model Support"
default y
config BBF_TR104
bool "Compile with tr104 voice features"
bool "Enable TR-104 Data Model Support"
default y
config BBF_TR143
bool "Compile with tr143 diagnostics features"
bool "Enable TR-143 Data Model Support"
default y
config BBFDM_ENABLE_JSON_PLUGIN
bool "Enable json plugin to extend datamodel"
default n
config BBFDM_ENABLE_DOTSO_PLUGIN
bool "Enable shared library plugin to extend datamodel"
default n
endmenu
endif

View File

@@ -1,17 +1,18 @@
#
# Copyright (C) 2019 IOPSYS
# Copyright (C) 2021 IOPSYS
#
include $(TOPDIR)/rules.mk
PKG_NAME:=libbbfdm
PKG_VERSION:=3.2.8
PKG_VERSION:=6.4.27
PKG_FIXUP:=autoreconf
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bbf.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=8c25b2ff8728a0c184404ab45c4d6b3c340ed52d
PKG_SOURCE_VERSION:=710485a57e311a5b4c5434efe3e79fc58cb6c429
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
@@ -22,17 +23,19 @@ PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/libbbf_api
SECTION:=libs
CATEGORY:=Libraries
SECTION:=utils
CATEGORY:=Utilities
SUBMENU:=TRx69
TITLE:=Library for libbbfdm API
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c
endef
define Package/libbbfdm
SECTION:=libs
CATEGORY:=Libraries
SECTION:=utils
CATEGORY:=Utilities
SUBMENU:=TRx69
TITLE:=Library for broadband-forum data model
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libtrace +libbbf_api +libopenssl +libmbedtls
DEPENDS:=+libuci +libubox +libubus +libblobmsg-json +libjson-c +libtrace +libbbf_api +libopenssl +libcurl
endef
define Package/libbbfdm/config
@@ -54,10 +57,9 @@ define Build/Prepare
endef
endif
TARGET_CFLAGS += -DCUSTOM_PREFIX=\\\"$(CONFIG_LIBBBFDM_VENDOR_PREFIX)\\\"
TARGET_CFLAGS += \
-D_GNU_SOURCE -D_AADJ
-D_GNU_SOURCE \
-Wall -Werror \
ifeq ($(CONFIG_BBF_TR181),y)
CONFIGURE_ARGS += \
@@ -79,40 +81,58 @@ CONFIGURE_ARGS += \
--enable-libopenssl
endif
ifeq ($(CONFIG_PACKAGE_libmbedtls),y)
ifeq ($(CONFIG_BBF_VENDOR_EXTENSION),y)
CONFIGURE_ARGS += \
--enable-libmbedtls
--enable-vendor-extension
CONFIGURE_ARGS += \
BBF_VENDOR_LIST="$(CONFIG_BBF_VENDOR_LIST)" \
BBF_VENDOR_PREFIX="$(CONFIG_BBF_VENDOR_PREFIX)"
endif ##CONFIG_BBF_VENDOR_EXTENSION
ifeq ($(CONFIG_BBFDM_ENABLE_JSON_PLUGIN),y)
CONFIGURE_ARGS += \
--enable-json-plugin
endif
ifeq ($(CONFIG_BBFDM_ENABLE_DOTSO_PLUGIN),y)
CONFIGURE_ARGS += \
--enable-shared-library
endif
define Package/libbbf_api/install
$(INSTALL_DIR) $(1)/lib
$(CP) $(PKG_BUILD_DIR)/bin/.libs/libbbf_api.so* $(1)/lib/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/.libs/libbbf_api.so* $(1)/lib/
endef
define Package/libbbfdm/install
$(INSTALL_DIR) $(1)/lib
$(CP) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.so* $(1)/lib/
$(INSTALL_DIR) $(1)/usr/share/bbfdm
$(CP) $(PKG_BUILD_DIR)/scripts/functions $(1)/usr/share/bbfdm
$(INSTALL_DIR) $(1)/etc/bbfdm
$(INSTALL_DIR) $(1)/etc/bbfdm/dmmap
$(INSTALL_DIR) $(1)/etc/bbfdm/json
$(INSTALL_DIR) $(1)/usr/lib/bbfdm
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.so* $(1)/lib/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/scripts/* $(1)/usr/share/bbfdm
endef
define Package/libbbfdm/prerm
#!/bin/sh
rm -rf /etc/bbfdm/*
rm -rf /etc/bbfdm/dmmap/*
exit 0
endef
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_DIR) $(1)/usr/include
$(INSTALL_DIR) $(1)/usr/include/libbbfdm
$(INSTALL_DIR) $(1)/usr/include/libbbf_api
$(CP) $(PKG_BUILD_DIR)/*.h $(1)/usr/include/libbbfdm/
$(CP) $(PKG_BUILD_DIR)/libbbf_api/*.h $(1)/usr/include/libbbf_api/
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.{a,so*} $(1)/usr/lib/
$(CP) $(PKG_BUILD_DIR)/bin/.libs/libbbf_api.{a,so*} $(1)/usr/lib/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/include/*.h $(1)/usr/include/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/*.h $(1)/usr/include/libbbfdm/
$(INSTALL_DATA) $(PKG_BUILD_DIR)/libbbf_api/*.h $(1)/usr/include/libbbf_api/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/.libs/libbbfdm.{a,so*} $(1)/usr/lib/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/bin/.libs/libbbf_api.{a,so*} $(1)/usr/lib/
endef
$(eval $(call BuildPackage,libbbf_api))

View File

@@ -8,10 +8,20 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=bulkdata
PKG_VERSION:=1.0.0
PKG_VERSION:=1.0.3
PKG_SOURCE_VERSION:=b35e7862bc17fc11dc1f757c7b93900995a28633
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/bulkdata.git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_LICENSE:=GPL-2.0-only
PKG_LICENSE_FILES:=LICENSE
include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
@@ -26,10 +36,6 @@ define Package/$(PKG_NAME)/description
BBF BulkData Collection
endef
define Build/Prepare
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
TARGET_CFLAGS += \
-D_GNU_SOURCE
@@ -41,4 +47,4 @@ define Package/$(PKG_NAME)/install
$(CP) ./files/* $(1)/
endef
$(eval $(call BuildPackage,$(PKG_NAME)))
$(eval $(call BuildPackage,$(PKG_NAME)))

View File

@@ -1,23 +0,0 @@
PROG = bulkdatad
LIB = libbulkdata.so
PROG_OBJS = bulkdata.o common.o config.o http.o log.o report.o times.o buci.o
LIB_OBJS = datamodel.o
PROG_CFLAGS = $(CFLAGS) -Wall -Werror -fPIC
PROG_LDFLAGS = $(LDFLAGS) -lubus -luci -lubox -ljson-c -lcurl -lblobmsg_json -lbbfdm -lbbf_api
LIB_LDFLAGS = $(LDFLAGS) -lbbf_api
%.o: %.c
$(CC) $(PROG_CFLAGS) $(FPIC) -c -o $@ $<
all: $(PROG) $(LIB)
$(PROG): $(PROG_OBJS)
$(CC) $(PROG_CFLAGS) -o $@ $^ $(PROG_LDFLAGS)
$(LIB): $(LIB_OBJS)
$(CC) $(PROG_CFLAGS) $(LIB_LDFLAGS) -shared -o $@ $^
clean:
rm -f *.o $(PROG) $(LIB)

View File

@@ -1,265 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#include <strings.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
#include <errno.h>
#include <unistd.h>
#include <ctype.h>
#include "buci.h"
struct uci_context *uci_ctx = NULL;
int buci_init(void)
{
uci_ctx = uci_alloc_context();
if (!uci_ctx) {
return -1;
}
return 0;
}
int buci_fini(void)
{
if (uci_ctx) {
uci_free_context(uci_ctx);
}
return 0;
}
static bool buci_validate_section(const char *str)
{
if (!*str)
return false;
for (; *str; str++) {
unsigned char c = *str;
if (isalnum(c) || c == '_')
continue;
return false;
}
return true;
}
static int buci_init_ptr(struct uci_context *ctx, struct uci_ptr *ptr, char *package, char *section, char *option, char *value)
{
memset(ptr, 0, sizeof(struct uci_ptr));
/* value */
if (value) {
ptr->value = value;
}
ptr->package = package;
if (!ptr->package)
goto error;
ptr->section = section;
if (!ptr->section) {
ptr->target = UCI_TYPE_PACKAGE;
goto lastval;
}
ptr->option = option;
if (!ptr->option) {
ptr->target = UCI_TYPE_SECTION;
goto lastval;
} else {
ptr->target = UCI_TYPE_OPTION;
}
lastval:
if (ptr->section && !buci_validate_section(ptr->section))
ptr->flags |= UCI_LOOKUP_EXTENDED;
return 0;
error:
return -1;
}
struct uci_section *buci_walk_section(char *package, char *section_type, struct uci_section *prev_section)
{
struct uci_ptr ptr;
struct uci_element *e;
struct uci_section *next_section;
if (section_type == NULL) {
if (prev_section) {
e = &prev_section->e;
if (e->list.next == &prev_section->package->sections)
return NULL;
e = container_of(e->list.next, struct uci_element, list);
next_section = uci_to_section(e);
return next_section;
}
else {
if (buci_init_ptr(uci_ctx, &ptr, package, NULL, NULL, NULL)) {
return NULL;
}
if (uci_lookup_ptr(uci_ctx, &ptr, NULL, true) != UCI_OK) {
return NULL;
}
if (ptr.p->sections.next == &ptr.p->sections)
return NULL;
e = container_of(ptr.p->sections.next, struct uci_element, list);
next_section = uci_to_section(e);
return next_section;
}
}
else {
struct uci_list *ul, *shead = NULL;
if (prev_section) {
ul = &prev_section->e.list;
shead = &prev_section->package->sections;
}
else {
if (buci_init_ptr(uci_ctx, &ptr, package, NULL, NULL, NULL)) {
return NULL;
}
if (uci_lookup_ptr(uci_ctx, &ptr, NULL, true) != UCI_OK) {
return NULL;
}
ul = &ptr.p->sections;
shead = &ptr.p->sections;
}
while (ul->next != shead) {
e = container_of(ul->next, struct uci_element, list);
next_section = uci_to_section(e);
if (strcmp(next_section->type, section_type) == 0)
return next_section;
ul = ul->next;
}
return NULL;
}
return NULL;
}
void buci_print_list(struct uci_list *uh, char **val, char *delimiter)
{
struct uci_element *e;
static char buffer[512];
char *buf = buffer;
*buf = '\0';
uci_foreach_element(uh, e) {
if (*buf) {
strcat(buf, delimiter);
strcat(buf, e->name);
}
else {
strcpy(buf, e->name);
}
}
*val = buf;
}
struct uci_element *buci_lookup_list(struct uci_list *list, const char *name)
{
struct uci_element *e;
uci_foreach_element(list, e) {
if (!strcmp(e->name, name))
return e;
}
return NULL;
}
int uci_lookup_ptr_bysection(struct uci_context *ctx, struct uci_ptr *ptr, struct uci_section *section, char *option, char *value)
{
struct uci_element *e;
memset(ptr, 0, sizeof(struct uci_ptr));
ptr->package = section->package->e.name;
ptr->section = section->e.name;
ptr->option = option;
ptr->value = value;
ptr->flags |= UCI_LOOKUP_DONE;
ptr->p = section->package;
ptr->s = section;
if (ptr->option) {
e = buci_lookup_list(&ptr->s->options, ptr->option);
if (!e)
return UCI_OK;
ptr->o = uci_to_option(e);
ptr->last = e;
ptr->target = UCI_TYPE_OPTION;
}
else {
ptr->last = &ptr->s->e;
ptr->target = UCI_TYPE_SECTION;
}
ptr->flags |= UCI_LOOKUP_COMPLETE;
return UCI_OK;
}
char *buci_get_value_bysection(struct uci_section *section, char *option)
{
struct uci_ptr ptr;
char *val = "";
if (uci_lookup_ptr_bysection(uci_ctx, &ptr, section, option, NULL) != UCI_OK) {
return val;
}
if (!ptr.o)
return val;
if(ptr.o->type == UCI_TYPE_LIST) {
buci_print_list(&ptr.o->v.list, &val, " ");
return val;
}
if (ptr.o->v.string)
return ptr.o->v.string;
else
return val;
}
char *buci_get_value(char *package, char *section, char *option)
{
struct uci_ptr ptr;
char *val = "";
if (!section || !option)
return val;
if (buci_init_ptr(uci_ctx, &ptr, package, section, option, NULL)) {
return val;
}
if (uci_lookup_ptr(uci_ctx, &ptr, NULL, true) != UCI_OK) {
return val;
}
if (!ptr.o)
return val;
if(ptr.o->type == UCI_TYPE_LIST) {
buci_print_list(&ptr.o->v.list, &val, " ");
return val;
}
if (ptr.o->v.string)
return ptr.o->v.string;
else
return val;
}

View File

@@ -1,31 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __BUCI_H
#define __BUCI_H
#include <uci.h>
int buci_init(void);
int buci_fini(void);
struct uci_section *buci_walk_section(char *package, char *section_type, struct uci_section *prev_section);
void buci_print_list(struct uci_list *uh, char **val, char *delimiter);
struct uci_element *buci_lookup_list(struct uci_list *list, const char *name);
int uci_lookup_ptr_bysection(struct uci_context *ctx, struct uci_ptr *ptr, struct uci_section *section, char *option, char *value);
char *buci_get_value_bysection(struct uci_section *section, char *option);
char *buci_get_value(char *package, char *section, char *option);
#define buci_foreach_section(package, section_type, section) \
for (section = buci_walk_section(package, section_type, NULL); \
section != NULL; \
section = buci_walk_section(package, section_type, section))
#endif //__BUCI_H

View File

@@ -1,144 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Omar Kallel <omar.kallel@pivasoftware.com>
*/
#include <stdio.h>
#include <string.h>
#include <libubox/uloop.h>
#include "http.h"
#include "config.h"
#include "log.h"
#include "common.h"
#include "report.h"
#include "times.h"
#include "bulkdata.h"
struct bulkdata bulkdata_main = {0};
int profiles_number = 0;
void bulkdata_profile_cb(struct uloop_timeout *timeout);
int get_retry_period(int min)
{
srand(time(NULL));
return rand()%min + min;
}
static void bulkdata_run_profiles(struct bulkdata *bulkdata)
{
unsigned int next_period;
int i = 0;
for (i = 0; i < profiles_number; i++) {
bulkdata->profile[i].utimer.cb = bulkdata_profile_cb;
LIST_HEAD(failedreports);
bulkdata->profile[i].failed_reports = &failedreports;
next_period = get_next_period(bulkdata->profile[i].time_reference, bulkdata->profile[i].reporting_interval);
bulkdata_log(SINFO, "The session of profile_id %d will be start in %d sec", bulkdata->profile[i].profile_id, next_period);
uloop_timeout_set(&bulkdata->profile[i].utimer, next_period * 1000);
}
}
int http_send_report(struct profile *profile, char *report)
{
char *msg_in = NULL;
int http_code;
http_client_init(profile);
bulkdata_log(SINFO, "Send the report of profile_id %d to Bulkdata Collector", profile->profile_id);
http_code = http_send_message(profile, report, strlen(report), &msg_in);
http_client_exit();
return http_code;
}
void bulkdata_profile_cb(struct uloop_timeout *timeout)
{
struct profile *profile;
unsigned int http_code, retry_period;
char *report = NULL;
profile = container_of(timeout, struct profile, utimer);
time_t now = time(NULL);
bulkdata_log(SINFO, "New session of profile_id %d started", profile->profile_id);
if(profile->retry_count == 0 || profile->next_retry > now || !profile->http_retry_enable) //Perdiodic execution
create_encoding_bulkdata_report(profile, &report);
else
create_failed_report(profile, &report);
bulkdata_log(SDEBUG, "The content of the profile_id report %d is :\n==========\n%s\n==========\n", profile->profile_id, report);
http_code= http_send_report(profile, report);
if(http_code != 200){
if(profile->retry_count == 0 || profile->next_retry > now || !profile->http_retry_enable) { //Perdiodic execution
retry_period = get_retry_period(profile->http_retry_minimum_wait_interval);
profile->next_period = now + profile->reporting_interval;
profile->next_retry = now + retry_period;
profile->retry_count = 1;
profile->min_retry = profile->http_retry_minimum_wait_interval * 2;
if((profile->next_retry < profile->next_period) && profile->http_retry_enable) {
bulkdata_log(SINFO, "Retry session of profile_id %d in %d sec", profile->profile_id, retry_period);
uloop_timeout_set(timeout, 1000 * retry_period);
}
else {
bulkdata_log(SINFO, "Start New session of profile_id %d in %d sec", profile->profile_id, profile->reporting_interval);
uloop_timeout_set(timeout, 1000 * profile->reporting_interval);
}
} else { //Retry execution
retry_period= get_retry_period(profile->min_retry);
profile->min_retry*=2;
profile->next_retry+=retry_period;
profile->retry_count++;
if(profile->next_retry < profile->next_period) {
bulkdata_log(SINFO, "Retry session of profile_id %d in %d sec", profile->profile_id, retry_period);
uloop_timeout_set(timeout, 1000 * retry_period);
}
else {
bulkdata_log(SINFO, "Retry session of profile_id %d in %d sec", profile->profile_id, (profile->next_period-profile->next_retry+retry_period));
uloop_timeout_set(timeout, 1000 * (profile->next_period-profile->next_retry+retry_period));
}
}
if(profile->new_report){
bulkdata_add_failed_report(profile, profile->new_report);
FREE(profile->new_report);
}
FREE(report);
} else {
if(profile->retry_count == 0 || profile->next_retry > now || !profile->http_retry_enable) {
bulkdata_log(SINFO, "Start New session of profile_id %d in %d sec", profile->profile_id, profile->reporting_interval);
uloop_timeout_set(timeout, 1000 * profile->reporting_interval);
}
else {
bulkdata_log(SINFO, "Retry session of profile_id %d in %d sec", profile->profile_id, (profile->next_period-profile->next_retry));
uloop_timeout_set(timeout, 1000 * (profile->next_period-profile->next_retry));
}
FREE(profile->new_report);
FREE(report);
empty_failed_reports_list(profile);
profile->retry_count= 0;
}
}
int main(void)
{
struct bulkdata *bulkdata = &bulkdata_main;
if (bulkdata_config_init(bulkdata) == -1)
return -1;
bulkdata_log(SINFO, "Start bulkdatad daemon");
uloop_init();
bulkdata_run_profiles(bulkdata);
uloop_run();
uloop_done();
bulkdata_config_fini(bulkdata);
bulkdata_log(SINFO, "Stop bulkdatad daemon");
return 0;
}

View File

@@ -1,18 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __BULKDATA_H
#define __BULKDATA_H
extern struct bulkdata bulkdata_main;
extern int profiles_number;
#endif /* __BULKDATA_H */

View File

@@ -1,105 +0,0 @@
# README #
bulkdatad is an implementation of The HTTP bulk data collection mechanism which is an extended feature of CPE and other agents implementing TR-069(CWMP) or TR-369(USP), defined by the Broadband Forum. It provides a means by which an Auto-Configuration Server (ACS), or USP Controller, can configure an agent to periodically send a JSON or CSV formatted set of Device information to an HTTP server running a data collection application.
## Configuration File ##
The bulkdatad UCI configuration is located in **'/etc/config/bulkdata'**, and contains 4 sections: **bulkdata**, **profile**, **profile\_parameter** and **profile\_http\_request\_uri\_parameter**.
```
config bulkdata 'bulkdata'
option enable '0'
option log_level '3'
config profile
option profile_id '1'
option enable '0'
option csv_encoding_row_time_stamp 'unix'
option json_encoding_report_time_stamp 'unix'
option http_retry_minimum_wait_interval '5'
option http_retry_interval_multiplier '2000'
config profile_parameter
option profile_id '1'
option name ''
option reference ''
config profile_http_request_uri_parameter
option profile_id '1'
option name ''
option reference ''
```
### bulkdata section ###
It defines **bulkdata configuration**: enable and log\_level.
| Name | Type | Description |
| ----------- | ------- | ----------------------------------------------------------------------------------------------- |
| `enable` | boolean | Enables the BulkData feature if set to **1**. |
| `log_level` | integer | Specifies the log type to use, by default **'INFO'**. The possible types are **'EMERG', 'ALERT', 'CRITIC' ,'ERROR', 'WARNING', 'NOTICE', 'INFO' and 'DEBUG'**. |
### profile section ###
It defines **the profile section configuration**: enable, name,... The possible options for **profile** section are listed below:
| Name | Type | Description |
| ---------------------------------- | ------- | ---------------------------------------------- |
| `profile_id` | integer | The profile id to use. |
| `enable` | boolean | If set to **1**, enables the bulkdata profile. |
| `name` | string | The name of the profile. |
| `nbre_of_retained_failed_reports` | integer | The number of failed reports to be retained and transmitted at the end of the current reporting interval. |
| `protocol` | string | The protocol used for the collection profile. |
| `encoding_type` | string | The encoding type used for the collection profile. |
| `reporting_interval` | integer | The reporting interval in seconds. |
| `time_reference` | integer | The time reference to determine when the profile will be transmitted to the ACS collector. |
| `csv_encoding_field_separator` | string | The field separator to use when encoding CSV data. |
| `csv_encoding_row_separator` | string | The row separator to use when encoding CSV data. |
| `csv_encoding_escape_character` | string | The escape character to use when encoding CSV data. |
| `csv_encoding_report_format` | string | Describes how reports will be formatted. Two possible formats are supported: **'ParameterPerRow' and 'ParameterPerColumn'**. |
| `csv_encoding_row_time_stamp` | string | The format of the timestamp to use for data inserted into the row. The row time stamp supported are **'Unix-Epoch', 'ISO-8601' and 'None'**. |
| `json_encoding_report_format` | string | Describes the report format. The supported report formats are **'ObjectHierarchy' and 'NameValuePair'**. |
| `json_encoding_report_time_stamp` | string | The format of the timestamp to use for the JSON Object named "CollectionTime". The supported timestamp are **'Unix-Epoch', 'ISO-8601' and 'None'**. |
| `http_url` | string | The URL of the collection server. |
| `http_username` | string | The username of the collection server. |
| `http_password` | string | The password of the collection server. |
| `http_compression` | string | The HTTP Compression mechanism used by the collection server. The supported compression mechanism are **'GZIP', 'Compress' and 'Deflate'**. |
| `http_method` | string | The HTTP method used by the collection server. Two methods are supported: **'POST' and 'PUT'**. |
| `http_use_date_header` | boolean | If set to **1**, the CPE encodes the HTTP Date Header. |
| `http_retry_enable` | boolean | If set to **1**, the CPE retries unsuccessful attempts to transfer data. |
| `http_retry_minimum_wait_interval` | integer | The data transfer retry wait interval. |
| `http_retry_interval_multiplier` | integer | The retry interval multiplier. |
| `http_persist_across_reboot` | boolean | If set to **1**, failed data transfers must be persisted across reboots. |
### profile_parameter section ###
It defines **the profile\_parameter section configuration**: profile\_id, name, reference.
| Name | Type | Description |
| ------------ | ------- | --------------------------------------- |
| `profile_id` | integer | The id of the used profile. |
| `name` | string | The name of the profile parameter. |
| `reference` | string | The reference of the profile parameter. |
### profile_http_request_uri_parameter section ###
It defines **the profile\_http\_request\_uri\_parameter section configuration**: profile\_id, name, reference.
| Name | Type | Description |
| ------------ | ------- | --------------------------------------- |
| `profile_id` | integer | The id of the used profile. |
| `name` | string | The name of the Request-URI parameter. |
| `reference` | string | The reference of the profile parameter. |
## Dependencies ##
To successfully build bulkdatad, the following libraries are needed:
| Dependency | Link | License |
| ----------- | ------------------------------------------- | -------------- |
| libuci | https://git.openwrt.org/project/uci.git | LGPL 2.1 |
| libubox | https://git.openwrt.org/project/libubox.git | BSD |
| libjson-c | https://s3.amazonaws.com/json-c_releases | MIT |
| libcurl | https://dl.uxnr.de/mirror/curl | MIT |
| libbbfdm | https://dev.iopsys.eu/iopsys/bbf.git | LGPL 2.1 |

View File

@@ -1,450 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Omar Kallel <omar.kallel@pivasoftware.com>
*/
#include "common.h"
static pathnode *head = NULL;
static pathnode *temphead = NULL;
int bulkdata_dm_ctx_init(struct dmctx *ctx)
{
struct bulkdata *bulkdata = &bulkdata_main;
dm_ctx_init(ctx, bulkdata->instance_mode);
return 0;
}
int bulkdata_dm_ctx_clean(struct dmctx *ctx)
{
dm_ctx_clean(ctx);
return 0;
}
static char **str_split(const char* str, const char* delim, size_t* numtokens)
{
char *s = strdup(str);
size_t tokens_alloc = 1;
size_t tokens_used = 0;
char **tokens = calloc(tokens_alloc, sizeof(char*));
char *token, *strtok_ctx;
for (token = strtok_r(s, delim, &strtok_ctx); token != NULL; token = strtok_r(NULL, delim, &strtok_ctx)) {
if (tokens_used == tokens_alloc) {
tokens_alloc *= 2;
tokens = realloc(tokens, tokens_alloc * sizeof(char*));
}
tokens[tokens_used++] = strdup(token);
}
// cleanup
if (tokens_used == 0) {
FREE(tokens);
} else {
tokens = realloc(tokens, tokens_used * sizeof(char*));
}
*numtokens = tokens_used;
FREE(s);
return tokens;
}
static bool bulkdata_match(const char *string, const char *pattern)
{
regex_t re;
if (regcomp(&re, pattern, REG_EXTENDED) != 0) return 0;
int status = regexec(&re, string, 0, NULL, 0);
regfree(&re);
if (status != 0) return false;
return true;
}
static bool is_res_required(char *str, int *start, int *len)
{
char temp_char[NAME_MAX] = {'\0'};
if (bulkdata_match(str, GLOB_CHAR)) {
int s_len = strlen(str);
int b_len = s_len, p_len = s_len;
char *star = strchr(str, '*');
if(star)
s_len = star - str;
*start = MIN(MIN(s_len, p_len), b_len);
if (*start == s_len)
*len = 1;
strncpy(temp_char, str+*start, *len);
if (bulkdata_match(temp_char, "[*+]+"))
return true;
}
*start = strlen(str);
return false;
}
static void insert(char *data, bool active)
{
pathnode *link = (pathnode*) calloc(1, sizeof(pathnode));
if(!link) {
return;
}
link->ref_path = data;
if(active) {
link->next = head;
head = link;
} else {
link->next = temphead;
temphead = link;
}
}
static void swap_heads(void)
{
pathnode *temp = head;
head = temphead;
temphead = temp;
}
static void deleteList(void)
{
pathnode *ptr = head, *temp;
while(ptr != NULL) {
temp = ptr;
free(ptr->ref_path);
if(ptr->next != NULL) {
ptr = ptr->next;
} else {
ptr = NULL;
}
free(temp);
}
head = NULL;
swap_heads();
}
void bulkdata_add_data_to_list(struct list_head *dup_list, char *name, char *value, char *type)
{
struct resultsnode *link;
link = calloc(1, sizeof(struct resultsnode));
list_add_tail(&link->list, dup_list);
link->name = strdup(name);
link->data = strdup(value);
link->type = strdup(type);
}
void bulkdata_delete_data_from_list(struct resultsnode *link)
{
list_del(&link->list);
FREE(link->name);
FREE(link->data);
FREE(link->type);
FREE(link);
}
void bulkdata_free_data_from_list(struct list_head *dup_list)
{
struct resultsnode *link;
while (dup_list->next != dup_list) {
link = list_entry(dup_list->next, struct resultsnode, list);
bulkdata_delete_data_from_list(link);
}
}
static bool bulkdata_get(int operation, char *path, struct dmctx *dm_ctx)
{
int fault = 0;
switch(operation) {
case CMD_GET_NAME:
fault = dm_entry_param_method(dm_ctx, CMD_GET_NAME, path, "true", NULL);
break;
case CMD_GET_VALUE:
fault = dm_entry_param_method(dm_ctx, CMD_GET_VALUE, path, NULL, NULL);
break;
default:
return false;
}
if (dm_ctx->list_fault_param.next != &dm_ctx->list_fault_param) {
return false;
}
if (fault) {
return false;
}
return true;
}
char *bulkdata_get_value_param(char *path)
{
struct dmctx ctx = {0};
struct dm_parameter *n;
char *value = NULL;
bulkdata_dm_ctx_init(&ctx);
if(bulkdata_get(CMD_GET_VALUE, path, &ctx)) {
list_for_each_entry(n, &ctx.list_parameter, list) {
value = strdup(n->data);
break;
}
}
bulkdata_dm_ctx_clean(&ctx);
return value;
}
void bulkdata_get_value(char *path, struct list_head *list)
{
struct dmctx ctx = {0};
struct dm_parameter *n;
bulkdata_dm_ctx_init(&ctx);
if(bulkdata_get(CMD_GET_VALUE, path, &ctx)) {
list_for_each_entry(n, &ctx.list_parameter, list) {
bulkdata_add_data_to_list(list, n->name, n->data, n->type);
}
}
bulkdata_dm_ctx_clean(&ctx);
}
bool bulkdata_get_name(char *path)
{
struct dmctx ctx = {0};
struct dm_parameter *n;
bool ret = false;
bulkdata_dm_ctx_init(&ctx);
if(bulkdata_get(CMD_GET_NAME, path, &ctx)) {
list_for_each_entry(n, &ctx.list_parameter, list) {
insert(strdup(n->name), false);
}
ret = true;
}
bulkdata_dm_ctx_clean(&ctx);
return ret;
}
static void fill_node_path(void)
{
pathnode *p=head;
while(p!=NULL) {
bulkdata_get_name(p->ref_path);
p=p->next;
}
deleteList();
}
static void bulkdata_filter_results(char *path, int start, int end)
{
int startpos = start, m_index = 0, m_len = 0;
char *pp = path + startpos;
char exp[NAME_MAX] = {'\0'};
if(start >= end) {
return;
}
if(!is_res_required(pp, &m_index, &m_len)) {
//append rest of the path to the final list
if(pp == path ) {
insert(strdup(pp), true);
return;
}
pathnode *p = head;
while(p != NULL) {
char name[NAME_MAX] = {'\0'};
strcpy(name, p->ref_path);
strcat(name, pp);
insert(strdup(name), false);
p = p->next;
}
deleteList();
return;
}
// Get the string before the match
char name[NAME_MAX]={'\0'};
strncpy(name, pp, m_index);
pathnode *p = head;
if(p == NULL) {
insert(strdup(name), false);
}
while(p != NULL) {
char ref_name[NAME_MAX] = {'\0'};
sprintf(ref_name, "%s%s", p->ref_path, name);
insert(strdup(ref_name), false);
p = p->next;
}
deleteList();
startpos += m_index;
strncpy(exp, pp+m_index, m_len);
pp = path + startpos;
fill_node_path();
startpos += 2;
bulkdata_filter_results(path, startpos, end);
}
static void bulkdata_parse_results(struct list_head *list)
{
pathnode *p = head;
while(p != NULL) {
bulkdata_get_value(p->ref_path, list);
p = p->next;
}
deleteList();
}
void bulkdata_get_value_results(char *path, struct list_head *list)
{
bulkdata_filter_results(path, 0, strlen(path));
bulkdata_parse_results(list);
}
char *create_request_url(struct profile *profile)
{
int i = 0, http_uri_number = profile->profile_http_request_uri_parameter_number;
char *value, *uri_param = NULL, *uri_tmp = NULL, *http_url = NULL;
for (i = 0; i < http_uri_number; i++)
{
if((profile->profile_http_uri_parameter[i].reference == NULL) || (profile->profile_http_uri_parameter[i].name == NULL))
continue;
value = bulkdata_get_value_param(profile->profile_http_uri_parameter[i].reference);
if(!uri_param) {
asprintf(&uri_param, "&%s=%s", profile->profile_http_uri_parameter[i].name, value);
free(value);
}
else {
uri_tmp = strdup(uri_param);
free(uri_param);
asprintf(&uri_param, "%s&%s=%s", uri_tmp, profile->profile_http_uri_parameter[i].name, value);
free(value);
free(uri_tmp);
}
}
if(uri_param) {
asprintf(&http_url, "%s%s", profile->http_url, uri_param);
free(uri_param);
} else {
asprintf(&http_url, "%s", profile->http_url);
}
return http_url;
}
char *get_bulkdata_profile_parameter_name(char *paramref, char *paramname, char *param)
{
char **paramarr, *idx1 = NULL, *idx2 = NULL, *res = NULL, *instance = NULL, *tmp = NULL, *retparam = NULL, *s = NULL;
int i, j = 0;
size_t length;
if(paramname == NULL || strlen(paramname) <= 0)
return strdup(param);
paramarr = str_split(paramref, "*", &length);
res = strdup(paramname);
for(i = 0; i < length; i++) {
if(i == length - 1)
break;
j++;
idx1 = strstr(param, paramarr[i]);
idx2 = strstr(param, paramarr[i+1]);
instance = (char*)calloc(idx2 - idx1 - strlen(paramarr[i]) + 1, sizeof(char));
memcpy(instance, idx1 + strlen(paramarr[i]), idx2 - idx1 - strlen(paramarr[i]));
tmp = strdup(res);
FREE(res);
asprintf(&res, "%s.%s", tmp, instance);
FREE(tmp);
FREE(instance);
}
if ((s = strstr(param,paramarr[j]) ) != NULL && strlen(s) == strlen(paramarr[j]))
asprintf(&retparam, "%s", res);
else
asprintf(&retparam, "%s.%s", res, strstr(param, paramarr[j]) + strlen(paramarr[j]));
FREE(res);
for(int k = 0; k < length; k++)
FREE(paramarr[k]);
FREE(paramarr);
return retparam;
}
void append_string_to_string(char *strappend, char **target)
{
char *tmp = NULL;
if(strappend == NULL || strlen(strappend) <= 0)
return;
if(*target == NULL || strlen(*target) <= 0) {
*target = strdup(strappend);
return;
} else {
tmp = strdup(*target);
FREE(*target);
}
asprintf(target, "%s%s", tmp, strappend);
FREE(tmp);
}
void bulkdata_add_failed_report(struct profile *profile, char *freport)
{
struct failed_reports *report, *retreport, *rtmp;
if(profile->nbre_failed_reports < profile->nbre_of_retained_failed_reports || profile->nbre_of_retained_failed_reports < 0) {
profile->nbre_failed_reports++;
} else {
list_for_each_entry_safe(retreport, rtmp, profile->failed_reports, list) {
bulkdata_delete_failed_report(retreport);
break;
}
}
report = calloc(1, sizeof(struct failed_reports));
list_add_tail(&report->list, profile->failed_reports);
report->freport= strdup(freport);
}
void bulkdata_delete_failed_report(struct failed_reports *report)
{
if(report != NULL) {
list_del(&report->list);
FREE(report->freport);
FREE(report);
}
}
struct failed_reports* empty_failed_reports_list(struct profile *profile)
{
struct failed_reports *report, *rtmp;
if(list_empty(profile->failed_reports))
return NULL;
list_for_each_entry_safe(report, rtmp, profile->failed_reports, list) {
list_del(&report->list);
FREE(report->freport);
FREE(report);
}
return NULL;
}
void add_failed_reports_to_report_csv(struct profile *profile, char **report, int isnext)
{
struct failed_reports *retreport = NULL;
int j = 0;
if(list_empty(profile->failed_reports))
return;
list_for_each_entry(retreport, profile->failed_reports, list) {
if(!j && isnext) {
j = 1;
continue;
}
append_string_to_string(retreport->freport, report);
}
}

View File

@@ -1,69 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __COMMON_H
#define __COMMON_H
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <regex.h>
#include <sys/param.h>
#include <libubox/blobmsg.h>
#include <libubox/blobmsg_json.h>
#include <libubox/utils.h>
#include <libubus.h>
#include <libbbfdm/dmentry.h>
#include <libbbfdm/dmbbfcommon.h>
#include "config.h"
#include "log.h"
#include "bulkdata.h"
typedef struct pathnode {
char *ref_path;
struct pathnode *next;
} pathnode;
typedef struct resultsnode {
struct list_head list;
char *name;
char *data;
char *type;
} resultsnode;
struct failed_reports {
struct list_head list;
char *freport;
};
#define GLOB_CHAR "[[+*]+"
int bulkdata_dm_ctx_init(struct dmctx *ctx);
int bulkdata_dm_ctx_clean(struct dmctx *ctx);
char *bulkdata_get_value_param(char *path);
void bulkdata_get_value(char *path, struct list_head *list);
void bulkdata_free_data_from_list(struct list_head *dup_list);
void bulkdata_get_value_results(char *path, struct list_head *list);
char *create_request_url(struct profile *profile);
char *get_bulkdata_profile_parameter_name(char *paramref, char *paramname, char *param);
void append_string_to_string(char *strappend, char **target);
void bulkdata_add_failed_report(struct profile *profile, char *freport);
void bulkdata_delete_failed_report(struct failed_reports *report);
struct failed_reports *empty_failed_reports_list(struct profile *profile);
void add_failed_reports_to_report_csv(struct profile *profile, char **report, int isnext);
#endif //__COMMON_H

View File

@@ -1,523 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Omar Kallel <omar.kallel@pivasoftware.com>
*/
#include <stdio.h>
#include <strings.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
#include "log.h"
#include "config.h"
#include "buci.h"
#include "common.h"
#include "bulkdata.h"
int get_log_level_config(struct bulkdata *bulkdata)
{
char *value = NULL;
buci_init();
value = buci_get_value("bulkdata", "bulkdata", "log_level");
if(value != NULL && *value != '\0')
bulkdata->log_level = atoi(value);
else
bulkdata->log_level = DEFAULT_LOGLEVEL;
bulkdata_log(SDEBUG,"Log Level of Bulkdata is : %d", bulkdata->log_level);
buci_fini();
return 0;
}
int get_amd_version_config(struct bulkdata *bulkdata)
{
char *value = NULL;
buci_init();
value = buci_get_value("cwmp", "cpe", "amd_version");
if(value != NULL && *value != '\0')
bulkdata->amd_version = atoi(value);
else
bulkdata->amd_version = DEFAULT_AMD_VERSION;
bulkdata_log(SDEBUG,"CWMP Amendment Version is : %d", bulkdata->amd_version);
buci_fini();
return 0;
}
int get_instance_mode_config(struct bulkdata *bulkdata)
{
char *value = NULL;
buci_init();
value = buci_get_value("cwmp", "cpe", "instance_mode");
if(value != NULL && *value != '\0') {
if(!strcmp(value, "InstanceNumber"))
bulkdata->instance_mode = INSTANCE_MODE_NUMBER;
else
bulkdata->instance_mode = INSTANCE_MODE_ALIAS;
}
else
bulkdata->instance_mode = DEFAULT_INSTANCE_MODE;
bulkdata_log(SDEBUG,"CWMP Instance Mode is : %d", bulkdata->instance_mode);
buci_fini();
return 0;
}
int get_device_id_config(struct bulkdata *bulkdata)
{
struct dmctx dmctx = {0};
bulkdata_dm_ctx_init(&dmctx);
bulkdata->device_id.manufacturer_oui = bulkdata_get_value_param("Device.DeviceInfo.ManufacturerOUI");
bulkdata->device_id.product_class = bulkdata_get_value_param("Device.DeviceInfo.ProductClass");
bulkdata->device_id.serial_number = bulkdata_get_value_param("Device.DeviceInfo.SerialNumber");
bulkdata_dm_ctx_clean(&dmctx);
return 0;
}
int load_profile_config(struct bulkdata *bulkdata, struct uci_section *s, int i)
{
char *value = NULL;
value = buci_get_value_bysection(s, "profile_id");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].profile_id = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The profile_id of profile_id %d is : %d", i, bulkdata->profile[i].profile_id);
} else
return -1;
value = buci_get_value_bysection(s, "nbre_of_retained_failed_reports");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].nbre_of_retained_failed_reports = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The nombre of retained failed reports of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].nbre_of_retained_failed_reports);
}
value = buci_get_value_bysection(s, "protocol");
if(value != NULL && *value != '\0' && strcasecmp(value, "http")==0) {
bulkdata->profile[i].protocol = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The protocol of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].protocol);
} else
return -1;
value = buci_get_value_bysection(s, "encoding_type");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].encoding_type = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The encoding type of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].encoding_type);
} else
return -1;
value = buci_get_value_bysection(s, "reporting_interval");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].reporting_interval = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The reporting interval of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].reporting_interval);
} else
return -1;
value = buci_get_value_bysection(s, "time_reference");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].time_reference = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The time reference of profile_id %d is : %ld", bulkdata->profile[i].profile_id, bulkdata->profile[i].time_reference);
} else
return -1;
value = buci_get_value_bysection(s, "csv_encoding_field_separator");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].csv_encoding_field_separator = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The csv encoding field separator of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].csv_encoding_field_separator);
} else
return -1;
value = buci_get_value_bysection(s, "csv_encoding_row_separator");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].csv_encoding_row_separator = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The csv encoding row separator of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].csv_encoding_row_separator);
} else
return -1;
value = buci_get_value_bysection(s, "csv_encoding_escape_character");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].csv_encoding_escape_character = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The csv encoding escape character of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].csv_encoding_escape_character);
}
value = buci_get_value_bysection(s, "csv_encoding_report_format");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].csv_encoding_report_format = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The csv encoding report format of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].csv_encoding_report_format);
} else
return -1;
value = buci_get_value_bysection(s, "csv_encoding_row_time_stamp");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].csv_encoding_row_time_stamp = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The csv encoding row time stamp of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].csv_encoding_row_time_stamp);
} else
return -1;
value = buci_get_value_bysection(s, "json_encoding_report_format");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].json_encoding_report_format = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The json encoding report format of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].json_encoding_report_format);
} else
return -1;
value = buci_get_value_bysection(s, "json_encoding_report_time_stamp");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].json_encoding_report_time_stamp = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The json encoding report time stamp of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].json_encoding_report_time_stamp);
} else
return -1;
value = buci_get_value_bysection(s, "http_url");
if(value != NULL && *value != '\0') {
char *url = NULL;
asprintf(&url, "%s?oui=%s&pc=%s&sn=%s", value, bulkdata->device_id.manufacturer_oui, bulkdata->device_id.serial_number, bulkdata->device_id.serial_number);
bulkdata->profile[i].http_url = strdup(url);
free(url);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP url of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_url);
} else
return -1;
value = buci_get_value_bysection(s, "http_username");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_username = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP username of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_username);
} else {
bulkdata->profile[i].http_username = NULL;
}
value = buci_get_value_bysection(s, "http_password");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_password = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP password of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_password);
} else {
bulkdata->profile[i].http_password = NULL;
}
value = buci_get_value_bysection(s, "http_compression");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_compression = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP compression of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_compression);
} else
return -1;
value = buci_get_value_bysection(s, "http_method");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_method = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP method of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_method);
} else
return -1;
value = buci_get_value_bysection(s, "http_use_date_header");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_use_date_header = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP use date header of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_use_date_header);
}
value = buci_get_value_bysection(s, "http_retry_enable");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_retry_enable = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP retry enable of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_retry_enable);
} else
return -1;
value = buci_get_value_bysection(s, "http_retry_minimum_wait_interval");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_retry_minimum_wait_interval = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP retry minimum wait interval of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_retry_minimum_wait_interval);
}
value = buci_get_value_bysection(s, "http_retry_interval_multiplier");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_retry_interval_multiplier = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP retry interval multiplier of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_retry_interval_multiplier);
}
value = buci_get_value_bysection(s, "http_persist_across_reboot");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_persist_across_reboot = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP persist across reboot of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_persist_across_reboot);
} else
return -1;
value = buci_get_value_bysection(s, "http_ssl_capath");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_ssl_capath = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP ssl capath of profile_id %d is : %s", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_ssl_capath);
} else {
bulkdata->profile[i].http_ssl_capath = NULL;
}
value = buci_get_value_bysection(s, "http_insecure_enable");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].http_insecure_enable = atoi(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP insecure enable of profile_id %d is : %d", bulkdata->profile[i].profile_id, bulkdata->profile[i].http_insecure_enable);
}
bulkdata->profile[i].retry_count = 0;
bulkdata->profile[i].nbre_failed_reports = 0;
return 0;
}
int get_profiles_enable(struct bulkdata *bulkdata)
{
struct uci_section *s;
char *enable;
int i = 0, nbr_profiles = 0;
buci_init();
buci_foreach_section("bulkdata", "profile", s) {
enable = buci_get_value_bysection(s, "enable");
if(strcmp(enable, "1") == 0) {
nbr_profiles++;
}
}
if(nbr_profiles != 0)
bulkdata->profile = calloc(2, sizeof(struct profile));
buci_foreach_section("bulkdata", "profile", s) {
enable = buci_get_value_bysection(s, "enable");
if(strcmp(enable, "1") == 0) {
if(load_profile_config(bulkdata, s, i) == -1) {
bulkdata_log(SCRIT,"Not able to start bulkdata: some required bulkdata configurations in profile must be set");
return -1;
}
i++;
}
}
profiles_number = nbr_profiles;
buci_fini();
return 0;
}
int load_profile_parameter_config(struct bulkdata *bulkdata, struct uci_section *s, int i, int j)
{
char *value = NULL;
value = buci_get_value_bysection(s, "name");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].profile_parameter[j].name = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The parameter name %d of profile_id %d is : %s", j+1, bulkdata->profile[i].profile_id, bulkdata->profile[i].profile_parameter[j].name);
} else {
bulkdata->profile[i].profile_parameter[j].name = NULL;
}
value = buci_get_value_bysection(s, "reference");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].profile_parameter[j].reference = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The parameter reference %d of profile_id %d is : %s", j+1, bulkdata->profile[i].profile_id, bulkdata->profile[i].profile_parameter[j].reference);
} else
return -1;
return 0;
}
int get_profiles_parameters(struct bulkdata *bulkdata)
{
struct uci_section *s;
char *profile_id;
int i, j, nbr_profile_parameters;
buci_init();
for (i = 0; i < profiles_number; i++) {
j = 0;
nbr_profile_parameters = 0;
buci_foreach_section("bulkdata", "profile_parameter", s) {
profile_id = buci_get_value_bysection(s, "profile_id");
if(bulkdata->profile[i].profile_id != atoi(profile_id))
continue;
nbr_profile_parameters++;
if(nbr_profile_parameters == 1) {
bulkdata->profile[i].profile_parameter = calloc(1, sizeof(struct profile_parameter));
} else {
bulkdata->profile[i].profile_parameter = realloc(bulkdata->profile[i].profile_parameter, nbr_profile_parameters * sizeof(struct profile_parameter));
}
if(load_profile_parameter_config(bulkdata, s, i, j) == -1) {
bulkdata_log(SCRIT,"Not able to start bulkdata: some required bulkdata configurations in profile_parameter must be set");
return -1;
}
j++;
}
bulkdata->profile[i].profile_parameter_number = nbr_profile_parameters;
}
buci_fini();
return 0;
}
int load_profile_http_request_uri_parameter_config(struct bulkdata *bulkdata, struct uci_section *s, int i, int j)
{
char *value = NULL;
value = buci_get_value_bysection(s, "name");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].profile_http_uri_parameter[j].name = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP resuest URI parameter name %d of profile_id %d is : %s", j+1, bulkdata->profile[i].profile_id, bulkdata->profile[i].profile_http_uri_parameter[j].name);
} else
return -1;
value = buci_get_value_bysection(s, "reference");
if(value != NULL && *value != '\0') {
bulkdata->profile[i].profile_http_uri_parameter[j].reference = strdup(value);
value = NULL;
bulkdata_log(SDEBUG,"The HTTP resuest URI parameter reference %d of profile_id %d is : %s", j+1, bulkdata->profile[i].profile_id, bulkdata->profile[i].profile_http_uri_parameter[j].reference);
} else
return -1;
return 0;
}
int get_profile_http_request_uri_parameter(struct bulkdata *bulkdata)
{
struct uci_section *s;
char *profile_id;
int i, j, nbr_profile_http_request_uri_parameter;
buci_init();
for (i = 0; i < profiles_number; i++) {
j = 0;
nbr_profile_http_request_uri_parameter = 0;
buci_foreach_section("bulkdata", "profile_http_request_uri_parameter", s) {
profile_id = buci_get_value_bysection(s, "profile_id");
if(bulkdata->profile[i].profile_id != atoi(profile_id))
continue;
nbr_profile_http_request_uri_parameter++;
if(nbr_profile_http_request_uri_parameter == 1) {
bulkdata->profile[i].profile_http_uri_parameter = calloc(1, sizeof(struct profile_http_request_uri_parameter));
} else {
bulkdata->profile[i].profile_http_uri_parameter = realloc(bulkdata->profile[i].profile_http_uri_parameter, nbr_profile_http_request_uri_parameter * sizeof(struct profile_http_request_uri_parameter));
}
if(load_profile_http_request_uri_parameter_config(bulkdata, s, i, j)== -1) {
bulkdata_log(SCRIT,"Not able to start bulkdata: some required bulkdata configurations in profile_http_request_uri_parameter must be set");
return -1;
}
j++;
}
bulkdata->profile[i].profile_http_request_uri_parameter_number = nbr_profile_http_request_uri_parameter;
}
buci_fini();
return 0;
}
int bulkdata_config_init(struct bulkdata *bulkdata)
{
get_log_level_config(bulkdata);
get_amd_version_config(bulkdata);
get_instance_mode_config(bulkdata);
get_device_id_config(bulkdata);
if (get_profiles_enable(bulkdata) == -1)
return -1;
if (get_profiles_parameters(bulkdata) == -1)
return -1;
if (get_profile_http_request_uri_parameter(bulkdata) == -1)
return -1;
return 0;
}
int free_device_id_config(struct bulkdata *bulkdata)
{
FREE(bulkdata->device_id.manufacturer_oui);
FREE(bulkdata->device_id.product_class);
FREE(bulkdata->device_id.serial_number);
return 0;
}
int free_profiles_enable(struct bulkdata *bulkdata)
{
for(int i = 0; i < profiles_number; i++) {
FREE(bulkdata->profile[i].protocol);
FREE(bulkdata->profile[i].encoding_type);
FREE(bulkdata->profile[i].csv_encoding_field_separator);
FREE(bulkdata->profile[i].csv_encoding_row_separator);
FREE(bulkdata->profile[i].csv_encoding_escape_character);
FREE(bulkdata->profile[i].csv_encoding_report_format);
FREE(bulkdata->profile[i].csv_encoding_row_time_stamp);
FREE(bulkdata->profile[i].json_encoding_report_format);
FREE(bulkdata->profile[i].json_encoding_report_time_stamp);
FREE(bulkdata->profile[i].http_url);
FREE(bulkdata->profile[i].http_username);
FREE(bulkdata->profile[i].http_password);
FREE(bulkdata->profile[i].http_compression);
FREE(bulkdata->profile[i].http_method);
FREE(bulkdata->profile[i].http_ssl_capath);
}
FREE(bulkdata->profile);
return 0;
}
int free_profiles_parameters(struct bulkdata *bulkdata)
{
for(int i = 0; i < profiles_number; i++) {
for(int j = 0; j < bulkdata->profile[i].profile_parameter_number; j++) {
FREE(bulkdata->profile[i].profile_parameter[j].name);
FREE(bulkdata->profile[i].profile_parameter[j].reference);
}
FREE(bulkdata->profile[i].profile_parameter);
}
return 0;
}
int free_profile_http_request_uri_parameter(struct bulkdata *bulkdata)
{
for(int i = 0; i < profiles_number; i++) {
for(int j = 0; j < bulkdata->profile[i].profile_http_request_uri_parameter_number; j++) {
FREE(bulkdata->profile[i].profile_http_uri_parameter[j].name);
FREE(bulkdata->profile[i].profile_http_uri_parameter[j].reference);
}
FREE(bulkdata->profile[i].profile_http_uri_parameter);
}
return 0;
}
int bulkdata_config_fini(struct bulkdata *bulkdata)
{
free_device_id_config(bulkdata);
free_profiles_parameters(bulkdata);
free_profile_http_request_uri_parameter(bulkdata);
free_profiles_enable(bulkdata);
return 0;
}

View File

@@ -1,103 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __CONFIG_H
#define __CONFIG_H
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>
#include <libubox/uloop.h>
#define DEFAULT_AMD_VERSION 2
#define DEFAULT_INSTANCE_MODE 0
typedef struct device_id {
char *manufacturer_oui;
char *product_class;
char *serial_number;
} device_id;
typedef struct profile_parameter {
int profile_id;
char *name;
char *reference;
} profile_parameter;
typedef struct profile_http_request_uri_parameter {
int profile_id;
char *name;
char *reference;
} profile_http_request_uri_parameter;
typedef struct profile {
struct uloop_timeout utimer;
int profile_id;
int nbre_of_retained_failed_reports;
int nbre_failed_reports;
int reporting_interval;
int profile_parameter_number;
int profile_http_request_uri_parameter_number;
int http_retry_minimum_wait_interval;
int http_retry_interval_multiplier;
int min_retry;
int retry_count;
char *protocol;
char *encoding_type;
char *csv_encoding_field_separator;
char *csv_encoding_row_separator;
char *csv_encoding_escape_character;
char *csv_encoding_report_format;
char *csv_encoding_row_time_stamp;
char *json_encoding_report_format;
char *json_encoding_report_time_stamp;
char *http_url;
char *http_username;
char *http_password;
char *http_compression;
char *http_method;
char *http_ssl_capath;
char *new_report;
time_t time_reference;
time_t next_retry;
time_t next_period;
bool http_persist_across_reboot;
bool http_insecure_enable;
bool enable;
bool http_use_date_header;
bool http_retry_enable;
struct profile_parameter *profile_parameter;
struct profile_http_request_uri_parameter *profile_http_uri_parameter;
struct list_head *failed_reports;
} profile;
typedef struct bulkdata {
struct device_id device_id;
struct profile *profile;
int log_level;
int amd_version;
unsigned int instance_mode;
} bulkdata;
int bulkdata_config_init(struct bulkdata *bulkdata);
int bulkdata_config_fini(struct bulkdata *bulkdata);
#ifndef FREE
#define FREE(x) do { if(x) {free(x); x = NULL;} } while (0)
#endif
#endif //__CONFIG_H

File diff suppressed because it is too large Load Diff

View File

@@ -1,29 +0,0 @@
/*
* Copyright (C) 2020 iopsys Software Solutions AB
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 2.1
* as published by the Free Software Foundation
*
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*/
#ifndef _BULKDATA_H_
#define _BULKDATA_H_
#include <libbbf_api/dmcommon.h>
extern DMOBJ tDeviceBulkDataObj[];
extern DMOBJ tBulkDataObj[];
extern DMLEAF tBulkDataParams[];
extern DMOBJ tBulkDataProfileObj[];
extern DMLEAF tBulkDataProfileParams[];
extern DMLEAF tBulkDataProfileParameterParams[];
extern DMLEAF tBulkDataProfileCSVEncodingParams[];
extern DMLEAF tBulkDataProfileJSONEncodingParams[];
extern DMOBJ tBulkDataProfileHTTPObj[];
extern DMLEAF tBulkDataProfileHTTPParams[];
extern DMLEAF tBulkDataProfileHTTPRequestURIParameterParams[];
#endif //__BULKDATA_H_

View File

@@ -1,196 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Omar Kallel <omar.kallel@pivasoftware.com>
*/
#include "http.h"
static struct http_client http_c;
static CURL *curl;
int http_client_init(struct profile *profile)
{
char *url = create_request_url(profile);
if(url) {
asprintf(&http_c.url, "%s", url);
free(url);
}
bulkdata_log(SINFO, "ACS url: %s", http_c.url);
curl_global_init(CURL_GLOBAL_SSL);
curl = curl_easy_init();
if (!curl) return -1;
return 0;
}
void http_client_exit(void)
{
FREE(http_c.url);
if (http_c.header_list) {
curl_slist_free_all(http_c.header_list);
http_c.header_list = NULL;
}
curl_easy_cleanup(curl);
curl_global_cleanup();
}
static size_t http_get_response(void *buffer, size_t size, size_t rxed, char **msg_in)
{
char *c;
if (asprintf(&c, "%s%.*s", *msg_in, (int) (size * rxed), (char *)buffer) == -1) {
FREE(*msg_in);
return -1;
}
free(*msg_in);
*msg_in = c;
return size * rxed;
}
int http_send_message(struct profile *profile, char *msg_out, int msg_out_len, char **msg_in)
{
CURLcode res;
long http_code = 0;
char errbuf[CURL_ERROR_SIZE];
http_c.header_list = NULL;
http_c.header_list = curl_slist_append(http_c.header_list, "User-Agent: iopsys-bulkdata");
if (!http_c.header_list) return -1;
if (profile->http_use_date_header) {
if (bulkdata_get_time() != NULL) {
http_c.header_list = curl_slist_append(http_c.header_list, bulkdata_get_time());
if (!http_c.header_list) return -1;
}
}
if (strcmp(profile->encoding_type, "json") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "Content-Type: application/json; charset=\"utf-8\"");
if (!http_c.header_list) return -1;
if(strcmp (profile->json_encoding_report_format, "objecthierarchy") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "BBF-Report-Format: \"ObjectHierarchy\"");
if (!http_c.header_list) return -1;
} else if(strcmp(profile->json_encoding_report_format, "namevaluepair") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "BBF-Report-Format: \"NameValuePair\"");
if (!http_c.header_list) return -1;
}
} else if(strcmp(profile->encoding_type, "csv") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "Content-Type: text/csv; charset=\"utf-8\"");
if (!http_c.header_list) return -1;
if(strcmp (profile->csv_encoding_report_format, "row") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "BBF-Report-Format: \"ParameterPerRow\"");
if (!http_c.header_list) return -1;
} else if(strcmp (profile->csv_encoding_report_format, "column") == 0) {
http_c.header_list = curl_slist_append(http_c.header_list, "BBF-Report-Format: \"ParameterPerColumn\"");
if (!http_c.header_list) return -1;
}
}
curl_easy_setopt(curl, CURLOPT_URL, http_c.url);
curl_easy_setopt(curl, CURLOPT_USERNAME, profile->http_username);
curl_easy_setopt(curl, CURLOPT_PASSWORD, profile->http_password);
curl_easy_setopt(curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC|CURLAUTH_DIGEST);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, HTTP_TIMEOUT);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, HTTP_TIMEOUT);
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
curl_easy_setopt(curl, CURLOPT_NOBODY, 0);
if(strcasecmp(profile->http_compression, "gzip") == 0) {
curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "gzip");
http_c.header_list = curl_slist_append(http_c.header_list, "Content-Encoding: gzip");
} else if(strcasecmp(profile->http_compression, "compress") == 0) {
curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "compress");
http_c.header_list = curl_slist_append(http_c.header_list, "Content-Encoding: compress");
} else if(strcasecmp(profile->http_compression, "deflate") == 0) {
curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "deflate");
http_c.header_list = curl_slist_append(http_c.header_list, "Content-Encoding: deflate");
}
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, http_c.header_list);
if(strcasecmp(profile->http_method, "put") == 0)
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, msg_out);
if (msg_out)
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, (long) msg_out_len);
else
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 0);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, http_get_response);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, msg_in);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
if (profile->http_ssl_capath)
curl_easy_setopt(curl, CURLOPT_CAPATH, profile->http_ssl_capath);
if (profile->http_insecure_enable) {
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
}
*msg_in = (char *) calloc (1, sizeof(char));
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
size_t len = strlen(errbuf);
if(len) {
if (errbuf[len - 1] == '\n') errbuf[len - 1] = '\0';
bulkdata_log(SCRIT, "libcurl: (%d) %s", res, errbuf);
} else {
bulkdata_log(SCRIT, "libcurl: (%d) %s", res, curl_easy_strerror(res));
}
}
if (!strlen(*msg_in))
FREE(*msg_in);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
if(http_code == 200)
bulkdata_log(SINFO, "Receive HTTP 200 OK from Bulkdata Collector");
else if(http_code == 401)
bulkdata_log(SINFO, "Receive HTTP 401 Unauthorized from Bulkdata Collector");
else if(http_code == 204)
bulkdata_log(SINFO, "Receive HTTP 204 No Content from Bulkdata Collector");
else
bulkdata_log(SINFO, "Receive HTTP %d from Bulkdata Collector", http_code);
if(http_code == 415)
{
strcpy(profile->http_compression, "None");
goto error;
}
if (http_code != 200 && http_code != 204)
goto error;
curl_easy_reset(curl);
if (http_c.header_list) {
curl_slist_free_all(http_c.header_list);
http_c.header_list = NULL;
}
if (res) goto error;
return http_code;
error:
FREE(*msg_in);
if (http_c.header_list) {
curl_slist_free_all(http_c.header_list);
http_c.header_list = NULL;
}
return -1;
}

View File

@@ -1,37 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __HTTP_H
#define __HTTP_H
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <curl/curl.h>
#include "config.h"
#include "log.h"
#include "times.h"
#include "common.h"
#define HTTP_TIMEOUT 30
struct http_client
{
struct curl_slist *header_list;
char *url;
};
int http_client_init(struct profile *profile);
void http_client_exit(void);
int http_send_message(struct profile *profile, char *msg_out, int msg_out_len, char **msg_in);
#endif //__HTTP_H

View File

@@ -1,57 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#include <stdarg.h>
#include <stdbool.h>
#include <stdio.h>
#include <syslog.h>
#include <time.h>
#include "bulkdata.h"
#include "config.h"
#include "log.h"
static const int log_syslogmap[] = {
[SCRIT] = LOG_CRIT,
[SWARNING] = LOG_WARNING,
[SNOTICE] = LOG_NOTICE,
[SINFO] = LOG_INFO,
[SDEBUG] = LOG_DEBUG
};
static const char* log_str[] = {
[SCRIT] = "CRITICAL",
[SWARNING] = "WARNING",
[SNOTICE] = "NOTICE",
[SINFO] = "INFO",
[SDEBUG] = "DEBUG"
};
void bulkdata_log(int priority, const char *format, ...)
{
va_list vl;
if (priority <= bulkdata_main.log_level) {
time_t t = time(NULL);
struct tm tm = *localtime(&t);
va_start(vl, format);
printf("%d-%02d-%02d %02d:%02d:%02d [bulkdata] %s - ", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, log_str[priority]);
vprintf(format, vl);
va_end(vl);
printf("\n");
openlog("bulkdata", 0, LOG_DAEMON);
va_start(vl, format);
vsyslog(log_syslogmap[priority], format, vl);
va_end(vl);
closelog();
}
}

View File

@@ -1,28 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __LOG_H
#define __LOG_H
#define DEFAULT_LOGLEVEL SINFO
enum bulkdata_log_level_enum {
SCRIT,
SWARNING,
SNOTICE,
SINFO,
SDEBUG,
__MAX_SLOG
};
void bulkdata_log(int priority, const char *format, ...);
#endif //__LOG_H

View File

@@ -1,336 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Author: Omar Kallel <omar.kallel@pivasoftware.com>
*
*/
#include "report.h"
static void add_new_json_obj(json_object *json_obj, char *name, char *data, char *type)
{
json_object *jobj;
if(strstr(type, "unsignedInt") || strstr(type, "int") || strstr(type, "long"))
jobj = json_object_new_int64(atoi(data));
else if(strstr(type, "bool"))
jobj = json_object_new_boolean(atoi(data));
else
jobj = json_object_new_string(data);
json_object_object_add(json_obj, name, jobj);
}
static void create_json_bulkdata_report_object_hierarchy(struct profile *profile, char **report)
{
struct json_object *json_obj, *json_obj1, *json_obj2;
struct resultsnode *p;
int i, j, profile_param_number = profile->profile_parameter_number;
char *param_name, *result, *pch, *pchr, *collection_time = NULL;
char buf[1024] = {0};
json_obj = json_object_new_object();
get_time_stamp(profile->json_encoding_report_time_stamp, &collection_time);
if(collection_time) {
if(strcmp(profile->json_encoding_report_time_stamp, "iso8601") == 0)
json_object_object_add(json_obj, "CollectionTime", json_object_new_string(collection_time));
else
json_object_object_add(json_obj, "CollectionTime", json_object_new_int64(atoi(collection_time)));
free(collection_time);
}
json_obj2 = json_obj;
for (i = 0; i < profile_param_number; i++) {
LIST_HEAD(results_list);
bulkdata_get_value_results(profile->profile_parameter[i].reference, &results_list);
list_for_each_entry(p, &results_list, list) {
char *argv[128] = {0};
j = 0;
param_name = get_bulkdata_profile_parameter_name(profile->profile_parameter[i].reference, profile->profile_parameter[i].name, p->name);
strcpy(buf, param_name);
for (pch = strtok_r(buf, ".", &pchr); pch != NULL; pch = strtok_r(NULL, ".", &pchr)) {
argv[j] = pch;
json_obj1 = (json_object *)bbf_api_dmjson_select_obj(json_obj, argv);
if (json_obj1)
json_obj2 = json_obj1;
else {
if (pchr != NULL && *pchr != '\0') {
json_object *new_obj = json_object_new_object();
json_object_object_add(json_obj2, pch, new_obj);
json_obj2 = new_obj;
}
else
add_new_json_obj(json_obj2, pch, p->data, p->type);
}
j++;
}
}
bulkdata_free_data_from_list(&results_list);
FREE(param_name);
}
result = (char *)json_object_to_json_string_ext(json_obj, JSON_C_TO_STRING_PRETTY);
*report = strdup(result);
json_object_put(json_obj);
}
static void create_json_bulkdata_report_name_value_pair(struct profile *profile, char **report)
{
struct json_object *json_obj;
struct resultsnode *p;
char *param_name, *result, *collection_time = NULL;
int i = 0, profile_param_number = profile->profile_parameter_number;
json_obj = json_object_new_object();
get_time_stamp(profile->json_encoding_report_time_stamp, &collection_time);
if(collection_time) {
if(strcmp(profile->json_encoding_report_time_stamp, "iso8601") == 0)
json_object_object_add(json_obj, "CollectionTime", json_object_new_string(collection_time));
else
json_object_object_add(json_obj, "CollectionTime", json_object_new_int64(atoi(collection_time)));
free(collection_time);
}
for (i = 0; i < profile_param_number; i++) {
LIST_HEAD(results_list);
bulkdata_get_value_results(profile->profile_parameter[i].reference, &results_list);
list_for_each_entry(p, &results_list, list) {
param_name = get_bulkdata_profile_parameter_name(profile->profile_parameter[i].reference, profile->profile_parameter[i].name, p->name);
add_new_json_obj(json_obj, param_name, p->data, p->type);
FREE(param_name);
}
bulkdata_free_data_from_list(&results_list);
}
result = (char *)json_object_to_json_string_ext(json_obj, JSON_C_TO_STRING_PRETTY);
*report = strdup(result);
json_object_put(json_obj);
}
static void add_failed_reports_to_report_json(struct profile *profile, char *new_report, char **report, int isnext)
{
json_object *json_obj, *json_array, *json_string;
struct failed_reports *retreport = NULL;
char *msgout = NULL;
int j = 0;
json_obj = json_object_new_object();
json_array = json_object_new_array();
json_object_object_add(json_obj,"Report", json_array);
if(list_empty(profile->failed_reports))
goto new_report;
list_for_each_entry(retreport, profile->failed_reports, list) {
if(!j && isnext) {
j = 1;
continue;
}
json_string = json_tokener_parse(retreport->freport);
json_object_array_add(json_array, json_string);
}
new_report :
if(new_report) {
json_string = json_tokener_parse(new_report);
json_object_array_add(json_array, json_string);
}
msgout = (char *)json_object_to_json_string_ext(json_obj, JSON_C_TO_STRING_PRETTY);
*report = strdup(msgout);
json_object_put(json_obj);
}
static void create_report_json(char *new_report, char **report)
{
json_object *json_obj, *json_array, *json_string;
char *msgout = NULL;
json_obj = json_object_new_object();
json_array = json_object_new_array();
json_object_object_add(json_obj,"Report", json_array);
if(new_report) {
json_string = json_tokener_parse(new_report);
json_object_array_add(json_array, json_string);
}
msgout = (char *)json_object_to_json_string_ext(json_obj, JSON_C_TO_STRING_PRETTY);
*report = strdup(msgout);
json_object_put(json_obj);
}
int create_json_bulkdata_report(struct profile *profile, char **report)
{
/*
* create json msg of current report
* parse failed reports list and add it to the report
* then add new report to the report
*/
char *msgout;
profile->new_report = NULL;
if(strcmp(profile->json_encoding_report_format, "objecthierarchy") == 0) {
create_json_bulkdata_report_object_hierarchy(profile, &msgout);
} else if(strcmp(profile->json_encoding_report_format, "namevaluepair") == 0) {
create_json_bulkdata_report_name_value_pair(profile, &msgout);
}
if(profile->nbre_of_retained_failed_reports != 0) {
if(profile->nbre_failed_reports >= profile->nbre_of_retained_failed_reports && profile->nbre_of_retained_failed_reports > 0)
add_failed_reports_to_report_json(profile, msgout, report, 1);
else
add_failed_reports_to_report_json(profile, msgout, report, 0);
} else {
create_report_json(msgout, report);
}
append_string_to_string(msgout, &profile->new_report);
FREE(msgout);
return 0;
}
int create_csv_bulkdata_report(struct profile *profile, char **report)
{
/*
* create csv msg of current report
* parse failed reports list and add it to the report
*/
int i;
struct resultsnode *p;
char *str1 = NULL, *str2 = NULL, *str = NULL, *paramprofilename, *timestamp = NULL, *type = NULL, rowseparator = '\0', separator = '\0';
if(strcmp(profile->csv_encoding_row_separator, "&#10;") == 0)
rowseparator = '\n';
else if(strcmp(profile->csv_encoding_row_separator, "&#13;") == 0)
rowseparator = '\r';
if(profile->csv_encoding_field_separator)
separator = profile->csv_encoding_field_separator[0];
get_time_stamp(profile->csv_encoding_row_time_stamp, &timestamp);
/*
* Create header ReportTimestamp,ParameterName,ParameterValue,ParameterType in case of ParameterPerRow
*/
if(strcmp(profile->csv_encoding_report_format, "row") == 0) {
if(timestamp == NULL)
asprintf(&str, "ParameterName%cParameterValue%cParameterType%c", separator, separator, rowseparator);
else
asprintf(&str, "ReportTimestamp%cParameterName%cParameterValue%cParameterType%c", separator, separator, separator, rowseparator);
append_string_to_string(str, report);
FREE(str);
if(profile->nbre_of_retained_failed_reports != 0) {
if(profile->nbre_failed_reports >= profile->nbre_of_retained_failed_reports && profile->nbre_of_retained_failed_reports > 0)
add_failed_reports_to_report_csv(profile, report, 1);
else
add_failed_reports_to_report_csv(profile, report, 0);
}
}
if(strcmp(profile->csv_encoding_report_format, "column") == 0 && timestamp != NULL) {
if(profile->nbre_of_retained_failed_reports != 0) {
if(profile->nbre_failed_reports >= profile->nbre_of_retained_failed_reports && profile->nbre_of_retained_failed_reports > 0)
add_failed_reports_to_report_csv(profile, report, 1);
else
add_failed_reports_to_report_csv(profile, report, 0);
}
append_string_to_string("ReportTimestamp", &str1);
append_string_to_string(timestamp, &str2);
}
/*
* Add New reports
*/
profile->new_report = NULL;
for(i = 0; i < profile->profile_parameter_number; i++) {
LIST_HEAD(results_list);
bulkdata_get_value_results(profile->profile_parameter[i].reference, &results_list);
list_for_each_entry(p, &results_list, list) {
paramprofilename = get_bulkdata_profile_parameter_name(profile->profile_parameter[i].reference, profile->profile_parameter[i].name, p->name);
if(strcmp(profile->csv_encoding_report_format, "row") == 0) {
type = strstr(p->type, ":");
if(timestamp == NULL)
asprintf(&str, "%s%c%s%c%s%c", paramprofilename, separator, p->data, separator, type+1, rowseparator);
else
asprintf(&str, "%s%c%s%c%s%c%s%c", timestamp, separator, paramprofilename, separator, p->data, separator, type+1, rowseparator);
append_string_to_string(str, report);
append_string_to_string(str, &profile->new_report);
FREE(str);
} else if(strcmp(profile->csv_encoding_report_format, "column") == 0) {
if(str1 == NULL || strlen(str1) <= 0)
asprintf(&str, "%s", paramprofilename);
else
asprintf(&str, "%c%s", separator, paramprofilename);
append_string_to_string(str, &str1);
FREE(str);
if(str2 == NULL || strlen(str2) <= 0)
asprintf(&str, "%s", p->data);
else
asprintf(&str, "%c%s", separator, p->data);
append_string_to_string(str, &str2);
FREE(str);
}
FREE(paramprofilename);
}
bulkdata_free_data_from_list(&results_list);
}
if(strcmp(profile->csv_encoding_report_format, "column") == 0) {
asprintf(&str, "%c", rowseparator);
append_string_to_string(str, &str1);
append_string_to_string(str, &str2);
append_string_to_string(str1, report);
append_string_to_string(str2, report);
append_string_to_string(str1, &profile->new_report);
append_string_to_string(str2, &profile->new_report);
}
FREE(str);
FREE(str1);
FREE(str2);
FREE(timestamp);
return 0;
}
static void create_json_failed_report(struct profile *profile, char **report)
{
add_failed_reports_to_report_json(profile, NULL, report, 0);
}
static void create_csv_failed_report(struct profile *profile, char **report)
{
char rowseparator = '\0', separator = '\0', *timestamp = NULL;
if(strcmp(profile->csv_encoding_row_separator, "&#10;") == 0) {
rowseparator = '\n';
} else if(strcmp(profile->csv_encoding_row_separator, "&#13;") == 0) {
rowseparator = '\r';
}
if(profile->csv_encoding_field_separator)
separator = profile->csv_encoding_field_separator[0];
get_time_stamp(profile->csv_encoding_row_time_stamp, &timestamp);
if(strcmp(profile->csv_encoding_report_format, "row") == 0) {
if(timestamp == NULL)
asprintf(report, "ParameterName%cParameterValue%cParameterType%c", separator, separator, rowseparator);
else
asprintf(report, "ReportTimestamp%cParameterName%cParameterValue%cParameterType%c", separator, separator, separator, rowseparator);
}
add_failed_reports_to_report_csv(profile, report, 0);
}
void create_encoding_bulkdata_report(struct profile *profile, char **report)
{
if(strcasecmp(profile->encoding_type, "json") == 0) {
create_json_bulkdata_report(profile, report);
} else if(strcasecmp(profile->encoding_type, "csv") == 0) {
create_csv_bulkdata_report(profile, report);
}
}
void create_failed_report(struct profile *profile, char **report)
{
if(strcasecmp(profile->encoding_type, "json") == 0) {
create_json_failed_report(profile, report);
} else if(strcasecmp(profile->encoding_type, "csv") == 0) {
create_csv_failed_report(profile, report);
}
}

View File

@@ -1,24 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
* Author: Omar Kallel <omar.kallel@pivasoftware.com>
*
*/
#ifndef __REPORT_H_
#define __REPORT_H_
#include <json-c/json.h>
#include "common.h"
#include "times.h"
#include "config.h"
void create_encoding_bulkdata_report(struct profile *profile, char **report);
void create_failed_report(struct profile *profile, char **report);
#endif /* __REPORT_H_ */

View File

@@ -1,62 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "times.h"
const char *bulkdata_get_time(void)
{
static char local_time[64];
time_t t_time = time(NULL);
struct tm *t_tm = localtime(&t_time);
if (t_tm == NULL)
return NULL;
if (strftime(local_time, sizeof(local_time),"Date: %a, %d %b %Y %X%z GMT", t_tm) == 0)
return NULL;
return local_time;
}
void get_time_stamp(const char *format, char **timestamp)
{
time_t now = time(NULL);
if (strcmp(format, "unix") == 0) {
asprintf(timestamp, "%ld", now);
} else if (strcmp(format, "iso8601") == 0) {
char buf[32] = {0};
struct tm *ts = localtime(&now);
strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S%Z", ts);
asprintf(timestamp, "%s", buf);
} else
timestamp = NULL;
}
unsigned int get_next_period(time_t time_reference, int reporting_interval)
{
unsigned int next_period;
time_t now = time(NULL);
if (now > time_reference)
next_period = reporting_interval - ((now - time_reference) % reporting_interval);
else
next_period = (time_reference - now) % reporting_interval;
if (next_period == 0)
next_period = reporting_interval;
return next_period;
}

View File

@@ -1,19 +0,0 @@
/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* Copyright (C) 2020 iopsys Software Solutions AB
* Author: Amin Ben Ramdhane <amin.benramdhane@pivasoftware.com>
*
*/
#ifndef __TIMES_H
#define __TIMES_H
const char *bulkdata_get_time(void);
void get_time_stamp(const char *format, char **timestamp);
unsigned int get_next_period(time_t time_reference, int reporting_interval);
#endif /* __TIMES_H */

38
bulut/Makefile Normal file
View File

@@ -0,0 +1,38 @@
#
# Copyright (C) 2019 IOPSYS
#
include $(TOPDIR)/rules.mk
PKG_NAME:=bulut
PKG_VERSION:=0.2
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://dev.iopsys.eu/bulut/bulut-gw-client.git
PKG_SOURCE_VERSION:=227700c44817afa2c392fa08bf4cf70fa6177f01
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MIRROR_HASH:=skip
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
include $(INCLUDE_DIR)/package.mk
define Package/bulut
CATEGORY:=Utilities
DEPENDS:=
TITLE:=bulut
endef
TARGET_CFLAGS += \
-I$(STAGING_DIR)/usr/include
define Package/bulut/description
obuspa keys
endef
define Package/bulut/install
$(CP) $(PKG_BUILD_DIR)/files/* $(1)/
endef
$(eval $(call BuildPackage,bulut))

11
dectmngr/Config.in Normal file
View File

@@ -0,0 +1,11 @@
if PACKAGE_dectmngr
menu "Configuration"
config ENABLE_LINE_SETTINGS_EXTENSION
bool "Enable Line Settings List extension "
default y
endmenu
endif

View File

@@ -1,5 +1,5 @@
#
# Copyright (C) 2020 IOPSYS Software Solutions AB
# Copyright (C) 2021 IOPSYS Software Solutions AB
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@@ -7,17 +7,18 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=dectmngr
PKG_RELEASE:=1
PKG_VERSION:=1.0
PKG_RELEASE:=3
PKG_VERSION:=3.5.1
LOCAL_DEV=1
LOCAL_DEV=0
ifneq ($(LOCAL_DEV),1)
PKG_SOURCE_URL:=https://dev.iopsys.eu/iopsys/dectmngr.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=2c8990fd5275d469e8ab6c7a99e17fe0a56052ea
PKG_SOURCE_VERSION:=ef9d4c6124d0ca66f048f3d678d9a25f13aa4207
PKG_MIRROR_HASH:=skip
endif
PKG_LICENSE:=GPLv2
PKG_LICENSE:=PROPRIETARY
PKG_LICENSE_FILES:=LICENSE
RSTRIP:=true
@@ -33,33 +34,40 @@ include $(INCLUDE_DIR)/package.mk
define Package/$(PKG_NAME)
CATEGORY:=Utilities
TITLE:=DECT Manager
DEPENDS:= +libubox +ubus +libpicoevent
DEPENDS:= +libubox +ubus +uci +libxml2
endef
define Package/$(PKG_NAME)/description
DECT manager is a daemon that provides UBUS RPC objects and sends UBUS events for communication with the DECT chip.
endef
define Package/$(PKG_NAME)/config
source "$(SOURCE)/Config.in"
endef
ifeq ($(LOCAL_DEV),1)
define Build/Prepare
$(CP) -r src/* $(PKG_BUILD_DIR)/
rsync -av --exclude=.* ~/git/voip/dectmngr/* $(PKG_BUILD_DIR)/
endef
endif
MAKE_FLAGS += \
CFLAGS+="-Wall"
TARGET_CFLAGS += \
-Wall \
-I$(STAGING_DIR)/usr/include/libxml2
ifeq ($(CONFIG_ENABLE_LINE_SETTINGS_EXTENSION),y)
TARGET_CFLAGS += -DENABLE_LINE_SETTINGS_EXTENSION
endif
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_DIR) $(1)/usr/lib
$(INSTALL_DIR) $(1)/etc/dect/
$(INSTALL_DIR) $(1)/etc/config/
$(INSTALL_DIR) $(1)/etc/init.d/
$(INSTALL_DIR) $(1)/etc
$(INSTALL_DIR) $(1)/lib/upgrade/keep.d
$(INSTALL_BIN) $(PKG_BUILD_DIR)/app/dectmngr $(1)/usr/sbin/
$(STRIP) $(1)/usr/sbin/dectmngr
$(INSTALL_BIN) $(PKG_BUILD_DIR)/app/libdect.so $(1)/usr/lib/
$(STRIP) $(1)/usr/lib/libdect.so
$(CP) ./files/etc/* $(1)/etc/
$(INSTALL_DATA) ./files/lib/upgrade/keep.d/dect $(1)/lib/upgrade/keep.d/dect
endef
$(eval $(call BuildPackage,$(PKG_NAME)))

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +0,0 @@
9c5962fc5bdef309d15cf76dd2678297 out4/Images/PRODUCT_IOPSYS/DCX81_fw_c/MOD/USB/DCX81_MOD_USB.ITCM
17d4a7e4021c6089104c28c228245df2 out4/Images/PRODUCT_IOPSYS/DCX81_fw_c/MOD/USB/DCX81_MOD_USB.ITCM_L
d32e2a3dd05f4d1933eac77cfff091ba out4/Images/PRODUCT_IOPSYS/DCX81_fw_c/MOD/USB/DCX81_MOD_USB.bin
477bfa4e91914db4c0078b31a6cdf208 out4/Images/PRODUCT_IOPSYS/DCX81_fw_c/MOD/USB/DCX81_MOD_USB.BOOTLOADER.bin

View File

@@ -1 +0,0 @@
{0xee,0xb7,0x3c,0x8f,0x44,0xe1,0xad,0x87,0x53,0xc8,0x57,0x4e,0x08,0x6d,0x87,0x9f}

View File

@@ -1,984 +0,0 @@
<html>
<head>
<title>EEPROM map </title>
<style>
<!--
th {
font-size: 12px;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-style: bold;
}
td {
font-size: 10px;
font-family: Verdana, Arial, Helvetica, sans-serif;
}
body {
background-color: #FFFFFF;
}
-->
</style>
</head>
<body>
<h1>EEPROM map bsd02eep.h-GIT</h1>
<table border="2" cellspacing="2" width="100%" rules="both" align="center" style=" font-size: 10px;
font-family: Verdana, Arial, Helvetica, sans-serif;
background-color: #C9FFDA;
border-collapse: collapse;
border: 5px solid white">
<tbody>
<tr style=" font-size: 12px;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-style: bold;
background-color: #78FF95"><td>Name</td><td align="center">Offset</td><td>Comment</td><td width="100">Default</td></tr>
<tr><td>SD02_RESERVED1[4]</td><td align="center">0(0x0)</td><td> L4 RESERVED1 </td><td width="100"></td></tr>
<tr><td>SD02_RESERVED2[5]</td><td align="center">4(0x4)</td><td> L5 RESERVED2 </td><td width="100"></td></tr>
<tr><td>SD02_SUB_GFSK[10]</td><td align="center">9(0x9)</td><td> L10 </td><td width="100">0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,
</td></tr>
<tr><td>SD02_PREAM_NORMAL</td><td align="center">19(0x13)</td><td> L1 </td><td width="100">0x65,
</td></tr>
<tr><td>SD02_TEST_FLAGS</td><td align="center">20(0x14)</td><td> L1 If set: bit 0: BMP Driver Recover disabled
bit 1: Watchdog not enabled
bit 3: disable activity led </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_EMC_MODEL[3]</td><td align="center">21(0x15)</td><td> L3 EMC number and model, transfered in MODEL_ID IE </td><td width="100">0x0F,0xEB,0x02,
</td></tr>
<tr><td>SD02_RVREF</td><td align="center">24(0x18)</td><td> L1 </td><td width="100">0x1F,
</td></tr>
<tr><td>SD02_TEST_MODE</td><td align="center">25(0x19)</td><td> L1 Enter TBR6/10 </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_RXTUN</td><td align="center">26(0x1A)</td><td> L1 FR </td><td width="100">0x70,
</td></tr>
<tr><td>SD02_AUXBGPROG</td><td align="center">27(0x1B)</td><td> L1 AUXBGPROG (Bandgap calibration value) </td><td width="100">0x66,
</td></tr>
<tr><td>SD02_RVDDC</td><td align="center">28(0x1C)</td><td> L1 </td><td width="100">0x97,
</td></tr>
<tr><td>SD02_POWER_CONTROL</td><td align="center">29(0x1D)</td><td> L1 Power Control: nibble usage (0xsw) where s is ARM clock speed and w the number of
pflash waitstates.
Note: For ICELP, the default ARM clock
speed is 64 (96MHz and 4 wait states).
Note: For VegaOne s is used as an index to
recommended clock settings (see
VegaOne_AHB_PLLDIV[16] in file
cdr17tim.c).
For VegaOne: bit 3 is used to select if flash
running in syncrounous (asyncronous = 0
syncronous = 1)</td><td width="100">0x2,
</td></tr>
<tr><td>SD02_WDCT_HOP_CONTROL</td><td align="center">30(0x1E)</td><td> L1 </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_WDCT_QUAL_CONTROL</td><td align="center">31(0x1F)</td><td> L1 WDCT Quality Control: When the most significant bit of this byte is
set to 1, the hop sequence of 19 and frequency
substitution can be disabled.</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_US_DECT</td><td align="center">32(0x20)</td><td> L1 </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_MAX_USABLE_RSSI</td><td align="center">33(0x21)</td><td> L1 </td><td width="100">0x78,
</td></tr>
<tr><td>SD02_LOWER_RSSI_LIMIT</td><td align="center">34(0x22)</td><td> L1 </td><td width="100">0x50,
</td></tr>
<tr><td>SD02_V22_VOL_HIGH</td><td align="center">35(0x23)</td><td> L1 V22 Volume Low - Sidetone </td><td width="100">0x01,
</td></tr>
<tr><td>SD02_V22_VOL_LOW</td><td align="center">36(0x24)</td><td> L1 V22 Volume High - Sidetone </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_DSP_CID_THRES</td><td align="center">37(0x25)</td><td> L1 CID Threshold</td><td width="100">0x51,
</td></tr>
<tr><td>SD02_DSP_PATCH[50]</td><td align="center">38(0x26)</td><td> L50 DSP patch area 8 entries, each defines a flexible value for 1
DSP parameter.
Structure:
1st Word: DSP instance (low, high byte)
2nd Word: offset (low, high byte)
3rd Word: value (low, high byte)</td><td width="100">0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
</td></tr>
<tr><td>SD02_ARM_PATCH[40]</td><td align="center">88(0x58)</td><td> L40: 0=unused ARM patch area (5 entries): 5 X 2 X4 Bytes to modify any 30 bit ARM
address location after protocol stack initialisation:
1st Word: address (big endian)
2nd Word: value (big endian)
The 2 MSBits of the address define the
write access type:
00: Word access (u32)
01: Halfword access (u16)
10: Byte access (u8) </td><td width="100">0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
</td></tr>
<tr><td>SD02_DSP_CLOCK</td><td align="center">128(0x80)</td><td> L1 </td><td width="100">0x02,
</td></tr>
<tr><td>SD02_FWROM_BOARDER</td><td align="center">129(0x81)</td><td> L1 </td><td width="100">0x1D,
</td></tr>
<tr><td>SD02_PORBGCFG</td><td align="center">130(0x82)</td><td> L1 PORBGCFG (POR calibration value) </td><td width="100">0xC0,
</td></tr>
<tr><td>SD02_FPTR</td><td align="center">131(0x83)</td><td> L1 MSB used to enable/disable use of this parameter 0=enable </td><td width="100">0xFF,
</td></tr>
<tr><td>SD02_FULL_POWER</td><td align="center">132(0x84)</td><td> DTPC Full Power </td><td width="100">0x7F,
</td></tr>
<tr><td>SD02_LOW_POWER</td><td align="center">133(0x85)</td><td> DTPC Low(medium) Power </td><td width="100">0xC4,
</td></tr>
<tr><td>SD02_LOWEST_POWER</td><td align="center">134(0x86)</td><td> DTPC Lowest Power</td><td width="100">0x03,
</td></tr>
<tr><td>SD02_AEC_LSP_ATTEN_RANGE[2]</td><td align="center">135(0x87)</td><td> L2 AEC_lsp_atten_range For all AEC parameters see User Manual
Vega-Family ARM DSP RELEASE V7.5
(or higher)</td><td width="100">0x00, 0x08,
</td></tr>
<tr><td>SD02_AEC_NLMS_ERL[2]</td><td align="center">137(0x89)</td><td> L2 </td><td width="100">0x40, 0x00,
</td></tr>
<tr><td>SD02_AEC_X_CLIP[2]</td><td align="center">139(0x8B)</td><td> L2 </td><td width="100">0x0F, 0x1F,
</td></tr>
<tr><td>SD02_AEC_ECHO_RATIO[2]</td><td align="center">141(0x8D)</td><td> L2 </td><td width="100">0x00, 0x01,
</td></tr>
<tr><td>SD02_AEC_DENS_GAMMA_E_HIGH[2]</td><td align="center">143(0x8F)</td><td> L2 </td><td width="100">0xCC, 0x01,
</td></tr>
<tr><td>SD02_AEC_DENS_GAMMA_E_LOW[2]</td><td align="center">145(0x91)</td><td> L2 </td><td width="100">0x80, 0x00,
</td></tr>
<tr><td>SD02_AEC_DENS_GAMMA_E_DT[2]</td><td align="center">147(0x93)</td><td> L2 </td><td width="100">0x66, 0x01,
</td></tr>
<tr><td>SD02_AEC_DENS_GAMMA_N[2]</td><td align="center">149(0x95)</td><td> L2 </td><td width="100">0x00, 0x01,
</td></tr>
<tr><td>SD02_AEC_DENS_TAIL_ALPHA[2]</td><td align="center">151(0x97)</td><td> L2 </td><td width="100">0x66, 0x66,
</td></tr>
<tr><td>SD02_AEC_DENS_TAIL_PORTION[2]</td><td align="center">153(0x99)</td><td> L2 </td><td width="100">0xD7, 0x03,
</td></tr>
<tr><td>SD02_AEC_DENS_NL_ATTEN[2]</td><td align="center">155(0x9B)</td><td> L2 </td><td width="100">0x00, 0x08,
</td></tr>
<tr><td>SD02_AEC_DENS_CNI_LEVEL[2]</td><td align="center">157(0x9D)</td><td> L2 </td><td width="100">0x00, 0x20,
</td></tr>
<tr><td>SD02_AEC_MODE[2]</td><td align="center">159(0x9F)</td><td> L2 </td><td width="100">0xF7, 0x00,
</td></tr>
<tr><td>SD02_AEC_ECHO_PATH_DELAY[2]</td><td align="center">161(0xA1)</td><td> L2 </td><td width="100">0x00, 0x00,
</td></tr>
<tr><td>SD02_DTPC_ENABLE</td><td align="center">163(0xA3)</td><td></td><td width="100">0x01,
</td></tr>
<tr><td>SD02_RSSI_TIMER</td><td align="center">164(0xA4)</td><td></td><td width="100">0x64,
</td></tr>
<tr><td>SD02_DRPC_RSSI_THRESH</td><td align="center">165(0xA5)</td><td></td><td width="100">0x80,
</td></tr>
<tr><td>SD02_DRPC_RSSI_CORRECT</td><td align="center">166(0xA6)</td><td></td><td width="100">0x1C,
</td></tr>
<tr><td>SD02_RVR2C_INIT</td><td align="center">167(0xA7)</td><td> L1 </td><td width="100">0x40,
</td></tr>
<tr><td>SD02_FI_TRIG_GPIO</td><td align="center">168(0xA8)</td><td> L1 </td><td width="100">0x0,
</td></tr>
<tr><td>SD02_RF19APU_SUPPORT_FCC</td><td align="center">169(0xA9)</td><td> L1 </td><td width="100">0x0,
</td></tr>
<tr><td>SD02_RF19APU_TC_DELAY</td><td align="center">170(0xAA)</td><td> L1 </td><td width="100">0x3,
</td></tr>
<tr><td>SD02_RF19APU_GAP_DELAY</td><td align="center">171(0xAB)</td><td> L1 </td><td width="100">0x8,
</td></tr>
<tr><td>SD02_RF19APU_GAP_DELAY_FADOFF</td><td align="center">172(0xAC)</td><td> L1 </td><td width="100">0xA,
</td></tr>
<tr><td>SD02_RF19APU_TRSSI_DELAY</td><td align="center">173(0xAD)</td><td> L1 </td><td width="100">0x25,
</td></tr>
<tr><td>SD02_RF19APU_TRSSI_DELAY_FADOFF</td><td align="center">174(0xAE)</td><td> L1 </td><td width="100">0x13,
</td></tr>
<tr><td>SD02_RF19APU_DEVIATION</td><td align="center">175(0xAF)</td><td> L1 </td><td width="100">0x13,
</td></tr>
<tr><td>SD02_RF19APU_ATEST</td><td align="center">176(0xB0)</td><td> L1 </td><td width="100">0xF,
</td></tr>
<tr><td>SD02_RF19APU_DTEST</td><td align="center">177(0xB1)</td><td> L1 </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_RF19APU_PA2_COMP</td><td align="center">178(0xB2)</td><td> L1 </td><td width="100">0x3C,
</td></tr>
<tr><td>SD02_RF19APU_PA_ON</td><td align="center">179(0xB3)</td><td> L1 </td><td width="100">0x33,
</td></tr>
<tr><td>SD02_RF19APU_GAIN</td><td align="center">180(0xB4)</td><td> L1 </td><td width="100">0x0,
</td></tr>
<tr><td>SD02_RF19APU_MLSE</td><td align="center">181(0xB5)</td><td>L1 Bit Meaning 0 MLSE active
1 Dynamic MLSE active
2 MLSE CLK Polarity
3 MLSE deviation 0 <20> 288, 1 <20> 360
4 4 bit field giving MLSE delay in bits
5 If set to 0 <20> delay defaults to 9
6 <20>
7 <20>
</td><td width="100">0x1,
</td></tr>
<tr><td>SD02_RF19APU_KCALOVR</td><td align="center">182(0xB6)</td><td>L1 </td><td width="100">0x0,
</td></tr>
<tr><td>SD02_RF19APU_KCALOVR_LINEAR</td><td align="center">183(0xB7)</td><td>L1 Linear KCAL correction, 4 LSB A factor (KCALOVR_A) 4 MSB B factor (KCALOVR_B)</td><td width="100">0x88,
</td></tr>
<tr><td>SD02_RF19APU_BEACON_LP</td><td align="center">184(0xB8)</td><td>L1 Bit0 - Enable. Bit1-7 - Value of power when HS on cradle</td><td width="100">0xC1,
</td></tr>
<tr><td>SD02_RF19APU_GENERIC_ADD1[2]</td><td align="center">185(0xB9)</td><td> L2 </td><td width="100">0x00,0x00,
</td></tr>
<tr><td>SD02_RF19APU_GENERIC_ADD2[2]</td><td align="center">187(0xBB)</td><td> L2 </td><td width="100">0x00,0x00,
</td></tr>
<tr><td>SD02_RF19APU_GENERIC_ADD3[2]</td><td align="center">189(0xBD)</td><td> L2 </td><td width="100">0x00,0x00,
</td></tr>
<tr><td>SD02_RF19APU_GENERIC_ADD4[2]</td><td align="center">191(0xBF)</td><td> L2 </td><td width="100">0x00,0x00,
</td></tr>
<tr><td>SD02_RF19APU_GENERIC_CONTROL</td><td align="center">193(0xC1)</td><td>L1 bit [1:0] = control of SD02_RF19APU_GENERIC_ADD1
bit [3:2] = control of SD02_RF19APU_GENERIC_ADD2
bit [5:4] = control of
SD02_RF19APU_GENERIC_ADD3
bit [7:6] = control of SD02_RF19APU_GENERIC_ADD4
for each of the above:
if 0 (or 3): use the appropriate register as RF indirect mapping 0~256
if 1: use the appropriate register as direct space mapping 0 <20> 104
if 2: use the appropriate register as analog indirect space mapping 0 <20> 69
</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_FNR_N_LOW[2]</td><td align="center">194(0xC2)</td><td> L2 FNR SD02_FNR_N_LOW </td><td width="100">0x00,0x01,
</td></tr>
<tr><td>SD02_FNR_N_HIGH[2]</td><td align="center">196(0xC4)</td><td> L2 FNR SD02_FNR_N_HIGH </td><td width="100">0x40,0x01,
</td></tr>
<tr><td>SD02_FNR_NR_LIMIT[2]</td><td align="center">198(0xC6)</td><td> L2 FNR SD02_FNR_NR_LIMIT </td><td width="100">0x00,0x28,
</td></tr>
<tr><td>SD02_FNR_spDETCC[2]</td><td align="center">200(0xC8)</td><td> L2 FNR SD02_FNR_spDETCC </td><td width="100">0x00,0x02,
</td></tr>
<tr><td>SD02_FNR_Ton_detect[2]</td><td align="center">202(0xCA)</td><td> L2 FNR SD02_FNR_Ton_detect </td><td width="100">0x00,0x06,
</td></tr>
<tr><td>SD02_CR_OPTIONS</td><td align="center">204(0xCC)</td><td> L1 - Bit 0-1: Codec preferred (0-G726,1-G727,other reserved)
Bit 2: Action in Normal - unused
Bit 3: Action in Protected - unused
Bit 4: Opt G726 - activate improved - unused
Bit 5-6: Mode (0-Auto,1-Normal,2-Protected,3-Reserved) - not relevant in FT
Bit 7: Enable/Disable.
</td><td width="100">0x81,
</td></tr>
<tr><td>SD02_CR_SB_PATT</td><td align="center">205(0xCD)</td><td>L1 - Padding option for SB (i.e. nibble) either 4 bits or 8 bitsfor WB codecs </td><td width="100">0xFF,
</td></tr>
<tr><td>SD02_CR_FB_PATT</td><td align="center">206(0xCE)</td><td>L1 - Padding option for FB (i.e. all frame) either 4 bits or 8 bits for WB codecs </td><td width="100">0xFF,
</td></tr>
<tr><td>SD02_CR_START_MUTE_NR</td><td align="center">207(0xCF)</td><td>L1 - Number of errors to start full frame mute </td><td width="100">0x1E,
</td></tr>
<tr><td>SD02_CR_STOP_MUTE_NR</td><td align="center">208(0xD0)</td><td>L1 - Number of errors to stop full frame mute </td><td width="100">0x0F,
</td></tr>
<tr><td>SD02_CR_DECAY[2]</td><td align="center">209(0xD1)</td><td>L2 - First Byte - Decay MSB, Second byte : Decay LSB (in Q12) </td><td width="100">0x0F,
0xD4,
</td></tr>
<tr><td>SD02_CR_SATURATION</td><td align="center">211(0xD3)</td><td>L1 - Saturation value for FB filter </td><td width="100">0x28,
</td></tr>
<tr><td>SD02_CR_MSG</td><td align="center">212(0xD4)</td><td>L1 - Nr of Frames before msg mute/unmute </td><td width="100">0x1E,
</td></tr>
<tr><td>SD02_CONTROL</td><td align="center">213(0xD5)</td><td>L1 - Enable Clock Divider Selection</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_CLK_DIV[3]</td><td align="center">214(0xD6)</td><td>L3 - Clock Divider Setting </td><td width="100">0x00,0x00,0x00,
</td></tr>
<tr><td>SD02_CLK_SEL[2]</td><td align="center">217(0xD9)</td><td>L2 - Clock Selection </td><td width="100">0x00,0x00,
</td></tr>
<tr><td>SD02_AHB_PLL_SETTING_LOW[4]</td><td align="center">219(0xDB)</td><td>L4 - AHB PLL LOW Setting </td><td width="100">0x00,0x00,0x00,0x00,
</td></tr>
<tr><td>SD02_AHB_PLL_SETTING_MED[4]</td><td align="center">223(0xDF)</td><td>L4 - AHB PLL MED Setting </td><td width="100">0x00,0x00,0x00,0x00,
</td></tr>
<tr><td>SD02_AHB_PLL_SETTING_HIGH[4]</td><td align="center">227(0xE3)</td><td>L4 - AHB PLL HIGH Setting </td><td width="100">0x00,0x00,0x00,0x00,
</td></tr>
<tr><td>SD02_CP_FEATURES</td><td align="center">231(0xE7)</td><td>L1 - CP features Setting </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_CP_CONFIGURATION_OFFSET</td><td align="center">232(0xE8)</td><td>Bit 0: If set, SYPO alignment is offset by 1 slot,Bit 2: Dummy Merge to first traffic</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_CP_ULE_FLAGS</td><td align="center">233(0xE9)</td><td> L1 - Phase 1: 0x2, Phase 1.2: 0x6 ,Phase 2: 0xA, Phase 3: 0xE</td><td width="100">0x0A,
</td></tr>
<tr><td>SD02_DUMMY_BEARER_THRES_ADAPT_THRESH</td><td align="center">234(0xEA)</td><td></td><td width="100">0x58,
</td></tr>
<tr><td>SD02_RF19APUZ_EXT_LNA</td><td align="center">235(0xEB)</td><td>L1 - CP features Setting </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_RFIC_SELECTION</td><td align="center">236(0xEC)</td><td>L1 - CP features Setting </td><td width="100">0x01,
</td></tr>
<tr><td>SD02_UNUSED_210</td><td align="center">237(0xED)</td><td> L1 </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_PHS_SCAN_PARAM</td><td align="center">238(0xEE)</td><td> JDECT parameters: RSSI threshold for PHS detection. PHS scan every 10 seconds. </td><td width="100">0x0C,
</td></tr>
<tr><td>SD02_JDECT_LEVEL1_M82</td><td align="center">239(0xEF)</td><td> minus 82 dBm RSSI threshold for Japan regulation </td><td width="100">0x0B,
</td></tr>
<tr><td>SD02_JDECT_LEVEL2_M62</td><td align="center">240(0xF0)</td><td> minus 62 dBm RSSI threshold for Japan regulation </td><td width="100">0x11,
</td></tr>
<tr><td>SD02_JDECT_CERTAINTY_PARAM</td><td align="center">241(0xF1)</td><td> PHS detection Certainty parameters.(upper nibble reduces miss detection. lower nibble reduces false alaram) </td><td width="100">0x55,
</td></tr>
<tr><td>SD02_ULE_DUMMY_TRAF_THRESH</td><td align="center">242(0xF2)</td><td>L1 - Threshold for dummy traffic bearer merge</td><td width="100">0x03,
</td></tr>
<tr><td>SD02_PWR_ADC_INPUT</td><td align="center">243(0xF3)</td><td> L1 Input source of the Auxiliary A/D </td><td width="100">0x0E,
</td></tr>
<tr><td>SD02_PWR_POR_INPUT</td><td align="center">244(0xF4)</td><td> L1 Input source of the POR A/D </td><td width="100">0x16,
</td></tr>
<tr><td>SD02_RES_FACTOR</td><td align="center">245(0xF5)</td><td> L1 Resistor Factor on AUX input </td><td width="100">0x02,
</td></tr>
<tr><td>SD02_UART_DELAY_TIMER</td><td align="center">246(0xF6)</td><td>L1 - Selects the timer in 10 msec to delay UART</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_V21_VOL_HIGH</td><td align="center">247(0xF7)</td><td>L2 SD02_V21_VOL_HIGH </td><td width="100">0x01,
</td></tr>
<tr><td>SD02_V21_VOL_LOW</td><td align="center">248(0xF8)</td><td>L2 SD02_V21_VOL_LOW </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_PRODUCTION_TEST_RSSI_THRESH_DOWNLINK</td><td align="center">249(0xF9)</td><td>L1 SD02_PRODUCTION_TEST_RSSI_THRESH_DOWNLINK </td><td width="100">0x88,
</td></tr>
<tr><td>SD02_PRODUCTION_TEST_RSSI_THRESH_UPLINK</td><td align="center">250(0xFA)</td><td>L1 SD02_PRODUCTION_TEST_RSSI_THRESH_UPLINK </td><td width="100">0x88,
</td></tr>
<tr><td>SD02_FIXED_CARRIER_OFFSET</td><td align="center">251(0xFB)</td><td>L1 SD02_FIXED_CARRIER_OFFSET - Bit(0..5) : Carrier to use ,
Bit(6) : Enable fixed PM carrier ,
Bit(7) : Seta fixed carrier [bit(0..4)] in RF file. When using this option you MUST set PP+FP with the same carrier.
</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_TEMP_MEASURE_TIME</td><td align="center">252(0xFC)</td><td>L1 SD02_TEMP_MEASURE_TIME. bit 0-1 temperature measurement period for VCAL. 2 bits for 4 values 0,1,2,3 == 5,1,2,3 minutes. default value == 0
</td><td width="100">0x00,
</td></tr>
<tr><td>FNCA_DRV_UNUSED</td><td align="center">253(0xFD)</td><td> <----------- unused </td><td width="100">0xCC,</td></tr>
<tr><td>SD02_SMS_FW_VERSION[6]</td><td align="center">253(0xFD)</td><td> L6 </td><td width="100">0xCC,0x21,0x10,0x20,0x03,0xCC,
</td></tr>
<tr><td>SD02_SMS_SMTE_RESOURCES</td><td align="center">259(0x103)</td><td> L1 </td><td width="100">0x11,
</td></tr>
<tr><td>SD02_SMS_BREAK_SMS_CALL</td><td align="center">260(0x104)</td><td> L1 </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_SMS_SUBADDR_MASK[2]</td><td align="center">261(0x105)</td><td> L2 </td><td width="100">0x00,0x03,
</td></tr>
<tr><td>SD02_SMS_MIN_BYTES_FREE</td><td align="center">263(0x107)</td><td> L1 </td><td width="100">0x28,
</td></tr>
<tr><td>SD02_SMS_SMSC_OFFHOOK</td><td align="center">264(0x108)</td><td> L1 </td><td width="100">0x14,
</td></tr>
<tr><td>SD02_SMS_SMSC_ESTABLISH</td><td align="center">265(0x109)</td><td> L1 </td><td width="100">0x14,
</td></tr>
<tr><td>SD02_SMS_HACK_CODE</td><td align="center">266(0x10A)</td><td> L1 </td><td width="100">0x10,
</td></tr>
<tr><td>SD02_SMS_TIMER_T2[2]</td><td align="center">267(0x10B)</td><td> L2 </td><td width="100">0x02,0xF8,
</td></tr>
<tr><td>SD02_SMS_TIMER_T3[2]</td><td align="center">269(0x10D)</td><td> L2 </td><td width="100">0x02,0xEE,
</td></tr>
<tr><td>SD02_SMS_TIMER_T6[2]</td><td align="center">271(0x10F)</td><td> L2 </td><td width="100">0x00,0x14,
</td></tr>
<tr><td>SD02_SMS_TIMER_T10</td><td align="center">273(0x111)</td><td> L1 </td><td width="100">0x0A,
</td></tr>
<tr><td>SD02_SMS_TIMER_T10BIS</td><td align="center">274(0x112)</td><td> L1 </td><td width="100">0x35,
</td></tr>
<tr><td>SD02_SMS_FSK_FREQ0[2]</td><td align="center">275(0x113)</td><td> L2 </td><td width="100">0x00,0x15,
</td></tr>
<tr><td>SD02_SMS_FSK_FREQ1[2]</td><td align="center">277(0x115)</td><td> L2 </td><td width="100">0x00,0x0D,
</td></tr>
<tr><td>SD02_SMS_FSK_CIT_VOL[2]</td><td align="center">279(0x117)</td><td> L2 </td><td width="100">0x13,0x00,
</td></tr>
<tr><td>SD02_SMS_FSK_TIMER_PREAM</td><td align="center">281(0x119)</td><td> L1 </td><td width="100">0x0D,
</td></tr>
<tr><td>SD02_SMS_PROT_RESP_TYPE</td><td align="center">282(0x11A)</td><td> L1 </td><td width="100">0x80,
</td></tr>
<tr><td>SD02_SMS_PROT_BEARER_CAP[20]</td><td align="center">283(0x11B)</td><td> L20 </td><td width="100">0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
</td></tr>
<tr><td>SD02_SMS_PROT(k)[42]</td><td align="center">303(0x12F)</td><td> 21 * Nr_of_Protocols. Where 21 is the length of protocol. </td><td width="100">0x80,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,
</td></tr>
<tr><td>SD02_SMS_SMSC_SETTINGS</td><td align="center">345(0x159)</td><td> L1 </td><td width="100">0x12,
</td></tr>
<tr><td>SD02_SMS_SMSC_VALIDITY_TIME</td><td align="center">346(0x15A)</td><td> L1 </td><td width="100">0x03,
</td></tr>
<tr><td>SD02_SMS_SMSC_EMAIL_SEP</td><td align="center">347(0x15B)</td><td> L1 Email Separator</td><td width="100">0x20,
</td></tr>
<tr><td>SD02_SMS_SMSC_OPERATOR</td><td align="center">348(0x15C)</td><td> L1 </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_SMS_SMSC_UNUSED[2]</td><td align="center">349(0x15D)</td><td> L2 </td><td width="100">0x00,0x00,
</td></tr>
<tr><td>SD02_SMS_SMSC_INC_NUM[8]</td><td align="center">351(0x15F)</td><td> L8 </td><td width="100">0x04,0x21,0x1F,0xFF,
0xFF,0xFF,0xFF,0xFF,
</td></tr>
<tr><td>SD02_SMS_SMSC_OUT_NUM[8]</td><td align="center">359(0x167)</td><td> L8 </td><td width="100">0x42,0x11,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
</td></tr>
<tr><td>SD02_SMS_SMSC_EMAIL_NUM[8]</td><td align="center">367(0x16F)</td><td> L8 </td><td width="100">0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
</td></tr>
<tr><td>SD02_SMS_SMSC(i)[90]</td><td align="center">375(0x177)</td><td> SMSC area end SMSC * 30. Where 30 is the length of data for one SMSC </td><td width="100">0x01,
0x03,
0x20,
0x00,
0x00,0x00,
0x01,0x93,0x01,0x0F,
0xFF,0xFF,0xFF,0xFF,
0x01,0x93,0x01,0x0F,
0xFF,0xFF,0xFF,0xFF,
0x08,0x00,0xF0,0xFF,
0xFF,0xFF,0xFF,0xFF,
0x01,
0x03,
0x20,
0x00,
0x00,0x00,
0x20,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0x20,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0x01,
0x03,
0x20,
0x05,
0x00,0x00,
0x01,0x90,0x01,0x50,
0x4F,0xFF,0xFF,0xFF,
0x01,0x90,0x01,0x50,
0x4F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,
</td></tr>
<tr><td>SD02_ACV10_VOLUME[2]</td><td align="center">465(0x1D1)</td><td> L2 ACV10 Volume Control for SPK 2 bytes </td><td width="100">0x08,0x00,
</td></tr>
<tr><td>FNCA_SMS_UNUSED[2]</td><td align="center">467(0x1D3)</td><td> <----------- unused </td><td width="100"></td></tr>
<tr><td>SD02_CALL_BARRING[30]</td><td align="center">469(0x1D5)</td><td> L30 call barring data </td><td width="100"></td></tr>
<tr><td>SD02_MASTER_PIN[4]</td><td align="center">499(0x1F3)</td><td> L4 master mode pin code, reset value e.g. FF FF 15 90 </td><td width="100">0xFF,0xFF,0x15,0x90,
</td></tr>
<tr><td>SD02_AC[4]</td><td align="center">503(0x1F7)</td><td> L4 authentication code, e.g. FF FF 15 90</td><td width="100">0xFF,0xFF,0x00,0x00,
</td></tr>
<tr><td>SD02_RING_ON_OFF</td><td align="center">507(0x1FB)</td><td> L1 ring on/off enabled </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_ULE_AC[4]</td><td align="center">508(0x1FC)</td><td> L4 ULE authentication code, e.g. FF FF 00 00</td><td width="100">0xFF,0xFF,0x00,0x00,
</td></tr>
<tr><td>SD02_EEPROM0_END</td><td align="center">512(0x200)</td><td></td><td width="100"></td></tr>
<tr><td>SD02_BOOT_DELAY</td><td align="center">513(0x201)</td><td> L1 Boot up delay in seconds </td><td width="100"></td></tr>
<tr><td>SD02_HAN_START_FILE_0[8514]</td><td align="center">514(0x202)</td><td><a href="bhanEepromDefaults.html">HAN EEPROM Block</a> </td><td width="100"></td></tr>
<tr><td>SD02_HAN_END_FILE_0</td><td align="center">9028(0x2344)</td><td> HAN EEPROM Block End</td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_IPUI[5]</td><td align="center">9029(0x2345)</td><td> L5 Data: IPUI </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_TPUI[3]</td><td align="center">9034(0x234A)</td><td> L3 Data: TPUI </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_DCK[16]</td><td align="center">9037(0x234D)</td><td> L16 Data: DCK </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_UAK[16]</td><td align="center">9053(0x235D)</td><td> L16 Data: UAK </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_AC[4]</td><td align="center">9069(0x236D)</td><td> L4 Data: authentication code AC </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_UAK_AUTH</td><td align="center">9073(0x2371)</td><td> L1 Data: UAK authorization </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_STATUS</td><td align="center">9074(0x2372)</td><td> L1 Data: status </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_HANDSET_NR</td><td align="center">9075(0x2373)</td><td> L1 Data: handset number </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_DCK_ASSIGNED[2]</td><td align="center">9076(0x2374)</td><td> L1 Data: DCK assigned </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_FEATURES</td><td align="center">9078(0x2376)</td><td> L1 CP Features </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_DEFCK[16]</td><td align="center">9079(0x2377)</td><td> L16 Data: Default Cipher Key </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_DEFCK_ASSIGNED</td><td align="center">9095(0x2387)</td><td> L1 Data: DefCK assigned </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_CCM_CK[16]</td><td align="center">9096(0x2388)</td><td> L16 Data: CCM Key for ULE </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_DLC_OPERATING_MODE</td><td align="center">9112(0x2398)</td><td> L1 ULE DLC operating mode </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_HL_FEATURES</td><td align="center">9113(0x2399)</td><td> L1 ULE HL features </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_RESERVED[4]</td><td align="center">9114(0x239A)</td><td> L4 Reserved for future use </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_NEXT_RX_SEQUENCE_NUMBER[3]</td><td align="center">9118(0x239E)</td><td> L3 RX Sequence number </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_NEXT_TX_SEQUENCE_NUMBER[3]</td><td align="center">9121(0x23A1)</td><td> L3 TX Sequence number </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_OVER_A_FIELD_NEXT_RX_SEQUENCE_NUMBER[3]</td><td align="center">9124(0x23A4)</td><td> L3 RX Sequence number </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_OVER_A_FIELD_NEXT_TX_SEQUENCE_NUMBER</td><td align="center">9127(0x23A7)</td><td> L3 TX Sequence number </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_LEN[13978]</td><td align="center">101(0x65)</td><td> End of first subscribtion </td><td width="100"></td></tr>
<tr><td>SD02_ULE_SUB_UNUSED[5]</td><td align="center">14079(0x36FF)</td><td> <----------- unused </td><td width="100"></td></tr>
<tr><td>SD02_MD5_SIGNATURE[16]</td><td align="center">14084(0x3704)</td><td> L16 16 bytes of MD5 signature</td><td width="100"></td></tr>
<tr><td>SD02_MD5_END</td><td align="center">14100(0x3714)</td><td> L0</td><td width="100"></td></tr>
<tr><td>SD02_MD5_UNUSED</td><td align="center">14093(0x370D)</td><td> <----------- unused </td><td width="100"></td></tr>
<tr><td>FNCA_MMI_UNUSED[7]</td><td align="center">14093(0x370D)</td><td> <----------- unused </td><td width="100"></td></tr>
<tr><td>SD02_SUB_LAL</td><td align="center">14100(0x3714)</td><td> L1 </td><td width="100">0x24,
</td></tr>
<tr><td>SD02_SUB_Y</td><td align="center">14101(0x3715)</td><td> L1 </td><td width="100">0x24,
</td></tr>
<tr><td>SD02_DSP_CID_MARK_MODE</td><td align="center">14102(0x3716)</td><td> L1 DSP CID start state for mark mode - upper byte (Bits 8-15) </td><td width="100">0x40,
</td></tr>
<tr><td>SD02_DSP_CID_SEIZURE_MODE</td><td align="center">14103(0x3717)</td><td> L1 DSP CID start state for seizure mode - upper byte (Bits 8-15) </td><td width="100">0x40,
</td></tr>
<tr><td>SD02_DSP_THP2_KI[2]</td><td align="center">14104(0x3718)</td><td> L2 DSP THP2 - ki - input scaling factor - Currently unused </td><td width="100">0x10,
0x00,
</td></tr>
<tr><td>SD02_DSP_TXV[2]</td><td align="center">14106(0x371A)</td><td> L2 AUDIO TX volume control </td><td width="100">0x23,
0xBC,
</td></tr>
<tr><td>SD02_DSP_RXV[2]</td><td align="center">14108(0x371C)</td><td> L2 AUDIO RX volume control </td><td width="100">0x10,
0x00,
</td></tr>
<tr><td>SD02_DSP_RLP[2]</td><td align="center">14110(0x371E)</td><td> L2 AUDIO RLP volume control </td><td width="100">0x20,
0x00,
</td></tr>
<tr><td>SD02_AFE_AFELGC1</td><td align="center">14112(0x3720)</td><td> L1 AFE gains </td><td width="100">0x23,
</td></tr>
<tr><td>SD02_AFE_AFEMSGC1_NORMAL</td><td align="center">14113(0x3721)</td><td> L1 AFE gains normal mode </td><td width="100">0x32,
</td></tr>
<tr><td>SD02_MIN_RING_ON</td><td align="center">14114(0x3722)</td><td> min. DAEV_RING_ON </td><td width="100">2,
</td></tr>
<tr><td>SD02_MIN_RING_OFF</td><td align="center">14115(0x3723)</td><td> min. DAEV_RING_OFF </td><td width="100">3,
</td></tr>
<tr><td>SD02_MIN_DTMF_ON</td><td align="center">14116(0x3724)</td><td> min. DAEV_DTMF_ON </td><td width="100">2,
</td></tr>
<tr><td>SD02_MIN_DTMF_OFF</td><td align="center">14117(0x3725)</td><td> min. DAEV_DTMF_OFF </td><td width="100">3,
</td></tr>
<tr><td>SD02_MIN_CPDS_ON</td><td align="center">14118(0x3726)</td><td> min. DAEV_CPDS_ON </td><td width="100">2,
</td></tr>
<tr><td>SD02_MIN_CPDS_OFF</td><td align="center">14119(0x3727)</td><td> min. DAEV_CPDS_OFF </td><td width="100">2,
</td></tr>
<tr><td>SD02_MIN_CPDB_ON</td><td align="center">14120(0x3728)</td><td> min. DAEV_CPDB_ON </td><td width="100">4,
</td></tr>
<tr><td>SD02_MIN_CPDB_OFF</td><td align="center">14121(0x3729)</td><td> min. DAEV_CPDB_OFF </td><td width="100">4,
</td></tr>
<tr><td>SD02_MIN_FXD1_ON</td><td align="center">14122(0x372A)</td><td> min. DAEV_FXD1_ON </td><td width="100">3,
</td></tr>
<tr><td>SD02_MIN_FXD1_OFF</td><td align="center">14123(0x372B)</td><td> min. DAEV_FXD1_OFF </td><td width="100">1,
</td></tr>
<tr><td>SD02_MIN_FXD2_ON</td><td align="center">14124(0x372C)</td><td> min. DAEV_FXD2_ON </td><td width="100">3,
</td></tr>
<tr><td>SD02_MIN_FXD2_OFF</td><td align="center">14125(0x372D)</td><td> min. DAEV_FXD2_OFF </td><td width="100">1,
</td></tr>
<tr><td>SD02_MIN_GTD1_ON</td><td align="center">14126(0x372E)</td><td> min. DAEV_GTD1_ON </td><td width="100">3,
</td></tr>
<tr><td>SD02_MIN_GTD1_OFF</td><td align="center">14127(0x372F)</td><td> min. DAEV_GTD1_OFF </td><td width="100">1,
</td></tr>
<tr><td>SD02_MIN_CAS_ON</td><td align="center">14128(0x3730)</td><td> min. DAEV_CAS_ON </td><td width="100">2,
</td></tr>
<tr><td>SD02_MIN_CAS_OFF</td><td align="center">14129(0x3731)</td><td> min. DAEV_CAS_OFF </td><td width="100">3,
</td></tr>
<tr><td>SD02_MIN_CAS_REQUIRED</td><td align="center">14130(0x3732)</td><td> min. DAEV_CAS_REQUIRED </td><td width="100">0x60,
</td></tr>
<tr><td>SD02_DTMF_ON</td><td align="center">14131(0x3733)</td><td> min. DTMF tone on duration </td><td width="100">40,
</td></tr>
<tr><td>SD02_DTMF_OFF</td><td align="center">14132(0x3734)</td><td> min. pause after DTMF </td><td width="100">40,
</td></tr>
<tr><td>SD02_DIAL_PAUSE</td><td align="center">14133(0x3735)</td><td> min. dial pause </td><td width="100">125,
</td></tr>
<tr><td>SD02_DTMF_VOL_LOW</td><td align="center">14134(0x3736)</td><td> V6dB low DTMF frequency </td><td width="100">0x40,
</td></tr>
<tr><td>SD02_DTMF_VOL_LOW_HIGH</td><td align="center">14135(0x3737)</td><td> V6dB low DTMF frequency high </td><td width="100">0x24,
</td></tr>
<tr><td>SD02_DTMF_VOL_HIGH</td><td align="center">14136(0x3738)</td><td> V6dB high DTMF frequency </td><td width="100">0xB0,
</td></tr>
<tr><td>SD02_DTMF_VOL_HIGH_HIGH</td><td align="center">14137(0x3739)</td><td> V6dB high DTMF frequency high </td><td width="100">0x2D,
</td></tr>
<tr><td>SD02_PULSE_MAKE_LENGTH</td><td align="center">14138(0x373A)</td><td> L1 PSTN:dialPULSE </td><td width="100">40,
</td></tr>
<tr><td>SD02_PULSE_BREAK_LENGTH</td><td align="center">14139(0x373B)</td><td> L1 PSTN:dialPULSE </td><td width="100">60,
</td></tr>
<tr><td>SD02_PULSE_IDP_LENGTH</td><td align="center">14140(0x373C)</td><td> L1 PSTN:dialPULSE </td><td width="100">80,
</td></tr>
<tr><td>SD02_LCURRENT_CYCLE</td><td align="center">14141(0x373D)</td><td> L1 PSTN:PCA1070 </td><td width="100">50,
</td></tr>
<tr><td>SD02_LCURRENT_IDP</td><td align="center">14142(0x373E)</td><td> L1 PSTN:PCA1070 </td><td width="100">32,
</td></tr>
<tr><td>SD02_PAUSE_LENGTH</td><td align="center">14143(0x373F)</td><td> L1 PSTN/AUDIO:dial</td><td width="100">30,
</td></tr>
<tr><td>SD02_FLASH_LENGTH</td><td align="center">14144(0x3740)</td><td> L1 PSTN:dial </td><td width="100">10,
</td></tr>
<tr><td>SD02_EARTH_LENGTH</td><td align="center">14145(0x3741)</td><td> L1 PSTN:dial </td><td width="100">40,
</td></tr>
<tr><td>SD02_RING_MIN</td><td align="center">14146(0x3742)</td><td> L1 PSTN:ringer </td><td width="100">18,
</td></tr>
<tr><td>SD02_RING_MAX</td><td align="center">14147(0x3743)</td><td> L1 PSTN:ringer </td><td width="100">50,
</td></tr>
<tr><td>SD02_RON_DETECT</td><td align="center">14148(0x3744)</td><td> L1 PSTN:ringer </td><td width="100">9,
</td></tr>
<tr><td>SD02_RON_HOLD</td><td align="center">14149(0x3745)</td><td> L1 PSTN:ringer </td><td width="100">20,
</td></tr>
<tr><td>SD02_ROFF_DETECT</td><td align="center">14150(0x3746)</td><td> L1 PSTN:ringer </td><td width="100">11,
</td></tr>
<tr><td>SD02_ROFF_HOLD</td><td align="center">14151(0x3747)</td><td> L1 PSTN:ringer </td><td width="100">25,
</td></tr>
<tr><td>SD02_LIF_CURR_LO</td><td align="center">14152(0x3748)</td><td> L1 PSTN:l.current </td><td width="100">0,
</td></tr>
<tr><td>SD02_LIF_CURR_HI</td><td align="center">14153(0x3749)</td><td> L1 +1 </td><td width="100">0xFF,
</td></tr>
<tr><td>SD02_WETTING_TIME</td><td align="center">14154(0x374A)</td><td> L1 Wetting Pulse </td><td width="100">0x01,
</td></tr>
<tr><td>SD02_DTMF_D_TIME</td><td align="center">14155(0x374B)</td><td> L1 DTMF-D for CAS </td><td width="100">0x23,
</td></tr>
<tr><td>SD02_STUTTER_CYCLES</td><td align="center">14156(0x374C)</td><td> L1 # of Stutter </td><td width="100">0x0A,
</td></tr>
<tr><td>SD02_CID_DET_ENBL_TIME</td><td align="center">14157(0x374D)</td><td> L1 CID detection 100ms steps </td><td width="100">38,
</td></tr>
<tr><td>SD02_FSK_START_TIME</td><td align="center">14158(0x374E)</td><td> L1 CID-2 detection </td><td width="100">0xE0,
</td></tr>
<tr><td>SD02_FSK_OFFHOOK_TIME[2]</td><td align="center">14159(0x374F)</td><td> L2 CID-2 detection </td><td width="100">0xAD,
0x03,
</td></tr>
<tr><td>SD02_AFE_AFEMSGC1_HF</td><td align="center">14161(0x3751)</td><td> L1 AFE gains for Handsfree </td><td width="100">0x32,
</td></tr>
<tr><td>SD02_AFE_AFEMSGC2</td><td align="center">14162(0x3752)</td><td> L1 AFE gains </td><td width="100">0x51,
</td></tr>
<tr><td>SD02_EAR_VOL_TAB[10]</td><td align="center">14163(0x3753)</td><td> L10 10 volume values for polyphonic ringing (increasing order)</td><td width="100">0x02,0x03,0x04,0x06,0x08,
0x09,0x0A,0x0B,0x0c,0x0d,
</td></tr>
<tr><td>SD02_RVBC1C_VAL</td><td align="center">14173(0x375D)</td><td> L1 Codec 1 (In base Spk) control </td><td width="100">0xC0,
</td></tr>
<tr><td>SD02_RVBC1G_VAL</td><td align="center">14174(0x375E)</td><td> L1 Codec 1 (In base Spk) gain </td><td width="100">0x4F,
</td></tr>
<tr><td>SD02_RVBC1C_VAL_HF</td><td align="center">14175(0x375F)</td><td> L1 Codec 1 (In base Spk) control for HF</td><td width="100">0xC0,
</td></tr>
<tr><td>SD02_RVBC1G_VAL_HF</td><td align="center">14176(0x3760)</td><td> L1 Codec 1 (In base Spk) gain for HF</td><td width="100">0x4F,
</td></tr>
<tr><td>SD02_WBE_ENABLE</td><td align="center">14177(0x3761)</td><td> L1 WBE_FT Enable </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_RVDDC_FIX_ENABLE</td><td align="center">14178(0x3762)</td><td> L1 ENABLE/DISABLE Patch for RVDCDC HW bug</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_INBAND_TONE_SELECT</td><td align="center">14179(0x3763)</td><td> L1 Select country for inband tone </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_DRV_UNUSED</td><td align="center">14180(0x3764)</td><td> <----------- unused </td><td width="100">0xFF,</td></tr>
<tr><td>SD02_ALLOC_LINE1[2]</td><td align="center">14180(0x3764)</td><td>handset allocation (see Protocol Interface) bitwise per handset: 1 = handset allocated;
(0xFF 0xFF indicates Collective ringing) for
each of the next 3 lines</td><td width="100">0xFF,0xFF,
</td></tr>
<tr><td>SD02_ALLOC_LINE2[2]</td><td align="center">14182(0x3766)</td><td></td><td width="100">0xFF,0xFF,
</td></tr>
<tr><td>SD02_ALLOC_LINE3[2]</td><td align="center">14184(0x3768)</td><td></td><td width="100">0xFF,0xFF,
</td></tr>
<tr><td>SD02_HS_TYPE_CATIQ30</td><td align="center">14186(0x376A)</td><td> Tells HS is CatIQ30 capable implemented for Max 8 HS only </td><td width="100">0x0,
</td></tr>
<tr><td>SD02_WB_TYPE_HSNR[2]</td><td align="center">14187(0x376B)</td><td> PT WB capability storage Note:For CAT-IQ builds user should not modify this location</td><td width="100">0,0,
</td></tr>
<tr><td>SD02_WB_LINE_TYPE</td><td align="center">14189(0x376D)</td><td> FT Line TYPE storgare(2= G711WB, 1 = WB , 0 =NB) </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_WB_LINE_SUB_TYPE</td><td align="center">14190(0x376E)</td><td> FT WB Line Sub Type ( 0 = G722 WB, 1 = G711 WB) </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_DH_MIX_RATIO</td><td align="center">14191(0x376F)</td><td></td><td width="100">0xFF,
</td></tr>
<tr><td>SD02_NEMO_PTS[2]</td><td align="center">14192(0x3770)</td><td> Two Bytes are used</td><td width="100">0xFF,0xFF,
</td></tr>
<tr><td>SD02_SPK_SLOT_TYPE</td><td align="center">14194(0x3772)</td><td> Slot type for SPK phone</td><td width="100">0x02,
</td></tr>
<tr><td>SD02_MAX_NUM_ACT_CALLS_PT</td><td align="center">14195(0x3773)</td><td> Maximum nmber of active calls of 1 PT.</td><td width="100">0x03,
</td></tr>
<tr><td>SD02_NEMO_DISABLED</td><td align="center">14196(0x3774)</td><td> bit 7 is used for permanent NEMo disable </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_HS_TYPE_CATIQ20[2]</td><td align="center">14197(0x3775)</td><td> L2: Two bytes for CAT-iq 2.0 Handset </td><td width="100">0x00,
0x00,
</td></tr>
<tr><td>SD02_FP_CUSTOM_FEATURES</td><td align="center">14199(0x3777)</td><td> Bit-0: INL 0-enable/1-disable, Bit-1: 0-conf,trfr enable/1-conf,trfr disable</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_ENCRYPT_STATUS</td><td align="center">14200(0x3778)</td><td> L1: Encryption enable/disable</td><td width="100">0x01,
</td></tr>
<tr><td>SD02_MM_CAPABILITIES[10]</td><td align="center">14201(0x3779)</td><td> L10: MM Capabilities for each Handset.FTEEP_NUM_SUB/SD09_MAX_NUM_SUB is hard coded as 10 </td><td width="100">0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
0x00,0x00,
</td></tr>
<tr><td>SD02_ARBITRARY_TPUI[3]</td><td align="center">14211(0x3783)</td><td> L3 : 3 bytes to store arbitrary TPUI</td><td width="100">0x00,0x00,0x00,
</td></tr>
<tr><td>SD02_HS_TYPE_CATIQ21[2]</td><td align="center">14214(0x3786)</td><td> L2: Two bytes for CAT-iq 2.1 Handset </td><td width="100">0x00,0x00,
</td></tr>
<tr><td>SD02_INTERFERENCE_DETECTION_MEASUREMENT_INTERVAL</td><td align="center">14216(0x3788)</td><td> L1: Interference Detection Measurement Interval </td><td width="100">60,
</td></tr>
<tr><td>SD02_INTERFERENCE_DETECTION_NOISE_INTERVAL</td><td align="center">14217(0x3789)</td><td> L1: Interference Detection Noise Interval </td><td width="100">30,
</td></tr>
<tr><td>SD02_INTERFERENCE_DETECTION_CONFIG1</td><td align="center">14218(0x378A)</td><td> L1: Interference Detection config1, bit 0-7: Active Carriers Mask, carriers 1-8 </td><td width="100">0xFF,
</td></tr>
<tr><td>SD02_INTERFERENCE_DETECTION_CONFIG2</td><td align="center">14219(0x378B)</td><td> L1: Interference Detection config2, bit 0-1: Active Carriers Mask, carriers 9-10; bit7: 1-Enable/0-Disable Interference Detection alg.</td><td width="100">0x83,
</td></tr>
<tr><td>SD02_INTERFERENCE_DETECTION_TRAFFIC_SLOTS_IN_FRAME</td><td align="center">14220(0x378C)</td><td> L1: Interference Detection Traffic Slots In Frame </td><td width="100">0x03,
</td></tr>
<tr><td>SD02_INTERFERENCE_DETECTION_INTERFERENCE_LEVEL</td><td align="center">14221(0x378D)</td><td> L1: Interference Detection Interference Level </td><td width="100">0x98,
</td></tr>
<tr><td>SD02_NEMO_CONTROL</td><td align="center">14222(0x378E)</td><td> L1: MSB enables HM00_NEMO_DUMMY_USE_RSSI_FOR_IF_CHECK, others are for extending NEMO WA bearer time </td><td width="100">0x00,
</td></tr>
<tr><td>FCAC_HLP_END</td><td align="center">14223(0x378F)</td><td> </td><td width="100"></td></tr>
<tr><td>SD02_RINGER_EXPIRY</td><td align="center">14223(0x378F)</td><td> L1 FTMI:X line </td><td width="100">45,
</td></tr>
<tr><td>SD02_LINE_EXPIRY</td><td align="center">14224(0x3790)</td><td> L1 FTMI:release </td><td width="100">85,
</td></tr>
<tr><td>SD02_RINGER_MELODY</td><td align="center">14225(0x3791)</td><td> L1 FTMI:ringer </td><td width="100">9,
</td></tr>
<tr><td>SD02_RINGER_VOLUME</td><td align="center">14226(0x3792)</td><td> L1 FTMI:ringer </td><td width="100">3,
</td></tr>
<tr><td>SD02_DIAL_MODI</td><td align="center">14227(0x3793)</td><td> L1 FTMI:dtmf/reca</td><td width="100">0xD3,
</td></tr>
<tr><td>SD02_DLT_CTRL</td><td align="center">14228(0x3794)</td><td> L1 FTMI:dialTone </td><td width="100">0x3A,
</td></tr>
<tr><td>SD02_TONDET_SEL</td><td align="center">14229(0x3795)</td><td> L1 FTMI:ena/disa enable tone detection features: 0x80: DTAS
0x40: RPAS
0x41: RPASFR
0x20: MFCR</td><td width="100">0x80+0x41+0x20,
</td></tr>
<tr><td>SD02_LRMS_SUPPORT[2]</td><td align="center">14230(0x3796)</td><td> L2 FTMI:LRMS sup. 1 Bit per handset. 1 indicates LMRS support
of the according handset.</td><td width="100">0x00, 0x00,
</td></tr>
<tr><td>SD02_SMS1_PLUS_SUPPORT[2]</td><td align="center">14232(0x3798)</td><td> L2 FTMI:SMS1_PLUS sup. 1 Bit per handset. 1 indicates SMS1+ support
of the according handset.</td><td width="100">0x00, 0x00,
</td></tr>
<tr><td>SD02_COUNTRY_IDENTIFICATION</td><td align="center">14234(0x379A)</td><td> L1 FTMMS </td><td width="100">0x01,
</td></tr>
<tr><td>SD02_SMS_TP_MR</td><td align="center">14235(0x379B)</td><td> L1 FTMMS </td><td width="100">0xfd,
</td></tr>
<tr><td>SD02_DTAM_RING</td><td align="center">14236(0x379C)</td><td> DTAM: ringtones </td><td width="100">0x5,
</td></tr>
<tr><td>SD02_PREF_LINE[9]</td><td align="center">14237(0x379D)</td><td> L9 FTMI:ogo line, up to 9 </td><td width="100">0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,
</td></tr>
<tr><td>SD02_PRIOR_HS[30]</td><td align="center">14246(0x37A6)</td><td> L2 FTMI:inc line, up to 3 incoming prioritized HS line 1
ring count of prior. HS line 1
incoming prioritized HS line 2
ring count of prior. HS line 2
incoming prioritized HS line 3
ring count of prior. HS line 3</td><td width="100">0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
</td></tr>
<tr><td>SD02_BLINDCALL_TIM1</td><td align="center">14276(0x37C4)</td><td> Blind call transfer timeout 1 </td><td width="100">0x1E,
</td></tr>
<tr><td>SD02_BLINDCALL_TIM2</td><td align="center">14277(0x37C5)</td><td> Blind call transfer timeout 2 </td><td width="100">0x1E,
</td></tr>
<tr><td>SD02_PARKED_TIM</td><td align="center">14278(0x37C6)</td><td> Parked line timeout </td><td width="100">0x3c,
</td></tr>
<tr><td>SD02_OVERLAP_SEND_TIM</td><td align="center">14279(0x37C7)</td><td> Overlap sending timer </td><td width="100">0x4,
</td></tr>
<tr><td>SD02_DTAM_ENABLE</td><td align="center">14280(0x37C8)</td><td> DTAM: ON/OFF </td><td width="100">0x1,
</td></tr>
<tr><td>SD02_DTAM_ICM_CR</td><td align="center">14281(0x37C9)</td><td> DTAM: codRates ICM </td><td width="100">0xFF,
</td></tr>
<tr><td>SD02_DTAM_OGM_CR</td><td align="center">14282(0x37CA)</td><td> DTAM: codRates OGM </td><td width="100">0xFF,
</td></tr>
<tr><td>SD02_DTAM_PILL_CR</td><td align="center">14283(0x37CB)</td><td> DTAM: codRates Pill</td><td width="100">0xFF,
</td></tr>
<tr><td>SD02_EARVOL</td><td align="center">14284(0x37CC)</td><td> EAR Vol </td><td width="100">0x05,
</td></tr>
<tr><td>SD02_BS_CALL_SCREENING</td><td align="center">14285(0x37CD)</td><td> L1 Call Screening Enable/disable</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_EMC_COMPLIANT[2]</td><td align="center">14286(0x37CE)</td><td> L2 stores the compliant of PT's i.e. whether EMC is equal </td><td width="100">0x00, 0x00,
</td></tr>
<tr><td>SD02_LU10_RN_UPDATE</td><td align="center">14288(0x37D0)</td><td> L1 Enable/disable update RN=SN+1 </td><td width="100">0x05,
</td></tr>
<tr><td>SD02_MMI_DECT_SECURITY</td><td align="center">14289(0x37D1)</td><td> L1 DECT SECURITY LEVEL </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_CR_PREFERRED_CODEC</td><td align="center">14290(0x37D2)</td><td> L1 holds the preferred codec for CR </td><td width="100">0x01,
</td></tr>
<tr><td>SD02_PAD_OPT_NORMAL</td><td align="center">14291(0x37D3)</td><td> L1 holds the Normal action for CR: 0- nothing 1 - Mute</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_PAD_OPT_PROTECTED</td><td align="center">14292(0x37D4)</td><td> L1 holds the Protected action for CR: 0- nothing 1 - Mute</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_CR_ACTION_ADPCM</td><td align="center">14293(0x37D5)</td><td> L1 holds the ADPCM action for 0- nothing 1 - Improved</td><td width="100">0x00,
</td></tr>
<tr><td>SD02_CLEARANGE_ENABLE</td><td align="center">14294(0x37D6)</td><td> L1 Enable CR feature </td><td width="100">0x01,
</td></tr>
<tr><td>SD02_REPEATER_TYPE</td><td align="center">14295(0x37D7)</td><td> L1 Hold the Repeater Type GAP,CAT-iq.NEMO </td><td width="100">0x00,
</td></tr>
<tr><td>SD02_ULE_MULTICAST_ENC_PARAMS[53]</td><td align="center">14296(0x37D8)</td><td> L48 ULE Multicast enc. parameter: 2x (CCM key, sequence number, Multicast ID) </td><td width="100">0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,
0xFF,
0x0,
0x0,
0x0, 0x00,
</td></tr>
<tr><td>SD02_DECT_SETTINGS_OFFSET</td><td align="center">14349(0x380D)</td><td> DECT settings List Offset </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_CLOCK_MASTER</td><td align="center">14349(0x380D)</td><td> L1 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_BASE_RESET</td><td align="center">14350(0x380E)</td><td> L1 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_FW_VERSION[38]</td><td align="center">14351(0x380F)</td><td> L8 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_EEP_VERSION[38]</td><td align="center">14389(0x3835)</td><td> L8 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_HW_VERSION[38]</td><td align="center">14427(0x385B)</td><td> L8 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_NEW_PIN[4]</td><td align="center">14465(0x3881)</td><td> L4 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_EMISSION_MODE</td><td align="center">14469(0x3885)</td><td> L1 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_IP_TYPE</td><td align="center">14470(0x3886)</td><td> L1 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_IP_VALUE[17]</td><td align="center">14471(0x3887)</td><td> L17 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_IP_SUBNET_MASK[17]</td><td align="center">14488(0x3898)</td><td> L17 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_IP_GATEWAY[17]</td><td align="center">14505(0x38A9)</td><td> L17 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_IP_DNS_SERVER[17]</td><td align="center">14522(0x38BA)</td><td> L17 </td><td width="100"></td></tr>
<tr><td>SD02_DSSL_FP_POWER_LEVEL</td><td align="center">14539(0x38CB)</td><td> L1 </td><td width="100"></td></tr>
<tr><td>SD02_LINE_SETTINGS_OFFSET[75]</td><td align="center">14540(0x38CC)</td><td> Line Settings List Offset </td><td width="100"></td></tr>
<tr><td>SD02_INL_DATA_OFFSET[375]</td><td align="center">14615(0x3917)</td><td> Internal Name List Offset </td><td width="100"></td></tr>
<tr><td>SD02_SUPTD_LIST_OFFSET[22]</td><td align="center">14990(0x3A8E)</td><td> Supported List Offset</td><td width="100"></td></tr>
<tr><td>SD02_BSNAME_LEN</td><td align="center">15012(0x3AA4)</td><td> L1 </td><td width="100"></td></tr>
<tr><td>SD02_BSNAME[19]</td><td align="center">15013(0x3AA5)</td><td> L13 Bytes of data MAX </td><td width="100"></td></tr>
<tr><td>SD02_SUB_IPUI[5]</td><td align="center">15032(0x3AB8)</td><td> L5 Data: IPUI </td><td width="100"></td></tr>
<tr><td>SD02_SUB_TPUI[3]</td><td align="center">15037(0x3ABD)</td><td> L3 Data: TPUI </td><td width="100"></td></tr>
<tr><td>SD02_SUB_DCK[16]</td><td align="center">15040(0x3AC0)</td><td> L16 Data: DCK </td><td width="100"></td></tr>
<tr><td>SD02_SUB_UAK[16]</td><td align="center">15056(0x3AD0)</td><td> L16 Data: UAK </td><td width="100"></td></tr>
<tr><td>SD02_SUB_AC[4]</td><td align="center">15072(0x3AE0)</td><td> L4 Data: authentication code AC </td><td width="100"></td></tr>
<tr><td>SD02_SUB_UAK_AUTH</td><td align="center">15076(0x3AE4)</td><td> L1 Data: UAK authorization </td><td width="100"></td></tr>
<tr><td>SD02_SUB_STATUS</td><td align="center">15077(0x3AE5)</td><td> L1 Data: status </td><td width="100"></td></tr>
<tr><td>SD02_SUB_HANDSET_NR</td><td align="center">15078(0x3AE6)</td><td> L1 Data: handset number </td><td width="100"></td></tr>
<tr><td>SD02_SUB_DCK_ASSIGNED</td><td align="center">15079(0x3AE7)</td><td> L1 Data: DCK assigned </td><td width="100"></td></tr>
<tr><td>SD02_SUB_CK_LEN</td><td align="center">15080(0x3AE8)</td><td> L1 Data: Cipher Key Length </td><td width="100"></td></tr>
<tr><td>SD02_SUB_FEATURES</td><td align="center">15081(0x3AE9)</td><td> L1 Data: Handset ULE feature support </td><td width="100"></td></tr>
<tr><td>SD02_SUB_LEN[15032]</td><td align="center">50(0x32)</td><td> End of first subscribtion </td><td width="100"></td></tr>
<tr><td>FNCA_SUB(i)[250]</td><td align="center">15082(0x3AEA)</td><td> This place is reserved for the rest of the HS and includes all perameters:SD02_SUB_IPUI-SD02_SUB_DCK_ASSIGNED (40Byte x Number of handsets)</td><td width="100"></td></tr>
<tr><td>SD02_SUB_UNUSED[6]</td><td align="center">15332(0x3BE4)</td><td> <----------- unused </td><td width="100"></td></tr>
<tr><td>SD02_SUB_EX_DEFCK[16]</td><td align="center">15338(0x3BEA)</td><td> L16 Data: Default Cipher Key </td><td width="100"></td></tr>
<tr><td>SD02_SUB_EX_DEFCK_ASSIGNED</td><td align="center">15354(0x3BFA)</td><td> L1 Data: DefCK assigned </td><td width="100"></td></tr>
<tr><td>SD02_SUB_EX_LEN[15338]</td><td align="center">17(0x11)</td><td> End of first subscribtion </td><td width="100"></td></tr>
<tr><td>FNCA_SUB_EX(i)[85]</td><td align="center">15355(0x3BFB)</td><td> This place is reserved for the rest of the HS and includes all perameters:SD02_SUB_IPUI-SD02_SUB_DCK_ASSIGNED (40Byte x Number of handsets)</td><td width="100"></td></tr>
<tr><td>SD02_SUB_EX_UNUSED[4]</td><td align="center">15440(0x3C50)</td><td> <----------- unused </td><td width="100"></td></tr>
<tr><td>SD02_SUB_RFPI</td><td align="center">15444(0x3C54)</td><td> L5 RFPI </td><td width="100"></td></tr>
</tbody>
</table>
<h3>EEPROM SIZE = 32768</h3>
<h6>*All non exists values on default are zero upon EEPROM reset</h6>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
config dect 'global'
option log_dect_cmbs 'syslog'
option log_level 'realtime,warning,error'

Binary file not shown.

View File

@@ -0,0 +1,96 @@
#!/bin/sh /etc/rc.common
source /lib/functions/uci-defaults.sh
START=70
STOP=12
USE_PROCD=1
NAME=dectmngr
PROG=/usr/sbin/dectmngr
LOG_PATH=/var/log/dectmngr
DB_PATH=/etc/dect
# Ask dectmngr to exit nicely and wait for it to clean up, which is a slow process.
stop_and_wait_dectmngr() {
pidof $NAME && killall -q $NAME
pidof $NAME && sleep 2 # wait for the process to stop gracefully
while pidof $NAME; do
killall -q -9 $NAME
sleep 1
done
}
start_service() {
local opt_ext=
local rfpi=
local model_id=
local rxtun=
test $(db get hw.board.hasDect) = "0" && return
echo 1 > /sys/class/gpio/gpio14/value
rfpi=$(db -q get hw.board.dect_rfpi)
[ -n "$rfpi" -a ${#rfpi} -eq 14 ] && opt_ext="$opt_ext -rfpi $rfpi"
model_id=$(db -q get hw.board.dect_model_id)
[ -n "$model_id" -a ${#model_id} -eq 8 ] || {
echo "Invalid hw.board.dect_model_id:$model_id. Set to 30.3B.06"
model_id="30.3B.06"
}
opt_ext="$opt_ext -model $model_id"
rxtun=$(db -q get hw.board.dect_rxtun)
[ -n "$rxtun" -a ${#rxtun} -eq 2 ] && opt_ext="$opt_ext -rxtun $rxtun"
config_load dect
config_get log_dect_cmbs global log_dect_cmbs syslog
procd_open_instance
if [ "$log_dect_cmbs" = "none" ]; then
echo "Starting dectmngr with cmbs logging disabled"
procd_set_param command $PROG -comname ttyH0 $opt_ext
rm -f $LOG_PATH/*
elif [ "$log_dect_cmbs" = "file" ]; then
echo "Starting dectmngr with cmbs logging enabled to file"
procd_set_param command $PROG -comname ttyH0 -log $LOG_PATH/dect-cmbs.log $opt_ext
else
echo "Starting dectmngr with cmbs logging enabled to syslog"
procd_set_param command $PROG -comname ttyH0 -syslog $opt_ext
rm -f $LOG_PATH/*
fi
procd_set_param respawn 6 2 3
procd_set_param term_timeout 20
procd_set_param triggers asterisk
procd_close_instance
}
stop_service() {
test $(db get hw.board.hasDect) = "0" && return
echo 0 > /sys/class/gpio/gpio14/value
stop_and_wait_dectmngr
}
reload_service() {
ubus call dect reload
}
service_triggers()
{
procd_add_config_trigger "config.change" "asterisk" /etc/init.d/dectmngr restart
procd_add_config_trigger "config.change" "dect" /etc/init.d/dectmngr reload
}
boot() {
echo 14 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio14/direction
[ ! -d $LOG_PATH ] && mkdir -p $LOG_PATH
[ ! -d $DB_PATH ] && mkdir -p $DB_PATH
start
}

View File

@@ -0,0 +1 @@
/etc/dect/LA_DB

View File

@@ -1,27 +0,0 @@
#!/bin/sh
SOUND_BASE=/lib/modules/$(uname -r)/kernel/sound
SOUND_MODULES="$SOUND_BASE/soundcore.ko $SOUND_BASE/core/snd.ko $SOUND_BASE/core/snd-timer.ko"
SOUND_MODULES="$SOUND_MODULES $SOUND_BASE/core/snd-pcm.ko $SOUND_BASE/core/snd-hwdep.ko"
SOUND_MODULES="$SOUND_MODULES $SOUND_BASE/core/seq/snd-seq-device.ko"
SOUND_MODULES="$SOUND_MODULES $SOUND_BASE/core/seq/snd-seq.ko $SOUND_BASE/core/snd-rawmidi.ko "
SOUND_MODULES="$SOUND_MODULES $SOUND_BASE/usb/snd-usbmidi-lib.ko $SOUND_BASE/usb/snd-usb-audio.ko"
load_sound_modules() {
for mod in $SOUND_MODULES; do
insmod $mod
done
}
unload_sound_modules() {
local modules=
# reverse the order
for mod in $SOUND_MODULES; do
modules="$mod $modules"
done
for mod in $modules; do
rmmod $mod
done
}

View File

@@ -1,308 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
dspg_test_app - DSPG CMBS Host Software Test Application
Copyright (C) 2020 iopsys Software Solutions AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

View File

@@ -1,4 +0,0 @@
.PHONY: dectmngr
dectmngr:
$(MAKE) -C app

File diff suppressed because it is too large Load Diff

View File

@@ -1,192 +0,0 @@
/*************************************************************************************************************
*** List Access Session Manager
**
**************************************************************************************************************/
#ifndef __LA_SESSION_MGR_H__
#define __LA_SESSION_MGR_H__
/*******************************************
Includes
********************************************/
#include "cmbs_api.h"
#include "appcall.h"
#include "ListsApp.h"
/*******************************************
Defines
********************************************/
#define LA_SESSION_MGR_MAX_DATA_LEN 2000
#define LA_INVALID_ENTRY_ID 0xFF
/*******************************************
Types
********************************************/
typedef struct
{
u32 u32_LineId;
u32 u32_NumOfCallsBefore;
u32 u32_NumOfCallsAfter;
}stMissedCallNotifAux;
typedef struct
{
u32 u32_SMSId;
u32 u32_NumOfSMSBefore;
u32 u32_NumOfSMSAfter;
}stSMSNotifAux;
typedef struct
{
u32 u32_LineId;
u32 u32_AttachedHandsets;
}stLineDiagnosticsNotifAux;
typedef struct
{
u32 u32_HsId;
u32 u32_SessionId;
u32 u32_SaveEntryId;
u32 u32_WriteEntryId;
/* CAT-iq numbering */
u32 u32_CATiqListId;
u32 u32_CATiqSortField1;
u32 u32_CATiqSortField2;
/* CMBS Application numbering */
u32 u32_ListId;
u32 u32_SortField1;
u32 u32_SortField2;
/* Buffer for send / receive */
u8 pu8_DataBuffer[LA_SESSION_MGR_MAX_DATA_LEN];
u16 u16_DataBytesMarker;
u16 u16_DataTotalLen;
/* Auxiliary for Missed Call Notification */
stMissedCallNotifAux pst_MissedCallNotifAux[APPCALL_LINEOBJ_MAX];
/* Auxiliary for deletion of entries - List change notification */
u32 pu32_LineIdsOfDeletedEntries[APPCALL_LINEOBJ_MAX];
u32 pu32_AttachedHsOfDeletedEntries[APPCALL_LINEOBJ_MAX];
u32 u32_LineIdsSize;
/* Auxiliary for SMSl Notification */
stSMSNotifAux pst_SMSNotifAux[APPCALL_LINEOBJ_MAX];
/* Auxiliary for Line and Diagnostics */
stLineDiagnosticsNotifAux st_LineDiagNotifAux;
/* Auxiliary for Contact number field requested instance */
u8 u8_ContactNumReqInst;
u8 u8_ContactNumSaveInst;
/* Auxiliary for Read */
u8 u8_ReadInProgress;
u8 u8_OverLap;
}stLASession;
typedef enum
{
LA_SESSION_MGR_RC_OK,
LA_SESSION_MGR_RC_FAIL,
LA_SESSION_MGR_RC_NO_FREE_SESSIONS,
LA_SESSION_MGR_RC_UNSUPPORTED_LIST,
LA_SESSION_MGR_RC_UNKNOWN_SESSION_ID,
LA_SESSION_MGR_RC_NOT_ENOUGH_MEMORY,
LA_SESSION_MGR_RC_NOT_ALLOWED,
LA_SESSION_MGR_RC_INVALID_START_INDEX,
LA_SESSION_MGR_RC_ENTRY_NOT_AVAILABLE
}LA_SESSION_MGR_RC;
/*******************************************
Globals
********************************************/
/*******************************************
Session Mgr API
********************************************/
/* Init */
LA_SESSION_MGR_RC LASessionMgr_Init(void);
/* Get Data Buffer */
LA_SESSION_MGR_RC LASessionMgr_GetDataBuffer(IN u16 u16_SessionId, OUT u8** ppu8_DataBuffer, OUT u16** ppu16_Marker, OUT u16** ppu16_Len);
/* Start session */
LA_SESSION_MGR_RC LASessionMgr_StartSession(IN u16 u16_SessionId, IN u16 u16_ListId, IN u16 u16_HsId, IN PST_IE_LA_FIELDS pst_SortFields,
OUT u16* pu16_CurrNumOfEntries);
/* End Session */
LA_SESSION_MGR_RC LASessionMgr_EndSession(IN u16 u16_SessionId);
/* Get Supported Fields */
LA_SESSION_MGR_RC LASessionMgr_GetSupportedFields(IN u16 u16_SessionId,
OUT PST_IE_LA_FIELDS pst_EditableFields, OUT PST_IE_LA_FIELDS pst_NonEditableFields);
/* Read Entries */
LA_SESSION_MGR_RC LASessionMgr_ReadEntries(IN u16 u16_SessionId, INOUT u16* pu16_StartIdx, IN bool bForward, IN E_CMBS_MARK_REQUEST eMark,
IN PST_IE_LA_FIELDS pst_RequestedFields, INOUT u16* pu16_NumOfReqEntries,
OUT u8 pu8_Data[], INOUT u16* pu16_DataLen);
/* Edit Entry */
LA_SESSION_MGR_RC LASessionMgr_EditEntry(IN u16 u16_SessionId, IN u32 u32_EntryId,
IN PST_IE_LA_FIELDS pst_RequestedFields, OUT u8 pu8_Data[], INOUT u16* pu16_DataLen);
/* Search Entries */
LA_SESSION_MGR_RC LASessionMgr_SearchEntries(IN u16 u16_SessionId, IN E_CMBS_LA_SEARCH_MATCHING eMatch, IN bool bCaseSensitive,
IN const char* s_SearchedValue, IN bool bForward, IN E_CMBS_MARK_REQUEST eMark,
IN PST_IE_LA_FIELDS pst_RequestedFields, INOUT u16* pu16_NumOfReqEntries,
OUT u8 pu8_Data[], INOUT u16* pu16_DataLen, OUT u32* pu32_StartIdx);
/* Save Entry */
u32 LASessionMgr_GetSaveEntryID(IN u16 u16_SessionId);
LA_SESSION_MGR_RC LASessionMgr_SetSaveEntryID(IN u16 u16_SessionId, IN u32 u32_EntryId);
LA_SESSION_MGR_RC LASessionMgr_SaveEntry(IN u16 u16_SessionId, OUT u32* pu32_EntryId, OUT u32* pu32_PositionIdx, OUT u32* pu32_TotalNumEntries);
/* Delete Entry */
LA_SESSION_MGR_RC LASessionMgr_DeleteEntry(IN u16 u16_SessionId, IN u16 u16_EntryId, OUT u16* pu16_NumOfEntries);
/* Delete All Entries */
LA_SESSION_MGR_RC LASessionMgr_DeleteAllEntries(IN u16 u16_SessionId);
/* Send Missed call notification if needed */
LA_SESSION_MGR_RC LASessionMgr_SendMissedCallNotification(IN u16 u16_SessionId, IN E_CMBS_MARK_REQUEST eMark);
/* Send list changed notification if needed */
LA_SESSION_MGR_RC LASessionMgr_SendListChangedNotification(IN u16 u16_SessionId, IN u16 u16_EntryId);
LA_SESSION_MGR_RC LASessionMgr_SendListChangedNotificationOnDelete(IN u16 u16_SessionId);
LA_SESSION_MGR_RC LASessionMgr_SendSMSNotification(IN u16 u16_SessionId, IN E_CMBS_MARK_REQUEST eMark);
u8 LASessionMgr_GetReadInProgress(IN u16 u16_SessionId);
LA_SESSION_MGR_RC LASessionMgr_SetReadInProgress(IN u16 u16_SessionId, IN u8 u8_ReadInProgress);
u8 LASessionMgr_GetOverLap(IN u16 u16_SessionId);
LA_SESSION_MGR_RC LASessionMgr_SetOverLap(IN u16 u16_SessionId, IN u8 u8_OverLap);
/* Write Entry */
u32 LASessionMgr_GetWriteEntryID(IN u16 u16_SessionId);
LA_SESSION_MGR_RC LASessionMgr_SetWriteEntryID(IN u16 u16_SessionId, IN u32 u32_EntryId);
/* retrieve entry ID from LineSettingsList */
u32 LineSettingsGetEntryIdByLineId(int lineID);
/* retrieve entry ID from Line and Diagnostic Status List */
u32 LineDiagnosticGetEntryIdByLineId(int lineID);
/* retrieve SMS ID from SMS List */
u32 GetSMSIdByEntryId(IN u32 u32_EntryId, IN LIST_TYPE ListType);
/* retrieve Line ID from SMS List */
E_CMBS_RC GetLineIdBySMSId(IN u32 u32_SMSId, OUT u32* pu32_LineId);
/* retrieve SMS ID from SMS List */
E_CMBS_RC GetSMSIdByLineID(IN u32 u32_LineId, OUT u32* pu32_SMSId);
/* retrieve Contact name from contact list using number */
E_CMBS_RC GetContactNameByNumber(IN char * psz_Number, OUT char * psz_Name, OUT char * psz_FName);
#endif /* __LA_SESSION_MGR_H__ */
/* End Of File *****************************************************************************************************************************/

View File

@@ -1,27 +0,0 @@
ifdef CMBSDIR
LISTACCESSBASE:=$(CMBSDIR)/app/ListAccess
else
LISTACCESSBASE:=$(BASE)/ListAccess
endif
####################################################################
# settle includes
includes += -I$(LISTACCESSBASE)
####################################################################
# settle objects
objects += $(OBJDIR)/sqlite3.o
objects += $(OBJDIR)/SQLiteWrapper.o
objects += $(OBJDIR)/ListsApp.o
objects += $(OBJDIR)/LASessionMgr.o
objects += $(OBJDIR)/ListChangeNotif.o
####################################################################
# Libraries
ifeq ($(HOST_OS),UNIX)
LIBS += -ldl
endif
####################################################################
# settle vpath
vpath %.c $(LISTACCESSBASE)

View File

@@ -1,335 +0,0 @@
/*************************************************************************************************************
*** List Change Notification
**
**************************************************************************************************************/
/*******************************************
Includes
********************************************/
#include "ListChangeNotif.h"
#include "cfr_mssg.h"
#include "appcmbs.h"
#include "ListsApp.h"
#include "appsrv.h"
#include "appfacility.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/*******************************************
Defines
********************************************/
/*******************************************
Types
********************************************/
/*******************************************
Globals
********************************************/
static u8 s_u8_AggregateFaciltiy = 0;
/*******************************************
Auxiliary
********************************************/
extern E_CMBS_RC GetLineIdBySMSId(IN u32 u32_SMSId, OUT u32 *pu32_LineId);
/* ***************** Auxiliary end ***************** */
/*******************************************
List Change Notification API
u16_HsId may be a single HS ID or all handsets which are attached to the given line (CMBS_ALL_RELEVANT_HS_ID)
********************************************/
void ListChangeNotif_MissedCallListChanged(IN u32 u32_LineId, IN bool bNewEntryAdded, IN u16 u16_HsId)
{
u32 u32_HandsetMask = 0, u32_NumOfRead = 0, u32_NumOfUnread = 0;
LIST_RC rc;
APP_FACILITY_INFO_PRINT("ListChangeNotif_MissedCallListChanged LineID %d u16_HsId %d \n",u32_LineId, u16_HsId);
rc = List_GetAttachedHs(u32_LineId, &u32_HandsetMask);
if(rc == LIST_RC_OK)
{
APP_FACILITY_INFO_PRINT("ListChangeNotif_MissedCallListChanged u32_HandsetMask1 %x \n", u32_HandsetMask);
// if only one HS has to be notified, mask other handsets:
if ( u16_HsId != CMBS_ALL_RELEVANT_HS_ID )
{
u32_HandsetMask &= (1 << (u16_HsId - 1));
}
APP_FACILITY_INFO_PRINT("ListChangeNotif_MissedCallListChanged u32_HandsetMask2 %x \n", u32_HandsetMask);
if ( u32_HandsetMask )
{
List_GetMissedCallsNumOfEntries(u32_LineId, &u32_NumOfUnread, &u32_NumOfRead);
app_FacilityMissedCalls(0, (u8)u32_LineId, (u16)u32_NumOfUnread, (u16)u32_HandsetMask, bNewEntryAdded, (u16)(u32_NumOfUnread + u32_NumOfRead));
}
}
else
APP_FACILITY_ERROR_PRINT("List_GetAttachedHs failed \n");
}
void ListChangeNotif_ListChanged(IN u32 u32_LineId, IN eLineType tLineType, IN u32 u32_HandsetMask,
IN u32 u32_TotalNumOfEntries, IN eLIST_CHANGE_NOTIF_LIST_TYPE tListId)
{
app_FacilityListChanged(0, tListId, (u8)u32_TotalNumOfEntries, (u16)u32_HandsetMask, (u8)u32_LineId, tLineType);
}
void ListChangeNotif_OutgoingCallListChangedEx(IN u32 u32_LineId, IN bool bNewEntryAdded, IN u16 u16_HsId)
{
u32 u32_HandsetMask = 0, u32_NumOfEntries = 0;
LIST_RC rc;
ST_APP_FACILITY_LCN_DETAILS st_Details;
APP_FACILITY_INFO_PRINT("ListChangeNotif_OutgoingCallListChangedEx LineID %d u16_HsId %d \n",u32_LineId, u16_HsId);
rc = List_GetAttachedHs(u32_LineId, &u32_HandsetMask);
if(rc == LIST_RC_OK)
{
APP_FACILITY_INFO_PRINT("ListChangeNotif_OutgoingCallListChangedEx u32_HandsetMask1 %x \n", u32_HandsetMask);
if ( u32_HandsetMask )
{
List_GetOutgoingCallsNumOfEntries(u32_LineId, &u32_NumOfEntries);
st_Details.u8_Count = 1; // one change
st_Details.u16_OrgHs = u16_HsId; //HS num from which outgoing call is made
st_Details.st_SubDetails[0].u16_Change = 1; //Add
st_Details.st_SubDetails[0].u16_EntryId = 1; //last outgoing call will have entry id 1
st_Details.st_SubDetails[0].u16_PosIndex = u32_NumOfEntries-1; // considering last outgoing call is added to the end of list.
app_FacilityListChangedEx(0, LIST_CHANGE_NOTIF_LIST_TYPE_OUTGOING_CALLS, u32_NumOfEntries,
(u16)u32_HandsetMask, u32_LineId, LINE_TYPE_EXTERNAL, &st_Details);
}
}
else
APP_FACILITY_ERROR_PRINT("List_GetAttachedHs failed \n");
}
void ListChangeNotif_SMSListChanged(IN u32 u32_SMSId, IN u8 ListType, IN u16 u16_HsId)
{
u32 u32_HandsetMask = 0, u32_TotalNumOfEntries = 0, u32_LineId = 0;
eLIST_CHANGE_NOTIF_LIST_TYPE tListId = 0;
LIST_RC rc;
if ( GetLineIdBySMSId(u32_SMSId, &u32_LineId) == CMBS_RC_OK )
{
if(List_GetAttachedHs(u32_LineId, &u32_HandsetMask) == LIST_RC_OK)
{
rc = List_GetCount(ListType, &u32_TotalNumOfEntries);
if ( rc != LIST_RC_OK )
APP_FACILITY_ERROR_PRINT("List_GetCount failed!\n");
if ( u16_HsId != CMBS_ALL_RELEVANT_HS_ID )
{
u32_HandsetMask &= (1 << (u16_HsId - 1));
}
switch ((LIST_TYPE)ListType)
{
case LIST_TYPE_INCOMING_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_INCOMING_SMS; break;
case LIST_TYPE_SENT_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_SENT_SMS; break;
case LIST_TYPE_OUTGOING_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_OUTGOING_SMS; break;
case LIST_TYPE_DRAFT_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_DRAFT_SMS; break;
default:
APP_FACILITY_WARNING_PRINT("Not SMS list, aborting");
return;
}
app_FacilityListChanged(0, tListId, (u8)u32_TotalNumOfEntries, (u16)u32_HandsetMask, (u8)u32_LineId, 0);
}
else
APP_FACILITY_ERROR_PRINT("List_GetAttachedHs failed \n");
}
else
{
APP_FACILITY_ERROR_PRINT("GetLineIdBySMSId failed!\n");
}
}
void ListChangeNotif_IncomingSMSListChanged(IN u32 u32_SMSId, IN u8 u8_SMSType, IN u16 u16_HsId)
{
u32 u32_NumOfRead, u32_NumOfUnread, u32_HandsetMask, u32_LineId;
if ( GetLineIdBySMSId(u32_SMSId, &u32_LineId) == CMBS_RC_OK )
{
if(List_GetAttachedHs(u32_LineId, &u32_HandsetMask) == LIST_RC_OK)
{
APP_FACILITY_INFO_PRINT("ListChangeNotif_IncomingSMSListChanged \n");
if ( u16_HsId != CMBS_ALL_RELEVANT_HS_ID )
{
u32_HandsetMask &= (1 << (u16_HsId - 1));
}
List_GetSMSNumOfEntries(u32_SMSId, &u32_NumOfUnread, &u32_NumOfRead);
app_FacilitySMSMessageNotification(u8_SMSType, (u16)(u32_NumOfUnread + u32_NumOfRead), (u16)u32_NumOfUnread, u32_HandsetMask);
}
else
APP_FACILITY_ERROR_PRINT("List_GetAttachedHs failed! \n");
}
else
{
APP_FACILITY_ERROR_PRINT("GetLineIdBySMSId failed!\n");
}
}
void ListChangeNotif_SendListChangeDetails( IN u8 ListType)
{
LIST_RC rc = LIST_RC_OK;
ST_APP_FACILITY_LCN_DETAILS *pst_LcnDetails = NULL;
if (List_GetListChangeDetails(ListType, &pst_LcnDetails) == LIST_RC_OK)
{
eLIST_CHANGE_NOTIF_LIST_TYPE tListId = 0;
u32 u32_Count;
switch ((LIST_TYPE)ListType)
{
case LIST_TYPE_CONTACT_LIST:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_CONTACT_LIST; break;
case LIST_TYPE_LINE_SETTINGS_LIST:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_LINE_SETTINGS_LIST; break;
case LIST_TYPE_MISSED_CALLS :
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_MISSED_CALLS; break;
case LIST_TYPE_OUTGOING_CALLS :
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_OUTGOING_CALLS; break;
case LIST_TYPE_INCOMING_ACCEPTED_CALLS :
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_INCOMING_ACCEPTED_CALLS; break;
case LIST_TYPE_ALL_CALLS :
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_ALL_CALLS; break;
case LIST_TYPE_ALL_INCOMING_CALLS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_ALL_INCOMING_CALLS; break;
case LIST_TYPE_INCOMING_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_INCOMING_SMS; break;
case LIST_TYPE_SENT_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_SENT_SMS; break;
case LIST_TYPE_OUTGOING_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_OUTGOING_SMS; break;
case LIST_TYPE_DRAFT_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_DRAFT_SMS; break;
case LIST_TYPE_DTAM_SETTINGS_LIST:
case LIST_TYPE_SMS_SETTINGS_LIST:
case LIST_TYPE_DTAM_WELCOME_MESSAGE:
case LIST_TYPE_LINE_AND_DIAGNOSTIC_STATUS:
default :
APP_FACILITY_WARNING_PRINT("send list change details, aborting list type %d", ListType);
return;
}
/* Get Count */
rc = List_GetCount(ListType, &u32_Count);
if ((rc != LIST_RC_OK) && (pst_LcnDetails == NULL))
{
return;
}
if ( (ListType >= LIST_TYPE_MISSED_CALLS) && (ListType <= LIST_TYPE_ALL_INCOMING_CALLS) )
{
app_FacilityListChangedEx (0, tListId, u32_Count, CMBS_ALL_HS_MASK, 0, LINE_TYPE_EXTERNAL, pst_LcnDetails);
}
else
{
app_FacilityListChangedEx (0, tListId, u32_Count, CMBS_ALL_HS_MASK, 0, LINE_TYPE_ALL_LINES, pst_LcnDetails);
}
}
List_ResetListChangeDetails (ListType);
}
void ListChangeNotif_SendAllListChangeDetails( void )
{
LIST_TYPE ListType = 0;
while (ListType < LIST_TYPE_MAX)
{
ListChangeNotif_SendListChangeDetails(ListType);
ListType++;
}
}
void ListChangeNotif_SendListChangeDetailsEx( IN u8 ListType, IN u8 u8_LineId, IN u8 u8_LineSubtype)
{
LIST_RC rc = LIST_RC_OK;
ST_APP_FACILITY_LCN_DETAILS *pst_LcnDetails = NULL;
if (s_u8_AggregateFaciltiy)
{
/* Send Facility with later */
return;
}
if (List_GetListChangeDetails(ListType, &pst_LcnDetails) == LIST_RC_OK)
{
eLIST_CHANGE_NOTIF_LIST_TYPE tListId = 0;
u32 u32_Count;
switch ((LIST_TYPE)ListType)
{
case LIST_TYPE_CONTACT_LIST:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_CONTACT_LIST; break;
case LIST_TYPE_LINE_SETTINGS_LIST:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_LINE_SETTINGS_LIST; break;
case LIST_TYPE_MISSED_CALLS :
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_MISSED_CALLS; break;
case LIST_TYPE_OUTGOING_CALLS :
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_OUTGOING_CALLS; break;
case LIST_TYPE_INCOMING_ACCEPTED_CALLS :
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_INCOMING_ACCEPTED_CALLS; break;
case LIST_TYPE_ALL_CALLS :
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_ALL_CALLS; break;
case LIST_TYPE_ALL_INCOMING_CALLS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_ALL_INCOMING_CALLS; break;
case LIST_TYPE_INCOMING_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_INCOMING_SMS; break;
case LIST_TYPE_SENT_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_SENT_SMS; break;
case LIST_TYPE_OUTGOING_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_OUTGOING_SMS; break;
case LIST_TYPE_DRAFT_SMS:
tListId = LIST_CHANGE_NOTIF_LIST_TYPE_DRAFT_SMS; break;
case LIST_TYPE_DTAM_SETTINGS_LIST:
case LIST_TYPE_SMS_SETTINGS_LIST:
case LIST_TYPE_DTAM_WELCOME_MESSAGE:
case LIST_TYPE_LINE_AND_DIAGNOSTIC_STATUS:
default :
APP_FACILITY_WARNING_PRINT("send list change details, aborting list type %d", ListType);
return;
}
/* Get Count */
rc = List_GetCount(ListType, &u32_Count);
if ((rc != LIST_RC_OK) && (pst_LcnDetails == NULL))
{
return;
}
app_FacilityListChangedEx (0, tListId, u32_Count, CMBS_ALL_HS_MASK, u8_LineId, u8_LineSubtype, pst_LcnDetails);
}
List_ResetListChangeDetails (ListType);
}
void ListChangeNotif_AggregateListChangeDetails( IN u8 u8_AggregateFaciltiy )
{
s_u8_AggregateFaciltiy = u8_AggregateFaciltiy;
}
/* End Of File *****************************************************************************************************************************/

View File

@@ -1,76 +0,0 @@
/*************************************************************************************************************
*** List Change Notification
**
**************************************************************************************************************/
#ifndef __LA_LIST_CHANGE_NOTIF_H__
#define __LA_LIST_CHANGE_NOTIF_H__
/*******************************************
Includes
********************************************/
#include "cmbs_api.h"
/*******************************************
Defines
********************************************/
/*******************************************
Types
********************************************/
typedef enum
{
LINE_TYPE_EXTERNAL = 0x00,
LINE_TYPE_RELATING_TO = 0x03,
LINE_TYPE_ALL_LINES = 0x04
} eLineType;
typedef enum
{
LIST_CHANGE_NOTIF_LIST_TYPE_MISSED_CALLS = 1,
LIST_CHANGE_NOTIF_LIST_TYPE_OUTGOING_CALLS,
LIST_CHANGE_NOTIF_LIST_TYPE_INCOMING_ACCEPTED_CALLS,
LIST_CHANGE_NOTIF_LIST_TYPE_ALL_CALLS,
LIST_CHANGE_NOTIF_LIST_TYPE_CONTACT_LIST,
LIST_CHANGE_NOTIF_LIST_TYPE_INTERNAL_NAMES_LIST,
LIST_CHANGE_NOTIF_LIST_TYPE_DECT_SETTINGS_LIST,
LIST_CHANGE_NOTIF_LIST_TYPE_LINE_SETTINGS_LIST,
LIST_CHANGE_NOTIF_LIST_TYPE_ALL_INCOMING_CALLS,
LIST_CHANGE_NOTIF_LIST_TYPE_INCOMING_SMS = 12,
LIST_CHANGE_NOTIF_LIST_TYPE_SENT_SMS = 13,
LIST_CHANGE_NOTIF_LIST_TYPE_OUTGOING_SMS = 14,
LIST_CHANGE_NOTIF_LIST_TYPE_DRAFT_SMS = 15,
LIST_CHANGE_NOTIF_LIST_TYPE_MAX
}eLIST_CHANGE_NOTIF_LIST_TYPE;
/*******************************************
Globals
********************************************/
/*******************************************
List Change Notification API
********************************************/
void ListChangeNotif_MissedCallListChanged( IN u32 u32_LineId, IN bool bNewEntryAdded, IN u16 u16_HsId );
void ListChangeNotif_ListChanged( IN u32 u32_LineId, IN eLineType tLineType, IN u32 u32_HandsetMask,
IN u32 u32_TotalNumOfEntries, IN eLIST_CHANGE_NOTIF_LIST_TYPE tListId );
void ListChangeNotif_SMSListChanged(IN u32 u32_SMSId, IN u8 ListType, IN u16 u16_HsId);
void ListChangeNotif_IncomingSMSListChanged( IN u32 u32_SMSId, IN u8 u8_SMSType, IN u16 u16_HsId );
void ListChangeNotif_SendListChangeDetails( IN u8 ListType);
void ListChangeNotif_SendAllListChangeDetails( void );
void ListChangeNotif_SendListChangeDetailsEx( IN u8 ListType, IN u8 u8_LineId, IN u8 u8_LineSubtype);
void ListChangeNotif_AggregateListChangeDetails( IN u8 u8_AggregateFaciltiy );
#endif /* __LA_LIST_CHANGE_NOTIF_H__ */
/* End Of File *****************************************************************************************************************************/

File diff suppressed because it is too large Load Diff

View File

@@ -1,729 +0,0 @@
/*************************************************************************************************************
*** ListsApp
*** An implementation of lists API over SQL database
**
**************************************************************************************************************/
#ifndef __LISTS_APP_H__
#define __LISTS_APP_H__
/*******************************************
Includes
********************************************/
#include "cmbs_api.h"
#include "SQLiteWrapper.h"
#include "cfr_debug.h"
#include "appfacility.h"
/*******************************************
Defines
********************************************/
#define LIST_NAME_MAX_LEN 30
#define LIST_NUMBER_MAX_LEN 30
#define LIST_LINE_ID_NONE 0xFFFF
/*******************************************
Types
********************************************/
typedef enum
{
MATCH_EXACT,
MATCH_RETURN_NEXT_ON_FAIL,
MATCH_RETURN_PREV_ON_FAIL
}eMatchOption;
typedef enum
{
LIST_RC_OK = 0,
LIST_RC_FAIL,
LIST_RC_UNSUPPORTED_LIST,
LIST_RC_ARRAY_TOO_SMALL,
LIST_RC_UNKNOWN_FIELD,
LIST_RC_NO_SORT,
LIST_RC_UNSUPPORTED_MATCH_OPTION,
LIST_RC_INVALID_START_INDEX,
LIST_RC_ENTRY_NOT_AVAILABLE
}LIST_RC;
typedef enum
{
LIST_TYPE_CONTACT_LIST,
LIST_TYPE_LINE_SETTINGS_LIST,
LIST_TYPE_MISSED_CALLS,
LIST_TYPE_OUTGOING_CALLS,
LIST_TYPE_INCOMING_ACCEPTED_CALLS,
LIST_TYPE_ALL_CALLS,
LIST_TYPE_ALL_INCOMING_CALLS,
LIST_TYPE_LINE_AND_DIAGNOSTIC_STATUS,
LIST_TYPE_SMS_SETTINGS_LIST,
LIST_TYPE_INCOMING_SMS,
LIST_TYPE_SENT_SMS,
LIST_TYPE_OUTGOING_SMS,
LIST_TYPE_DRAFT_SMS,
LIST_TYPE_DTAM_SETTINGS_LIST,
LIST_TYPE_DTAM_WELCOME_MESSAGE,
LIST_TYPE_MAX
}LIST_TYPE;
typedef enum
{
FIELD_TYPE_CHAR,
FIELD_TYPE_INT,
FIELD_TYPE_TEXT,
FIELD_TYPE_MAX
} FIELD_TYPE;
typedef enum
{
FIELD_ID_INVALID = -1,
FIELD_ID_ENTRY_ID,
FIELD_ID_LAST_NAME,
FIELD_ID_FIRST_NAME,
FIELD_ID_CONTACT_NUM_1,
FIELD_ID_CONTACT_NUM_1_TYPE,
FIELD_ID_CONTACT_NUM_1_OWN,
FIELD_ID_CONTACT_NUM_1_DEFAULT,
FIELD_ID_CONTACT_NUM_2,
FIELD_ID_CONTACT_NUM_2_TYPE,
FIELD_ID_CONTACT_NUM_2_OWN,
FIELD_ID_CONTACT_NUM_2_DEFAULT,
FIELD_ID_CONTACT_NUM_3,
FIELD_ID_CONTACT_NUM_3_TYPE,
FIELD_ID_CONTACT_NUM_3_OWN,
FIELD_ID_CONTACT_NUM_3_DEFAULT,
FIELD_ID_ASSOCIATED_MELODY,
FIELD_ID_LINE_ID,
FIELD_ID_NUMBER,
FIELD_ID_DATE_AND_TIME,
FIELD_ID_READ_STATUS,
FIELD_ID_LINE_NAME,
FIELD_ID_NUM_OF_CALLS,
FIELD_ID_CALL_TYPE,
FIELD_ID_ATTACHED_HANDSETS,
FIELD_ID_DIALING_PREFIX,
FIELD_ID_FP_MELODY,
FIELD_ID_FP_VOLUME,
FIELD_ID_BLOCKED_NUMBER,
FIELD_ID_MULTIPLE_CALLS_MODE,
FIELD_ID_INTRUSION_CALL,
FIELD_ID_PERMANENT_CLIR,
FIELD_ID_PERMANENT_CLIR_ACTIVATION_CODE,
FIELD_ID_PERMANENT_CLIR_DEACTIVATION_CODE,
FIELD_ID_CALL_FWD_UNCOND,
FIELD_ID_CALL_FWD_UNCOND_ACTIVATION_CODE,
FIELD_ID_CALL_FWD_UNCOND_DEACTIVATION_CODE,
FIELD_ID_CALL_FWD_UNCOND_TARGET_NUMBER,
FIELD_ID_CALL_FWD_NO_ANSWER,
FIELD_ID_CALL_FWD_NO_ANSWER_ACTIVATION_CODE,
FIELD_ID_CALL_FWD_NO_ANSWER_DEACTIVATION_CODE,
FIELD_ID_CALL_FWD_NO_ANSWER_TARGET_NUMBER,
FIELD_ID_CALL_FWD_NO_ANSWER_TIMEOUT,
FIELD_ID_CALL_FWD_BUSY,
FIELD_ID_CALL_FWD_BUSY_ACTIVATION_CODE,
FIELD_ID_CALL_FWD_BUSY_DEACTIVATION_CODE,
FIELD_ID_CALL_FWD_BUSY_TARGET_NUMBER,
FIELD_ID_OK_STATUS,
FIELD_ID_LINE_USE_STATUS,
FIELD_ID_HS_USE_STATUS,
FIELD_ID_CALL_FWD_CFU_STATUS,
FIELD_ID_CALL_FWD_CFNA_STATUS,
FIELD_ID_CALL_FWD_CFB_STATUS,
FIELD_ID_DIAGNOSTIC_ERROR_STATUS,
FIELD_ID_DIAGNOSTIC_ERROR_TYPE,
FIELD_ID_DIAGNOSTIC_ERROR_NUMBER,
FIELD_ID_DTAM_IDENTIFIER,
FIELD_ID_DTAM_TYPE,
FIELD_ID_DTAM_LOCATION,
FIELD_ID_DTAM_NUMBER,
FIELD_ID_DTAM_ACTIVATION,
FIELD_ID_DTAM_DEFAULT_TIMEOUT,
FIELD_ID_DTAM_TIMEOUT,
FIELD_ID_DTAM_WEB_LINK,
FIELD_ID_DTAM_WELCOME_MSG_PARAMETERS,
FIELD_ID_DTAM_POSITION_INDEX,
FIELD_ID_DTAM_RECORDED_MSG_NAME,
FIELD_ID_DTAM_TIME_DURATION_HOURS,
FIELD_ID_DTAM_TIME_DURATION_MINUTES,
FIELD_ID_DTAM_TIME_DURATION_SECONDS,
FIELD_ID_NAME,
FIELD_ID_SMS_IDENTIFIER,
FIELD_ID_SMS_ENABLE,
FIELD_ID_SMS_MAX_SIZE,
FIELD_ID_SMSC_SEND_SERVER,
FIELD_ID_SMSC_RECEIVE_SERVER,
FIELD_ID_SMS_DELIVERY_REPORT,
FIELD_ID_SMS_VALIDITY_PERIOD,
FIELD_ID_SMS_CHAR_ALLOWED_ENCODING,
FIELD_ID_SMS_ALLOWED_ENCODING_0,
FIELD_ID_SMS_ALLOWED_ENCODING_1,
FIELD_ID_SMS_ALLOWED_ENCODING_2,
FIELD_ID_SMS_ALLOWED_ENCODING_3,
FIELD_ID_SMS_ALLOWED_ENCODING_4,
FIELD_ID_SMS_ALLOWED_ENCODING_5,
FIELD_ID_SMS_ALLOWED_ENCODING_6,
FIELD_ID_SMS_ALLOWED_ENCODING_7,
FIELD_ID_SMS_ALLOWED_ENCODING_8,
FIELD_ID_SMS_ALLOWED_ENCODING_9,
FIELD_ID_SMS_ALLOWED_ENCODING_10,
FIELD_ID_SMS_ALLOWED_ENCODING_11,
FIELD_ID_SMS_ALLOWED_ENCODING_12,
FIELD_ID_SMS_ALLOWED_ENCODING_13,
FIELD_ID_SMS_ALLOWED_ENCODING_14,
FIELD_ID_SMS_CHAR_ALLOWED_ENCODING_2,
FIELD_ID_SMS_CHAR_ALLOWED_ENCODING_3,
FIELD_ID_SMS_CHAR_ALLOWED_ENCODING_4,
FIELD_ID_SMS_NETWORK_ENCODING,
FIELD_ID_SMS_ENCODING_VARIANT_1,
FIELD_ID_SMS_ENCODING_VARIANT_2,
FIELD_ID_SMS_SEND_REQUEST,
FIELD_ID_SMS_SIZE,
FIELD_ID_SMS_CONTENT,
FIELD_ID_SMS_TYPE,
FIELD_ID_MAX
} FIELD_ID;
typedef struct
{
const char* s_Name;
FIELD_TYPE e_Type;
bool b_AutoInc;
bool b_PrimaryKey;
bool b_Mandatory;
bool b_Editable;
FIELD_ID e_FieldId;
}stListField;
typedef enum
{
NUM_TYPE_FIXED,
NUM_TYPE_MOBILE,
NUM_TYPE_WORK
}eNumberType;
typedef struct
{
u32 u32_EntryId;
char sLastName[LIST_NAME_MAX_LEN];
char sFirstName[LIST_NAME_MAX_LEN];
char sNumber1[LIST_NUMBER_MAX_LEN];
char cNumber1Type;
bool bNumber1Default;
bool bNumber1Own;
char sNumber2[LIST_NUMBER_MAX_LEN];
char cNumber2Type;
bool bNumber2Default;
bool bNumber2Own;
char sNumber3[LIST_NUMBER_MAX_LEN];
char cNumber3Type;
bool bNumber3Default;
bool bNumber3Own;
u32 u32_AssociatedMelody;
u32 u32_LineId;
}stContactListEntry;
typedef enum
{
CALL_TYPE_MISSED,
CALL_TYPE_OUTGOING,
CALL_TYPE_INCOMING
}eCallType;
typedef enum
{
SMS_TYPE_INCOMING,
SMS_TYPE_OUTGOING,
SMS_TYPE_DRAFT,
SMS_TYPE_SENT
}eSMSType;
typedef struct
{
u32 u32_EntryId;
char sNumber[LIST_NUMBER_MAX_LEN];
time_t t_DateAndTime;
bool bRead;
char sLineName[LIST_NAME_MAX_LEN]; /* Stored in LineSettingsList */
u32 u32_LineId;
u32 u32_NumOfCalls;
char cCallType;
char sLastName[LIST_NAME_MAX_LEN]; /* stored in ContactList */
char sFirstName[LIST_NAME_MAX_LEN]; /* stored in ContactList */
}stCallsListEntry;
typedef struct
{
u32 u32_EntryId;
char sLineName[LIST_NAME_MAX_LEN];
u32 u32_LineId;
u32 u32_AttachedHsMask;
char sDialPrefix[LIST_NUMBER_MAX_LEN];
u32 u32_FPMelody;
u32 u32_FPVolume;
char sBlockedNumber[LIST_NUMBER_MAX_LEN];
bool bMultiCalls;
bool bIntrusionCall;
bool bPermanentCLIR;
char sPermanentCLIRActCode[LIST_NUMBER_MAX_LEN];
char sPermanentCLIRDeactCode[LIST_NUMBER_MAX_LEN];
bool bCallFwdUncond;
char sCallFwdUncondActCode[LIST_NUMBER_MAX_LEN];
char sCallFwdUncondDeactCode[LIST_NUMBER_MAX_LEN];
char sCallFwdUncondNum[LIST_NUMBER_MAX_LEN];
bool bCallFwdNoAns;
char sCallFwdNoAnsActCode[LIST_NUMBER_MAX_LEN];
char sCallFwdNoAnsDeactCode[LIST_NUMBER_MAX_LEN];
char sCallFwdNoAnsNum[LIST_NUMBER_MAX_LEN];
u32 u32_CallFwdNoAnsTimeout;
bool bCallFwdBusy;
char sCallFwdBusyActCode[LIST_NUMBER_MAX_LEN];
char sCallFwdBusyDeactCode[LIST_NUMBER_MAX_LEN];
char sCallFwdBusyNum[LIST_NUMBER_MAX_LEN];
}stLineSettingsListEntry;
typedef struct
{
u32 u32_EntryId;
u32 u32_LineId;
u32 u32_OKStatus;
u32 u32_LineUseStatus;
u32 u32_HSUseStatus;
bool b_CallFwdUncondStatus;
bool b_CallFwdNoAnswerStatus;
bool b_CallFwdBusyStatus;
bool b_DiagnosticErrorStatus;
u32 u32_DiagnosticErrorType;
u32 u32_DiagnosticErrorNumber;
}stLineAndDiagnosticListEntry;
typedef struct
{
u32 u32_EntryId;
u32 u32_LineId;
u32 u32_DTAMIdentifier;
bool b_DTAMType;
bool b_DTAMLocation;
char sDTAMNumber[LIST_NUMBER_MAX_LEN];
bool b_DTAMActivation;
bool b_DTAMDefaultTimeout;
u32 u32_DTAMTimeout;
char sDTAMWebLink[LIST_NUMBER_MAX_LEN];
u32 u32_WelcomeMsgParams;
}stDTAMSettingsListEntry;
typedef struct
{
u32 u32_EntryId;
u32 u32_DTAMIdentifier;
bool b_DTAMType;
bool b_DTAMLocation;
u32 u32_PositionIdx;
char sRecordedMsgName[LIST_NAME_MAX_LEN];
u32 u32_TimeDurationHours;
u32 u32_TimeDurationMinutes;
u32 u32_TimeDurationSeconds;
}stDTAMWelcomeMessageListEntry;
typedef struct
{
u32 u32_EntryId;
u32 u32_SMSServiseId;
u32 u32_LineId;
bool b_EnableSMS;
u32 u32_SMSMaxSize;
char sSMSCSendServer[LIST_NUMBER_MAX_LEN];
char sSMSCReceiveServer[LIST_NUMBER_MAX_LEN];
bool b_SMSDeliveryReport;
u32 u32_SMSValidityPeriod;
u32 u32_LengthOfAllowedEncoding_1;
u32 u32_SMSCharacterEncodingValue_1;
u32 u32_AllowedEncoding_0;
u32 u32_AllowedEncoding_1;
u32 u32_AllowedEncoding_2;
u32 u32_AllowedEncoding_3;
u32 u32_AllowedEncoding_4;
u32 u32_AllowedEncoding_5;
u32 u32_AllowedEncoding_6;
u32 u32_AllowedEncoding_7;
u32 u32_AllowedEncoding_8;
u32 u32_AllowedEncoding_9;
u32 u32_AllowedEncoding_10;
u32 u32_AllowedEncoding_11;
u32 u32_AllowedEncoding_12;
u32 u32_AllowedEncoding_13;
u32 u32_AllowedEncoding_14;
u32 u32_LengthOfAllowedEncoding_2;
u32 u32_SMSCharacterEncodingValue_2;
u32 u32_LengthOfAllowedEncoding_3;
u32 u32_SMSCharacterEncodingValue_3;
u32 u32_LengthOfAllowedEncoding_4;
u32 u32_SMSCharacterEncodingValue_4;
}stSMSSettingsListEntry;
#define LIST_MAX_SMS_SIZE 100
typedef struct
{
u32 u32_EntryId;
char sNumber[LIST_NUMBER_MAX_LEN];
char sName[LIST_NUMBER_MAX_LEN];
time_t t_DateAndTime;
bool b_Read;
bool b_SendRequest;
u32 u32_SMSServiseId;
u32 u32_NetworkSideEncoding;
u32 u32_EncVariant_1;
u32 u32_EncVariant_2;
u32 u32_SMSSize;
char sSMSContent[LIST_MAX_SMS_SIZE];
char cSMSType;
}stSMSListEntry;
typedef struct
{
bool b_Default; //0x0
bool b_Turkish; //0x1
bool b_Spanish; //0x2
bool b_Portuguese; //0x3
bool b_Bengali; //0x4
bool b_Gujarati; //0x5
bool b_Hindi; //0x6
bool b_Kannada; //0x7
bool b_Malayalam; //0x8
bool b_Oriya; //0x9
bool b_Punjabi; //0x10
bool b_Tamil; //0x11
bool b_Telugu; //0x12
bool b_Urdu; //0x13
bool b_Reserved; //0x14
}stAllowedEncodingVariant;
typedef enum
{
CMBS_SMS_ENC_TYPE_RESERVED,
CMBS_SMS_ENC_TYPE_GSM_7_BIT,
CMBS_SMS_ENC_TYPE_GSM_8_BIT,
CMBS_SMS_ENC_TYPE_UCS_2,
CMBS_SMS_ENC_TYPE_UTF_8,
CMBS_SMS_ENC_TYPE_MAX,
}e_SMSCharacterEncodingType;
typedef enum
{
MARK_LEAVE_UNCHANGED,
MARK_CLEAR,
MARK_SET
} eMarkRequest;
/* Entry Max Size */
typedef union
{
stContactListEntry ContactListEntry;
stCallsListEntry CallsListEntry;
stLineSettingsListEntry LineSettingsListEntry;
stSMSListEntry SMSListEntry;
}uEntryTypes;
#define LIST_ENTRY_MAX_SIZE sizeof(uEntryTypes)
/*******************************************
Globals
********************************************/
/*******************************************
List API
********************************************/
/* Initialize Lists Application */
LIST_RC List_Init(void);
/* Destory Lists Application */
LIST_RC List_Close(void);
/* Create List in database */
LIST_RC List_CreateList(IN LIST_TYPE ListType);
/* Get number of entries */
LIST_RC List_GetCount(IN LIST_TYPE ListType, OUT u32* pu32_Count);
/* Get Supported fields */
LIST_RC List_GetSupportedFields(IN LIST_TYPE ListType,
OUT u32 pu32_EditableFieldsIds[], INOUT u32* pu32_EditableSize, /* Editable Fields */
OUT u32 pu32_NonEditableFields[], INOUT u32* pu32_NonEditableSize /* Non-Editable Fields */);
/* Insert *NEW* Entry
*NOTE: For calls list, the data base automatically sets the 'call type' field, according to list type*
Input Arguments:
------------------
ListType - List to insert entry
pv_Entry - pointer to actual entry
pu32Fields - Fields used in provided entry (array of Ids)
u32_FieldsSize - size of array
Output Arguments:
------------------
pu32_EntryId - ID of inserted entry
*/
LIST_RC List_InsertEntry(IN LIST_TYPE ListType, IN void* pv_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT u32* pu32_EntryId);
/* Delete a single entry from the database */
LIST_RC List_DeleteEntry(IN LIST_TYPE ListType, IN u32 u32_EntryId);
/* Delete all entries from the database */
LIST_RC List_DeleteAllEntries(IN LIST_TYPE ListType);
/* Update (existing) Entry */
LIST_RC List_UpdateEntry(IN LIST_TYPE ListType, IN void* pv_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize, IN u32 u32_EntryId);
/* Read entries
Input Arguments:
------------------------
ListType - requested list
pu32_StartIndex - start index in respect to sorting fields
bForward - Direction of read
eMark - Flag for requesting resetting (or setting) of the 'Read status' field for all read entries
pu32Fields - Array of requested fields
u32_FieldsSize - size of pu32Fields
u32_SortField1 - most significant sort field
u32_SortField2 - least significant sort field (use invalid_id if not needed)
u32_EntriesSize - number of requested entries
Output Arguments:
------------------------
pv_Entries - array of read entries
pu32_EntriesSize - size of pv_Entries
pu32_StartIndex - the minimum returned entries' indices
*/
LIST_RC List_ReadEntries(IN LIST_TYPE ListType, INOUT u32* pu32_StartIndex, IN bool bForward, IN eMarkRequest eMark, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
IN u32 u32_SortField1, IN u32 u32_SortField2, OUT void* pv_Entries, INOUT u32* pu32_EntriesSize);
/* Read entry by ID
Input Arguments:
------------------------
ListType - requested list
u32_EntryId - Id Of requested entry
pu32Fields - Array of requested fields
u32_FieldsSize - size of pu32Fields
Output Arguments:
------------------------
pv_Entry - pointer to read entry
*/
LIST_RC List_ReadEntryById(IN LIST_TYPE ListType, IN u32 u32_EntryId, IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT void* pv_Entry);
/* Search entries
Input Arguments:
------------------------
ListType - requested list
eMatchOption - what to return in case of no exact match (return nothing, return first greater than, return first lesser than)
bCaseSensitive - case sensitivity of the search
sSearchedVal - the value to search for
bForward - Direction of read
eMark - Flag for requesting resetting (or setting) of the 'Read status' field for all read entries
pu32Fields - Array of requested fields
u32_FieldsSize - size of pu32Fields
u32_SortField1 - most significant sort field
u32_SortField2 - least significant sort field (use invalid_id if not needed)
u32_EntriesSize - number of requested entries
Output Arguments:
------------------------
pv_Entries - array of read entries
pu32_EntriesSize - size of pv_Entries
pu32_StartIndex - index of first returned entry
*/
LIST_RC List_SearchEntries(IN LIST_TYPE ListType, IN eMatchOption eMatching, IN bool bCaseSensitive, IN const char* sSearchedVal,
IN bool bForward, IN eMarkRequest eMark, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
IN u32 u32_SortField1, IN u32 u32_SortField2, OUT void* pv_Entries, INOUT u32* pu32_EntriesSize,
OUT u32* pu32_StartIndex);
/* Get Entry Index */
LIST_RC List_GetEntryIdex(IN LIST_TYPE ListType, IN u32 u32_SortField1, IN u32 u32_SortField2, IN u32 u32_EntryId, OUT u32* pu32_Index);
/*******************************************
Auxiliary
********************************************/
/* prepare strings of fields and values from the given Entry */
LIST_RC List_PrepareContactListEntryForInsert(IN stContactListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize,
OUT char sValues[], INOUT u32* pu32_ValuesSize);
LIST_RC List_PrepareCallsListEntryForInsert(IN LIST_TYPE ListType, IN stCallsListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize,
OUT char sValues[], INOUT u32* pu32_ValuesSize);
LIST_RC List_PrepareLineSettingsListEntryForInsert(IN stLineSettingsListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize,
OUT char sValues[], INOUT u32* pu32_ValuesSize);
LIST_RC List_PrepareLineAndDiagnosticistEntryForInsert(IN stLineAndDiagnosticListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize,
OUT char sValues[], INOUT u32* pu32_ValuesSize);
LIST_RC List_PrepareSMSSettingsListEntryForInsert(IN stSMSSettingsListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize,
OUT char sValues[], INOUT u32* pu32_ValuesSize);
LIST_RC List_PrepareSMSListEntryForInsert(IN LIST_TYPE ListType, IN stSMSListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize,
OUT char sValues[], INOUT u32* pu32_ValuesSize);
LIST_RC List_PrepareDTAMSettingsListEntryForInsert(IN stDTAMSettingsListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize,
OUT char sValues[], INOUT u32* pu32_ValuesSize);
LIST_RC List_PrepareDTAMWelcomeMsgListEntryForInsert(IN stDTAMWelcomeMessageListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize,
OUT char sValues[], INOUT u32* pu32_ValuesSize);
LIST_RC List_PrepareContactListEntryForUpdate(IN stContactListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize);
LIST_RC List_PrepareCallsListEntryForUpdate(IN stCallsListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize);
LIST_RC List_PrepareLineSettingsListEntryForUpdate(IN stLineSettingsListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize);
LIST_RC List_PrepareLineAndDiagnosticEntryForUpdate(IN stLineAndDiagnosticListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize);
LIST_RC List_PrepareSMSSettingsListEntryForUpdate(IN stSMSSettingsListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize);
LIST_RC List_PrepareSMSListEntryForUpdate(IN stSMSListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize);
LIST_RC List_PrepareDTAMSettingsListEntryForUpdate(IN stDTAMSettingsListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize);
LIST_RC List_PrepareDTAMWelcomeMsgListEntryForUpdate(IN stDTAMWelcomeMessageListEntry* pst_Entry, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize);
/* prepare string with fields names from the given field Ids */
LIST_RC List_PrepareFieldsNamesForRead(IN LIST_TYPE ListType, IN u32 pu32Fields[], IN u32 u32_FieldsSize,
OUT char sFields[], INOUT u32* pu32_FieldsSize,
OUT bool* pb_JoinContactList, OUT bool* pb_JoinLineSettingsList);
/* Fill Entry */
LIST_RC List_FillEntry(IN LIST_TYPE ListType, IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT void* pv_Entries, IN u32 u32_EntriesOffset,
IN void* pv_SelectHandle, IN PST_COLUMN_MAP pst_Map);
LIST_RC List_FillContactListEntry(IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT void* pv_Entries, IN u32 u32_EntriesOffset,
IN void* pv_SelectHandle, IN PST_COLUMN_MAP pst_Map);
LIST_RC List_FillCallsListEntry(IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT void* pv_Entries, IN u32 u32_EntriesOffset,
IN void* pv_SelectHandle, IN PST_COLUMN_MAP pst_Map);
LIST_RC List_FillLineSettingsEntry(IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT void* pv_Entries, IN u32 u32_EntriesOffset,
IN void* pv_SelectHandle, IN PST_COLUMN_MAP pst_Map);
LIST_RC List_FillLineDiagnosticEntry(IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT void* pv_Entries, IN u32 u32_EntriesOffset,
IN void* pv_SelectHandle, IN PST_COLUMN_MAP pst_Map);
LIST_RC List_FillSMSSettingsListEntry(IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT void* pv_Entries, IN u32 u32_EntriesOffset,
IN void* pv_SelectHandle, IN PST_COLUMN_MAP pst_Map);
LIST_RC List_FillSMSListEntry(IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT void* pv_Entries, IN u32 u32_EntriesOffset,
IN void* pv_SelectHandle, IN PST_COLUMN_MAP pst_Map);
LIST_RC List_FillDTAMSettingsListEntry(IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT void* pv_Entries, IN u32 u32_EntriesOffset,
IN void* pv_SelectHandle, IN PST_COLUMN_MAP pst_Map);
LIST_RC List_FillDTAMWelcomeMsgEntry(IN u32 pu32Fields[], IN u32 u32_FieldsSize, OUT void* pv_Entries, IN u32 u32_EntriesOffset,
IN void* pv_SelectHandle, IN PST_COLUMN_MAP pst_Map);
/* Attached Handsets */
LIST_RC List_GetAttachedHs(IN u32 u32_LineId, OUT u32* pu32_AttachedHsMask);
LIST_RC List_SetAttachedHs(IN u32 u32_LineId, IN u32 u32_AttachedHsMask);
/* Missed Calls Num Of Read / Unread Entries */
LIST_RC List_GetMissedCallsNumOfEntries(IN u32 u32_LineId, OUT u32* pu32_NumOfUnread, OUT u32* pu32_NumOfRead);
/* Add HS to first line's Attached HS mask */
LIST_RC List_AddHsToFirstLine(IN u8 u8_HsNum);
/* Remove HS from all lines' Attahced HS mask */
LIST_RC List_RemoveHsFromAllLines(IN u8 u8_HsNum);
/* Returns the first line that the input HS is attached to,
or the first line in the system if the HS is not attached to any line */
LIST_RC List_GetDefaultLine(IN u8 u8_HsNum, OUT u32* pu32_LineId);
/* returns list of lines the input HS is attached to */
LIST_RC List_GetLinesOfHS( IN u8 u8_HsNum, OUT u32 pu32_LineId[], INOUT u32* pu32_LineIdLen );
/* returns Call Forward Enabled / Diabled for the specified line */
LIST_RC List_GetCallForwardMode( IN u32 u32_LineID, OUT u8* pb_CFUncondEn, OUT u8* pb_CFNoAnsEn,OUT u8* pb_CFBusyEn );
/* adds default Line entry with 5 attached HS */
LIST_RC List_AddDefaultLine();
/* Checks Line Use status, if changed - updates data base and sends notification */
bool LineAndDiagnosticListUpdateLineUse(u8 LineId, E_CMBS_LINE_DIAG_STATUS eLineStatus);
/* Updates HS Use status in data base */
LIST_RC LineAndDiagnosticListUpdateHSUse(u8 LineId, u32 u32_HSNum, bool b_InUse);
/* Updates OK status in data base */
LIST_RC LineAndDiagnosticListUpdateOKStatus(u8 LineId, E_CMBS_LINE_DIAG_OK_STATUS e_DiagErrorStatus);
/* Updates Call Forward status in data base */
LIST_RC LineAndDiagnosticListUpdateCallFWD(u8 LineId, FIELD_ID FieldId, bool b_Status);
/* Updates Diagnostic Error status in data base */
LIST_RC LineAndDiagnosticListUpdateDiagnosticErrorStatus(u8 LineId, bool b_Status, E_CMBS_LINE_DIAG_ERROR_TYPE e_ErrorType, u8 u8_ErrorNumber);
/* Add "system" entry to Line and diagnostic status list */
LIST_RC List_AddLineAndDiagnosticSystemEntry();
/* Clears Line and HS use status fields in line and diagnostic status list entry */
LIST_RC List_ClearLineAndDiagnosticSystemEntry();
/* Return current line use status from line and diagnostic status list */
E_CMBS_LINE_DIAG_STATUS LineAndDiagnosticListGetLineUseStatus(u8 LineId);
/* Return Number of read and unread entries*/
LIST_RC List_GetSMSNumOfEntries(IN u32 u32_SMSId, OUT u32 * pu32_NumOfUnread, OUT u32 * pu32_NumOfRead);
/* Return current HS use status from line and diagnostic status list */
u32 LineAndDiagnosticListGetHSUseStatus(u8 LineId);
LIST_RC List_GetOutgoingCallsNumOfEntries(IN u32 u32_LineId, OUT u32* pu32_NumOfEntries);
/* Set Originating PP for List Change Details */
LIST_RC List_SetListChangeOriginatingHandset( IN LIST_TYPE ListType, IN u8 u8_HsNum);
/* Add List Change Details */
LIST_RC List_AddListChangeDetails( IN LIST_TYPE ListType, IN ST_APP_FACILITY_LCN_SUB_DETAILS *pst_LcnSubDetails);
/* Reset List Change Details for all lists */
LIST_RC List_ResetAllListChangeDetails( void );
/* Reset List Change Details for specific list */
LIST_RC List_ResetListChangeDetails( IN LIST_TYPE ListType);
/* Get List Change Details for specific list */
LIST_RC List_GetListChangeDetails( IN LIST_TYPE ListType, OUT ST_APP_FACILITY_LCN_DETAILS **pst_LcnDetails);
#endif /* __LISTS_APP_H__ */
/* End Of File *****************************************************************************************************************************/

View File

@@ -1,389 +0,0 @@
/*************************************************************************************************************
*** SQLiteWrapper
*** Clear C interface on top of SQLite 3
**
**************************************************************************************************************/
/*******************************************
Includes
********************************************/
#include <stdio.h>
#include "SQLiteWrapper.h"
#include "cmbs_platf.h"
#include "cfr_debug.h"
#ifdef __linux
#include <pthread.h>
#endif
/*******************************************
Defines
********************************************/
#define MUTEX g_Database.cs_mutex
#define DATABASE(x) g_Database.pDB_DataBase[x]
/*******************************************
Globals
********************************************/
ST_SQL_DB g_Database;
/*******************************************
Interface API
********************************************/
SQL_RC SQL_InitDatabase(void)
{
u32 u32_index = 0;
/* create mutex */
CFR_CMBS_INIT_CRITICALSECTION(MUTEX);
/* init database handles */
for (u32_index = 0; u32_index < SQL_MAX_SIMULTANEOUS_DB_ACCESS; ++u32_index)
{
DATABASE(u32_index) = NULL;
}
return SQL_RC_OK;
}
SQL_RC SQL_CloseDatabase(void)
{
u32 u32_index = 0;
/* close database handles */
for (u32_index = 0; u32_index < SQL_MAX_SIMULTANEOUS_DB_ACCESS; ++u32_index)
{
if(DATABASE(u32_index) != NULL){
sqlite3_close(DATABASE(u32_index));
DATABASE(u32_index) = NULL;
}
}
return SQL_RC_OK;
}
SQL_RC SQL_GetDatabaseHandle(void** ppv_DBHandle)
{
u32 u32_rc = 0;
u32 u32_index = 0;
/* Enter critical section */
CFR_CMBS_ENTER_CRITICALSECTION(MUTEX);
/* find free handle */
for (u32_index = 0; u32_index < SQL_MAX_SIMULTANEOUS_DB_ACCESS; ++u32_index)
{
if (DATABASE(u32_index) == NULL)
{
/* found! */
/* open Database */
u32_rc = sqlite3_open(LIST_ACCESS_DB_FILE, &DATABASE(u32_index));
if (u32_rc)
{
printf("Can't open database: %s\n", LIST_ACCESS_DB_FILE);
sqlite3_close(DATABASE(u32_index));
/* Leave critical section */
CFR_CMBS_LEAVE_CRITICALSECTION(MUTEX);
return SQL_RC_FAIL;
}
else
{
/* Leave critical section */
*ppv_DBHandle = DATABASE(u32_index);
CFR_CMBS_LEAVE_CRITICALSECTION(MUTEX);
return SQL_RC_OK;
}
}
}
printf("No more free DB handles\n");
/* Leave critical section */
CFR_CMBS_LEAVE_CRITICALSECTION(MUTEX);
return SQL_RC_FAIL;
}
SQL_RC SQL_ReturnDatabaseHandle(void* pv_DBHandle)
{
u32 u32_rc = 0;
u32 u32_index = 0;
/* Enter critical section */
CFR_CMBS_ENTER_CRITICALSECTION(MUTEX);
/* find the handle */
for (u32_index = 0; u32_index < SQL_MAX_SIMULTANEOUS_DB_ACCESS; ++u32_index)
{
if (DATABASE(u32_index) == pv_DBHandle)
{
/* found! */
/* close Database */
u32_rc = sqlite3_close(pv_DBHandle);
if (u32_rc)
{
printf("Can't close database!\n");
/* Leave critical section */
CFR_CMBS_LEAVE_CRITICALSECTION(MUTEX);
return SQL_RC_FAIL;
}
else
{
/* Leave critical section */
DATABASE(u32_index) = NULL;
CFR_CMBS_LEAVE_CRITICALSECTION(MUTEX);
return SQL_RC_OK;
}
}
}
printf("Unknown DB Handle %p\n", pv_DBHandle);
/* Leave critical section */
CFR_CMBS_LEAVE_CRITICALSECTION(MUTEX);
return SQL_RC_FAIL;
}
SQL_RC SQL_Execute(void* pv_DBHandle, const char* s_Query)
{
u32 u32_rc = 0;
sqlite3_stmt* pResult_res = NULL;
/* prepare query */
u32_rc = sqlite3_prepare(pv_DBHandle, s_Query, (s32)strlen(s_Query) + 1, &pResult_res, NULL);
if (u32_rc != SQLITE_OK)
{
printf("execute: prepare query failed\n");
return SQL_RC_FAIL;
}
if (!pResult_res)
{
printf("execute: query failed\n");
return SQL_RC_FAIL;
}
/* execute */
u32_rc = sqlite3_step(pResult_res);
/* deallocate statement */
sqlite3_finalize(pResult_res);
pResult_res = NULL;
/* check result */
switch (u32_rc)
{
case SQLITE_BUSY:
printf("execute: database busy\n");
return SQL_RC_FAIL;
case SQLITE_DONE:
case SQLITE_ROW:
return SQL_RC_OK;
case SQLITE_ERROR:
printf("Error %s\n", sqlite3_errmsg(pv_DBHandle));
return SQL_RC_FAIL;
case SQLITE_MISUSE:
printf("execute: database misuse\n");
return SQL_RC_FAIL;
default:
printf("execute: unknown result code\n");
}
return SQL_RC_FAIL;
}
SQL_RC SQL_Select(void* pv_DBHandle, const char* s_Query, bool b_PrepareMap, PST_COLUMN_MAP pst_pMap, void** ppv_SelectHandle)
{
u32 u32_rc = 0;
sqlite3_stmt* pResult_res = NULL;
/* prepare query */
u32_rc = sqlite3_prepare(pv_DBHandle, s_Query, (s32)strlen(s_Query) + 1, &pResult_res, NULL);
if (u32_rc != SQLITE_OK)
{
printf("get_result: prepare query failed\n");
return SQL_RC_FAIL;
}
if (pResult_res == NULL)
{
printf("get_result: query failed\n");
return SQL_RC_FAIL;
}
*ppv_SelectHandle = pResult_res;
/* prepare column map (if requested) */
if (b_PrepareMap)
{
u32 u32_index = 0;
const char* ps_ColumnName = NULL;
do
{
ps_ColumnName = sqlite3_column_name(pResult_res, u32_index);
if (ps_ColumnName == NULL)
break;
strcpy(pst_pMap->column_map[u32_index++], ps_ColumnName);
} while (TRUE);
pst_pMap->u32_NumOfColumns = u32_index;
}
return SQL_RC_OK;
}
SQL_RC SQL_FetchRow(void* pv_SelectHandle, bool* pb_NextRowAvailable)
{
u32 u32_rc = 0;
*pb_NextRowAvailable = FALSE;
/* execute the query */
u32_rc = sqlite3_step(pv_SelectHandle);
switch (u32_rc)
{
case SQLITE_ROW:
*pb_NextRowAvailable = TRUE;
return SQL_RC_OK;
case SQLITE_BUSY:
printf("execute: database busy\n");
return SQL_RC_OK;
case SQLITE_DONE:
return SQL_RC_OK;
case SQLITE_ERROR:
printf("General Error\n");
return SQL_RC_FAIL;
case SQLITE_MISUSE:
printf("execute: database misuse\n");
return SQL_RC_FAIL;
default:
printf("execute: unknown result code\n");
return SQL_RC_FAIL;
}
}
SQL_RC SQL_ReleaseSelectHandle(void* pv_SelectHandle)
{
u32 u32_rc = sqlite3_finalize(pv_SelectHandle);
if (u32_rc)
{
printf("Failed releasing select handle\n");
return SQL_RC_FAIL;
}
else
{
return SQL_RC_OK;
}
}
s32 GetIdxByName(const char* ps_Name, PST_COLUMN_MAP pst_pMap)
{
u32 u32_index;
for (u32_index = 0; u32_index < pst_pMap->u32_NumOfColumns; ++u32_index)
{
if (strcmp(ps_Name, pst_pMap->column_map[u32_index]) == 0)
{
/* found */
return u32_index;
}
}
return -1;
}
SQL_RC SQL_GetStrByIdx(void* pv_SelectHandle, u32 u32_index, const unsigned char** pps_value)
{
*pps_value = sqlite3_column_text(pv_SelectHandle, u32_index);
if (*pps_value == NULL)
{
*pps_value = (const unsigned char*)"";
}
return SQL_RC_OK;
}
SQL_RC SQL_GetStrByColumnName(void* pv_SelectHandle, const char* ps_ColumnName, PST_COLUMN_MAP pst_pMap, const unsigned char** pps_value)
{
s32 s32_index = GetIdxByName(ps_ColumnName, pst_pMap);
if (s32_index >= 0)
{
return SQL_GetStrByIdx(pv_SelectHandle, s32_index, pps_value);
}
printf("Column name lookup failure: %s", ps_ColumnName);
return SQL_RC_FAIL;
}
SQL_RC SQL_GetUValByIdx(void* pv_SelectHandle, u32 u32_index, u32* pu32_value)
{
*pu32_value = sqlite3_column_int(pv_SelectHandle, u32_index);
return SQL_RC_OK;
}
SQL_RC SQL_GetUVal64ByIdx(void* pv_SelectHandle, u32 u32_index, u64* pu64_value)
{
*pu64_value = sqlite3_column_int64(pv_SelectHandle, u32_index);
return SQL_RC_OK;
}
SQL_RC SQL_GetUValByColumnName(void* pv_SelectHandle, const char* ps_ColumnName, PST_COLUMN_MAP pst_pMap, u32* pu32_value)
{
s32 s32_index = GetIdxByName(ps_ColumnName, pst_pMap);
if (s32_index >= 0)
{
return SQL_GetUValByIdx(pv_SelectHandle, s32_index, pu32_value);
}
printf("Column name lookup failure: %s", ps_ColumnName);
return SQL_RC_FAIL;
}
SQL_RC SQL_GetUVal64ByColumnName(IN void* pv_SelectHandle, IN const char* ps_ColumnName, IN PST_COLUMN_MAP pst_pMap, OUT u64* pu64_value)
{
s32 s32_index = GetIdxByName(ps_ColumnName, pst_pMap);
if (s32_index >= 0)
{
return SQL_GetUVal64ByIdx(pv_SelectHandle, s32_index, pu64_value);
}
CFR_DBG_ERROR("Column name lookup failure: %s", ps_ColumnName);
return SQL_RC_FAIL;
}
SQL_RC SQL_GetIdOfLastInsert(void* pv_DBHandle, u32* pu32_Id)
{
*pu32_Id = (u32)sqlite3_last_insert_rowid(pv_DBHandle);
return SQL_RC_OK;
}
/* End Of File *****************************************************************************************************************************/

View File

@@ -1,143 +0,0 @@
/*************************************************************************************************************
*** SQLiteWrapper
*** Clear C interface on top of SQLite 3
**
**************************************************************************************************************/
#ifndef __SQLITE_WRAPPER_H__
#define __SQLITE_WRAPPER_H__
/*******************************************
Includes
********************************************/
#ifndef WIN32
#include <fcntl.h>
#else
#include "windows.h"
#endif
#include "cmbs_api.h"
#include "cfr_mssg.h"
#include "sqlite3.h"
/*******************************************
Defines
********************************************/
#ifdef CMBS_HOST_RO_FILE_SYSTEM // read only file system
#define LIST_ACCESS_DB_FILE "/tmp/LA_DB"
#else
#define LIST_ACCESS_DB_FILE "LA_DB"
#endif
#define SQL_MAX_COLUMNS 30
#define SQL_MAX_COLUMN_NAME_LEN 40
#define SQL_MAX_SIMULTANEOUS_DB_ACCESS 5
#define SQL_QUERY_MAX_LEN 1024
/*******************************************
Types
********************************************/
typedef struct
{
CFR_CMBS_CRITICALSECTION cs_mutex;
sqlite3* pDB_DataBase[SQL_MAX_SIMULTANEOUS_DB_ACCESS];
} ST_SQL_DB, * PST_SQL_DB;
typedef struct
{
char column_map[SQL_MAX_COLUMNS][SQL_MAX_COLUMN_NAME_LEN + 1];
u32 u32_NumOfColumns;
} ST_COLUMN_MAP, * PST_COLUMN_MAP;
typedef enum
{
SQL_RC_OK = 0,
SQL_RC_FAIL = 1
} SQL_RC;
/*******************************************
Interface API
********************************************/
/* Init DataBase */
SQL_RC SQL_InitDatabase(void);
/* Close DataBase */
SQL_RC SQL_CloseDatabase(void);
/* Get Database Handle */
SQL_RC SQL_GetDatabaseHandle(OUT void** ppv_DBHandle);
/* Return Database Handle */
SQL_RC SQL_ReturnDatabaseHandle(IN void* pv_DBHandle);
/* Send SQL Query */
SQL_RC SQL_Execute(IN void* pv_DBHandle, IN const char* s_Query);
/* SQL Select from a table
**
** After a call to Select function, the user should call to FetchRow one or more times (depends on how many rows exist
** and how many the user wants to read), and finally ReleaseSelectHandle
**
** Input Args:
** -----------------
** pv_DBHandle - pointer to DB
** s_Query - string SQL query
** b_PrepareMap - should a map be prepared
** if b_PrepareMap is non-zero,
** the function will return a mapping between column index and column name
** the map will be returned on pst_pMap - caller should allocate it!
**
** Output Args
** -------------------
** pst_pMap - pointer to map object
** ppv_SelectHandle - pointer to SelectHandle (to be used on subsequent GetRow calls - user is responsible to call to ReleaseSelectHandle !!!
** */
SQL_RC SQL_Select(IN void* pv_DBHandle, IN const char* s_Query, IN bool b_PrepareMap, OUT PST_COLUMN_MAP pst_pMap, OUT void** ppv_SelectHandle);
/* Order the Database to Get The next row, corresponds to the last select query performed
Input Arguments
--------------------
pv_SelectHandle - Handle to the appropriate select query
Output Argument
--------------------
b_NextRowAvailable - if non-zero, it means that there is another row, and the user may extract its data from the data base (using getstr, getuvalue,
etc. - depends on the data type)
*/
SQL_RC SQL_FetchRow(IN void* pv_SelectHandle, OUT bool* pb_NextRowAvailable);
SQL_RC SQL_ReleaseSelectHandle(IN void* pv_SelectHandle);
/* Get the (string) value in the current row, at the given column index */
SQL_RC SQL_GetStrByIdx(IN void* pv_SelectHandle, IN u32 u32_index, OUT const unsigned char** pps_value);
/* Get the (string) value in the current row, at the given column name */
SQL_RC SQL_GetStrByColumnName(IN void* pv_SelectHandle, IN const char* ps_ColumnName, IN PST_COLUMN_MAP pst_pMap, OUT const unsigned char** pps_value);
/* Get the (unsigned integer) value in the current row, at the given column index */
SQL_RC SQL_GetUValByIdx( IN void* pv_SelectHandle, IN u32 u32_index, OUT u32* pu32_value);
SQL_RC SQL_GetUVal64ByIdx(IN void* pv_SelectHandle, IN u32 u32_index, OUT u64* pu64_value);
/* Get the (unsigned integer) value in the current row, at the given column name */
SQL_RC SQL_GetUValByColumnName( IN void* pv_SelectHandle, IN const char* ps_ColumnName, IN PST_COLUMN_MAP pst_pMap, OUT u32* pu32_value);
SQL_RC SQL_GetUVal64ByColumnName(IN void* pv_SelectHandle, IN const char* ps_ColumnName, IN PST_COLUMN_MAP pst_pMap, OUT u64* pu64_value);
/* Get the Id of last insert */
SQL_RC SQL_GetIdOfLastInsert(IN void* pv_DBHandle, OUT u32* pu32_Id);
/*******************************************
Auxiliary
********************************************/
/* searches for the given name in the given map, and return index. return -1 when not found */
s32 GetIdxByName(IN const char* ps_Name, IN PST_COLUMN_MAP pst_pMap);
#endif /* __SQLITE_WRAPPER_H__ */
/* End Of File *****************************************************************************************************************************/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,295 +0,0 @@
################################################################################
#
# Copyright 2010 DSP Group
#
# Author : Ralf Stein, Dirk Kelbch
# Date : 09-Feb-2009
#
# History
# ----------------------------------------------------------------------------
# tcmc_asa 19-Apr-2011 13 add TESTDIR and testout
#
#################################################################################
.KEEP_STATE:
.SUFFIXES:
.SUFFIXES: .c .cpp .h .hpp .asm .s .inc .o .elf .d .dep .def .lex .y .ypp
libraries :=
symfiles :=
objects :=
linkpath :=
APPNAME := dectmngr
ifeq ($(OS),Windows_NT)
HOST_OS = WIN32
ifndef HOST_DLL_SUPPORT
HOST_DLL_SUPPORT :=1
endif
else
HOST_OS = UNIX
endif
ifdef SHELL
ifeq ($(notdir $(basename $(SHELL))),cmd)
### SHELL=cmd.exe
RM := del /Q
SL := \$(EMPTY)
else
### SHELL=sh
RM := rm -f
SL := /
endif
else
RM := del /Q
SL := \$(EMPTY)
endif
# To compile without CURL comment the next line
# SUOTA_CURL = true
################################################################################
#
# Directory
#
# define output,intermediate, object, project and base directory
#
ifeq ($(BASE),)
BASE :=.
else
CMBSDIR := ..
endif
PROJDIR := ..
TESTDIR :=.
OUTDIR := $(BASE)
OBJDIR := $(BASE)$(SL)obj
ifeq ($(LIBDIR),)
LIBDIR := $(PROJDIR)$(SL)lib
endif
# To block HAN_SERVER comment next line:
HAN_SERVER = true
# will compile the han demo + to FB
ifeq ($(DVF99),1)
HAN_SERVER_DEMO_CROSS_COMPILE = true
CMBS_COMA = true
ifndef LIBCOMA
LIBCOMA:=../tools/coma/libcoma-api
endif
ifndef LIBMEM
LIBMEM:=../comatools/tools/libcmem
endif
endif
CMBS_HOST := true
################################################################################
#
# C-Option definition
#
#
# -DHAN_SERVER_DEMO_CISCO
ifdef HAN_SERVER
coptions := -DHAN_SERVER
else
coptions :=
endif
CMBS_BUF_SIZE := 2560
# CMBS_BUF_SIZE must be a multiply of 20 (8 * 2.5) because CMBS_PARAM_MAX_LENGTH is CMBS_BUF_SIZE/2.5 and it must be multiply of 8
coptions += -DCMBS_API -DDNA_TAG -DCHECKSUM_SUPPORT -D_CONSOLE -DCMBS_BUF_SIZE=$(CMBS_BUF_SIZE) -DCATIQ_2_1 -DSUOTA_SDU_CHOPPING -DSUOTA_APP
# New host logging functions(with timestamp and module name) to all cmbs_tcx module to log a file.
coptions += -DTCXLOG_FILE
# this flag wil cause appcmbs.c to use appsuotafileentity instead of appsuotaentity
ifeq ($(SUOTA_USE_LOCAL_FILE),1)
coptions += -DSUOTA_USE_LOCAL_FILE_ENTITY
endif
# this flag wil cause hanserver.c to use %x in the payload instead of %d but will not effect the FUN_CONVERT
ifeq ($(HAN_PROTOCOL_PAYLOAD_AS_HEX),1)
coptions += -DHAN_PROTOCOL_PAYLOAD_AS_HEX
endif
# AVS AUDIO APP
ifeq ($(AVS_AUDIO_APP),1)
coptions += -DAVS_AUDIO_APP
ifeq ($(AVS_CALL_RELEASE),1)
coptions += -DAVS_CALL_RELEASE
ifdef AVS_CALL_RELEASE_TIMEOUT
coptions += -DAVS_CALL_RELEASE_TIMEOUT=$(AVS_CALL_RELEASE_TIMEOUT)
endif
endif
endif
coptions += -DPNCAP
################################################################################
#
# include
#
#
includes := -I. -I$(PROJDIR)$(SL)include -I$(PROJDIR)$(SL)cmbs -I$(PROJDIR)$(SL)frame$(SL)osl$(SL)inc
includes += -I$(BASE)$(SL)han$(SL)HAN_Client$(SL)src -I$(PROJDIR)$(SL)frame$(SL)osl$(SL)linux
includes += -I$(BASE)$(SL)han$(SL)HAN_Server
includes += -I$(PROJDIR)$(SL)libdect
################################################################################
objects := $(OBJDIR)/tcx_config.o
objects += $(OBJDIR)/tcx_keyb.o
objects += $(OBJDIR)/tcx_log.o
objects += $(OBJDIR)/tcx_hostlog.o
objects += $(OBJDIR)/tcx_eep.o
objects += $(OBJDIR)/tcx_util.o
objects += $(OBJDIR)/keyb_srv.o
objects += $(OBJDIR)/keyb_call.o
objects += $(OBJDIR)/keyb_swup.o
objects += $(OBJDIR)/keyb_facility.o
objects += $(OBJDIR)/keyb_data.o
objects += $(OBJDIR)/keyb_suota.o
objects += $(OBJDIR)/keyb_han.o
objects += $(OBJDIR)/keyb_uledata.o
objects += $(OBJDIR)/keyb_rtp.o
objects += $(OBJDIR)/cmbs_voipline.o
objects += $(OBJDIR)/cmbs_event.o
objects += $(OBJDIR)/cmbs_fifo.o
objects += $(OBJDIR)/keyb_crashdump.o
objects += $(OBJDIR)/inifile.o
objects += $(OBJDIR)/appAvsService.o
objects += $(OBJDIR)/appVoipService.o
objects += $(OBJDIR)/keyb_callrouter.o
objects += $(OBJDIR)/ubus.o
objects += $(OBJDIR)/dect_common.o
objects += $(OBJDIR)/libdect_api.o
ifdef AVS_AUDIO_APP
objects += $(OBJDIR)/appaudio.o
endif
ifeq ($(DVF99),1)
ifdef CMBS_PLUGIN
objects += $(OBJDIR)/cmbs_plugin.o
endif
endif
ifeq ($(HOST_OS),WIN32)
CMBS_LIBNAME := cmbs_host_win32.lib
CMBS_LIB := $(LIBDIR)$(SL)$(CMBS_LIBNAME)
ifeq ($(HOST_DLL_SUPPORT),1)
CMBS_LIB += $(LIBDIR)$(SL)cfr_core.lib
endif
else
CMBS_LIBNAME := cmbs_host_lnx
CMBS_LIB := $(LIBDIR)/lib$(CMBS_LIBNAME).a
linkpath += -L$(LIBDIR)
endif
################################################################################
# tcx core
ifeq ($(TC),XML)
include $(CORE)$(SL)tcx$(SL)tcx.mak
endif
################################################################################
# host cmbs application
include $(TESTDIR)$(SL)appcmbs$(SL)happcmbs.mak
################################################################################
# List Access
include $(TESTDIR)$(SL)ListAccess$(SL)ListAccess.mak
################################################################################
# framework
ifeq ($(HOST_OS),WIN32)
include $(PROJDIR)$(SL)frame$(SL)win32$(SL)frame.mak
else
include $(PROJDIR)/frame/linux/frame.mak
endif
################################################################################
# CMBS
include $(PROJDIR)$(SL)cmbs$(SL)cmbs.mak
################################################################################
################################################################################
# SUOTA
include $(TESTDIR)$(SL)suota$(SL)suota.mak
################################################################################
################################################################################
# HAN Server
ifdef HAN_SERVER
include $(TESTDIR)$(SL)han$(SL)HAN_Server$(SL)server.mak
endif
################################################################################
# OSL
include $(PROJDIR)$(SL)frame$(SL)osl$(SL)linux$(SL)OSL.mak
################################################################################
################################################################################
# PNCAP
include $(TESTDIR)$(SL)ext_src$(SL)pncap$(SL)src$(SL)pncap.mak
################################################################################
# rules
ifeq ($(HOST_OS),WIN32)
include win32.mak
else
include linux.mak
endif
ifdef CMBS_COMA
COMA_LIB_DIR:=$(LIBCOMA)/linux
coptions+= -DCMBS_COMA -DUSE_COMA_SOCK
LFLAGS+= -lrt -lcoma -pthread -L $(COMA_LIB_DIR) -L /usr/local/lib
ifeq ($(SUOTA_CURL),true)
LFLAGS+= -lgcrypt -lgnutls -lgpg-error -ltasn1
endif
endif
ifeq ($(NBS),1)
coptions += -DNBS=1
endif
ifdef CMBS_PLUGIN
coptions+= -DCMBS_PLUGIN
LFLAGS+= -rdynamic -ldl
endif
all: dirs $(OUTDIR)/$(APPNAME) $(OUTDIR)/libdect.so
dirs: $(OBJDIR) $(LIBDIR)
$(OBJDIR):
mkdir -p $(OBJDIR)
$(LIBDIR):
mkdir -p $(LIBDIR)
$(CMBS_LIB): $(cfr_objects) $(cmbs_objects)
$(ARCHIEVE) $(cfr_objects) $(cmbs_objects)
$(OBJDIR)/main.o: main.c
$(CC) $(CFLAGS) $(includes) $(coptions) -c -o $@ $<
$(OBJDIR)/tcx_cmbs_lib.o: main.c
$(CC) $(CFLAGS) $(includes) $(coptions) -DGEN_LIBDECT -c -o $@ $<
$(OBJDIR)/libdect_api.o: ../libdect/libdect_api.c
$(CC) $(CFLAGS) $(includes) $(coptions) -c -o $@ $<
clean:
$(RM) -fr $(OBJDIR) $(LIBDIR)
mframe:
$(LINK) -shared -nostartfiles -o libRTPFramePlugin.so mframe_plugin.c cfifo.c rtp_jpeg.c frame_jpeg.c -lrt -lmem -lcoma -lpthread -L$(LIBMEM) -I$(LIBMEM) -I$(LIBCOMA)/inc -I$(LIBCOMA) -DUSE_COMA_SOCK -DCMBS_FRAME_DATA_RT -DCMBS_BUF_SIZE=$(CMBS_BUF_SIZE) -L $(COMA_LIB_DIR) -I$(PROJDIR)$(SL)include -I$(PROJDIR)$(SL)cmbs
$(OUTDIR)/$(APPNAME): $(CMBS_LIB) $(OBJDIR)/main.o $(objects)
$(CC) $(CFLAGS) $(LFLAGS) -o $@ $^ $(LIBS) -L$(PROJDIR)/lib
$(OUTDIR)/libdect.so: $(CMBS_LIB) $(OBJDIR)/tcx_cmbs_lib.o $(objects)
$(CC) $(CFLAGS) $(LFLAGS) -shared -o $@ $^ $(LIBS) -L$(PROJDIR)/lib

View File

@@ -1,408 +0,0 @@
/*************************************************************************************************************
*** UDP Storage source
**
**************************************************************************************************************/
/*******************************************
Includes
********************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef WIN32
#include <windows.h>
#else
#include <pthread.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#endif
#include "UDPStorageServer.h"
#include "tcx_hostlog.h"
#define APP_STORAGE_INFO_PRINT(format, ...) tcx_WriteLog(UDP_STORAGE_MODULE, LOG_LEVEL_INFO, format, ##__VA_ARGS__ )
#define APP_STORAGE_TRACE_PRINT(format, ...) tcx_WriteLog(UDP_STORAGE_MODULE, LOG_LEVEL_TRACE, format, ##__VA_ARGS__ )
#define APP_STORAGE_WARNING_PRINT(format, ...) tcx_WriteLog(UDP_STORAGE_MODULE, LOG_LEVEL_WARNING, format, ##__VA_ARGS__ )
#define APP_STORAGE_ERROR_PRINT(format, ...) tcx_WriteLog(UDP_STORAGE_MODULE, LOG_LEVEL_ERROR, format, ##__VA_ARGS__ )
#define APP_STORAGE_RT_PRINT(format, ...) tcx_WriteLog(UDP_STORAGE_MODULE, LOG_LEVEL_REAL_TIME, format, ##__VA_ARGS__ )
#define APP_STORAGE_PRINT_DATA(pu8_Buffer, u16_Length) tcx_WriteLogData(UDP_STORAGE_MODULE, LOG_LEVEL_INFO, pu8_Buffer, u16_Length)
/*******************************************
Defines
********************************************/
// socket configuration
#define STORAGE_SERVER_UDP_PORT 3550
#define UDP_RX_MSG_MAX_LEN ( 1024 * 9 )
#define UDP_TX_MSG_MAX_LEN ( 1024 * 9 )
#define UDP_PROTOCOL_TOKEN_LEN 25
/*******************************************
Types
********************************************/
/*******************************************
Locals
********************************************/
/*******************************************
Auxiliary functions
********************************************/
// returns true if the input strings are equal, false otherwise
static bool StringCmp(const u8 *pu8_Str1, const char *pu8_Str2, u32 u32_Len)
{
return (strncmp((const char *)pu8_Str1, pu8_Str2, u32_Len) == 0) ? TRUE : FALSE;
}
static s32 FileSize(const char *sFilename)
{
u32 rc = 0;
FILE *fp = fopen(sFilename, "r");
if ( fp )
{
fseek(fp, 0L, SEEK_END);
rc = ftell(fp);
fclose(fp);
}
else
{
APP_STORAGE_INFO_PRINT("ERROR could not open file %s\n", sFilename);
}
return rc;
}
static E_CMBS_RC FileWrite(const char *sFilename, u32 u32_DataLen, const u8 *pu8_Data)
{
E_CMBS_RC rc = CMBS_RC_ERROR_GENERAL;
FILE *fp = fopen(sFilename, "w");
if ( fp )
{
if ( fwrite(pu8_Data, sizeof(u8), u32_DataLen, fp) > 0 )
{
rc = CMBS_RC_OK;
}
else
{
APP_STORAGE_INFO_PRINT("ERROR fwrite failed\n");
}
fclose(fp);
}
else
{
APP_STORAGE_INFO_PRINT("ERROR could not open file %s\n", sFilename);
}
return rc;
}
static E_CMBS_RC FileRead(const char *sFilename, u32 *pu32_DataLen, u8 *pu8_Data)
{
E_CMBS_RC rc = CMBS_RC_ERROR_GENERAL;
s32 s32_Filesize, num_of_bytes_read=0;
FILE *fp;
*pu32_DataLen = 0;
s32_Filesize = FileSize(sFilename);
fp = fopen(sFilename, "r");
if ( fp && s32_Filesize > 0)
{
num_of_bytes_read = fread(pu8_Data, sizeof(u8), s32_Filesize, fp);
if ( num_of_bytes_read > 0 )
{
*pu32_DataLen = num_of_bytes_read;
rc = CMBS_RC_OK;
}
else
{
APP_STORAGE_INFO_PRINT("ERROR fread failed\n");
}
}
else
{
APP_STORAGE_INFO_PRINT("ERROR could not open file %s\n", sFilename);
}
if(fp)
{
fclose(fp);
}
return rc;
}
static bool FileExist(const char *sFilename)
{
bool rc = FALSE;
FILE *fp = fopen(sFilename, "r");
if ( fp )
{
rc = TRUE;
fclose(fp);
}
return rc;
}
// handle RX messages
static void HandleMsg(const u8 *u8_RxData, u8 *u8_TxData, u32 *pu32_TxLen)
{
// UDP API definition
// ==============
// STORE <filename> <length decimal> <data raw binary>
// Response: STORE OK <filename> / STORE NOK <filename>
//
// LOAD <filename>
// Response: LOAD OK <filename> <length decimal> <data raw binary> / LOAD NOK <filename>
char sCmd[UDP_PROTOCOL_TOKEN_LEN], sFilename[UDP_PROTOCOL_TOKEN_LEN];
u32 u32_RxPos, u32_Bytes;
*pu32_TxLen = 0;
// read command
sscanf((const char *)u8_RxData, "%s %n ", sCmd, &u32_Bytes);
u32_RxPos = u32_Bytes;
if ( StringCmp((u8*)sCmd, "STORE", strlen("STORE")) )
{
u32 u32_DataLen;
E_CMBS_RC rc;
// read filename
sscanf((const char *)u8_RxData + u32_RxPos, "%s %n ", sFilename, &u32_Bytes);
u32_RxPos += u32_Bytes;
// read data len
sscanf((const char *)u8_RxData + u32_RxPos, "%u %n ", &u32_DataLen, &u32_Bytes);
u32_RxPos += u32_Bytes;
// write to file
rc = FileWrite(sFilename, u32_DataLen, u8_RxData + u32_RxPos);
// write response
*pu32_TxLen = sprintf((char*)u8_TxData, "%s", "STORE ");
if ( rc == CMBS_RC_OK )
{
*pu32_TxLen += sprintf((char*)u8_TxData + *pu32_TxLen, "%s", "OK ");
}
else
{
*pu32_TxLen += sprintf((char*)u8_TxData + *pu32_TxLen, "%s", "NOK ");
}
*pu32_TxLen += sprintf((char*)u8_TxData + *pu32_TxLen, "%s", sFilename);
}
else if ( StringCmp((u8*)sCmd, "LOAD", strlen("LOAD")) )
{
u32 u32_RawDataLen;
// read filename
sscanf((const char *)u8_RxData + u32_RxPos, "%s %n ", sFilename, &u32_Bytes);
u32_RxPos += u32_Bytes;
// write response
*pu32_TxLen = sprintf((char*)u8_TxData, "%s", "LOAD ");
if ( FileExist(sFilename) )
{
*pu32_TxLen += sprintf((char*)u8_TxData + *pu32_TxLen, "%s %s %u ", "OK ", sFilename, FileSize(sFilename));
// read file
FileRead(sFilename, &u32_RawDataLen, u8_TxData + *pu32_TxLen);
*pu32_TxLen += u32_RawDataLen;
}
else
{
*pu32_TxLen += sprintf((char*)u8_TxData + *pu32_TxLen, "%s %s", "NOK ", sFilename);
}
}
else
{
APP_STORAGE_INFO_PRINT("Unknown command %s ignored", sCmd);
}
}
// handles recieved messages
#ifdef WIN32
static DWORD WINAPI UDPStorageThread(LPVOID lpParam)
#else
static void* UDPStorageThread(void *arg)
#endif
{
u8 u8_RxData[UDP_RX_MSG_MAX_LEN];
u8 u8_TxData[UDP_TX_MSG_MAX_LEN];
u32 u32_TxLen;
// create UDP socket and listen
#ifdef WIN32
SOCKET s;
struct sockaddr_in server, si_other;
int slen, recv_len;
WSADATA wsa;
slen = sizeof(si_other);
// Initialize winsock
APP_STORAGE_INFO_PRINT("\nInitialising Winsock...");
if ( WSAStartup(MAKEWORD(2, 2), &wsa) != 0 )
{
APP_STORAGE_INFO_PRINT("Failed. Error Code : %d", WSAGetLastError());
exit(EXIT_FAILURE);
}
APP_STORAGE_INFO_PRINT("Initialized.\n");
// Create a socket
if ( (s = socket(AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET )
{
APP_STORAGE_INFO_PRINT("Could not create socket : %d", WSAGetLastError());
}
APP_STORAGE_INFO_PRINT("Socket created.\n");
// Prepare the sockaddr_in structure
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(STORAGE_SERVER_UDP_PORT);
// Bind
if ( bind(s, (struct sockaddr *)&server, sizeof(server)) == SOCKET_ERROR )
{
APP_STORAGE_INFO_PRINT("Bind failed with error code : %d", WSAGetLastError());
exit(EXIT_FAILURE);
}
puts("Bind done");
// keep listening for data
while (1)
{
APP_STORAGE_INFO_PRINT("Waiting for data...");
fflush(stdout);
// clear the buffer by filling null, it might have previously received data
memset(u8_RxData, '\0', sizeof(u8_RxData));
// try to receive some data, this is a blocking call
if ( (recv_len = recvfrom(s, u8_RxData, sizeof(u8_RxData), 0, (struct sockaddr *)&si_other, &slen)) == SOCKET_ERROR )
{
APP_STORAGE_INFO_PRINT("recvfrom() failed with error code : %d", WSAGetLastError());
exit(EXIT_FAILURE);
}
// print details of the client/peer and the data received
APP_STORAGE_INFO_PRINT("Received packet from %s:%d\n", inet_ntoa(si_other.sin_addr), ntohs(si_other.sin_port));
HandleMsg(u8_RxData, u8_TxData, &u32_TxLen);
// now reply the client
if ( sendto(s, u8_TxData, u32_TxLen, 0, (struct sockaddr *)&si_other, slen) == SOCKET_ERROR )
{
APP_STORAGE_INFO_PRINT("sendto() failed with error code : %d", WSAGetLastError());
exit(EXIT_FAILURE);
}
}
closesocket(s);
WSACleanup();
#else
int sockfd;
struct sockaddr_in servaddr,cliaddr;
socklen_t len;
UNUSED_PARAMETER(arg);
sockfd = socket(AF_INET,SOCK_DGRAM,0);
if(sockfd<0)
{
APP_STORAGE_INFO_PRINT("hanServer Error bind \n\n ");
exit(1);
}
bzero(& servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(STORAGE_SERVER_UDP_PORT);
if (bind(sockfd, (struct sockaddr *)&servaddr,sizeof(servaddr)) == -1 )
{
APP_STORAGE_INFO_PRINT("Bind failed with error code");
close(sockfd);
exit(1);
}
while ( 1 )
{
len = sizeof(cliaddr);
if ( recvfrom(sockfd, u8_RxData, sizeof(u8_RxData), 0, (struct sockaddr *)&cliaddr, &len) == -1 )
{
APP_STORAGE_INFO_PRINT("recvfrom() failed with error code");
close(sockfd);
exit(1);
}
HandleMsg(u8_RxData, u8_TxData, &u32_TxLen);
if(sendto(sockfd, u8_TxData, u32_TxLen, 0, (struct sockaddr *)&cliaddr, sizeof(cliaddr)) < 0)
{
APP_STORAGE_INFO_PRINT("sendto() failed with error code");
close(sockfd);
exit(1);
}
}
#endif
return 0;
}
/*******************************************
Storage Server protocol Mgr API
********************************************/
E_CMBS_RC UDPStorageMgr_Init(void)
{
// simply spawn UDP thread
#ifdef WIN32
DWORD dwThreadId;
CreateThread(
NULL, // default security attributes
0, // use default stack size
UDPStorageThread, // thread function name
0, // argument to thread function
0, // use default creation flags
&dwThreadId); // returns the thread identifier
if ( dwThreadId == 0 )
{
APP_STORAGE_INFO_PRINT("ERROR could not create thread!! ");
ExitProcess(3);
}
#else
int err;
pthread_t tid;
DECT_DBG("start thread UDPStorageThread...\n");
err = pthread_create(&tid, NULL, UDPStorageThread, NULL);
if ( err != 0 )
{
APP_STORAGE_INFO_PRINT("ERROR could not create thread!! ");
}
else
{
pthread_join(tid,NULL);
}
#endif
return CMBS_RC_OK;
}
//************* [End of file] ******************************************************************

View File

@@ -1,43 +0,0 @@
/*************************************************************************************************************
*** UDP Storage server
**
**************************************************************************************************************/
#ifndef __UDP_STORAGE_SRVR_H__
#define __UDP_STORAGE_SRVR_H__
// UDP API definition
// ==============
// STORE <filename> <length decimal> <data raw binary>
// Response: STORE OK <filename> / STORE NOK <filename>
//
// LOAD <filename>
// Response: LOAD OK <filename> <length decimal> <data raw binary> / LOAD NOK <filename>
/*******************************************
Includes
********************************************/
#include "cmbs_api.h"
/*******************************************
Defines
********************************************/
/*******************************************
Types
********************************************/
/*******************************************
Globals
********************************************/
/*******************************************
Storage Mgr API
********************************************/
E_CMBS_RC UDPStorageMgr_Init(void);
#endif /* __UDP_STORAGE_SRVR_H__ */
//************* [End of file] ******************************************************************

View File

@@ -1,550 +0,0 @@
/*!
* \file appSmartVoiceService.c
* \brief handle ULE internal PBX
* \Author moria
*
*
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "cmbs_api.h"
#include "appcall.h"
#include "cmbs_voipline.h"
#include "appCallRouter.h"
#include "tcx_hostlog.h"
#include "appCallRouter.h"
#include "appAvsService.h"
#include "cmbs_han.h"
#include "appHanMw.h"
#include "apphan.h"
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
#define APPSMARTVOICE_MAX_NUM_CALLS 10
#define APPSMARTVOICE_NO_CALL APPSMARTVOICE_MAX_NUM_CALLS
#define APPSMARTVOICE_NO_FREE_SLOTS 0xFFFFFFFF
u32 appSmartVoiceSrv_appID = 3; /* Holds appID of the current app*/
ST_SMARTVOICE_CALL_DATA G_st_SMARTVOICE_CallData[APPSMARTVOICE_MAX_NUM_CALLS];
//Forward declarations for CB functions
EXTAPP_RC appSmartVoice_OnCallEstablish(IN u32 cmbsCallID, IN const char* calledID, IN const char* callerHandset, IN u32 lineID, IN EXTVOIP_CODEC* codecList, IN u32 codecListLength);
EXTAPP_RC appSmartVoice_OnMergeCallResponse(IN u32 cmbsCallID);
EXTAPP_RC appSmartVoice_OnMediaChange(u32 u32_CallID, EXTVOIP_CODEC e_Codec);
EXTAPP_RC appSmartVoice_SetAudioChannel (IN u32 cmbsCallID, IN u32 mediaChannelID, IN EXTVOIP_CODEC codec);
void appSmartVoice_UpdateCallState(IN u32 cmbsCallID, IN EXTVOIP_CALL_STATE e_CallState);
u8 appSmartVoice_AssignNewCallId(void);
EXTAPP_RC appSmartVoice_OnCallRelease(IN u32 cmbsCallID, IN EXTVOIP_RELEASE_REASON releaseReason);
u32 appSmartVoice_OnDivertCall(ST_DIVERT_CALL_INFO *pst_DivertCallInfo);
EXTAPP_RC appSmartVoice_OnCallAnswer(IN u32 u32_cmbsCallID, IN EXTVOIP_CODEC codec);
EXTAPP_RC LoadSmartVoiceService (void)
{
u8 u8_Idx;
EXTAPP_RC res;
ST_APP_FNC_TABLE st_AppTable;
memset(&st_AppTable,0x00,sizeof(ST_APP_FNC_TABLE));
st_AppTable.fncSetupCall = appSmartVoice_OnCallEstablish;
st_AppTable.fncDisconnectCall = appSmartVoice_OnCallRelease;
st_AppTable.fncMediaChange = appSmartVoice_OnMediaChange;
st_AppTable.fncSetAudioChannel = appSmartVoice_SetAudioChannel;
st_AppTable.fncUpdateCallState = appSmartVoice_UpdateCallState;
st_AppTable.fncDivertOutgoingCall = appSmartVoice_OnDivertCall;
st_AppTable.fncAnswerCall = appSmartVoice_OnCallAnswer;
st_AppTable.LineName[0] = 0;
for (u8_Idx = 0; u8_Idx < APPSMARTVOICE_MAX_NUM_CALLS; u8_Idx++)
{
G_st_SMARTVOICE_CallData[u8_Idx].e_Call = E_APPCMBS_CALL_CLOSE;
G_st_SMARTVOICE_CallData[u8_Idx].e_Media = E_APPCMBS_MEDIA_CLOSE;
g_u32_CallChannelIDMap[u8_Idx] = APPSMARTVOICE_NO_FREE_SLOTS;
}
res = AppCallRouter_AppInit(appSmartVoiceSrv_appID, &st_AppTable);
return res;
}
u8 appSmartVoice_AssignNewCallId(void)
{
u8 u8_Idx;
for (u8_Idx = 0; u8_Idx < APPSMARTVOICE_MAX_NUM_CALLS; u8_Idx++)
{
if(G_st_SMARTVOICE_CallData[u8_Idx].e_Call == E_APPCMBS_CALL_CLOSE)
break;
}
return u8_Idx;
}
u8 appSmartVoice_GetCallId(IN u32 cmbsCallID)
{
u8 u8_Idx;
for (u8_Idx = 0; u8_Idx < APPSMARTVOICE_MAX_NUM_CALLS; u8_Idx++)
{
if(G_st_SMARTVOICE_CallData[u8_Idx].u32_CmbsCallId == cmbsCallID && G_st_SMARTVOICE_CallData[u8_Idx].e_Call != E_APPCMBS_CALL_CLOSE)
break;
}
return u8_Idx;
}
void appSmartVoice_UpdateCallState(IN u32 cmbsCallID, IN EXTVOIP_CALL_STATE e_CallState)
{
u8 u8_CallId = appSmartVoice_GetCallId(cmbsCallID);
if (u8_CallId == APPSMARTVOICE_NO_CALL)
{
printf("\n appSmartVoice_UpdateCallState: Invalid call id \n");
}
else
G_st_SMARTVOICE_CallData[u8_CallId].e_Call = e_CallState;
return;
}
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
EXTAPP_RC appSmartVoice_OnCallEstablish(IN u32 cmbsCallID, IN const char* calledID, IN const char* callerHandset, IN u32 lineID, IN EXTVOIP_CODEC* codecList, IN u32 codecListLength)
{
PST_SMARTVOICE_CALL_DATA pst_CallData;
ST_APPCALL_PROPERTIES st_Properties;
u8 u8_CallId = appSmartVoice_AssignNewCallId();
if (u8_CallId == APPSMARTVOICE_NO_CALL)
{
printf("\n appSmartVoice_OnCallEstablish: Error \n");
return EXTAPP_RC_FAIL;
}
pst_CallData = &G_st_SMARTVOICE_CallData[u8_CallId];
pst_CallData->u32_CmbsCallId = cmbsCallID;
printf("\n<<<<<< appSmartVoice_OnCallEstablish >>>>>>>\n");
if(!codecListLength)
pst_CallData->e_Codec = EXTVOIP_CODEC_PCM_LINEAR_NB;
else
pst_CallData->e_Codec = codecList[0];
extvoip_GetChannelSlotsForCall(cmbsCallID, pst_CallData->e_Codec, &(pst_CallData->u32_ChannelParameter));
pst_CallData->e_Media = E_APPCMBS_MEDIA_PEND;
//st_Properties.e_IE = CMBS_IE_CALLPROGRESS;
// st_Properties.psz_Value = "CMBS_CALL_PROGR_SETUP_ACK\0";
// appcall_ProgressCall(&st_Properties, 1, (u16)cmbsCallID, NULL);
st_Properties.e_IE = CMBS_IE_CALLPROGRESS;
st_Properties.psz_Value = "CMBS_CALL_PROGR_PROCEEDING\0";
appcall_ProgressCall(&st_Properties, 1, (u16)cmbsCallID, NULL);
// TBD: Establish channel to S2/IOT with call id, slots
pst_CallData->e_Call = E_APPCMBS_CALL_OUT_PROC;
strncpy(G_st_SMARTVOICE_CallData[u8_CallId].ch_CalledID, calledID, strlen(calledID));
return EXTAPP_RC_OK;
}
EXTAPP_RC appSmartVoice_OnCallRelease(IN u32 cmbsCallID, IN EXTVOIP_RELEASE_REASON releaseReason)
{
u8 u8_CallId = appSmartVoice_GetCallId(cmbsCallID);
if (u8_CallId == APPSMARTVOICE_NO_CALL)
{
printf("\n appSmartVoice_OnCallRelease: Call released \n");
return EXTAPP_RC_FAIL;
}
if (extvoip_CallMediaStop(cmbsCallID))
{
extvoip_FreeSlotsForCall(cmbsCallID,&(G_st_SMARTVOICE_CallData[u8_CallId].u32_ChannelParameter));
G_st_SMARTVOICE_CallData[u8_CallId].e_Call = E_APPCMBS_CALL_CLOSE;
G_st_SMARTVOICE_CallData[u8_CallId].e_Media = E_APPCMBS_MEDIA_PEND;
memset(G_st_SMARTVOICE_CallData[u8_CallId].ch_CalledID,'\0',sizeof(char)*CALL_PARTICIPANT_ID_MAX_LEN);
}
return EXTAPP_RC_OK;
}
//Hanserver/S2 application should invoke this API after contact resolution
u32 appSmartVoice_CallContact(u32 u32_CallId, char * CalledPartyName, char * psz_Digits)
{
u32 u32_ActiveCallID = AppCallRouter_DivertOutgoingCall(u32_CallId, CalledPartyName, psz_Digits) ;
return u32_ActiveCallID;
}
EXTAPP_RC appSmartVoice_OnMediaChange(u32 u32_CallID, EXTVOIP_CODEC e_Codec)
{
PST_CALL_OBJ pst_Call = _appcall_CallObjGetById(u32_CallID);
if(pst_Call)
{
// answer current call
extvoip_OnAnswerCall(u32_CallID, e_Codec);
if (extvoip_CallMediaStart(u32_CallID, (u16)(pst_Call->u32_ChannelParameter)) == TRUE)
{
return EXTAPP_RC_OK;
}
else
{
printf("\n appSmartVoice_OnMediaChange: ERROR \n ");
return EXTAPP_RC_FAIL;
}
}
else
{
printf("\n appSmartVoice_OnMediaChange: Invalid Call Id \n ");
return EXTAPP_RC_FAIL;
}
}
EXTAPP_RC appSmartVoice_SetAudioChannel (IN u32 cmbsCallID, IN u32 mediaChannelID, IN EXTVOIP_CODEC e_Codec)
{
u8 u8_CallId = appSmartVoice_GetCallId(cmbsCallID);
char ch_Param[CALL_PARTICIPANT_ID_MAX_LEN];
if (u8_CallId == APPSMARTVOICE_NO_CALL)
{
printf("\n appSmartVoice_SetAudioChannel: Error \n");
return EXTAPP_RC_FAIL;
}
G_st_SMARTVOICE_CallData[u8_CallId].u32_ChannelID = mediaChannelID;
// answer current call
extvoip_OnAnswerCall(cmbsCallID, e_Codec);
if (extvoip_CallMediaStart(cmbsCallID, G_st_SMARTVOICE_CallData[u8_CallId].u32_ChannelParameter))
{
// p_AudioApp_AudioStart((u8)pst_Call->u32_ChannelID, (u8 *)pst_Call->ch_CallerID);
G_st_SMARTVOICE_CallData[u8_CallId].e_Media = E_APPCMBS_MEDIA_ACTIVE;
memcpy(ch_Param, &G_st_SMARTVOICE_CallData[u8_CallId].ch_CalledID[1], sizeof(G_st_SMARTVOICE_CallData[u8_CallId].ch_CalledID) - 1);
app_HanMWAudioStart(cmbsCallID, ch_Param);
appSmartVoice_AddToCallChannelMap(mediaChannelID, u8_CallId);
return EXTAPP_RC_OK;
}
else
{
printf("\n appSmartVoice_SetAudioChannel: ERROR \n ");
return EXTAPP_RC_FAIL;
}
}
u32 appSmartVoice_OnDivertCall(ST_DIVERT_CALL_INFO *pst_DivertCallInfo)
{
u32 u32_ActiveCmbsCallId;
ST_APPCALL_PROPERTIES st_Properties[7];
PST_CALL_OBJ pst_Call;
char psz_Codecs[CMBS_AUDIO_CODEC_MAX * 2] = { 0 };
if(!pst_DivertCallInfo)
{
printf("\n appSmartVoice_OnDivertCall: Error \n");
return EXTAPP_RC_FAIL;
}
u32_ActiveCmbsCallId = pst_DivertCallInfo->cmbsCallID;
// get call object
pst_Call = _appcall_CallObjGetById(u32_ActiveCmbsCallId);
if ( !pst_Call )
{
printf("appSmartVoice_OnDivertCall : NO SUCH CALL WITH ID %d\n", u32_ActiveCmbsCallId);
return EXTAPP_RC_FAIL;
}
if(pst_DivertCallInfo->u8_NumOfCodecs)
{
u8 u8_Idx = 0;
sprintf(psz_Codecs, "%d",pst_DivertCallInfo->pu8_CodecsList[u8_Idx++]);
while(u8_Idx != pst_DivertCallInfo->u8_NumOfCodecs)
{
u8 u8_Len = strlen(psz_Codecs);
char psz_Temp[5]={0,};
sprintf(psz_Temp, ",%d",pst_DivertCallInfo->pu8_CodecsList[u8_Idx++]);
strcat(&psz_Codecs[u8_Len],psz_Temp);
}
}
else
{
// put codecs priority (WB, NB)
sprintf(psz_Codecs, "%d,%d", (CMBS_AUDIO_CODEC_PCM_LINEAR_WB), (CMBS_AUDIO_CODEC_PCM_LINEAR_NB));
}
st_Properties[0].e_IE = CMBS_IE_CALLERPARTY;
st_Properties[0].psz_Value = pst_DivertCallInfo->psz_CalledDigits;
st_Properties[1].e_IE = CMBS_IE_CALLEDPARTY;
st_Properties[1].psz_Value = pst_DivertCallInfo->psz_CallerID;/*h1 for testing*/
st_Properties[2].e_IE = CMBS_IE_MEDIADESCRIPTOR;
st_Properties[2].psz_Value = psz_Codecs;
st_Properties[3].e_IE = CMBS_IE_CALLERNAME;
st_Properties[3].psz_Value = "SMARTVOICE",
st_Properties[4].e_IE = CMBS_IE_LINE_ID;
st_Properties[4].psz_Value = "1\0";
st_Properties[5].e_IE = CMBS_IE_MELODY;
st_Properties[5].psz_Value = "1\0";
st_Properties[6].e_IE = CMBS_IE_RECONNECT_CALL;
st_Properties[6].psz_Value = "1\0";
pst_DivertCallInfo->cmbsCallID = appcall_EstablishCall(st_Properties, 7);
if(_appcall_CallObjGetById(pst_DivertCallInfo->cmbsCallID))
{
u8 u8_CallId = appSmartVoice_AssignNewCallId();
if(u8_CallId != APPSMARTVOICE_NO_CALL)
{
G_st_SMARTVOICE_CallData[u8_CallId].u32_CmbsCallId = pst_DivertCallInfo->cmbsCallID;
G_st_SMARTVOICE_CallData[u8_CallId].u32_ChannelParameter = pst_DivertCallInfo->u32_ChannelParameter;
G_st_SMARTVOICE_CallData[u8_CallId].e_Media = E_APPCMBS_MEDIA_PEND;
G_st_SMARTVOICE_CallData[u8_CallId].e_Call= E_APPCMBS_CALL_OUT_PROC;
return EXTAPP_RC_OK;
}
else
{
printf("\appSmartVoice_OnDivertCall: unable to assign new Smart Voice callId\n");
return EXTAPP_RC_FAIL;
}
}
else
{
printf("\appSmartVoice_OnDivertCall: unable to divert call\n");
return EXTAPP_RC_FAIL;
}
appSmartVoice_AddToCallChannelMap(pst_DivertCallInfo->u32_ChannelID,u32_ActiveCmbsCallId);
return pst_DivertCallInfo->cmbsCallID;
}
EXTAPP_RC appSmartVoice_OnCallAnswer(IN u32 u32_cmbsCallID, IN EXTVOIP_CODEC codec)
{
u32 u32_ChannelSlots;
u8 u8_CallId = appSmartVoice_GetCallId(u32_cmbsCallID);
if(u8_CallId == APPSMARTVOICE_NO_CALL)
{
printf("\appSmartVoice_OnCallAnswer: Invalid call Id\n");
return EXTVOIP_RC_FAIL;
}
extvoip_GetChannelSlotsForCall(u32_cmbsCallID,codec,&u32_ChannelSlots);
G_st_SMARTVOICE_CallData[u8_CallId].u32_ChannelParameter = u32_ChannelSlots;
if(u32_ChannelSlots != APPSMARTVOICE_NO_FREE_SLOTS)
{
if(appmedia_CallObjMediaStart(0,u32_cmbsCallID,u32_ChannelSlots,NULL))
G_st_SMARTVOICE_CallData[u8_CallId].e_Media = E_APPCMBS_MEDIA_ACTIVE;
}
else
{
printf("\n appSmartVoice_OnCallAnswer: No free slots for call %d \n", u8_CallId);
}
return EXTAPP_RC_OK;
}
void appSmartVoice_AddToCallChannelMap(u32 u32_ChannelId, u32 u32_cmbsCallId)
{
//Add Channel ID against appropriate call ID
g_u32_CallChannelIDMap[u32_cmbsCallId] = u32_ChannelId;
}
u32 appSmartVoice_GetCallIDfromChannelID(u32 u32_ChannelId)
{
u32 u32_CallID = 0xFFFF;
u8 u32_Index = 0;
//Get Call ID from Call ID and Channel ID map
for(u32_Index = 0;u32_Index < APPSMARTVOICE_MAX_NUM_CALLS; u32_Index++)
{
if(g_u32_CallChannelIDMap[u32_Index] == u32_ChannelId)
{
u32_CallID = u32_Index;
break;
}
}
return u32_CallID;
}
void appSmartVoice_ReleaseSmvCall(u32 u32_CallID)
{
//Release call for the call ID
extvoip_OnDisconnectCall(u32_CallID,EXTVOIP_REASON_NORMAL);
//Clear the channel call mapping
g_u32_CallChannelIDMap[u32_CallID] = APPSMARTVOICE_NO_FREE_SLOTS;
}
// Helper function to get Device ID from a string
static bool appSmv_ConvertDeviceIdFromStr(const u8 *pu8_Buffer, u16 *pu16_DeviceId)
{
u16 u16_DeviceId = 0;
u8 u8_DeviceIdNibbleStr, u8_Index, NumOfNibbles = sizeof(u16_DeviceId)*2;
for(u8_Index=0; u8_Index<NumOfNibbles; u8_Index++)
{
u8_DeviceIdNibbleStr = pu8_Buffer[u8_Index];
if (u8_DeviceIdNibbleStr >= '0' && u8_DeviceIdNibbleStr <= '9')
{
u16_DeviceId |= (u8_DeviceIdNibbleStr - '0') << (12 - u8_Index * 4);
}
else if (u8_DeviceIdNibbleStr >= 'A' && u8_DeviceIdNibbleStr <= 'F')
{
u16_DeviceId |= (u8_DeviceIdNibbleStr - 'A' + 0xA) << (12 - u8_Index * 4);
}
}
*pu16_DeviceId = u16_DeviceId;
return TRUE;
}
u8 appSmv_ConvertDeviceIdToStr(u16 u16_DeviceId, u8 *pu8_Buffer)
{
u8 u8_Index, u8_DeviceIdNibble = 0, NumOfNibbles = sizeof(u16_DeviceId)*2;
for(u8_Index=1; u8_Index<=NumOfNibbles; u8_Index++)
{
u8_DeviceIdNibble = u16_DeviceId & 0xF;
if (u8_DeviceIdNibble <= 9)
{
pu8_Buffer[NumOfNibbles-u8_Index] = u8_DeviceIdNibble + '0';
}
else if (u8_DeviceIdNibble >= 0xA && u8_DeviceIdNibble <= 0xF)
{
pu8_Buffer[NumOfNibbles-u8_Index] = u8_DeviceIdNibble + 'A' - 0xA;
}
u16_DeviceId >>= 4;
}
return NumOfNibbles;
}
static bool appSmv_ConvertUnitIdFromStr(const u8 *pu8_Buffer, u8 *pu8_UnitId)
{
u8 u8_UnitId = 0, u8_DeviceIdNibbleStr, u8_Index, NumOfNibbles = sizeof(u8_UnitId)*2;
for(u8_Index=0; u8_Index<NumOfNibbles; u8_Index++)
{
u8_DeviceIdNibbleStr = pu8_Buffer[u8_Index];
if (u8_DeviceIdNibbleStr >= '0' && u8_DeviceIdNibbleStr <= '9')
{
u8_UnitId |= (u8_DeviceIdNibbleStr - '0') << (4 - u8_Index * 4);
}
else if (u8_DeviceIdNibbleStr >= 'A' && u8_DeviceIdNibbleStr <= 'F')
{
u8_UnitId |= (u8_DeviceIdNibbleStr - 'A' + 0xA) << (4 - u8_Index * 4);
}
}
*pu8_UnitId = u8_UnitId;
return TRUE;
}
void appSmartVoice_MakeCall(u32 u32_ChannelId, const char* calledID)
{
//Find if Called ID belongs to Device
if (strlen(calledID) == 8 && calledID[0] == 'D')
{
u16 u16_DeviceId = 0;
u8 u8_UnitId = 1;
ST_HAN_VOICE_CALL_REQ_PARAMS st_CallReqParams;
st_CallReqParams.u32_FieldMask = 0;
//Parse the called ID to find Device and Unit IDs
appSmv_ConvertDeviceIdFromStr((const u8 *) &calledID[1], &u16_DeviceId);
if(calledID[5] == 'U')
{
appSmv_ConvertUnitIdFromStr((const u8 *) &calledID[6], &u8_UnitId);
}
//Send message to device
app_DsrHanVoiceCallReq(u16_DeviceId, u8_UnitId, &st_CallReqParams);
}
// If Handset
else if (strlen(calledID) == 2 && calledID[0] == 'h')
{
u32 u32_cmbsCallId;
char ch_CallerNum[30] = {0};
char ch_CallerName[30] = {0};
EXTVOIP_CODEC codecList[] = { EXTVOIP_CODEC_PCM_LINEAR_WB, EXTVOIP_CODEC_PCM_LINEAR_NB };
PST_SMARTVOICE_CALL_DATA pst_CallData;
//Establish call
extvoip_OnSetupCall(appSmartVoiceSrv_appID, 0, calledID, ch_CallerNum, ch_CallerName, codecList, sizeof(codecList)/sizeof(EXTVOIP_CODEC), (int *) &u32_cmbsCallId);
u8 u8_CallID = appSmartVoice_AssignNewCallId();
pst_CallData = &G_st_SMARTVOICE_CallData[u8_CallID];
pst_CallData->u32_CmbsCallId = u32_cmbsCallId;
pst_CallData->e_Call = E_APPCMBS_CALL_INC_RING;
appSmartVoice_AddToCallChannelMap(u32_ChannelId, u32_cmbsCallId);
}
}
void appSmartVoice_ReleaseCall(u32 u32_ChannelId)
{
u32 u32_CallID = appSmartVoice_GetCallIDfromChannelID(u32_ChannelId);
if (u32_CallID == APPSMARTVOICE_NO_CALL)
{
printf("\n appVoipService_AnswerCall: Error \n");
return;
}
extvoip_OnDisconnectCall(u32_CallID,EXTVOIP_REASON_NORMAL);
}
void appSmartVioce_DisplayString(PST_APPCALL_PROPERTIES pst_Properties, int n_Properties, u32 u32_ChannelId, char *psz_Display)
{
//Get call ID from channel ID
u32 u32_CallID = appSmartVoice_GetCallIDfromChannelID(u32_ChannelId);
appcall_DisplayString(pst_Properties, 1, (u16) u32_CallID, NULL);
}

View File

@@ -1,40 +0,0 @@
/*!
* \file appSmartVoiceService.h
* \brief
* \Author DSPG
*
* @(#) %filespec: appSmartVoiceService.h
*
*******************************************************************************/
// register callbacks
EXTAPP_RC LoadSmartVoiceService(void);
typedef struct
{
u32 u32_CmbsCallId; /*!< Call Instance to identify the call on CMBS */
ST_IE_CALLERPARTY st_CallerParty; /*!< Caller Party, incoming call CLI, outgoing call Handset number */
ST_IE_CALLEDPARTY st_CalledParty; /*!< Called Party, incoming call ringing mask, outgoing call to be dialled number */
char ch_CallerID[CALL_PARTICIPANT_ID_MAX_LEN]; /*!< buffer of caller party number */
char ch_CalledID[CALL_PARTICIPANT_ID_MAX_LEN]; /*!< buffer of called party number */
u32 u32_ChannelID; /*!< Channel ID to identify the media connection on CMBS */
u32 u32_ChannelParameter; /*!< Channel Parameter provides information about the parameter settings, e.g. IOM - used slots */
EXTVOIP_CODEC e_Codec; /*!< used codec */
u8 pu8_CodecsList[EXTVOIP_CODEC_MAX]; /*!< Codecs list */
u8 u8_CodecsLength; /*!< Codecs list length */
E_APPCMBS_CALL e_Call; /*!< call state */
E_APPCMBS_MEDIA e_Media; /*!< media entity state */
bool b_Incoming; /*!< TRUE for incoming calls, FALSE o/w */
} ST_SMARTVOICE_CALL_DATA, * PST_SMARTVOICE_CALL_DATA;
u32 g_u32_CallChannelIDMap[10];
void appSmartVoice_AddToCallChannelMap(u32 u32_ChannelID, u32 u32_CallID);
u32 appSmartVoice_CallContact(u32 u32_ChannelID, char * CalledPartyName, char * psz_Digits);
void appSmartVoice_ReleaseCall(u32 u32_cmbsCallID);
u32 appSmartVoice_GetCallIDfromChannelID(u32 u32_ChannelID);
void appSmartVoice_MakeCall(u32 u32_ChannelID, const char* calledID);
void appSmartVoice_ReleaseSmvCall(u32 u32_cmbsCallID);
void appSmartVioce_DisplayString(PST_APPCALL_PROPERTIES pst_Properties, int n_Properties, u32 u32_ChannelID, char *psz_Display);

View File

@@ -1,287 +0,0 @@
#include "cmbs_voipline.h"
#include "appCallRouter.h"
#include "ListsApp.h"
#include "string.h"
#include "stdlib.h"
#define APP_ROUTER_INFO_PRINT(format, ...) tcx_WriteLog(ROUTER_MODULE, LOG_LEVEL_INFO, format, ##__VA_ARGS__ )
#define APP_ROUTER_ERROR_PRINT(format, ...) tcx_WriteLog(ROUTER_MODULE, LOG_LEVEL_ERROR, format, ##__VA_ARGS__ )
#define APP_ROUTER_NO_APP 0xFFFFFFFF
ST_APP_FNC_TABLE g_st_AppTable[MAX_NUM_OF_APPS];
u32 g_u32_AppCallIDMap[APPCALL_CALLOBJ_MAX];
u32 AppCallRouter_GetAppForCallDivert(char *psz_Digits);
ST_CMBS_ROUTE_TABLE g_st_cmbs_route_table[MAX_NUM_OF_APPS] = {
/* app_id line_start max_line HS_Num Device_id digits ListenInCall*/
{3, -1, -1, NULL, NULL, "@", NULL }, //Smart Voice app
{5, -1, -1, NULL, NULL, "**", NULL }, //ULE internal PBX, ** route call via voice routing table
{5, -1, -1, NULL, NULL, "h*", "@" },
{5, -1, -1, NULL, NULL, "D*", "@" },
{5, -1, -1, NULL, "D*", NULL, NULL },
{0, 0, 0, "h*", "D*", "ANY", "@" } //Voipline app, default handler for call
};
// ========== CallRouter_Init ===========
/*!
\brief Callback function of all registered apps being called
\param[in] None
\return None
*/
void AppCallRouter_Init (void)
{
int index;
for(index = 0; index < APPCALL_CALLOBJ_MAX; index++)
g_u32_AppCallIDMap[index] = APP_ROUTER_NO_APP;
memset(g_st_AppTable, 0, sizeof(g_st_AppTable));
}
u8 AppCallRouter_AppInit (u32 u32_AppId, ST_APP_FNC_TABLE *pst_AppTable)
{
int i;
for (i=0;i<MAX_NUM_OF_APPS;i++)
{
if ((g_st_cmbs_route_table[i].u32_AppId == u32_AppId) && (g_st_cmbs_route_table[i].u32_AppId < MAX_NUM_OF_APPS))
{
APP_ROUTER_INFO_PRINT("g_st_AppTable %d 0x%x\n",i,g_st_AppTable[i]);
memcpy (&g_st_AppTable[g_st_cmbs_route_table[i].u32_AppId], pst_AppTable, sizeof(ST_APP_FNC_TABLE));
return EXTAPP_RC_OK;
}
}
return EXTAPP_RC_FAIL;
}
// ========== CallRouter_AppSelection ===========
/*!
\brief Selects matching app based on the condition provided in the ST_CMBS_ROUTE_TABLE
\param[in] u32_CallID CallID from CMBS
\param[in] psz_CalledId pointer parameter buffer
\param[in] psz_CallerHandset pointer parameter buffer
\param[in] u32_LineId expected lineID
\return < EXTAPP_RC >
*/
EXTAPP_RC AppCallRouter_AppSelection(IN u32 u32_CallID, IN const char* psz_CalledId, IN const char* psz_CallerHandset, IN u32 u32_LineId)
{
int i=0;
char input[50];
int res=-1;
printf("\n\n CallRouter_AppSelection \n");
for (i=0;i<MAX_NUM_OF_APPS;i++)
{
if (NULL == g_st_AppTable[g_st_cmbs_route_table[i].u32_AppId].fncSetupCall )
continue;
APP_ROUTER_INFO_PRINT("%s %d HS/D %s line %d\n",__FUNCTION__,i,psz_CallerHandset,u32_LineId);
if ( ((g_st_cmbs_route_table[i].u32_StartLineId != -1) && (g_st_cmbs_route_table[i].u32_MaxLineId != -1)) && ((u32_LineId >= g_st_cmbs_route_table[i].u32_StartLineId) && (u32_LineId<=g_st_cmbs_route_table[i].u32_MaxLineId)) )
{
APP_ROUTER_INFO_PRINT("\n -> line MAtching AppID %d %d\n",g_u32_AppCallIDMap[u32_CallID],g_st_cmbs_route_table[i].u32_AppId);
res = AppCallRouter_MakeCall(u32_CallID , g_st_cmbs_route_table[i].u32_AppId);
if(res != EXTAPP_RC_OK)
continue;
else
{
AppCallRouter_AddToAppCallMap(u32_CallID,g_st_cmbs_route_table[i].u32_AppId);
return EXTAPP_RC_OK;
}
}
if(psz_CallerHandset[0] == 'D')
{
if (g_st_cmbs_route_table[i].psz_DeviceId &&
((strcmp("D*",g_st_cmbs_route_table[i].psz_DeviceId) == 0) || (strcmp(psz_CallerHandset,g_st_cmbs_route_table[i].psz_DeviceId) == 0)))
{
APP_ROUTER_INFO_PRINT("\n -> Dev MAtching AppID %d %d\n",g_u32_AppCallIDMap[u32_CallID],g_st_cmbs_route_table[i].u32_AppId);
res = AppCallRouter_MakeCall(u32_CallID,g_st_cmbs_route_table[i].u32_AppId);
if(res != EXTAPP_RC_OK)
continue;
else
{
AppCallRouter_AddToAppCallMap(u32_CallID,g_st_cmbs_route_table[i].u32_AppId);
return EXTAPP_RC_OK;
}
}
}
else
{
sprintf(input,"H%s",psz_CallerHandset);
if(g_st_cmbs_route_table[i].psz_HandsetNum &&
((strcmp("H*",g_st_cmbs_route_table[i].psz_HandsetNum) == 0) || (strcmp(g_st_cmbs_route_table[i].psz_HandsetNum,input) == 0)))
{
APP_ROUTER_INFO_PRINT("\n -> HS MAtching AppID %d %d\n",g_u32_AppCallIDMap[u32_CallID],g_st_cmbs_route_table[i].u32_AppId);
res = AppCallRouter_MakeCall(u32_CallID,g_st_cmbs_route_table[i].u32_AppId);
if(res != EXTAPP_RC_OK)
continue;
else
{
AppCallRouter_AddToAppCallMap(u32_CallID,g_st_cmbs_route_table[i].u32_AppId);
return EXTAPP_RC_OK;
}
}
}
if((g_st_cmbs_route_table[i].psz_Digits && strcmp(psz_CalledId, g_st_cmbs_route_table[i].psz_Digits) == 0 ) ||
((g_st_cmbs_route_table[i].u32_AppId == 3) && (psz_CalledId[0] == g_st_cmbs_route_table[i].psz_Digits[0])))
{
APP_ROUTER_INFO_PRINT("\n -> Dig MAtching AppID %d %d\n",g_u32_AppCallIDMap[u32_CallID],g_st_cmbs_route_table[i].u32_AppId);
res = AppCallRouter_MakeCall(u32_CallID,g_st_cmbs_route_table[i].u32_AppId);
if(res != EXTAPP_RC_OK)
continue;
else
{
AppCallRouter_AddToAppCallMap(u32_CallID,g_st_cmbs_route_table[i].u32_AppId);
return EXTAPP_RC_OK;
}
}
}
APP_ROUTER_ERROR_PRINT("\n -> NOT MAtching with App cond, call id %d\n", u32_CallID);
return EXTAPP_RC_FAIL;
}
// ========== AppCallRouter_MakeCall ===========
/*!
\brief Calls the Setup Call API of the selected App
\param[in] u32_CallID CallID from CMBS
\return < EXTVOIP_RC >
*/
EXTVOIP_RC AppCallRouter_MakeCall(u32 u32_CallID, u32 u32_AppId)
{
PST_CALL_OBJ pstCall;
EXTVOIP_RC rc = CMBS_RC_OK;
EXTVOIP_CODEC codecs[CMBS_AUDIO_CODEC_MAX] = {0};
if ((u32_AppId == -1) || (u32_AppId >= MAX_NUM_OF_APPS))
return EXTVOIP_RC_FAIL;
// get call object
pstCall = _appcall_CallObjGetById(u32_CallID);
if(!pstCall)
return EXTVOIP_RC_FAIL;
// make codecs list
if(pstCall->u8_CodecsLength)
{
int i = 0;
for(i=0;i<pstCall->u8_CodecsLength;i++)
codecs[i] = cmbsCodec2VoipCodec(pstCall->pu8_CodecsList[i]);
}
APP_ROUTER_INFO_PRINT("\n CallRouter_MakeCall %d 0x%x\n",u32_AppId,(unsigned int *)(g_st_AppTable[u32_AppId]).fncSetupCall);
// call SetupCall function
if((g_st_AppTable[u32_AppId]).fncSetupCall)
rc = ((g_st_AppTable[u32_AppId]).fncSetupCall)(u32_CallID, pstCall->ch_CalledID, pstCall->ch_CallerID, pstCall->u8_LineId, codecs, pstCall->u8_CodecsLength);
if(rc != EXTVOIP_RC_OK)
return EXTVOIP_RC_FAIL;
return EXTVOIP_RC_OK;
}
void AppCallRouter_AddToAppCallMap(u32 u32_CallID, u32 u32_AppId)
{
if(u32_CallID < APPCALL_CALLOBJ_MAX)
g_u32_AppCallIDMap[u32_CallID] = u32_AppId;
return;
}
u32 AppCallRouter_DivertOutgoingCall( u32 u32_CallId, char *CalledPartyName, char *psz_Digits )
{
u32 u32_AppId, u32_ActiveCallID;
char psz_CallerID[CALL_PARTICIPANT_ID_MAX_LEN] = {0,};
EXTAPP_RC rc = EXTAPP_RC_FAIL;
ST_DIVERT_CALL_INFO st_DivertCallInfo = {0,};
EXTVOIP_CODEC codecs[EXTVOIP_CODEC_MAX] = {0};
PST_CALL_OBJ pst_ActiveCall = _appcall_CallObjGetById(u32_CallId);
if(!pst_ActiveCall)
{
printf("\n AppCallRouter_DivertOutgoingCall: Error");
return rc;
}
u32_AppId = AppCallRouter_GetAppForCallDivert(psz_Digits /*, u32_LineId*/);
if (u32_AppId == MAX_NUM_OF_APPS)
{
printf("AppCallRouter_DivertOutgoingCall: No App for Call Divert");
return rc;
}
// make codecs list
if(pst_ActiveCall->u8_CodecsLength)
{
int i = 0;
for(i=0;i<pst_ActiveCall->u8_CodecsLength;i++)
codecs[i] = cmbsCodec2VoipCodec(pst_ActiveCall->pu8_CodecsList[i]);
}
st_DivertCallInfo.cmbsCallID = u32_CallId;
st_DivertCallInfo.psz_CalledID = CalledPartyName;
st_DivertCallInfo.psz_CalledDigits = psz_Digits;
if(pst_ActiveCall->ch_CallerID[0] != 'D')
{
psz_CallerID[0]='h';
strcpy(psz_CallerID+1,pst_ActiveCall->ch_CallerID);
st_DivertCallInfo.psz_CallerID = psz_CallerID;
}
else
{
st_DivertCallInfo.psz_CallerID = pst_ActiveCall->ch_CallerID;
}
st_DivertCallInfo.u32_LineId = pst_ActiveCall->u8_LineId;
st_DivertCallInfo.pu8_CodecsList = codecs;
st_DivertCallInfo.u8_NumOfCodecs = pst_ActiveCall->u8_CodecsLength;
u32_ActiveCallID = g_st_AppTable[u32_AppId].fncDivertOutgoingCall(&st_DivertCallInfo);
if(rc == EXTAPP_RC_OK)
AppCallRouter_AddToAppCallMap(st_DivertCallInfo.cmbsCallID,u32_AppId);
return u32_ActiveCallID;
}
u32 AppCallRouter_GetAppForCallDivert(char *psz_Digits)
{
int i;
for(i=0;i<MAX_NUM_OF_APPS;i++)
{
if(psz_Digits && g_st_cmbs_route_table[i].psz_Digits)
{
if (((psz_Digits[0] == 'D') && (strcmp("D*", g_st_cmbs_route_table[i].psz_Digits) == 0 )) ||
((psz_Digits[0] == 'h') && (strcmp("h*", g_st_cmbs_route_table[i].psz_Digits) == 0 )) ||
(strcmp(psz_Digits,g_st_cmbs_route_table[i].psz_Digits) == 0) ||
((psz_Digits[0] != 'D') && (psz_Digits[0] != 'h') && (strcmp("ANY", g_st_cmbs_route_table[i].psz_Digits) == 0))
)
return g_st_cmbs_route_table[i].u32_AppId;
}
}
return MAX_NUM_OF_APPS;
}

View File

@@ -1,188 +0,0 @@
#ifndef APPCALLROUTER
#define APPCALLROUTER
#include "cmbs_voip_api.h"
#include "ListsApp.h"
#define MAX_NUM_OF_APPS 6
typedef enum
{
EXTAPP_RC_OK,
EXTAPP_RC_FAIL
} EXTAPP_RC;
typedef struct
{
u32 cmbsCallID;
char *psz_CallerID;
char *psz_CalledID;
char *psz_CalledDigits;
u16 u16_HsNum;
u16 u16_DeviceId;
u32 u32_LineId;
EXTVOIP_CODEC *pu8_CodecsList;
u8 u8_NumOfCodecs;
u32 u32_ChannelID; /*!< Channel ID to identify the media connection on CMBS */
u32 u32_ChannelParameter; /*!< Channel Parameter provides information about the parameter settings, e.g. IOM - used slots */
}ST_DIVERT_CALL_INFO;
// Make a call
typedef EXTAPP_RC (*app_SetupCallFunc)(IN u32 cmbsCallID, IN const char* calledID, IN const char* callerHandset, IN u32 lineID, IN EXTVOIP_CODEC* codecList, IN u32 codecListLength);
// Proceeding
typedef EXTAPP_RC (*app_ProceedingCallFunc)(IN u32 cmbsCallID);
// Alerting
typedef EXTAPP_RC (*app_AlertingCallFunc)(IN u32 cmbsCallID);
// Answer call
typedef EXTAPP_RC (*app_AnswerCallFunc)(IN u32 cmbsCallID, IN EXTVOIP_CODEC codec);
// Release active call
typedef EXTAPP_RC (*app_DisconnectCallFunc)(IN u32 cmbsCallID, IN EXTVOIP_RELEASE_REASON disconnectReason);
// Release active call ack
typedef EXTAPP_RC (*app_DisconnectCallDoneFunc)(IN u32 cmbsCallID);
// Hold call
typedef EXTAPP_RC (*app_HoldCallFunc)(IN u32 cmbsCallID);
// Hold call ack
typedef EXTAPP_RC (*app_HoldCallAckFunc)(IN u32 cmbsCallID);
// Resume call
typedef EXTAPP_RC (*app_ResumeCallFunc)(IN u32 cmbsCallID);
// Resume call ack
typedef EXTAPP_RC (*app_ResumeCallAckFunc)(IN u32 cmbsCallID);
// Conference call
typedef EXTAPP_RC (*app_ConferenceCallFunc)(IN u32 cmbsCallID, IN u32 cmbsCallID2);
// Change codec
typedef EXTAPP_RC (*app_MediaChangeFunc)(IN u32 cmbsCallID, IN EXTVOIP_CODEC codec);
// Change codec ack
typedef EXTAPP_RC (*app_MediaChangeAckFunc)(IN u32 cmbsCallID, IN EXTVOIP_CODEC codec);
// Send digits
typedef EXTAPP_RC (*app_SendDigitsCallFunc)(IN u32 cmbsCallID, IN char* digits);
// Merge call response
typedef EXTAPP_RC (*app_MergeCallResFunc)(IN u32 cmbsCallID);
/*
* Helpers
*/
// Retrieve call caller id
typedef EXTAPP_RC (*app_GetCallerIDFunc)(IN u32 cmbsCallID, OUT char* callerID);
// Retrieve call called id
typedef EXTAPP_RC (*app_GetCalledIDFunc)(IN u32 cmbsCallID, OUT char* calledID);
/*
* Audio config
*/
// Set audio channel
typedef EXTAPP_RC (*app_SetAudioChannelFunc)(IN u32 cmbsCallID, IN u32 mediaChannelID, IN EXTVOIP_CODEC codec);
/*
* Contacts sync
*/
// Retrieve contacts size
typedef u32 (*app_GetContactsCountFunc)();
// Retrieve contact entry
typedef EXTAPP_RC (*app_GetContactEntryFunc)(IN u32 itemid, OUT char* firstName, OUT char* lastName, OUT char* number, OUT u32* isOnline);
//Divert outgoing call
typedef u32 (*app_DivertOutgoingCallFunc)(IN ST_DIVERT_CALL_INFO *pst_DivertCallInfo );
typedef void (*app_UpdateCallStateFunc)(IN u32 cmbsCallID, IN EXTVOIP_CALL_STATE e_CallState);
typedef struct app_FnTable_s
{
// line ID
//u32 LineID;
char LineName[LIST_NAME_MAX_LEN];
// function for call setup
app_SetupCallFunc fncSetupCall;
// function for call proceeding
app_ProceedingCallFunc fncProceedingCall;
// function for call proceeding
app_AlertingCallFunc fncAlertingCall;
// function for call answer
app_AnswerCallFunc fncAnswerCall;
// function for call disconnect
app_DisconnectCallFunc fncDisconnectCall;
// function for call disconnect done
app_DisconnectCallDoneFunc fncDisconnectCallDone;
// function for call hold
app_HoldCallFunc fncHoldCall;
// function for call hold acknowledge
app_HoldCallAckFunc fncHoldCallDone;
// function for call resume
app_ResumeCallFunc fncResumeCall;
// function for call conference
app_ConferenceCallFunc fncConferenceCall;
// function for call resume acknowledge
app_ResumeCallAckFunc fncResumeCallDone;
// function for call codec change
app_MediaChangeFunc fncMediaChange;
// function for call codec change acknowledge
app_MediaChangeAckFunc fncMediaChangeAck;
// function to send digits
app_SendDigitsCallFunc fncSendDigits;
// function to retrieve caller ID
app_GetCallerIDFunc fncGetCallerID;
// function to retrieve called ID
app_GetCalledIDFunc fncGetCalledID;
// function to set audio channel
app_SetAudioChannelFunc fncSetAudioChannel;
// function to retrieve cotacts size
app_GetContactsCountFunc fncContactsCount;
// function to retrieve contact entry
app_GetContactEntryFunc fncContactsEntry;
// function for merge call response
app_MergeCallResFunc fncMergeCallRes;
// function to Divert Outgoing Calls
app_DivertOutgoingCallFunc fncDivertOutgoingCall;
// function to update call state
app_UpdateCallStateFunc fncUpdateCallState;
} ST_APP_FNC_TABLE;
typedef struct
{
u32 u32_AppId;
u32 u32_StartLineId;
u32 u32_MaxLineId;
const char *psz_HandsetNum;
const char *psz_DeviceId;
const char *psz_Digits;
const char *psz_ListenInCall;
}ST_CMBS_ROUTE_TABLE;
void AppCallRouter_Init (void);
void AppCallRouter_AddToAppCallMap(u32 u32_CallID, u32 u32_AppId);
EXTAPP_RC AppCallRouter_AppSelection(IN u32 u32_CallID, IN const char* psz_CalledId, IN const char* psz_CallerHandset, IN u32 u32_LineId);
u8 AppCallRouter_AppInit (u32 u32_AppId, ST_APP_FNC_TABLE *pst_AppTable);
EXTVOIP_RC AppCallRouter_MakeCall(u32 u32_CallID, u32 u32_AppId);
EXTAPP_RC AppCallRouter_AnswerCall(u32 u32_CallID);
u32 AppCallRouter_DivertOutgoingCall( u32 u32_CallId, char *CalledPartyName, char *psz_Digits );
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,210 +0,0 @@
/*!
* \file appHanMW.h
* \brief HAN MW API
* \author HAN Team
*
*
*******************************************************************************/
#if !defined( _APPHANMW_H )
#define _APPHANMW_H
#include "cmbs_han.h"
#include "appcall.h"
E_CMBS_RC app_HanMwMsgSend_ImplicitLinkSetup (u16 u16_RequestId, u16 u16_DestDeviceId, ST_IE_HAN_MSG_CTL* pst_HANMsgCtl , ST_IE_HAN_MSG * pst_HANMsg );
E_CMBS_RC app_HanMwRawMsgSend_ImplicitLinkSetup (u16 u16_RequestId, u16 u16_DestDeviceId, ST_IE_HAN_MSG_CTL* pst_HANMsgCtl , ST_IE_DATA * pst_RawMsg );
void app_HanMWDeleteDeviceViaQueue(u16 u16_deviceId, bool b_BlackList);
void app_HanMWInitialize(void);
void app_HanMWReleaseLinkRequest(u16 u16_deviceId);
void app_HanMWHwVersionGet(void);
void app_HanMWSwVersionGet(void);
void app_HanMWGetNumOfFunMsgInQ(u16 u16_deviceId);
void app_HanMWClearFunMsgQ(u16 u16_deviceId);
void app_HanMWGetMaxNumOfDevices(void);
void app_HanMWGetNumOfRegDevices(void);
void app_HanMWOnMergeCallsResponse(ST_IE_RESPONSE st_Response, u16 u16_CallId, u8 *pu8_FirstParticipant, u8 *pu8_SecondParticipant);
void app_HanMWOnCallReleaseResponse(u16 u16_CallId);
void app_HanMWReleaseCall(u16 u16_CallId);
void app_HanMWOnCallReleaseInd(u16 u16_CallId);
void app_HanMWOnCallEstablishInd(u16 u16_CallId, u8 *pu8_Participant);
void app_HanMWOnDeviceReleasedFromCall(u16 u16_CallId, u16 u16_DeviceId);
void app_HanMWOnHsReleasedFromCall(u16 u16_CallId, u8 u8_HsNum);
void app_HanMWDivertCall(u32 u32_ChannelId, char *pNum, char *pName);
void app_HanMWAudioStart(u32 u32_AudioLineId, char *pParam);
void app_HanMwGetActiveCallsInfo(void);
void app_HanMwSmvCallRelease(u32 u32_ChannelId);
void app_HanMwAudioStart(u32 u32_ChannelId);
void app_HanMWAudioStop(u32 u32_ChannelId);
void app_HanMWAudioEnd(u32 u32_ChannelId);
void app_HanMwAudioProgress(u32 u32_ChannelId);
void app_HanMwQueryEnd(u32 u32_ChannelId);
void app_HanMwMakeCall(u32 u32_ChannelId, char *CalledId);
void app_HanMWOnActiveCallsInfoGetRes(ST_ALLACTIVECALLSINFO st_AllActiveCalls);
void app_HanMwOnSmvCallReleaseRes(u32 u32_ChannelId);
void app_HanMWOnAudioStart(u32 u32_ChannelId, const u8 *pu8_DevUnitID);
void app_HanMWOnAudioStop(const u8 *pu8_DevUnitID);
void app_HanMWOnAudioEnd(const u8 *pu8_DevUnitID);
void app_HanMWSetNEMoMode(char *pMode);
void app_HanMWOnSetNEMoModeRes(bool b_status);
void app_HanMWFirmwareUpdateStart(char *pFileName,u32 u32_PacketSize,u32 u32_RestoreParam);
void app_HanMWOnFirmwareUpdateStartRes(bool b_status);
void app_HanMWOnFirmwareUpdateEndRes(bool b_status);
void app_HanMWOnTargetUpSetDefaults(void);
void app_HanMWDataCallRelease(u8 u8_SessionId);
void app_HanMWDataCallSend(u8 u8_SessionId, u16 u16_DataLen, u8* pu8_Data);
void app_HanMWOnDataCallSendRes(u8 u8_SessionId, u8 u8_Status);
void app_HanMWOnDataCallReleaseInd(u8 u8_SessionId, u8 u8_Status);
void app_HanMWOnDataCallSessionCreatedInd(u16 u16_AppId, u8 u8_SessionId, u16 u16_DeviceId);
void app_HanMWOnDataCallReceivedDataInd(u8 u8_SessionId, u16 u16_DataLen, u8* pu8_Data);
typedef void (*t_fptrHANClientOnRegClosed)( E_CMBS_EVENT_ID , void * );
typedef void (*t_fptrHANClientOnReadDeviceTableRes)( void * );
typedef void (*t_fptrHANClientOnReadDeviceSubInfoRes)( void * );
typedef u32 (*t_fptrHANClientOnMsgRecv)( void * , ST_IE_HAN_MSG *);
typedef u32 (*t_fptrHANClientOnDeviceFullDeleted)( u16, ST_IE_RESPONSE, u16 );
typedef u32 (*t_fptrHANClientOnDeviceRegistered)( u16 );
typedef u32 (*t_fptrHANClientOnDevicePartialDeleted)( u16 );
typedef u32(*t_fptrHANClientOnOpenRegRes)(int);
typedef u32(*t_fptrHANClientOnCloseRegRes)(int);
typedef u32(*t_fptrHANClientOnHandsetRegistered)(u8);
typedef u32(*t_fptrHANClientOnTargetUpIndication)();
typedef u32(*t_fptrHANClientOnEepParamGetRes)(bool, u8 *, u16,u8 *);
typedef u32(*t_fptrHANClientOnEepParamSetRes)(bool, u8 *);
typedef u32(*t_fptrHANClientOnEepAreaGetRes)(bool, u32, u16, u8 *);
typedef u32(*t_fptrHANClientOnEepAreaSetRes)(bool);
typedef u32(*t_fptrHANClientOnProdParamGetRes)(bool, u8 *, u16,u8 *);
typedef u32(*t_fptrHANClientOnProdParamSetRes)(bool, u8 *);
typedef u32(*t_fptrHANClientOnRamAreaGetRes)(bool, u32, u16, u8 *);
typedef u32(*t_fptrHANClientOnRamAreaSetRes)(bool);
typedef u32(*t_fptrHANClientOnEepromSizeGetRes)(bool, u32);
typedef u32(*t_fptrHANClientOnHwVersionGetRes)(bool, u8 *, u8 *, u8 *, u8 *);
typedef u32(*t_fptrHANClientOnSwVersionGetRes)(bool, u16, u16, u16, u16);
typedef u32(*t_fptrHANClientOnGetNumOfFunMsgInQRes)(bool, u16, u8, u8);
typedef u32(*t_fptrHANClientOnMessageSendRes)(bool, u16);
typedef void (*t_fptrHANClientOnReadDeviceTablePhase2Res)( void * );
typedef void (*t_fptrHANClientOnReadDeviceSubInfoPhase2Res)( void * );
typedef void (*t_fptrHANClientOnReadBlackListDeviceTableRes)( void * );
typedef u32 (*t_fptrHANClientOnDeviceDeleted)( u16 );
typedef u32(*t_fptrHANClientOnRawMsgRecv)( void * , ST_IE_DATA *);
typedef u32(*t_fptrHANClientOnRawMessageSendRes)(bool, u16);
typedef u32(*t_fptrHANClientOnGetNumOfRegDevicesRes)(u16);
typedef u32(*t_fptrHANClientOnGetMaxNumOfDevicesRes)(u16);
typedef u32(*t_fptrHANClientOnMergeCallsRes)(bool, u16, u8 *, u8 *);
typedef u32(*t_fptrHANClientOnCallReleaseResponse)(u16);
typedef u32(*t_fptrHANClientOnCallReleaseInd)(u16);
typedef u32(*t_fptrHANClientOnCallEstablishInd)(u16, u8 *);
typedef u32(*t_fptrHANClientOnDeviceReleasedFromCall)(u16, u16);
typedef u32(*t_fptrHANClientOnHsReleasedFromCall)(u16, u8);
typedef void(*t_fptrHANClientOnActiveCallsInfoGetRes)(ST_ALLACTIVECALLSINFO);
typedef void(*t_fptrHANClientOnDataCallSendRes)(u8 , u8 );
typedef void(*t_fptrHANClientOnDataCallReleaseInd)(u8, u8);
typedef void(*t_fptrHANClientOnDataCallSessionCreatedInd)(u16, u8, u16);
typedef void(*t_fptrHANClientOnDataCallReceivedDataInd)(u8, u16, u8*);
typedef void(*t_fptrHANClientOnSetNEMoModeRes)(bool);
typedef void(*t_fptrHANClientOnFirmwareUpdateStartRes)(bool);
typedef void(*t_fptrHANClientOnFirmwareUpdateEndRes)(bool);
typedef void(*t_fptrHANClientOnSmvCallReleaseRes)(u16);
typedef void(*t_fptrHANClientOnAudioStart)(u32 , const u8 *);
typedef void(*t_fptrHANClientOnAudioStop)(const u8 *);
typedef void(*t_fptrHANClientOnAudioEnd)(const u8 *);
typedef u32(*t_fptrHANClientOnDivertCallRes)(u32);
typedef struct s_fptrHanClient
{
t_fptrHANClientOnRegClosed g_fptrHANClientOnRegClosed;
t_fptrHANClientOnReadDeviceTableRes g_fptrHANClientOnReadDeviceTableRes;
t_fptrHANClientOnReadDeviceSubInfoRes g_fptrHANClientOnReadDeviceSubInfoRes;
t_fptrHANClientOnMsgRecv g_fptrHANClientOnMsgRecv;
t_fptrHANClientOnDeviceFullDeleted g_fptrHANClientOnDeviceFullDeleted;
t_fptrHANClientOnDeviceRegistered g_fptrHANClientOnDeviceRegistered;
t_fptrHANClientOnDevicePartialDeleted g_fptrHANClientOnDevicePartialDeleted;
t_fptrHANClientOnOpenRegRes g_fptrHANClientOnOpenRegRes;
t_fptrHANClientOnCloseRegRes g_fptrHANClientOnCloseRegRes;
t_fptrHANClientOnHandsetRegistered g_fptrHANClientOnHandsetRegistered;
t_fptrHANClientOnTargetUpIndication g_fptrHANClientOnTargetUpIndication;
t_fptrHANClientOnEepParamGetRes g_fptrHANClientOnEepParamGetRes;
t_fptrHANClientOnEepParamSetRes g_fptrHANClientOnEepParamSetRes;
t_fptrHANClientOnEepAreaGetRes g_fptrHANClientOnEepAreaGetRes;
t_fptrHANClientOnEepAreaSetRes g_fptrHANClientOnEepAreaSetRes;
t_fptrHANClientOnProdParamGetRes g_fptrHANClientOnProdParamGetRes;
t_fptrHANClientOnProdParamSetRes g_fptrHANClientOnProdParamSetRes;
t_fptrHANClientOnRamAreaGetRes g_fptrHANClientOnRamAreaGetRes;
t_fptrHANClientOnRamAreaSetRes g_fptrHANClientOnRamAreaSetRes;
t_fptrHANClientOnEepromSizeGetRes g_fptrHANClientOnEepromSizeGetRes;
t_fptrHANClientOnHwVersionGetRes g_fptrHANClientOnHwVersionGetRes;
t_fptrHANClientOnSwVersionGetRes g_fptrHANClientOnSwVersionGetRes;
t_fptrHANClientOnGetNumOfFunMsgInQRes g_fptrHANClientOnGetNumOfFunMsgInQRes;
t_fptrHANClientOnMessageSendRes g_fptrHANClientOnMessageSendRes;
t_fptrHANClientOnReadDeviceTablePhase2Res g_fptrHANClientOnReadDeviceTablePhase2Res;
t_fptrHANClientOnReadDeviceSubInfoPhase2Res g_fptrHANClientOnReadDeviceSubInfoPhase2Res;
t_fptrHANClientOnReadBlackListDeviceTableRes g_fptrHANClientOnReadBlackListDeviceTable;
t_fptrHANClientOnDeviceDeleted g_fptrHANClientOnDeviceDeleted ;
t_fptrHANClientOnRawMsgRecv g_fptrHANClientOnRawMsgRecv;
t_fptrHANClientOnRawMessageSendRes g_fptrHANClientOnRawMessageSendRes;
t_fptrHANClientOnGetNumOfRegDevicesRes g_fptrHANClientOnGetNumOfRegDevicesRes;
t_fptrHANClientOnGetMaxNumOfDevicesRes g_fptrHANClientOnGetMaxNumOfDevicesRes;
t_fptrHANClientOnMergeCallsRes g_fptrHANClientOnMergeCallsRes;
t_fptrHANClientOnCallReleaseResponse g_fptrHANClientOnCallReleaseResponse;
t_fptrHANClientOnCallReleaseInd g_fptrHANClientOnCallReleaseInd;
t_fptrHANClientOnCallEstablishInd g_fptrHANClientOnCallEstablishInd;
t_fptrHANClientOnDeviceReleasedFromCall g_fptrHANClientOnDeviceReleasedFromCall;
t_fptrHANClientOnHsReleasedFromCall g_fptrHANClientOnHsReleasedFromCall;
t_fptrHANClientOnActiveCallsInfoGetRes g_fptrHANClientOnActiveCallsInfoGetRes;
t_fptrHANClientOnDataCallSendRes g_fptrHANClientOnDataCallSendRes;
t_fptrHANClientOnDataCallReleaseInd g_fptrHANClientOnDataCallReleaseInd;
t_fptrHANClientOnDataCallSessionCreatedInd g_fptrHANClientOnDataCallSessionCreatedInd;
t_fptrHANClientOnDataCallReceivedDataInd g_fptrHANClientOnDataCallReceivedDataInd;
t_fptrHANClientOnSetNEMoModeRes g_fptrHANClientOnSetNEMoModeRes;
t_fptrHANClientOnFirmwareUpdateStartRes g_fptrHANClientOnFirmwareUpdateStartRes;
t_fptrHANClientOnFirmwareUpdateEndRes g_fptrHANClientOnFirmwareUpdateEndRes;
t_fptrHANClientOnSmvCallReleaseRes g_fptrHANClientOnSmvCallReleaseRes;
t_fptrHANClientOnAudioStart g_fptrHANClientOnAudioStart;
t_fptrHANClientOnAudioStop g_fptrHANClientOnAudioStop;
t_fptrHANClientOnAudioEnd g_fptrHANClientOnAudioEnd;
t_fptrHANClientOnDivertCallRes g_fptrHANClientOnDivertCallRes;
}s_fptrHanClient;
typedef void(*t_fptrHANServerOnTargetUpSetDefaults)(void);
typedef struct s_fptrHanServer
{
t_fptrHANServerOnTargetUpSetDefaults g_fptrHANServerOnTargetUpSetDefaults;
}s_fptrHanServer;
void app_HanMWRegisterCallBacks(s_fptrHanClient* HanClientRegisterCallBacks);
void app_HanMWRegisterServerCallBacks(s_fptrHanServer* HanServerRegisterCallBacks);
E_CMBS_RC app_HanMwDeviceReadTable (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry, u8 isBrief);
E_CMBS_RC app_HanMwReadSingleDeviceRegistrationInformation(u16 u16_DeviceId);
E_CMBS_RC app_HanMwDeviceReadTablePhase2(u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry);
E_CMBS_RC app_HanMwReadSingleDeviceRegistrationInformationPhase2(u16 u16_DeviceId);
E_CMBS_RC app_HanMwDeviceReadBlackListTable (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry);
typedef enum
{
NO_MSG_IN_QUEUE = 0,
FOUND_MSG_IN_QUEUE,
} E_MSG_IN_QUEUE_STATUS;
#endif // _APPHANMW_H
/**********************[End Of File]**********************************************************************************************************/

View File

@@ -1,743 +0,0 @@
/*!
* \file appUleIntPbx.c
* \brief handle ULE internal PBX
* \Author moria
*
*
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "appUleIntPbx.h"
#include "cmbs_api.h"
#include "cmbs_han.h"
#include "appcall.h"
#include "apphan.h"
#include "apphanvoicecallroutingtable.h"
#include "cmbs_voipline.h"
#include "tcx_hostlog.h"
#include "appAvsService.h"
#define APP_ULE_INX_PBX_INFO_PRINT(format, ...) tcx_WriteLog(ULE_INT_PBX, LOG_LEVEL_INFO, format, ##__VA_ARGS__ )
#define APP_ULE_INX_PBX_TRACE_PRINT(format, ...) tcx_WriteLog(ULE_INT_PBX, LOG_LEVEL_TRACE, format, ##__VA_ARGS__ )
#define APP_ULE_INX_PBX_WARNING_PRINT(format, ...) tcx_WriteLog(ULE_INT_PBX, LOG_LEVEL_WARNING, format, ##__VA_ARGS__ )
#define APP_ULE_INX_PBX_ERROR_PRINT(format, ...) tcx_WriteLog(ULE_INT_PBX, LOG_LEVEL_ERROR, format, ##__VA_ARGS__ )
#define APP_ULE_INX_PBX_RT_PRINT(format, ...) tcx_WriteLog(ULE_INT_PBX, LOG_LEVEL_REAL_TIME, format, ##__VA_ARGS__ )
#define APP_ULE_INX_PBX_PRINT_DATA(pu8_Buffer, u16_Length) tcx_WriteLogData(ULE_INT_PBX, LOG_LEVEL_INFO, pu8_Buffer, u16_Length)
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
#define APP_PBX_CALL_PPARTICIPANT_HS_LEN 2
#define APP_PBX_CALL_PPARTICIPANT_DEVICE_LEN 8
#define APP_PBX_CALL_PARTICIPANT_DEVICE_OFFSET 1
#define APP_PBX_CALL_PARTICIPANT_UNIT_OFFSET 6
#define APP_PBX_CALL_PARTICIPANT_HS_NUM_OFFSET 1
#define APP_PBX_DEVICE_IDENTIFIER_OFFSET 0
#define APP_PBX_UNIT_IDENTIFIER_OFFSET 5
#define APP_PBX_HS_IDENTIFIER_OFFSET 0
#define APP_PBX_DEVICE_IDENTIFIER 'D'
#define APP_PBX_UNIT_IDENTIFIER 'U'
#define APP_PBX_HS_IDENTIFIER 'h'
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
typedef struct
{
u32 u32_CallId1;
u32 u32_CallId2;
bool b_ConvertToInt;
}ST_CALL_MERGE_INFO;
#define MERGE_CALL_DB_SIZE 5
#define MERGE_CALL_INVALID_CALL_ID 0xFFFFFFFF
#define MERGE_CALL_INVALID_RECORD_ID 0xFF
ST_CALL_MERGE_INFO g_st_CallsPengingForMerge_DB[MERGE_CALL_DB_SIZE] = {{MERGE_CALL_INVALID_CALL_ID, MERGE_CALL_INVALID_CALL_ID, FALSE},
{MERGE_CALL_INVALID_CALL_ID, MERGE_CALL_INVALID_CALL_ID, FALSE},
{MERGE_CALL_INVALID_CALL_ID, MERGE_CALL_INVALID_CALL_ID, FALSE},
{MERGE_CALL_INVALID_CALL_ID, MERGE_CALL_INVALID_CALL_ID, FALSE},
{MERGE_CALL_INVALID_CALL_ID, MERGE_CALL_INVALID_CALL_ID, FALSE}};
bool G_b_IntPbx_CallDivert = FALSE;
EXTAPP_RC appUleIntPbx_SetAudioChannel (IN u32 cmbsCallID, IN u32 mediaChannelID, IN EXTVOIP_CODEC e_Codec);
extern E_APPCMBS_MEDIA _appcall_CallObjMediaGet(PST_CALL_OBJ pst_Call);
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////
u8 apppbx_AllocPendingMergeEntry()
{
u8 u8_Index = 0;
for(u8_Index=0; u8_Index<MERGE_CALL_DB_SIZE; u8_Index++)
{
if(g_st_CallsPengingForMerge_DB[u8_Index].u32_CallId1 == MERGE_CALL_INVALID_CALL_ID &&
g_st_CallsPengingForMerge_DB[u8_Index].u32_CallId2 == MERGE_CALL_INVALID_CALL_ID)
{
APP_ULE_INX_PBX_TRACE_PRINT("apppbx_AllocPendingMergeEntry -> allocated entry %d\n", u8_Index);
return u8_Index;
}
}
return MERGE_CALL_INVALID_RECORD_ID;
}
u8 apppbx_FindPendingMergeEntry(u32 u32_CallId)
{
u8 u8_Index = 0;
for(u8_Index=0; u8_Index<MERGE_CALL_DB_SIZE; u8_Index++)
{
if(g_st_CallsPengingForMerge_DB[u8_Index].u32_CallId1 == u32_CallId ||
g_st_CallsPengingForMerge_DB[u8_Index].u32_CallId2 == u32_CallId)
{
APP_ULE_INX_PBX_TRACE_PRINT("apppbx_FindPendingMergeEntry -> entry %d\n", u8_Index);
return u8_Index;
}
}
return MERGE_CALL_INVALID_RECORD_ID;
}
bool apppbx_FreePendingMergeEntry(u32 u32_CallId)
{
u8 u8_Index = 0;
for(u8_Index=0; u8_Index<MERGE_CALL_DB_SIZE; u8_Index++)
{
if(g_st_CallsPengingForMerge_DB[u8_Index].u32_CallId1 == u32_CallId ||
g_st_CallsPengingForMerge_DB[u8_Index].u32_CallId2 == u32_CallId)
{
APP_ULE_INX_PBX_TRACE_PRINT("apppbx_FreePendingMergeEntry -> entry %d\n", u8_Index);
g_st_CallsPengingForMerge_DB[u8_Index].u32_CallId1 = MERGE_CALL_INVALID_CALL_ID;
g_st_CallsPengingForMerge_DB[u8_Index].u32_CallId2 = MERGE_CALL_INVALID_CALL_ID;
return TRUE;
}
}
return FALSE;
}
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
//Forward declarations for CB functions
EXTAPP_RC appUleIntPbx_OnCallEstablish(IN u32 cmbsCallID, IN const char* calledID, IN const char* callerHandset, IN u32 lineID, IN EXTVOIP_CODEC* codecList, IN u32 codecListLength);
EXTAPP_RC appUleIntPbx_OnCallAnswer(IN u32 cmbsCallID, IN EXTVOIP_CODEC codec);
EXTAPP_RC appUleIntPbx_OnMergeCallResponse(IN u32 cmbsCallID);
u32 appUleIntPbx_OnDivertCall(ST_DIVERT_CALL_INFO *pst_DivertCallInfo);
EXTAPP_RC appUleIntPbx_SendDigits(IN u32 u32_cmbsCallID, IN char* psz_Digits);
u32 UleIntPbx_appID = 5; /* Holds appID of the current app*/
EXTAPP_RC LoadUleIntPbx (void)
{
EXTVOIP_RC res;
ST_APP_FNC_TABLE st_AppTable;
st_AppTable.fncSetupCall = appUleIntPbx_OnCallEstablish;
st_AppTable.fncAnswerCall = appUleIntPbx_OnCallAnswer;
st_AppTable.fncMergeCallRes = appUleIntPbx_OnMergeCallResponse;
st_AppTable.fncProceedingCall = NULL;
st_AppTable.fncAlertingCall = NULL;
st_AppTable.fncDisconnectCall = NULL;
st_AppTable.fncDisconnectCallDone = NULL;
st_AppTable.fncHoldCall = NULL;
st_AppTable.fncHoldCallDone = NULL;
st_AppTable.fncResumeCall = NULL;
st_AppTable.fncConferenceCall = NULL;
st_AppTable.fncResumeCallDone = NULL;
st_AppTable.fncMediaChange = NULL;
st_AppTable.fncMediaChangeAck = NULL;
st_AppTable.fncSendDigits = appUleIntPbx_SendDigits;
st_AppTable.fncGetCallerID = NULL;
st_AppTable.fncGetCalledID = NULL;
st_AppTable.fncSetAudioChannel = NULL;
st_AppTable.fncContactsCount = NULL;
st_AppTable.fncContactsEntry = NULL;
st_AppTable.fncDivertOutgoingCall = appUleIntPbx_OnDivertCall;
st_AppTable.fncUpdateCallState = NULL;
st_AppTable.LineName[0] = 0;
res = AppCallRouter_AppInit(UleIntPbx_appID, &st_AppTable);
return res;
}
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
static bool apppbx_ConvertDeviceIdFromStr(const u8 *pu8_Buffer, u16 *pu16_DeviceId)
{
u16 u16_DeviceId = 0;
u8 u8_DeviceIdNibbleStr, u8_Index, NumOfNibbles = sizeof(u16_DeviceId)*2;
for(u8_Index=0; u8_Index<NumOfNibbles; u8_Index++)
{
u8_DeviceIdNibbleStr = pu8_Buffer[u8_Index];
if (u8_DeviceIdNibbleStr >= '0' && u8_DeviceIdNibbleStr <= '9')
{
u16_DeviceId |= (u8_DeviceIdNibbleStr - '0') << (12 - u8_Index * 4);
}
else if (u8_DeviceIdNibbleStr >= 'A' && u8_DeviceIdNibbleStr <= 'F')
{
u16_DeviceId |= (u8_DeviceIdNibbleStr - 'A' + 0xA) << (12 - u8_Index * 4);
}
}
*pu16_DeviceId = u16_DeviceId;
return TRUE;
}
static u8 apppbx_ConvertDeviceIdToStr(u16 u16_DeviceId, u8 *pu8_Buffer)
{
u8 u8_Index, u8_DeviceIdNibble = 0, NumOfNibbles = sizeof(u16_DeviceId)*2;
for(u8_Index=1; u8_Index<=NumOfNibbles; u8_Index++)
{
u8_DeviceIdNibble = u16_DeviceId & 0xF;
if (u8_DeviceIdNibble <= 9)
{
pu8_Buffer[NumOfNibbles-u8_Index] = u8_DeviceIdNibble + '0';
}
else if (u8_DeviceIdNibble >= 0xA && u8_DeviceIdNibble <= 0xF)
{
pu8_Buffer[NumOfNibbles-u8_Index] = u8_DeviceIdNibble + 'A' - 0xA;
}
u16_DeviceId >>= 4;
}
return NumOfNibbles;
}
static bool apppbx_ConvertUnitIdFromStr(const u8 *pu8_Buffer, u8 *pu8_UnitId)
{
u8 u8_UnitId = 0, u8_DeviceIdNibbleStr, u8_Index, NumOfNibbles = sizeof(u8_UnitId)*2;
for(u8_Index=0; u8_Index<NumOfNibbles; u8_Index++)
{
u8_DeviceIdNibbleStr = pu8_Buffer[u8_Index];
if (u8_DeviceIdNibbleStr >= '0' && u8_DeviceIdNibbleStr <= '9')
{
u8_UnitId |= (u8_DeviceIdNibbleStr - '0') << (4 - u8_Index * 4);
}
else if (u8_DeviceIdNibbleStr >= 'A' && u8_DeviceIdNibbleStr <= 'F')
{
u8_UnitId |= (u8_DeviceIdNibbleStr - 'A' + 0xA) << (4 - u8_Index * 4);
}
}
*pu8_UnitId = u8_UnitId;
return TRUE;
}
static u8 apppbx_ConvertUnitIdToStr(u8 u8_UnitId, u8 *pu8_Buffer)
{
u8 u8_Index, u8_UnitIdNibble = 0, NumOfNibbles = sizeof(u8_UnitId)*2;
for(u8_Index=1; u8_Index<=NumOfNibbles; u8_Index++)
{
u8_UnitIdNibble = u8_UnitId & 0xF;
if (u8_UnitIdNibble <= 9)
{
pu8_Buffer[NumOfNibbles - u8_Index] = u8_UnitIdNibble + '0';
}
else if (u8_UnitIdNibble >= 0xA && u8_UnitIdNibble <= 0xF)
{
pu8_Buffer[NumOfNibbles - u8_Index] = u8_UnitIdNibble + 'A' - 0xA;
}
u8_UnitId >>= 4;
}
return NumOfNibbles;
}
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
void appUleIntPbx_Call2HS(PST_CALL_OBJ pst_Call, u16 u16_DstId)
{
u32 u32_CallId;
EXTVOIP_RC en_Status = EXTVOIP_RC_FAIL;
//ST_APPCALL_PROPERTIES st_Properties = {0};
char ch_HsNum[30] = {0};
char ch_CallerNum[30] = {0};
char ch_CallerName[30] = {0};
u8 u8_EntryIndex;
u8 u8_LineId;
EXTVOIP_CODEC codecList[] = { EXTVOIP_CODEC_PCM_LINEAR_WB, EXTVOIP_CODEC_PCM_LINEAR_NB };
ch_HsNum[0] = 'h';
ch_HsNum[1] = (u8) u16_DstId + '0';
// alloc record in pending for merge DB
u8_EntryIndex = apppbx_AllocPendingMergeEntry();
if(u8_EntryIndex == MERGE_CALL_INVALID_RECORD_ID)
{
APP_ULE_INX_PBX_ERROR_PRINT("Cannot alloc record for merging call");
return;
}
g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1 = _appcall_CallObjIdGet(pst_Call);
if(!G_b_IntPbx_CallDivert)
{
memcpy(&ch_CallerNum[0], &pst_Call->ch_CallerID[0], pst_Call->st_CallerParty.u8_AddressLen );
u8_LineId = 0;
//send call progress
extvoip_OnProceedingCall(g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1);
// answer current call
extvoip_OnAnswerCall(g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1, EXTVOIP_CODEC_PCM_LINEAR_WB);
}
else
{
memcpy(&ch_CallerNum[0], &pst_Call->ch_CalledID[0], pst_Call->st_CalledParty.u8_AddressLen );
u8_LineId = 1;
}
en_Status = extvoip_OnSetupCall(UleIntPbx_appID, u8_LineId, ch_HsNum, ch_CallerNum, ch_CallerName, codecList, sizeof(codecList)/sizeof(EXTVOIP_CODEC), (int *) &u32_CallId);
if(en_Status == EXTVOIP_RC_OK)
{
g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId2 = u32_CallId;
g_st_CallsPengingForMerge_DB[u8_EntryIndex].b_ConvertToInt = FALSE;
}
// merge calls will be invoked on call answer
}
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
EXTAPP_RC appUleIntPbx_OnCallEstablish(IN u32 cmbsCallID, IN const char* calledID, IN const char* callerHandset, IN u32 lineID, IN EXTVOIP_CODEC* codecList, IN u32 codecListLength)
{
PST_CALL_OBJ pst_CallPending = NULL;
PST_CALL_OBJ pst_Call = _appcall_CallObjGetById(cmbsCallID);
u8 u8_EntryIndex;
APP_ULE_INX_PBX_TRACE_PRINT("<<<<<< appUleIntPbx_OnCallEstablish >>>>>>>\n\n");
// make sure Caller Party Number is not empty
if(pst_Call)
{
// check whether a call is waiting for this HS/ device to be merged
pst_CallPending = appcall_GetCallPendingforDeviceObj(pst_Call);
if (pst_CallPending)
{
pst_CallPending->b_WaitingForMerge = FALSE;
// alloc record in pending for merge DB
u8_EntryIndex = apppbx_AllocPendingMergeEntry();
if(u8_EntryIndex == MERGE_CALL_INVALID_RECORD_ID)
{
APP_ULE_INX_PBX_ERROR_PRINT("Cannot alloc record for merging call");
return EXTAPP_RC_FAIL;
}
g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1 = _appcall_CallObjIdGet(pst_CallPending);
g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId2 = cmbsCallID;
g_st_CallsPengingForMerge_DB[u8_EntryIndex].b_ConvertToInt = FALSE;
//Answer both calls
APP_ULE_INX_PBX_INFO_PRINT("Answer and merge calls: %d, %d\n",
g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1, g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId2);
if(!G_b_IntPbx_CallDivert)
{
extvoip_OnAnswerCall(g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1, EXTVOIP_CODEC_PCM_LINEAR_WB); // current call
}
extvoip_OnAnswerCall(g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId2, EXTVOIP_CODEC_PCM_LINEAR_WB); //pending call
if(!G_b_IntPbx_CallDivert)
{
// stop media channel
appmedia_CallObjMediaStop(pst_Call->u32_CallInstance, 0, NULL);
appmedia_CallObjMediaStop(pst_CallPending->u32_CallInstance, 0, NULL);
}
// merge calls
appcall_MergeCalls(g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1,
g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId2,
g_st_CallsPengingForMerge_DB[u8_EntryIndex].b_ConvertToInt);
G_b_IntPbx_CallDivert = FALSE;
}
else
{
// check wether the calling device has specified the called party
if (strlen(calledID) == APP_PBX_CALL_PPARTICIPANT_DEVICE_LEN && calledID[APP_PBX_DEVICE_IDENTIFIER_OFFSET] == APP_PBX_DEVICE_IDENTIFIER)
{
u16 u16_DeviceId = 0;
u8 u8_UnitId = 1;
ST_HAN_VOICE_CALL_REQ_PARAMS st_CallReqParams;
apppbx_ConvertDeviceIdFromStr((const u8 *) &calledID[APP_PBX_CALL_PARTICIPANT_DEVICE_OFFSET], &u16_DeviceId);
if(calledID[APP_PBX_UNIT_IDENTIFIER_OFFSET] == APP_PBX_UNIT_IDENTIFIER)
{
apppbx_ConvertUnitIdFromStr((const u8 *) &calledID[APP_PBX_CALL_PARTICIPANT_UNIT_OFFSET], &u8_UnitId);
}
st_CallReqParams.u32_FieldMask = 0;
APP_ULE_INX_PBX_INFO_PRINT("Calling device has specified the called party - device#%d, unit %d\n", u16_DeviceId, u8_UnitId);
// Mark call as waiting to be merged
pst_Call->b_WaitingForMerge = TRUE;
// send FUN message to device requesting it to set up a call
app_DsrHanVoiceCallReq(u16_DeviceId, u8_UnitId, &st_CallReqParams);
}
else if (strlen(calledID) == APP_PBX_CALL_PPARTICIPANT_HS_LEN && calledID[APP_PBX_HS_IDENTIFIER_OFFSET] == APP_PBX_HS_IDENTIFIER)
{
u8 u8_HsNum = calledID[APP_PBX_CALL_PARTICIPANT_HS_NUM_OFFSET] - '0';
APP_ULE_INX_PBX_INFO_PRINT("Calling device has specified the called party - HS %d\n", u8_HsNum);
appUleIntPbx_Call2HS(pst_Call, u8_HsNum);
}
// valid called party was not specified by the calling party, later: handle HS number/ digits
else
{
u16 u16_DeviceId = 0;
u8 u8_UnitId = 1, u8_HsNum = 0;
bool b_MatchFound;
st_apphan_VoiceCallRoutingTableRecord st_VoiceCallRoutingTableRecord;
if (callerHandset[APP_PBX_DEVICE_IDENTIFIER_OFFSET] == APP_PBX_DEVICE_IDENTIFIER)
{
apppbx_ConvertDeviceIdFromStr((const u8 *) &callerHandset[APP_PBX_CALL_PARTICIPANT_DEVICE_OFFSET], &u16_DeviceId);
apppbx_ConvertUnitIdFromStr((const u8 *) &callerHandset[APP_PBX_CALL_PARTICIPANT_UNIT_OFFSET], &u8_UnitId);
APP_ULE_INX_PBX_INFO_PRINT("Calling device #%d, unit%d\n", u16_DeviceId, u8_UnitId);
// look for a match for device in Voice Call Routing Table
b_MatchFound = p_VoiceCallRoutingTable_FindMatchForDevice(u16_DeviceId, u8_UnitId, NULL, &st_VoiceCallRoutingTableRecord);
}
else
{
// Convert HS number from char to decimal
u8_HsNum = callerHandset[0] - '0';
APP_ULE_INX_PBX_INFO_PRINT("Calling HS #%d\n", u8_HsNum);
// look for a match for HS in Voice Call Routing Table
b_MatchFound = p_VoiceCallRoutingTable_FindMatchForHS(u8_HsNum, NULL, &st_VoiceCallRoutingTableRecord);
}
// look for a match for this device/ HS in audio routing table
if (b_MatchFound)
{
ST_HAN_VOICE_CALL_REQ_PARAMS st_CallReqParams;
st_CallReqParams.u32_FieldMask = 0;
APP_ULE_INX_PBX_INFO_PRINT("Found a match for Calling party number in Voice Call Routing Table\n");
// Mark call as waiting to be merged
pst_Call->b_WaitingForMerge = TRUE;
if(st_VoiceCallRoutingTableRecord.u8_DstType == DEVICE_ENTITY)
{
u8 u8_Len = 0;
pst_Call->st_CalledParty.u8_AddressLen = 0;
// send FUN "Make a Call" req to device
app_DsrHanVoiceCallReq(st_VoiceCallRoutingTableRecord.u16_DstId, st_VoiceCallRoutingTableRecord.u8_DstUnitId, &st_CallReqParams);
// store device and unit id as Called Party Number
pst_Call->st_CalledParty.pu8_Address[0] = APP_PBX_DEVICE_IDENTIFIER;
pst_Call->st_CalledParty.u8_AddressLen++;
u8_Len = apppbx_ConvertDeviceIdToStr(st_VoiceCallRoutingTableRecord.u16_DstId, &pst_Call->st_CalledParty.pu8_Address[1]);
pst_Call->st_CalledParty.u8_AddressLen += u8_Len;
pst_Call->st_CalledParty.pu8_Address[5] = APP_PBX_UNIT_IDENTIFIER;
pst_Call->st_CalledParty.u8_AddressLen++;
u8_Len = apppbx_ConvertUnitIdToStr(st_VoiceCallRoutingTableRecord.u8_DstUnitId, &pst_Call->st_CalledParty.pu8_Address[6]);
pst_Call->st_CalledParty.u8_AddressLen += u8_Len ;
}
// Destination is HS
else
{
appUleIntPbx_Call2HS(pst_Call, st_VoiceCallRoutingTableRecord.u16_DstId);
}
}
else
{
APP_ULE_INX_PBX_INFO_PRINT("Failed to find match for device in AudioRoutingTable for device#%d\n", u16_DeviceId != 0 ? u16_DeviceId : u8_HsNum);
}
}
}
}
else
{
APP_ULE_INX_PBX_ERROR_PRINT("Could not find call in appcall DB: call_id = %d \n", cmbsCallID);
}
return EXTAPP_RC_OK;
}
EXTAPP_RC appUleIntPbx_OnCallAnswer(IN u32 cmbsCallID, IN EXTVOIP_CODEC codec)
{
PST_CALL_OBJ pst_Call = _appcall_CallObjGetById(cmbsCallID);
u8 u8_EntryIndex = apppbx_FindPendingMergeEntry(cmbsCallID);
if(u8_EntryIndex != MERGE_CALL_INVALID_RECORD_ID)
{
//call divert from device to handset
if((cmbsCallID == g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1) &&
(_appcall_CallObjMediaGet(pst_Call) == E_APPCMBS_MEDIA_PEND))
{
u32 u32_ChannelSlots;
extvoip_GetChannelSlotsForCall(cmbsCallID,codec,&u32_ChannelSlots);
appmedia_CallObjMediaStart(0,cmbsCallID,u32_ChannelSlots,NULL);
}
else if ((cmbsCallID == g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId2) &&
(_appcall_CallObjMediaGet(pst_Call) == E_APPCMBS_MEDIA_PEND))
{
//pst_Call = _appcall_CallObjGetById(g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1);
//appmedia_CallObjMediaStart(0,cmbsCallID,pst_Call->u32_ChannelParameter,NULL);
}
if ( (g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1 != MERGE_CALL_INVALID_RECORD_ID) &&
(g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId2 != MERGE_CALL_INVALID_RECORD_ID) &&
(cmbsCallID == g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId2))
{
PST_CALL_OBJ pst_Call1 = _appcall_CallObjGetById(g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1);
PST_CALL_OBJ pst_Call2 = _appcall_CallObjGetById(g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId2);
// clear call pending
pst_Call1->b_WaitingForMerge = FALSE;
pst_Call2->b_WaitingForMerge = FALSE;
// stop media channel
//appmedia_CallObjMediaStop(pst_Call1->u32_CallInstance, 0, NULL);
//appmedia_CallObjMediaStop(pst_Call2->u32_CallInstance, 0, NULL);
appcall_MergeCalls(g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId1,
g_st_CallsPengingForMerge_DB[u8_EntryIndex].u32_CallId2,
g_st_CallsPengingForMerge_DB[u8_EntryIndex].b_ConvertToInt);
if(G_b_IntPbx_CallDivert)
G_b_IntPbx_CallDivert = FALSE;
}
}
else
{ //call divert from device to device
if(G_b_IntPbx_CallDivert && (_appcall_CallObjMediaGet(pst_Call) == E_APPCMBS_MEDIA_PEND))
{
u32 u32_ChannelSlots;
extvoip_GetChannelSlotsForCall(cmbsCallID,codec,&u32_ChannelSlots);
appmedia_CallObjMediaStart(0,cmbsCallID,u32_ChannelSlots,NULL);
}
}
return EXTAPP_RC_OK;
}
EXTAPP_RC appUleIntPbx_OnMergeCallResponse(IN u32 cmbsCallID)
{
bool b_Status = apppbx_FreePendingMergeEntry(cmbsCallID);
return b_Status ? EXTAPP_RC_OK : EXTAPP_RC_FAIL;
}
u32 appUleIntPbx_OnDivertCall(ST_DIVERT_CALL_INFO *pst_DivertCallInfo)
{
PST_CALL_OBJ pst_Call = NULL;
ST_APPCALL_PROPERTIES st_Properties[7];
char psz_Codecs[CMBS_AUDIO_CODEC_MAX * 2] = { 0 };
if(pst_DivertCallInfo)
{
pst_Call = _appcall_CallObjGetById(pst_DivertCallInfo->cmbsCallID);
if(!pst_Call)
{
printf("\n appUleIntPbx_OnDivertCall:Error\n");
return EXTAPP_RC_FAIL;
}
}
else
{
printf("\n appUleIntPbx_OnDivertCall:Error\n");
return EXTAPP_RC_FAIL;
}
//Establish half call to caller device/HS
if(pst_DivertCallInfo->u8_NumOfCodecs)
{
u8 u8_Idx = 0;
sprintf(psz_Codecs, "%d",pst_DivertCallInfo->pu8_CodecsList[u8_Idx++]);
while(u8_Idx != pst_DivertCallInfo->u8_NumOfCodecs)
{
u8 u8_Len = strlen(psz_Codecs);
char psz_Temp[5]={0,};
sprintf(psz_Temp, ",%d",pst_DivertCallInfo->pu8_CodecsList[u8_Idx++]);
strcat(&psz_Codecs[u8_Len],psz_Temp);
}
}
else
{
// put codecs priority (WB, NB)
sprintf(psz_Codecs, "%d,%d", (CMBS_AUDIO_CODEC_PCM_LINEAR_WB), (CMBS_AUDIO_CODEC_PCM_LINEAR_NB));
}
st_Properties[0].e_IE = CMBS_IE_CALLERPARTY;
st_Properties[0].psz_Value = pst_DivertCallInfo->psz_CalledDigits;
st_Properties[1].e_IE = CMBS_IE_CALLEDPARTY;
st_Properties[1].psz_Value = pst_DivertCallInfo->psz_CallerID;
//st_Properties[1].psz_Value = ALL_HS_STRING;
st_Properties[2].e_IE = CMBS_IE_MEDIADESCRIPTOR;
st_Properties[2].psz_Value = psz_Codecs;
st_Properties[3].e_IE = CMBS_IE_CALLERNAME;
st_Properties[3].psz_Value = pst_DivertCallInfo->psz_CalledID,
st_Properties[4].e_IE = CMBS_IE_LINE_ID;
st_Properties[4].psz_Value = "1\0";
st_Properties[5].e_IE = CMBS_IE_MELODY;
st_Properties[5].psz_Value = "1\0";
st_Properties[6].e_IE = CMBS_IE_RECONNECT_CALL;
st_Properties[6].psz_Value = "1\0";
pst_DivertCallInfo->cmbsCallID = appcall_EstablishCall(st_Properties, 7);
if(pst_DivertCallInfo->cmbsCallID == ~0)
return ~0;
AppCallRouter_AddToAppCallMap(pst_DivertCallInfo->cmbsCallID,UleIntPbx_appID);
pst_Call = _appcall_CallObjGetById(pst_DivertCallInfo->cmbsCallID);
G_b_IntPbx_CallDivert = TRUE;
// check whether the calling device has specified the called party
if (strlen(pst_DivertCallInfo->psz_CalledDigits) == APP_PBX_CALL_PPARTICIPANT_DEVICE_LEN &&
pst_DivertCallInfo->psz_CalledDigits[APP_PBX_DEVICE_IDENTIFIER_OFFSET] == APP_PBX_DEVICE_IDENTIFIER)
{
u16 u16_DeviceId = 0;
u8 u8_UnitId = 1;
ST_HAN_VOICE_CALL_REQ_PARAMS st_CallReqParams;
apppbx_ConvertDeviceIdFromStr((const u8 *) &pst_DivertCallInfo->psz_CalledDigits[APP_PBX_CALL_PARTICIPANT_DEVICE_OFFSET], &u16_DeviceId);
if(pst_DivertCallInfo->psz_CalledDigits[APP_PBX_UNIT_IDENTIFIER_OFFSET] == APP_PBX_UNIT_IDENTIFIER)
{
apppbx_ConvertUnitIdFromStr((const u8 *) &pst_DivertCallInfo->psz_CalledDigits[APP_PBX_CALL_PARTICIPANT_UNIT_OFFSET], &u8_UnitId);
}
// st_CallReqParams.u32_FieldMask = CMBS_HAN_OTHER_PARTY_ID_MASK;
// st_CallReqParams.pu8_OtherPartyId[0] = strlen(pst_DivertCallInfo->psz_CallerID);
// memcpy(&(st_CallReqParams.pu8_OtherPartyId[1]),pst_DivertCallInfo->psz_CallerID, st_CallReqParams.pu8_OtherPartyId[0]);
APP_ULE_INX_PBX_INFO_PRINT("Calling device has specified the called party - device#%d, unit %d\n", u16_DeviceId, u8_UnitId);
// Mark call as waiting to be merged
pst_Call->b_WaitingForMerge = TRUE;
// send FUN message to device requesting it to set up a call
app_DsrHanVoiceCallReq(u16_DeviceId, u8_UnitId, &st_CallReqParams);
}
else if (strlen(pst_DivertCallInfo->psz_CalledDigits) == APP_PBX_CALL_PPARTICIPANT_HS_LEN && pst_DivertCallInfo->psz_CalledDigits[APP_PBX_HS_IDENTIFIER_OFFSET] == APP_PBX_HS_IDENTIFIER)
{
u8 u8_HsNum = pst_DivertCallInfo->psz_CalledDigits[APP_PBX_CALL_PARTICIPANT_HS_NUM_OFFSET] - '0';
APP_ULE_INX_PBX_INFO_PRINT("Calling device has specified the called party - HS %d\n", u8_HsNum);
appUleIntPbx_Call2HS(pst_Call, u8_HsNum);
}
appSmartVoice_AddToCallChannelMap(pst_Call->u32_ChannelID,pst_DivertCallInfo->cmbsCallID);
return pst_DivertCallInfo->cmbsCallID;
}
EXTAPP_RC appUleIntPbx_SendDigits(IN u32 u32_cmbsCallID, IN char* psz_Digits)
{
PST_CALL_OBJ pst_Call = _appcall_CallObjGetById(u32_cmbsCallID);
if(!pst_Call)
{
printf("\n appUleIntPbx_OnDivertCall:Error\n");
return EXTAPP_RC_FAIL;
}
if(strcmp(psz_Digits,"@") == 0)
{
AppCallRouter_DivertOutgoingCall(u32_cmbsCallID,NULL,psz_Digits);
}
else
{
printf("appUleIntPbx_SendDigits: Cannot handle digits ");
}
return EXTAPP_RC_OK;
}

View File

@@ -1,22 +0,0 @@
/*!
* \file appUleIntPbx.c.h
* \brief
* \Author DSPG
*
* @(#) %filespec: appUleIntPbx.h
*
*******************************************************************************/
#if !defined( APPULEINTPBX_H )
#define APPULEINTPBX_H
#include "appCallRouter.h"
// register callbacks
EXTAPP_RC LoadUleIntPbx();
#endif // APPULEINTPBX_H

View File

@@ -1,541 +0,0 @@
/*!
* \file appVoipService.c
* \brief handle ULE internal PBX
* \Author moria
*
*
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "cmbs_api.h"
#include "appcall.h"
#include "appCallRouter.h"
#include "tcx_hostlog.h"
#include "cmbs_voipline.h"
#include "appCallRouter.h"
#include "appVoipService.h"
#include "appAvsService.h"
#include "dect_common.h"
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
#define APPVOIP_MAX_NUM_CALLS 10
#define APPVOIP_NO_CALL APPVOIP_MAX_NUM_CALLS
#define APPVOIP_NO_FREE_SLOTS 0xFFFFFFFF
u32 appVoipSrv_appID = 0; /* Holds appID of the current app*/
ST_VOIP_CALL_DATA G_st_VOIP_CallData[APPVOIP_MAX_NUM_CALLS];
u32 G_u32_SlotsMask;
u32 G_u32_CallIdSlotMap[APPVOIP_MAX_NUM_CALLS];
bool G_b_UseSameSlotsForDivertedCall = FALSE;
//Forward declarations for CB functions
EXTAPP_RC appVoipService_OnCallEstablish(IN u32 cmbsCallID, IN const char* calledID, IN const char* callerHandset, IN u32 lineID, IN EXTVOIP_CODEC* codecList, IN u32 codecListLength);
EXTAPP_RC appVoipService_OnCallAnswer(IN u32 cmbsCallID, IN EXTVOIP_CODEC codec);
EXTAPP_RC appVoipService_OnCallRelease(IN u32 cmbsCallID, IN EXTVOIP_RELEASE_REASON ReleaseReason);
EXTAPP_RC appVoipService_OnCallReleaseDone(IN u32 cmbsCallID);
u32 appVoipService_OnDivertCall(ST_DIVERT_CALL_INFO *pst_DivertCallInfo);
void appVoipService_GetSlotsForCall(IN u32 u32_cmbsCallID,IN EXTVOIP_CODEC e_Codec, OUT u32 *pu32_ChannelSlots);
void appVoipService_FreeSlotsForCall(IN u32 u32_cmbsCallID,IN u32 *pu32_ChannelSlots);
void appVoipService_UpdateCallState(IN u32 u32_cmbsCallID, IN EXTVOIP_CALL_STATE e_CallState);
EXTAPP_RC appVoipService_SetAudioChannel (IN u32 u32_cmbsCallID, IN u32 mediaChannelID, IN EXTVOIP_CODEC e_Codec);
EXTAPP_RC appVoipService_SendDigits(IN u32 u32_cmbsCallID, IN char* psz_Digits);
EXTAPP_RC LoadVoipService (void)
{
ST_APP_FNC_TABLE st_AppTable;
EXTAPP_RC res;
u8 u8_Idx;
memset(&st_AppTable,0x00,sizeof(ST_APP_FNC_TABLE));
st_AppTable.fncSetupCall = appVoipService_OnCallEstablish;
st_AppTable.fncAnswerCall = appVoipService_OnCallAnswer;
st_AppTable.fncDivertOutgoingCall = appVoipService_OnDivertCall;
st_AppTable.fncUpdateCallState = appVoipService_UpdateCallState;
st_AppTable.fncDisconnectCall = appVoipService_OnCallRelease;
st_AppTable.fncDisconnectCallDone = appVoipService_OnCallReleaseDone;
st_AppTable.fncSetAudioChannel = appVoipService_SetAudioChannel;
st_AppTable.fncSendDigits = appVoipService_SendDigits;
st_AppTable.LineName[0] = 0;
for (u8_Idx = 0; u8_Idx < APPVOIP_MAX_NUM_CALLS; u8_Idx++)
{
G_st_VOIP_CallData[u8_Idx].e_Call = E_APPCMBS_CALL_CLOSE;
G_st_VOIP_CallData[u8_Idx].u32_ChannelParameter = G_u32_CallIdSlotMap[u8_Idx] = APPVOIP_NO_FREE_SLOTS;
}
res = AppCallRouter_AppInit(appVoipSrv_appID, &st_AppTable);
extvoip_RegisterSlotConfigCb(appVoipService_GetSlotsForCall, appVoipService_FreeSlotsForCall);
return res;
}
u8 appVoipService_AssignNewCallId(void)
{
u8 u8_Idx;
for (u8_Idx = 0; u8_Idx < APPVOIP_MAX_NUM_CALLS; u8_Idx++)
{
if(G_st_VOIP_CallData[u8_Idx].e_Call == E_APPCMBS_CALL_CLOSE)
break;
}
return u8_Idx;
}
u8 appVoipService_GetCallId(IN u32 cmbsCallID)
{
u8 u8_Idx;
for (u8_Idx = 0; u8_Idx < APPVOIP_MAX_NUM_CALLS; u8_Idx++)
{
if(G_st_VOIP_CallData[u8_Idx].u32_CmbsCallId == cmbsCallID && G_st_VOIP_CallData[u8_Idx].e_Call != E_APPCMBS_CALL_CLOSE)
break;
}
return u8_Idx;
}
void appVoipService_UpdateCallState(IN u32 u32_cmbsCallID, IN EXTVOIP_CALL_STATE e_CallState)
{
u8 u8_CallId = appVoipService_GetCallId(u32_cmbsCallID);
if (u8_CallId == APPVOIP_NO_CALL)
{
printf("\n appVoipService_UpdateCallState: Invalid call id \n");
}
else
{
G_st_VOIP_CallData[u8_CallId].e_Call = e_CallState;
printf("\n appVoipService_UpdateCallState: %d\n", e_CallState);
}
return;
}
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
EXTAPP_RC appVoipService_OnCallAnswer(IN u32 u32_cmbsCallID, IN EXTVOIP_CODEC codec)
{
u32 u32_ChannelSlots;
u8 u8_CallId = appVoipService_GetCallId(u32_cmbsCallID);
if(u8_CallId == APPVOIP_NO_CALL)
{
printf("\nappVoipService_OnCallAnswer: Invalid call Id\n");
return EXTVOIP_RC_FAIL;
}
if (G_b_UseSameSlotsForDivertedCall)
{
u32_ChannelSlots = G_st_VOIP_CallData[u8_CallId].u32_ChannelParameter;
}
else
{
appVoipService_GetSlotsForCall(u32_cmbsCallID,codec,&u32_ChannelSlots);
G_st_VOIP_CallData[u8_CallId].u32_ChannelParameter = u32_ChannelSlots;
}
if(u32_ChannelSlots != APPVOIP_NO_FREE_SLOTS)
{
if(appmedia_CallObjMediaStart(0,u32_cmbsCallID,u32_ChannelSlots,NULL))
G_st_VOIP_CallData[u8_CallId].e_Media = E_APPCMBS_MEDIA_ACTIVE;
}
else
{
printf("\n appVoipService_OnCallAnswer: No free slots for call %d \n", u8_CallId);
}
return EXTAPP_RC_OK;
}
u32 appVoipService_OnDivertCall(ST_DIVERT_CALL_INFO *pst_DivertCallInfo)
{
u32 u32_ActiveCmbsCallId;
ST_EXTVOIPCALLINFO st_CallInfo = {0,};
PST_CALL_OBJ pst_Call;
EXTVOIP_CODEC p_CodecList[] = {EXTVOIP_CODEC_PCM_LINEAR_WB, EXTVOIP_CODEC_PCM_LINEAR_NB};
if(!pst_DivertCallInfo)
{
printf("\n appVoipService_OnDivertCall: Error \n");
return EXTAPP_RC_FAIL;
}
u32_ActiveCmbsCallId = pst_DivertCallInfo->cmbsCallID;
// get call object
pst_Call = _appcall_CallObjGetById(u32_ActiveCmbsCallId);
if ( !pst_Call )
{
printf("appVoipService_OnDivertCall : NO SUCH CALL WITH ID %d\n", u32_ActiveCmbsCallId);
return EXTAPP_RC_FAIL;
}
if(pst_DivertCallInfo->u8_NumOfCodecs)
{
st_CallInfo.p_codecList = pst_DivertCallInfo->pu8_CodecsList;
st_CallInfo.codecListLen = pst_DivertCallInfo->u8_NumOfCodecs;
}
else
{
st_CallInfo.codecListLen = 2;
st_CallInfo.p_codecList = p_CodecList;
}
st_CallInfo.psz_CallerParty = pst_DivertCallInfo->psz_CalledDigits;
st_CallInfo.psz_CalledParty = pst_DivertCallInfo->psz_CallerID;
st_CallInfo.psz_CallerName = pst_DivertCallInfo->psz_CalledID;
st_CallInfo.LineId = 1;
st_CallInfo.Melody = 1;
pst_DivertCallInfo->cmbsCallID = extvoip_MakeIncomingCall(appVoipSrv_appID,&st_CallInfo,1);
if(_appcall_CallObjGetById(pst_DivertCallInfo->cmbsCallID))
{
u8 u8_CallId = appVoipService_AssignNewCallId();
if(u8_CallId != APPVOIP_NO_CALL)
{
G_st_VOIP_CallData[u8_CallId].u32_CmbsCallId = pst_DivertCallInfo->cmbsCallID;
G_st_VOIP_CallData[u8_CallId].u32_ChannelParameter = pst_DivertCallInfo->u32_ChannelParameter;
G_st_VOIP_CallData[u8_CallId].e_Media = E_APPCMBS_MEDIA_PEND;
G_st_VOIP_CallData[u8_CallId].e_Call= E_APPCMBS_CALL_OUT_PROC;
return EXTAPP_RC_OK;
}
else
{
printf("\nappVoipService_OnDivertCall: unable to assign new voip callId\n");
return EXTAPP_RC_FAIL;
}
}
else
{
printf("\nappVoipService_OnDivertCall: unable to divert call\n");
return EXTAPP_RC_FAIL;
}
appSmartVoice_AddToCallChannelMap(pst_DivertCallInfo->u32_ChannelID,u32_ActiveCmbsCallId);
return pst_DivertCallInfo->cmbsCallID;
}
EXTAPP_RC appVoipService_OnCallEstablish(IN u32 cmbsCallID, IN const char* calledID, IN const char* callerHandset, IN u32 lineID, IN EXTVOIP_CODEC* codecList, IN u32 codecListLength)
{
PST_VOIP_CALL_DATA pst_CallData;
ST_APPCALL_PROPERTIES st_Properties;
u8 u8_CallId = appVoipService_AssignNewCallId();
if (u8_CallId == APPVOIP_NO_CALL)
{
printf("\n appVoipService_OnCallEstablish: Error \n");
return EXTAPP_RC_FAIL;
}
pst_CallData = &G_st_VOIP_CallData[u8_CallId];
pst_CallData->u32_CmbsCallId = cmbsCallID;
printf("\n<<<<<< appVoipService_OnCallEstablish >>>>>>>\n");
if(!codecListLength)
pst_CallData->e_Codec = EXTVOIP_CODEC_PCM_LINEAR_WB;
else
pst_CallData->e_Codec = codecList[0];
appVoipService_GetSlotsForCall(cmbsCallID, pst_CallData->e_Codec, &(pst_CallData->u32_ChannelParameter));
pst_CallData->e_Media = E_APPCMBS_MEDIA_PEND;
st_Properties.e_IE = CMBS_IE_CALLPROGRESS;
st_Properties.psz_Value = "CMBS_CALL_PROGR_SETUP_ACK\0";
appcall_ProgressCall(&st_Properties, 1, (u16)cmbsCallID, NULL);
if(lineID == APPCALL_NO_LINE) //no line id
{
static char s_reason[5] = { 0 };
sprintf(s_reason, "%d", CMBS_REL_REASON_USER_BUSY);
// disconnecting call
st_Properties.e_IE = CMBS_IE_CALLRELEASE_REASON;
st_Properties.psz_Value = s_reason;
appcall_ReleaseCall(&st_Properties, 1, (u16)cmbsCallID, NULL);
return EXTAPP_RC_FAIL;
}
st_Properties.e_IE = CMBS_IE_CALLPROGRESS;
st_Properties.psz_Value = "CMBS_CALL_PROGR_PROCEEDING\0";
appcall_ProgressCall(&st_Properties, 1, (u16)cmbsCallID, NULL);
pst_CallData->e_Call = E_APPCMBS_CALL_OUT_PROC;
return EXTAPP_RC_OK;
}
EXTAPP_RC appVoipService_OnCallRelease(IN u32 cmbsCallID, IN EXTVOIP_RELEASE_REASON ReleaseReason)
{
printf("\nappVoipService_OnCallRelease\n");
return EXTAPP_RC_OK;
}
EXTAPP_RC appVoipService_OnCallReleaseDone(IN u32 cmbsCallID)
{
printf("\appVoipService_OnCallReleaseDone\n");
u8 u8_CallId = appVoipService_GetCallId(cmbsCallID);
if (u8_CallId == APPVOIP_NO_CALL)
{
printf("\n appVoipService_OnCallReleaseDone: Call already released \n");
return EXTAPP_RC_FAIL;
}
appVoipService_FreeSlotsForCall(cmbsCallID,&(G_st_VOIP_CallData[u8_CallId].u32_ChannelParameter));
G_st_VOIP_CallData[u8_CallId].e_Call = E_APPCMBS_CALL_CLOSE;
G_st_VOIP_CallData[u8_CallId].e_Media = E_APPCMBS_MEDIA_CLOSE;
return EXTAPP_RC_OK;
}
void appVoipService_OnMediaChange(u32 u32_CallID, EXTVOIP_CODEC e_Codec)
{
u8 u8_CallId = appVoipService_GetCallId(u32_CallID);
if (u8_CallId == APPVOIP_NO_CALL)
{
printf("\n appVoipService_OnMediaChange: Invalid call ID \n");
return;
}
// answer current call
extvoip_OnAnswerCall(u32_CallID, e_Codec);
if( G_st_VOIP_CallData[u8_CallId].u32_ChannelParameter != 0xFF)
{
G_u32_CallIdSlotMap[u32_CallID] = G_st_VOIP_CallData[u8_CallId].u32_ChannelParameter;
appmedia_CallObjMediaStart(0,u32_CallID,G_st_VOIP_CallData[u8_CallId].u32_ChannelParameter,NULL);
printf("\nappVoipService_OnMediaChange: Success\n");
}
else
printf("\n nappVoipService_OnMediaChange: ERROR \n ");
return;
}
void appVoipService_GetSlotsForCall(IN u32 u32_cmbsCallID,IN EXTVOIP_CODEC e_Codec, OUT u32 *pu32_ChannelSlots)
{
u32 u32_Slots;
u8 u8_SlotMaxOffset = 0, u8_Idx;
switch (e_Codec)
{
case EXTVOIP_CODEC_PCMU:
case EXTVOIP_CODEC_PCMA:
case EXTVOIP_CODEC_PCM8:
u32_Slots = 0x01;
u8_SlotMaxOffset = 31;
break;
case EXTVOIP_CODEC_PCMU_WB:
case EXTVOIP_CODEC_PCMA_WB:
case EXTVOIP_CODEC_PCM_LINEAR_NB:
u32_Slots = 0x03;
u8_SlotMaxOffset = 30;
break;
case EXTVOIP_CODEC_PCM_LINEAR_WB:
u32_Slots = 0x0F;
u8_SlotMaxOffset = 28;
break;
default:
DECT_DBG("appVoipService_GetSlotsForCall - Unsupported codec!\n");
*pu32_ChannelSlots = APPVOIP_NO_FREE_SLOTS;
DECT_DBG("\n\nNo free slots - aborting media start\n\n");
}
if (u8_SlotMaxOffset > 0)
{
for (u8_Idx = 0; u8_Idx <= u8_SlotMaxOffset; ++u8_Idx)
{
if ( ((u32_Slots << u8_Idx) & G_u32_SlotsMask) == 0 )
{
break;
}
}
if ( u8_Idx <= u8_SlotMaxOffset )
{
/* available slots exist */
//st_MediaChannel.u32_ChannelParameter = u32_Slots << u8_Idx;
*pu32_ChannelSlots = u32_Slots << u8_Idx;
G_u32_SlotsMask |= *pu32_ChannelSlots;
}
}
G_u32_CallIdSlotMap[u32_cmbsCallID] = *pu32_ChannelSlots;
}
void appVoipService_FreeSlotsForCall(IN u32 u32_cmbsCallID,IN u32 *pu32_ChannelSlots)
{
G_u32_CallIdSlotMap[u32_cmbsCallID] = APPVOIP_NO_FREE_SLOTS;
G_u32_SlotsMask &= (u32)(~(*pu32_ChannelSlots));
return;
}
EXTAPP_RC appVoipService_SetAudioChannel (IN u32 cmbsCallID, IN u32 mediaChannelID, IN EXTVOIP_CODEC e_Codec)
{
u8 u8_CallId = appVoipService_GetCallId(cmbsCallID);
if (u8_CallId == APPVOIP_NO_CALL)
{
printf("\n appVoipService_SetAudioChannel: Error \n");
return EXTAPP_RC_FAIL;
}
G_st_VOIP_CallData[u8_CallId].u32_ChannelID = mediaChannelID;
G_st_VOIP_CallData[u8_CallId].e_Codec = e_Codec;
#if 0
// answer current call
extvoip_OnAnswerCall(cmbsCallID, e_Codec);
#endif
if (extvoip_CallMediaStart(cmbsCallID, G_st_VOIP_CallData[u8_CallId].u32_ChannelParameter))
{
G_st_VOIP_CallData[u8_CallId].e_Media = E_APPCMBS_MEDIA_ACTIVE;
return EXTAPP_RC_OK;
}
else
{
printf("\n appVoipService_SetAudioChannel: ERROR \n ");
return EXTAPP_RC_FAIL;
}
}
EXTAPP_RC appVoipService_SendDigits(IN u32 u32_cmbsCallID, IN char* psz_Digits)
{
u8 u8_CallId = appVoipService_GetCallId(u32_cmbsCallID);
if (u8_CallId == APPVOIP_NO_CALL)
{
printf("\n appVoipService_SendDigits: Invalid call Id \n");
return EXTAPP_RC_FAIL;
}
if(strcmp(psz_Digits,"@") == 0)
{
AppCallRouter_DivertOutgoingCall(u32_cmbsCallID,NULL,psz_Digits);
}
else
{
ST_APPCALL_PROPERTIES st_Properties;
printf("send digits to network");
st_Properties.e_IE = CMBS_IE_CALLPROGRESS;
st_Properties.psz_Value = "CMBS_CALL_PROGR_RINGING\0";
appcall_ProgressCall(&st_Properties, 1, (u16)u32_cmbsCallID, NULL);
}
return EXTAPP_RC_OK;
}
void appVoipService_EstablishIncomingCall(void)
{
u32 u32_cmbsCallID;
EXTVOIP_CODEC codecList[2] = { EXTVOIP_CODEC_PCM_LINEAR_WB,EXTVOIP_CODEC_PCM_LINEAR_NB };
char psz_CallerName[] = "Inc Test Call";
char psz_CallerParty[] = "124571";
char psz_CalledParty[] = "h123456789A";
ST_EXTVOIPCALLINFO st_CallInfo = {psz_CallerName,psz_CallerParty,psz_CalledParty,0,codecList,2};
u32_cmbsCallID = extvoip_MakeIncomingCall(appVoipSrv_appID,&st_CallInfo,0);
if(_appcall_CallObjGetById(u32_cmbsCallID))
{
u8 u8_CallId = appVoipService_AssignNewCallId();
if(u8_CallId != APPVOIP_NO_CALL)
{
G_st_VOIP_CallData[u8_CallId].u32_CmbsCallId = u32_cmbsCallID;
G_st_VOIP_CallData[u8_CallId].e_Call = E_APPCMBS_CALL_INC_PEND;
G_st_VOIP_CallData[u8_CallId].e_Media = E_APPCMBS_MEDIA_PEND;
return;
}
else
{
printf("\appVoipService_EstablishIncomingCall: unable to assign new voip callId\n");
return;
}
}
}
void appVoipService_AnswerCall(u32 u32_cmbsCallID)
{
u8 u8_CallId = appVoipService_GetCallId(u32_cmbsCallID);
if (u8_CallId == APPVOIP_NO_CALL)
{
printf("\n appVoipService_AnswerCall: Error \n");
return ;
}
extvoip_OnAnswerCall(u32_cmbsCallID, G_st_VOIP_CallData[u8_CallId].e_Codec);
}
void appVoipService_ReleaseCall(u32 u32_cmbsCallID)
{
u8 u8_CallId = appVoipService_GetCallId(u32_cmbsCallID);
if (u8_CallId == APPVOIP_NO_CALL)
{
printf("\n appVoipService_AnswerCall: Error \n");
return;
}
extvoip_OnDisconnectCall(u32_cmbsCallID,EXTVOIP_REASON_NORMAL);
}

View File

@@ -1,27 +0,0 @@
/*!
* \file appVoipService.h
* \brief
* \Author DSPG
*
* @(#) %filespec: appVoipService.h
*
*******************************************************************************/
typedef struct
{
u32 u32_CmbsCallId; /*!< Call Instance to identify the call on CMBS */
u32 u32_ChannelID; /*!< Channel ID to identify the media connection on CMBS */
u32 u32_ChannelParameter; /*!< Channel Parameter provides information about the parameter settings, e.g. IOM - used slots */
EXTVOIP_CODEC e_Codec; /*!< used codec */
u8 pu8_CodecsList[EXTVOIP_CODEC_MAX]; /*!< Codecs list */
u8 u8_CodecsLength; /*!< Codecs list length */
E_APPCMBS_CALL e_Call; /*!< call state */
E_APPCMBS_MEDIA e_Media; /*!< media entity state */
bool b_Incoming; /*!< TRUE for incoming calls, FALSE o/w */
} ST_VOIP_CALL_DATA, * PST_VOIP_CALL_DATA;
// register callbacks
EXTAPP_RC LoadVoipService(void);
void appVoipService_EstablishIncomingCall(void);
void appVoipService_AnswerCall(u32 u32_cmbsCallID);
void appVoipService_ReleaseCall(u32 u32_cmbsCallID);

File diff suppressed because it is too large Load Diff

View File

@@ -1,302 +0,0 @@
/*!
* \file appcall.h
* \brief
* \Author DSPG
*
* @(#) %filespec: appcall.h~NBGD53#18 %
*
*******************************************************************************
* \par History
* \n==== History ============================================================
* date name version action
* ----------------------------------------------------------------------------
*
* 12-Jun-2013 tcmc_asa brought verison 18 (2.99.9) to 3.x branch
* 28-Jan-2013 tcmc_asa 18 Added appcall_CallInbandInfoCNIP(), PR 3615
* 24-Jan-2013 tcmc_asa 17 Added E_APPCALL_SWITCH_RECEIVED_CODEC
*
*******************************************************************************/
#if !defined( APPCALL_H )
#define APPCALL_H
#include "cmbs_api.h"
#include "cfr_ie.h"
#ifdef PNCAP
#include "pncap_def.h"
#endif
typedef enum
{
E_APPCALL_AUTOMAT_MODE_OFF, /*!< call object automat mode off */
E_APPCALL_AUTOMAT_MODE_ON /*!< call object automat mode on, incoming and outgoing calls shall be handled in simple statemachine */
}E_APPCALL_AUTOMAT_MODE;
typedef enum
{
E_APPCALL_PREFERRED_CODEC_RECEIVED_CODEC,
E_APPCALL_PREFERRED_CODEC_WB, /*! G722 */
E_APPCALL_PREFERRED_CODEC_NB, /*! G726 */
E_APPCALL_SWITCH_RECEIVED_CODEC /* WB->NB or NB->WB */
}E_APPCALL_PREFERRED_CODEC;
/*! \brief exchange structure between CMBS API layer and upper application */
typedef struct
{
E_CMBS_IE_TYPE e_IE; /*! IE type */
char * psz_Value; /*! string value in case of upper -> CMBS API layer */
}ST_APPCALL_PROPERTIES, * PST_APPCALL_PROPERTIES;
/*! \brief CMBS API layer call states */
typedef enum
{
E_APPCMBS_CALL_CLOSE, /*!< line is closed */
E_APPCMBS_CALL_INC_PEND, /*!< CMBS target is informed of an incoming call*/
E_APPCMBS_CALL_INC_RING, /*!< CMBS target let the handset ringing */
E_APPCMBS_CALL_OUT_PEND, /*!< CMBS-API layer received a outgoing call establishment event */
E_APPCMBS_CALL_OUT_PEND_DIAL, /*!< Digits will be collected in CLD array, if Dialtone was switched on.
it is automatically switched off, if call enters this state */
E_APPCMBS_CALL_OUT_INBAND, /*!< The outgoing call is set-up to carry inband signalling, e.g. network tones */
E_APPCMBS_CALL_OUT_PROC, /*!< The outgoing call is proceeding state */
E_APPCMBS_CALL_OUT_RING, /*!< The outgoing call is in ringing state, if not the inband tone is available */
E_APPCMBS_CALL_ACTIVE, /*!< The call is in active mode, media shall be transmitted after channel start */
E_APPCMBS_CALL_RELEASE, /*!< The call is in release mode */
E_APPCMBS_CALL_ON_HOLD, /*!< The call is on hold */
E_APPCMBS_CALL_CONFERENCE, /*!< The call is in conference mode */
E_APPCMBS_CALL_SCREENING, /*!< The call is in screening mode */
}E_APPCMBS_CALL;
/*! \brief CBS API layer media state */
typedef enum
{
E_APPCMBS_MEDIA_CLOSE, /*!< Media entity is closed */
E_APPCMBS_MEDIA_PEND, /*!< Media entity is prepared, codec negotiated and channel ID from Target available */
E_APPCMBS_MEDIA_ACTIVE /*!< Media entity is started to stream */
} E_APPCMBS_MEDIA;
/*! \brief Line node, it contains every important information of the line */
typedef struct
{
u32 u32_foo; /*!< foo */ //TODO
} ST_LINE_OBJ, * PST_LINE_OBJ;
#define APPCALL_INVALID_HS_NUM 0xFF
#define MAX_NUM_OF_PARTICIPANTS_IN_CONFERENCE 10
#define CALL_PARTICIPANT_ID_MAX_LEN 30
/*! \brief Call node, it contains every important information of the connection */
typedef struct
{
u32 u32_CallInstance; /*!< Call Instance to identify the call on CMBS */
u8 u8_LineId; /*!< Line ID*/
u8 u8_LineSubType; /*!< Line Sub Type*/
ST_IE_CALLERPARTY st_CallerParty; /*!< Caller Party, incoming call CLI, outgoing call Handset number */
ST_IE_CALLEDPARTY st_CalledParty; /*!< Called Party, incoming call ringing mask, outgoing call to be dialed number */
ST_IE_CALLERPARTY st_TmpParty; /*!< further feature, temp party, e.g. call waiting active and the CMBS API layer has to restore connection*/
char ch_TmpParty[CALL_PARTICIPANT_ID_MAX_LEN]; /*!< buffer of temp party number */
char ch_CallerID[CALL_PARTICIPANT_ID_MAX_LEN]; /*!< buffer of caller party number */
char ch_CalledID[CALL_PARTICIPANT_ID_MAX_LEN]; /*!< buffer of called party number */
u32 u32_ChannelID; /*!< Channel ID to identify the media connection on CMBS */
u32 u32_ChannelParameter; /*!< Channel Parameter provides information about the parameter settings, e.g. IOM - used slots */
E_CMBS_AUDIO_CODEC e_Codec; /*!< used codec */
u8 pu8_CodecsList[CMBS_AUDIO_CODEC_MAX]; /*!< Codecs list */
u8 u8_CodecsLength; /*!< Codecs list length */
E_APPCMBS_CALL e_Call; /*!< call state */
E_APPCMBS_MEDIA e_Media; /*!< media entity state */
bool b_Incoming; /*!< TRUE for incoming calls, FALSE o/w */
bool b_CodecsOfferedToTarget; /*!< TRUE when codecs have been sent to target (relevant for outgoing calls only) */
bool b_IsSplashRing; /*!< TRUE when this call is for Splash Ring only */
bool b_WaitingForMerge; /*!< TRUE if call is waiting to be merged, FALSE o/w */
u8 pu8_ListOfParticipants[MAX_NUM_OF_PARTICIPANTS_IN_CONFERENCE][CALL_PARTICIPANT_ID_MAX_LEN]; /*!< stores participant ids for all participants of the call */
u8 u8_NumOfParticipants; /*!< stores number of participants in the call */
} ST_CALL_OBJ, * PST_CALL_OBJ;
typedef struct
{
u8 u8_CallReleaseInProgress;
u32 u32_CallInstance;
ST_IE_RELEASE_REASON st_Reason;
bool b_SendReleaseRequest;
}ST_CALL_RELEASE;
typedef struct
{
u32 u32_CallInstance_1;
u32 u32_CallInstance_2;
}ST_CMBS_APP_CONF_CALL_ENTRY, *PST_CMBS_APP_CONF_CALL_ENTRY;
#ifdef PNCAP
typedef enum {
DateTimeSync,
MWISend,
MissedCallNotification,
NameNumber
}ePnCapAttribute;
typedef struct {
u8 IntName[26];
int u8_IntNum;
int u8_Coding;
}pncap_name_and_number;
typedef union {
/** all values should be in BCD format */
struct pncap_date_and_time PnCapDateTime;
pncap_name_and_number PnCapNameNum;
u8 u8_MessagesWaiting;
}UnionPnCapFacility;
typedef enum{
PNCAP_RESERVE_FACILITY=1
}ePnCapReserved;
#endif
#define CMBS_MAX_NUMBER_OF_CONFERENCE_CALLS 5
/*! \brief max line */
#define APPCALL_LINEOBJ_MAX 40
/*! \brief max connection for CMBS API layer */
#if (NBS==1)
#define APPCALL_CALLOBJ_MAX 10
#else
#define APPCALL_CALLOBJ_MAX 8
#endif
#define APPCALL_NO_LINE 0xFF
#define APPCALL_NO_CALL 0xFFFF
#define APPCALL_NO_INDEX 0xFF
#define APPCALL_NO_MEDIA_CHANNEL 0xFF
#define ALL_HS_STRING "h123456789A\0"
#define ALL_HS_1 "h1\0"
#define ALL_HS_2 "h2\0"
#define ALL_HS_3 "h3\0"
#define ALL_HS_4 "h4\0"
#define ALL_HS_5 "h5\0"
#define ALL_HS_6 "h6\0"
#define ALL_HS_7 "h7\0"
#define ALL_HS_8 "h8\0"
#define ALL_HS_9 "h9\0"
#define ALL_HS_10 "hA\0"
#define CALL_RELEASE_0 "0\0"
#define CALL_RELEASE_1 "1\0"
#define CALL_RELEASE_2 "2\0"
#define CALL_RELEASE_3 "3\0"
#define CALL_RELEASE_4 "4\0"
#define CMBS_MULTICALL_LINE_NUM_OF_CALLS 2
#define CMBS_NO_LINE_DEFINED 0x7F
#define CMBS_NO_ENTRY_FOUND 0xFF
#define CMBS_MAX_NUM_OF_LINES 5
typedef struct
{
u16 u16_CallId;
ST_CALL_OBJ st_CallInfo;
} ST_SINGLE_CALL_INFO, * PST_SINGLE_CALL_INFO;
typedef struct
{
u16 u16_NumberOfActiveCalls;
ST_SINGLE_CALL_INFO st_ActiveCallInfo[APPCALL_CALLOBJ_MAX];
}ST_ALLACTIVECALLSINFO, * PST_ALLACTIVECALLSINFO;
#if defined( __cplusplus )
extern "C"
{
#endif
void appcall_Initialize (void);
void appcall_AutomatMode ( E_APPCALL_AUTOMAT_MODE e_Mode );
u16 appcall_EstablishCall ( PST_APPCALL_PROPERTIES pst_Properties, int n_Properties );
void appcall_ReconnectSwitch(u16 u16_SrCallId, u16 u16_DestCallId, PST_APPCALL_PROPERTIES pst_Properties);
int appcall_ReleaseCall( PST_APPCALL_PROPERTIES pst_Properties, int n_Properties, u16 u16_CallId, char * psz_CLI );
int appcall_AnswerCall ( PST_APPCALL_PROPERTIES pst_Properties, int n_Properties, u16 u16_CallId, char * psz_CLI );
int appcall_ProgressCall ( PST_APPCALL_PROPERTIES pst_Properties, int n_Properties, u16 u16_CallId, char * psz_CLI );
int appcall_DisplayCall ( PST_APPCALL_PROPERTIES pst_Properties, int n_Properties, u16 u16_CallId, char * psz_CLI );
int appcall_DisplayString ( PST_APPCALL_PROPERTIES pst_Properties, int n_Properties, u16 u16_CallId, char * psz_Display );
int appcall_ResumeCall( u16 u16_CallId, char * psz_CLI );
int appcall_HoldCall( u16 u16_CallId, char * psz_CLI );
int appcall_CallInbandInfo( u16 u16_CallId, char * psz_CLI );
int appcall_CallInbandInfoCNIP( u16 u16_CallId, char * pu8_Name, char * pu8_FirstName, char * pch_cli );
int appcall_MergeCalls( u16 u16_CallId1, u16 u16_CallId2, u8 u8_CovertToInt );
int appcall_AnswerFxsCall(u16 u16_CallId1);
int appcall_MakeSPKOgCall(u16 u8_HsNo);
int appcall_EmergencyCallRelease( u16 u16_CallId );
int appcall_EmergencyCallReleaseByCallInstance( u16 u16_CallInstance );
u16 appcall_EstablishSplashRing( PST_APPCALL_PROPERTIES pst_Properties, int n_Properties, u8 u8_SplashTimer );
void appcall_ReleaseSplashRingCall(PST_CALL_OBJ pst_Call);
/* appmedia_CallObjTonePlay: u16_ToneDur parameter & u16_DTMFToneToHSMask are only valid for DTMF request.
* For all other tones values should be 0 (will be ignored)
*/
void appmedia_CallObjTonePlay(char *psz_Value, u16 u16_ToneVolume, int bo_On, u16 u16_CallId, char *psz_CLI, u16 u16_ToneDur, u16 u16_DTMFToneToHSMask);
bool appmedia_CallObjMediaStart( u32 u32_CallInstance, u16 u16_CallId, u32 u32_ChannelSlots, char * psz_CLI );
void appmedia_CallObjMediaStop( u32 u32_CallInstance, u16 u16_CallId, char * psz_CLI );
void appmedia_CallObjMediaOffer( u16 u16_CallId, char ch_Audio );
void appcall_InfoPrint ( void );
bool appcall_IsHsInCallWithLine ( u8 u8_HsNumber, u8 u8_LineId );
bool appcall_IsLineInUse ( u8 u8_LineId );
void appcall_HandleLineUseStatus (u8 u8_LineId);
void appcall_HandleHSUseStatus (u8 u8_LineId, u16 u16_HsNr, bool b_InUse);
u8 appcall_GetMaximumNumberOfAllowedCalls(u8 u8_LineId);
void appcall_SetActiveCallTable(u8 u8_Line, u32 u32_CallInstanse);
void appcall_RemoveCallFromTable(u8 u8_Line, u32 u32_CallInstanse);
bool appcall_IsCallInTable(u8 u8_Line, u32 u32_CallInstanse);
u8 appcall_GetNumOfActiveCallsForLine(u8 u8_Line);
bool appcall_CheckHSInOtherCall(u8 u8_Line, u16 u16_HSNum, u32 u32_CallInstance);
u16 appcall_GetHSMask(u8 u8_Line, u32 u32_CallInstanse);
void appcall_SetHSMask(u8 u8_Line, u32 u32_CallInstanse, u16 u16_HSMask);
void appcall_HSUseChange(u8 u8_LineId, u16 u16_HSMask, u32 u32_CallInstance);
void appcall_SetHsStatus( u32 u32_CallInstanse, PST_IE_CALL_STATE st_CallState);
void appcall_GetHsStatus( u8 u8_HsNo, ST_IE_CALL_STATE *st_CallState);
void appcall_ConferenceCallTableClearEntry(u32 u32_CallInstance);
u32 appcall_ConferencePartnerGet(u32 u32_CallInstance);
u8 appcall_ConferenceCallTableSet(u32 u32_CallInstance_to, u32 u32_CallInstance_frm);
void appcall_ConferenceCallTableInit();
void appcall_RefreshCallInfo();
void appcall_HsStatusInit(void);
void appcall_GetActiveCallsInfo(void);
#ifdef PNCAP
u16 appcall_PnCapDataCallStart( u16 u16_HsNo );
u16 appcall_PnCapDataPacketSend( u8 *u8_Name, u8 *u8_Num, u16 u16_CallId );
u16 appcall_PnCapDataTransferStop( u16 u16_CallId );
u16 appcall_PnCapDataCallProc(u16 u16_CallId , u16 u16_HsNo);
u16 appcall_PnCapDataCallCfm(u16 u16_CallId , u16 u16_HsNo);
u16 appcall_PnCapPhoneBookActivate(u16 u16_HsNo );
void appcall_PnCapAttribute(ePnCapAttribute PncapAttribute, UnionPnCapFacility AttributeStructure, u16 u16_HSMask );
#endif
ST_CALL_OBJ *appcall_GetCallPendingforDeviceObj(PST_CALL_OBJ pst_Call);
void app_Call2HS(PST_CALL_OBJ pst_Call, u16 u16_DstId);
//void app_PrintCallInfo( E_CMBS_CALL_INFO e_Info );
PST_CALL_OBJ _appcall_CallObjGetById( u16 u16_CallId );
u16 _appcall_CallObjIdGet(PST_CALL_OBJ pst_Call);
PST_CALL_OBJ _appcall_CallObjGet(u32 u32_CallInstance, char *psz_CLI);
u32 appcall_AllocateSlots(u32 u32_NumSlots);
void appcall_DeallocateSlots(u32 u32_Slots);
#if defined( __cplusplus )
}
#endif
#endif // APPCALL_H
//*/

View File

@@ -1,622 +0,0 @@
/*!
\brief Initialize the CMBS application
*/
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
#include <string.h>
#include <sys/time.h> //we need <sys/select.h>; should be included in <sys/types.h> ???
#include <signal.h>
#include <sys/msg.h>
#include <errno.h>
#include "cmbs_platf.h"
#include "cmbs_api.h"
#include "cmbs_han.h"
#include "cmbs_util.h"
#include "cmbs_dbg.h"
#include "cfr_ie.h"
#include "cfr_mssg.h"
#include "appcmbs.h"
#include "appsrv.h"
#include "appcall.h"
#include "applog.h"
#include "apphan.h"
#include "appfacility.h"
#include "appmsgparser.h"
#ifdef Q_AUTO
#include <jsystem_tx.h>
#endif
#include "appHanMw.h"
#include "ListsApp.h"
#ifdef CMBS_PLUGIN
#include "cmbs_plugin.h"
#endif
extern u8 u8_APP_LA_Initialized;
extern void app_LaInitialize(void);
extern u8 tcx_DetectComPort(bool interactiveMode, E_CMBS_DEVTYPE *pu8_type);
extern void tcx_USBConfig(u8 u8_Port, u32 u32_BaudRate);
u32 g_u32_BaudRate = 115200;
extern ST_CMBS_DEV g_st_DevMedia;
extern ST_CMBS_DEV g_st_DevCtl;
ST_CB_LOG_BUFFER pfn_log_buffer_Cb;
#define DEFAULT_MAX_TRANSFER_SIZE (240)
u32 g_CMBSMaxTransferSize = DEFAULT_MAX_TRANSFER_SIZE;
ST_CMBS_APP_INST g_CMBSAppInstance;
extern void cmbs_api_MsgQDestroy(int nMsgQId);
extern int cmbs_api_MsgQCreate(void);
//Target alive indication callback
static t_fptrHANTargetAliveIndication g_fptrHANTargetAliveIndication = NULL;
/*!***************************************************************************
*
* \brief CMBS application feedback entity
*
*****************************************************************************/
// different CMBS parts use different entities
// which will be called by callback function
// if the entity consumes the event, it shall return TRUE
typedef int (*PFN_APP_ENTITY_CB)(void *pv_AppRef,
E_CMBS_EVENT_ID e_EventID,
void *pv_EventIEListRef);
// a flag for external Client
t_e_ExternalClient g_e_externalClient = NO_EXTERNAL_CLIENT;
t_e_ExternalClient appcmbs_GetExternalClientInformation()
{
return g_e_externalClient;
}
void appcmbs_RegisterTargetAliveIndicationCB(t_fptrHANTargetAliveIndication fpt_registerCallBackForTargetAliveIndication)
{
g_fptrHANTargetAliveIndication = fpt_registerCallBackForTargetAliveIndication;
}
void appcmbs_SetExternalClientInformation(t_e_ExternalClient client)
{
g_e_externalClient = client;
}
// global callback function table of received CMBS Events
PFN_APP_ENTITY_CB g_pfn_app_Entity[] =
{
(PFN_APP_ENTITY_CB)app_ServiceEntity,
(PFN_APP_ENTITY_CB)app_CallEntity,
(PFN_APP_ENTITY_CB)app_SwupEntity,
NULL, //(PFN_APP_ENTITY_CB)app_MediaEntity - currently inside call entity
(PFN_APP_ENTITY_CB)app_FacilityEntity,
#ifdef CMBS_PLUGIN
(PFN_APP_ENTITY_CB)app_PluginEntity,
#endif
(PFN_APP_ENTITY_CB)app_DataEntity,
(PFN_APP_ENTITY_CB)app_LaEntity,
(PFN_APP_ENTITY_CB)app_UleDataEntity,
// suotafile will be first so if it is enabled and consume the event, the suota app will not interfere
(PFN_APP_ENTITY_CB)app_SuotaFileEntity,
(PFN_APP_ENTITY_CB)app_SuotaEntity,
(PFN_APP_ENTITY_CB)app_HANEntity,
(PFN_APP_ENTITY_CB)app_RTPEntity,
(PFN_APP_ENTITY_CB)app_LogEntity,
(PFN_APP_ENTITY_CB)app_CmdEntity
#if defined (CRASH_DUMP)
,
(PFN_APP_ENTITY_CB)app_CrashDumpEntity
#endif
};
// global object of application
ST_CMBS_APPL g_cmbsappl;
u8 g_HoldCfm = 1; /* 0 - decline hold, 1 - accept hold */
u8 g_HoldResumeCfm = 1; /* 0 - decline hold resume, 1 - accept hold resume */
u8 g_TransferAutoCfm = 1;
u8 g_ConfAutoCfm = 1;
u8 g_EarlyMediaAutoCfm = 1;
u16 g_u16_DemoCallId = APPCALL_NO_CALL;
u16 g_u16_DemoCallId_0 = APPCALL_NO_CALL;
u16 g_u16_DemoCallId_1 = APPCALL_NO_CALL;
u16 g_u16_DemoCallId_2 = APPCALL_NO_CALL;
u16 g_u16_DemoCallId_3 = APPCALL_NO_CALL;
u16 g_u16_DemoCallId_4 = APPCALL_NO_CALL;
PST_CMBS_APP_INST appcmbs_get_CMBSAppInstance(void)
{
return &g_CMBSAppInstance;
}
// ========== appcmbs_CallBack ===========
/*!
\brief registered callback function to CMBS API for received events
\param[in] pv_AppRef application reference pointer
\param[in] e_EventID received event ID
\param[in] pv_EventData IE list pointer
\return <none>
*/
void appcmbs_CallBack(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData)
{
unsigned int i;
if ( pv_AppRef )
{} // Just one callback function registered, so we don't have to evaluate pv_AppRef
///////////////////////////////////////////////
// JSystem
#ifdef Q_AUTO
// call the JSystem Callback function
//JSystemCallback(e_EventID, pv_EventData);
///////////////////////////////////////////////////
#else
if(g_fptrHANTargetAliveIndication)
{
g_fptrHANTargetAliveIndication();
}
#endif
for (i = 0; i < (sizeof(g_pfn_app_Entity) / sizeof(PFN_APP_ENTITY_CB)); i++)
{
if ( g_pfn_app_Entity[i] )
{
if ( g_pfn_app_Entity[i](pv_AppRef, e_EventID, pv_EventData) )
{
// no handler is needed anymore, event is consumed
return;
}
}
}
APPCMBS_WARN(("Warning: Event: %d %s is not handled, yet\n", e_EventID, cmbs_dbg_GetEventName(e_EventID)));
}
int appcmbs_CordlessStart(ST_IE_SYPO_SPECIFICATION *SYPOParameters)
{
// Start DECT module
appcmbs_PrepareRecvAdd ( TRUE); // This function must be called before sending messages if you want to wait for event/container.
cmbs_dsr_sys_Start(g_cmbsappl.pv_CMBSRef, SYPOParameters);
return appcmbs_WaitForEvent(CMBS_EV_DSR_SYS_START_RES); // This function must be called only after appcmbs_PrepareRecvAdd ( TRUE)
}
// ========== appcmbs_MaxTransferSizeGet ===========
/*!
\brief short description
\param[in,out] None
\return <int> return Max size of transfer supported by the Target
*/
void appcmbs_MaxTransferSizeGet(void)
{
ST_APPCMBS_CONTAINER st_Container;
u32 u32_temp = 0;
//Get CMBS MAX Buffer size supporetd by target
appcmbs_PrepareRecvAdd ( TRUE); // This function must be called before sending messages if you want to wait for event/container.
app_SrvParamGet(CMBS_PARAM_MAX_TRANSFER_SIZE, 1);
appcmbs_WaitForContainer(CMBS_EV_DSR_PARAM_GET_RES, &st_Container); // This function must be called only after appcmbs_PrepareRecvAdd ( TRUE)
if ( st_Container.n_InfoLen )
{
memcpy(&u32_temp, st_Container.ch_Info, CMBS_PARAM_MAX_TRANSFER_SIZE_LENGTH);
cfr_ie_ser_u32((u8 *)&g_CMBSMaxTransferSize,u32_temp);
}
if ( g_CMBSMaxTransferSize == 0 )
{
// can happen if the target is old and does not support the CMBS_PARAM_MAX_TRANSFER_SIZE parameter
APPCMBS_INFO(("g_CMBSMaxTransferSize setting to default %u", DEFAULT_MAX_TRANSFER_SIZE));
g_CMBSMaxTransferSize = DEFAULT_MAX_TRANSFER_SIZE;
}
}
// ========== appcmbs_Initialize ===========
/*!
\brief short description
\param[in,out] pv_AppReference application pointer reference
\return <int> return zero if successful
*/
E_CMBS_RC appcmbs_Initialize(void *pv_AppReference, PST_CMBS_DEV pst_DevCtl, PST_CMBS_DEV pst_DevMedia, PST_CB_LOG_BUFFER pfn_log_buffer_Cb)
{
E_CMBS_RC e_RC = CMBS_RC_OK;
// reset application
memset(&g_cmbsappl, 0, sizeof(g_cmbsappl));
g_cmbsappl.pv_ApplRef = pv_AppReference;
// initialize application
appcall_Initialize();
app_FacilityInit();
// intercommunication between engine and application
g_cmbsappl.n_MssgAppID = cmbs_api_MsgQCreate();
// initialize CMBS API and register callback function
// for test application
cmbs_api_RegisterLogBufferCb(cmbs_api_get_LogBufferCb(), pfn_log_buffer_Cb);
cmbs_dbg_SetParseIEFunc(app_PrintIe2Log);
if ( (e_RC = cmbs_api_Init(CMBS_MODE_MLB, pst_DevCtl, pst_DevMedia)) == CMBS_RC_OK )
{
APPCMBS_INFO(("APP: INFO CMBS-API started with Module version %04x\n", cmbs_api_ModuleVersionGet()));
if ( (g_cmbsappl.pv_CMBSRef = cmbs_api_RegisterCb(&g_cmbsappl, (PFN_CMBS_API_CB)appcmbs_CallBack, 0x0100)) == NULL )
{
APPCMBS_WARN(("APP: WARN Can't register API callback function\n"));
}
}
else
{
printf("Initialization failed\n");
return e_RC;
}
if ( !u8_APP_LA_Initialized )
{
app_LaInitialize();
u8_APP_LA_Initialized = 1;
}
app_HanMWInitialize();
return e_RC;
}
// ========== appcmbs_Cleanup ===========
/*!
\brief clean up CMBS API layer and CMBS API
\param[in] <none>
\return <none>
*/
void appcmbs_Cleanup(void)
{
APPCMBS_INFO(("APP: INFO Cleanup CMBS connectivity\n"));
cmbs_api_UnInit();
cmbs_api_MsgQDestroy(g_cmbsappl.n_MssgAppID);
List_Close();
}
// ========== app_ResponseCheck ===========
/*!
\brief check the IE response item and return response code
\param[in] pv_List IE list pointer
\return <s8> return response code TRUE/FALSE or -1 in case not finding IE
*/
s8 app_ResponseCheck(void *pv_List)
{
void *pv_IE;
u16 u16_IE;
cmbs_api_ie_GetFirst(pv_List, &pv_IE, &u16_IE);
while (pv_IE != NULL)
{
if ( u16_IE == CMBS_IE_RESPONSE )
{
ST_IE_RESPONSE st_Response;
// check response code:
cmbs_api_ie_ResponseGet(pv_IE, &st_Response);
return st_Response.e_Response;
}
cmbs_api_ie_GetNext(pv_List, &pv_IE, &u16_IE);
}
return -1;
}
// ========== appcmbs_PrepareRecvAdd ===========
/*!
\brief set token to pass received infromation to upper layer
\param[in] u32_Token TRUE for passing
\return <none>
*/
void appcmbs_PrepareRecvAdd(u32 u32_Token)
{
g_cmbsappl.n_Token = (int)u32_Token;
}
#ifdef Q_AUTO
void appcmbs_PrepareRecvAddJSys(u32 u32_Token)
{
g_cmbsappl.j_Token = (int)u32_Token;
}
#endif
// ========== appcmbs_WaitForContainer ===========
/*!
\brief Synchronization function enables the application to wait until
requested CMBS event was received.
\param[in] n_Event wait for this CMBS event
\param[in,out] pst_Container pointer to CMBS information contatiner
\return <int> return TRUE, if received, otherwise FALSE on error
\todo timeout handling has to be integrated
*/
int appcmbs_WaitForContainer(int n_Event, PST_APPCMBS_CONTAINER pst_Container)
{
int nRetVal;
int bo_Run = TRUE;
ST_APPCMBS_LINUX_CONTAINER LinuxContainer;
g_cmbsappl.n_Token = 1;
while (bo_Run)
{
nRetVal = msgrcv(g_cmbsappl.n_MssgAppID, &LinuxContainer, sizeof(ST_APPCMBS_CONTAINER), 0, 0);
if ( nRetVal == -1 )
{
g_cmbsappl.n_Token = 0;
bo_Run = FALSE;
}
else if ( n_Event == LinuxContainer.Content.n_Event )
{
if ( pst_Container )
memcpy(pst_Container, &LinuxContainer.Content, nRetVal);
g_cmbsappl.n_Token = 0;
return TRUE;
}
// timeout handler
}
return FALSE;
}
int appcmbs_WaitForEvent(int n_Event)
{
return appcmbs_WaitForContainer(n_Event, NULL);
}
int appcmbs_ObjectSignalTrace(void)
{
struct msqid_ds ds;
int len = -1;
memset(&ds, 0, sizeof(ds));
if (msgctl(g_cmbsappl.n_MssgAppID, IPC_STAT, &ds) == 0)
len = ds.msg_qnum;
return len;
}
// ========== appcmbs_ObjectSignal ===========
/*!
\brief signal to application of received event
\param[in] psz_Info pointer to information buffer
\param[in] n_InfoLen length of information
\param[in] n_Info additional information, e.g. IE element
\param[in] n_Event received CMBS event
\return <none>
*/
void appcmbs_ObjectSignal(char *psz_Info, int n_InfoLen, int n_Info, int n_Event)
{
int nRetVal;
if ( g_cmbsappl.n_MssgAppID >= 0 )
{
ST_APPCMBS_LINUX_CONTAINER LinuxContainer;
LinuxContainer.mType = 1;
memcpy(LinuxContainer.Content.ch_Info, psz_Info, n_InfoLen);
LinuxContainer.Content.n_InfoLen = n_InfoLen;
LinuxContainer.Content.n_Event = n_Event;
LinuxContainer.Content.n_Info = n_Info;
nRetVal = msgsnd(g_cmbsappl.n_MssgAppID, &LinuxContainer, (3 * (sizeof(int)) + n_InfoLen), 0);
if ( nRetVal == -1 )
{
APPCMBS_ERROR(("App:ERROR !!! Container Object was not sent! %d\n",errno));
}
}
}
// ========== appcmbs_IEInfoGet ===========
/*!
\brief handles general to IE function
\param[in] pv_IE IE buffer
\param[in] u16_IE enumeration of IE
\param[in,out] p_Info pointer to IE object
\return <none>
*/
void appcmbs_IEInfoGet(void *pv_IE, u16 u16_IE, PST_APPCMBS_IEINFO p_Info)
{
switch (u16_IE)
{
case CMBS_IE_CALLERNAME:
cmbs_api_ie_CallerNameGet(pv_IE, &p_Info->Info.st_CallerName);
break;
case CMBS_IE_CALLERPARTY:
cmbs_api_ie_CallerPartyGet(pv_IE, &p_Info->Info.st_CallerParty);
break;
case CMBS_IE_CALLEDPARTY:
cmbs_api_ie_CalledPartyGet(pv_IE, &p_Info->Info.st_CalledParty);
break;
case CMBS_IE_CALLINSTANCE:
cmbs_api_ie_CallInstanceGet(pv_IE, &p_Info->Info.u32_CallInstance);
break;
case CMBS_IE_CALLPROGRESS:
cmbs_api_ie_CallProgressGet(pv_IE, &p_Info->Info.st_CallProgress);
break;
case CMBS_IE_CALLINFO:
cmbs_api_ie_CallInfoGet(pv_IE, &p_Info->Info.st_CallInfo);
break;
case CMBS_IE_MEDIACHANNEL:
cmbs_api_ie_MediaChannelGet(pv_IE, &p_Info->Info.st_MediaChannel);
break;
case CMBS_IE_MEDIADESCRIPTOR:
cmbs_api_ie_MediaDescGet(pv_IE, &p_Info->Info.st_MediaDesc);
break;
case CMBS_IE_CALLRELEASE_REASON:
cmbs_api_ie_CallReleaseReasonGet(pv_IE, &p_Info->Info.st_Reason);
break;
case CMBS_IE_PARAMETER:
cmbs_api_ie_ParameterGet(pv_IE, &p_Info->Info.st_Param);
break;
case CMBS_IE_FW_VERSION:
cmbs_api_ie_FwVersionGet(pv_IE, &p_Info->Info.st_FwVersion);
break;
case CMBS_IE_HW_VERSION:
cmbs_api_ie_HwVersionGet(pv_IE, &p_Info->Info.st_HwVersion);
break;
case CMBS_IE_EEPROM_VERSION:
cmbs_api_ie_EEPROMVersionGet(pv_IE, &p_Info->Info.st_EEPROMVersion);
break;
case CMBS_IE_SYS_LOG:
cmbs_api_ie_SysLogGet(pv_IE, &p_Info->Info.st_SysLog);
break;
case CMBS_IE_SUBSCRIBED_HS_LIST:
cmbs_api_ie_SubscribedHSListGet(pv_IE, &p_Info->Info.st_SubscribedHsList);
break;
case CMBS_IE_LINE_SETTINGS_LIST:
cmbs_api_ie_LineSettingsListGet(pv_IE, &p_Info->Info.st_LineSettingsList);
break;
case CMBS_IE_RESPONSE:
cmbs_api_ie_ResponseGet(pv_IE, &p_Info->Info.st_Resp);
break;
case CMBS_IE_LINE_ID:
cmbs_api_ie_LineIdGet(pv_IE, &p_Info->Info.u8_LineId);
break;
case CMBS_IE_MELODY:
cmbs_api_ie_MelodyGet(pv_IE, &p_Info->Info.u8_Melody);
break;
case CMBS_IE_DECT_SETTINGS_LIST:
cmbs_api_ie_DectSettingsListGet(pv_IE, &p_Info->Info.st_DectSettings);
break;
case CMBS_IE_PROP_FIELDS_LIST:
cmbs_api_ie_PropDectSettingsListGet(pv_IE, &p_Info->Info.st_PropSettings);
break;
case CMBS_IE_CALL_LIST:
cmbs_api_ie_CallListGet(pv_IE, &p_Info->Info.st_CallList);
break;
default:
if ( CMBS_IE_USER_DEFINED_START <= u16_IE && u16_IE <= CMBS_IE_USER_DEFINED_END )
{
break;
}
APPCMBS_WARN(("APP: WARN IE_ToString: IE:%d not implemented\n", u16_IE));
}
}
void appcmbs_VersionGet(char *pc_Version)
{
char ch_RcBuild[20];
u16 u16_Version = cmbs_api_ModuleVersionGet();
u16 u16_Build = cmbs_api_ModuleVersionBuildGet();
if (u16_Build>>8)
{
sprintf (ch_RcBuild,"- RC %u", (u16_Build>>8));
}
else
{
ch_RcBuild[0] = '\0';
}
if ( u16_Version > 0xFFF )
sprintf(pc_Version, "Version %x.%02x.%x - Build %hu %s", (u16_Version >> 12), ((u16_Version >> 4)& 0xFF),(u16_Version & 0xF), (u16_Build & 0xFF), ch_RcBuild);
else
sprintf(pc_Version, "Version %02x.%02x - Build %hu %s", (u16_Version >> 8), (u16_Version & 0xFF), (u16_Build & 0xFF), ch_RcBuild);
}
unsigned long appcmbs_GetTickCount(void)
{
struct timeval tv;
gettimeofday(&tv,NULL);
return ((unsigned long)tv.tv_sec*1000);
}
int appcmbs_ReconnectApplication(unsigned long ulTimeoutMs)
{
u32 u32_Sec, i;
int resp;
u8 u8_HwChip_temp, u8_HwComType_temp;
//effi - need this to re-regsiter the log callbacks
ST_CB_LOG_BUFFER * pfnLogCallbacks=cmbs_api_get_LogBufferCb();
cmbs_api_UnInit();
if ( ulTimeoutMs )
{
u32_Sec = ulTimeoutMs / 1000;
for (i = 0; i <= u32_Sec; ++i)
{
printf("\r%d sec. remaining...", u32_Sec - i);
SleepMs(1000);
}
}
APPCMBS_INFO(("\n"));
// Back and restore u8_HwChip and u8_HwComType since cmbs_api_Init cleans them
u8_HwChip_temp = appcmbs_get_CMBSAppInstance()->u8_HwChip;
u8_HwComType_temp = appcmbs_get_CMBSAppInstance()->u8_HwComType;
resp = cmbs_api_Init(CMBS_MODE_MLB, &g_st_DevCtl, &g_st_DevMedia);
cmbs_api_RegisterCb(&g_cmbsappl, (PFN_CMBS_API_CB)appcmbs_CallBack, 0x0100);
// Effi - need to reregister the log functions
// Register callback functions for log buffer handling
cmbs_api_RegisterLogBufferCb(&g_cmbsappl, pfnLogCallbacks);
cmbs_dbg_SetParseIEFunc(app_PrintIe2Log);
appcmbs_get_CMBSAppInstance()->u8_HwChip = u8_HwChip_temp;
appcmbs_get_CMBSAppInstance()->u8_HwComType = u8_HwComType_temp;
if ( resp == CMBS_RC_OK )
{
cmbs_dsr_sys_Start(g_cmbsappl.pv_CMBSRef, NULL);
}
else
{
APPCMBS_ERROR(("appcmbs_Initialize failure %d!!!", resp));
}
return resp;
}
int app_CmdEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData)
{
UNUSED_PARAMETER(pv_AppRef);
UNUSED_PARAMETER(pv_EventData);
// return TRUE for all commands
return (e_EventID & CMBS_CMD_MASK) == CMBS_CMD_MASK;
}
#ifdef CMBS_PLUGIN
int app_PluginEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData)
{
return CMBS_HandleEventPlugins(pv_AppRef, e_EventID, pv_EventData);
}
#endif
void app_CreateThread(start_routine pfn)
{
pthread_t uTempThread;
pthread_create( &uTempThread, NULL, pfn, (void*) NULL);
}

View File

@@ -1,208 +0,0 @@
/*!
* \file appmain.h
* \brief object and utility declaration
* \Author kelbch
*
* @(#) %filespec: appcmbs.h~13.1.1.1.1.1.10 %
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
*******************************************************************************/
#if !defined( APPCMBS_H )
#define APPCMBS_H
#include "cfr_mssg.h"
#ifndef caseretstr
#define caseretstr(x) case x: return #x
#endif
#if defined ( TCXLOG_FILE )
#include "tcx_hostlog.h"
#define APPCMBS_ERROR(x) GENERAL_LOG_ERROR_PRINT x
#define APPCMBS_WARN(x) GENERAL_LOG_WARNING_PRINT x
#define APPCMBS_INFO(x) GENERAL_LOG_INFO_PRINT x
#define APPCMBS_IE(x) GENERAL_LOG_INFO_PRINT x
#else
#define APPCMBS_ERROR(x) printf x
#define APPCMBS_WARN(x) printf x
#define APPCMBS_INFO(x) printf x
#define APPCMBS_IE(x) printf x
#endif
#define APPCMBS_RECONNECT_TIMEOUT (60000) //60 sec (should be enough for eeprom resetting)
#define HAN_DECT_SUBS_LENGTH (101*1000+5)
#define HAN_ULE_SUBS_LENGTH (15*1000)
#define HAN_FUN_SUBS_LENGTH (131*1000)
#define HAN_FUN_GROUP_LIST_LENGTH (50)
#define HAN_FUN_GROUP_TABLE_LENGTH (500)
#define HAN_ULE_BROADCAST_CONVERSION_TABLE_LENGTH (600)
#define PARAM_REPEATER_SUBS_DATA_LENGTH 50*28 //50 bytes per Repeater and handset over repeater, 28 in maximum case
typedef void* (*start_routine)(void *);
typedef struct
{
E_CMBS_IE_TYPE e_IE;
union
{
u32 u32_CallInstance;
u8 u8_LineId;
ST_IE_CALLEDPARTY st_CalledParty;
ST_IE_CALLERPARTY st_CallerParty;
ST_IE_CALLERNAME st_CallerName;
ST_IE_CALLPROGRESS st_CallProgress;
ST_IE_CALLINFO st_CallInfo;
ST_IE_DISPLAY_STRING st_DisplayString;
ST_IE_RELEASE_REASON st_Reason;
ST_IE_MEDIA_DESCRIPTOR st_MediaDesc;
ST_IE_MEDIA_CHANNEL st_MediaChannel;
ST_IE_TONE st_Tone;
ST_IE_TIMEOFDAY st_Time;
ST_IE_HANDSETINFO st_HandsetInfo;
ST_IE_PARAMETER st_Param;
ST_IE_FW_VERSION st_FwVersion;
ST_IE_HW_VERSION st_HwVersion;
ST_IE_SYS_LOG st_SysLog;
ST_IE_SUBSCRIBED_HS_LIST st_SubscribedHsList;
ST_IE_LINE_SETTINGS_LIST st_LineSettingsList;
ST_IE_DECT_SETTINGS_LIST st_DectSettings;
ST_IE_PROP_FIELDS_LIST st_PropSettings;
ST_IE_USER_DEFINED st_UserDefined;
ST_IE_RESPONSE st_Resp;
// ST_IE_STATUS st_Status;
u32 u32_IntegerValue;
u8 u8_Melody;
ST_IE_EEPROM_VERSION st_EEPROMVersion;
ST_IE_CALL_LIST st_CallList;
}Info;
} ST_APPCMBS_IEINFO, *PST_APPCMBS_IEINFO;
typedef struct
{
void *pv_ApplRef;
void *pv_CMBSRef;
int n_MssgAppID;
int n_Token;
#ifdef Q_AUTO
int j_Token;
#endif
int RegistrationWindowStatus; // 0 - Closed, 1 - Opened
}ST_CMBS_APPL, *PST_CMBS_APPL;
typedef struct
{
int n_InfoLen;
int n_Info;
int n_Event;
char ch_Info[4*1024];
} ST_APPCMBS_CONTAINER, *PST_APPCMBS_CONTAINER;
typedef union {
u8 pu8_HAN_DECT_DATA[HAN_DECT_SUBS_LENGTH];
u8 pu8_HAN_ULE_DATA[HAN_ULE_SUBS_LENGTH];
u8 pu8_HAN_FUN_DATA[HAN_FUN_SUBS_LENGTH];
u8 pu8_HAN_FUN_GROUP_LIST_DATA[HAN_FUN_GROUP_LIST_LENGTH];
u8 pu8_HAN_FUN_GROUP_TABLE_DATA[HAN_FUN_GROUP_TABLE_LENGTH];
u8 pu8_HAN_ULE_BROADCAST_CONVERSION_TABLE_DATA[HAN_ULE_BROADCAST_CONVERSION_TABLE_LENGTH];
u8 pu8_HAN_ULE_MULTICAST_ENC_PARAMS_DATA[CMBS_PARAM_ULE_MULTICAST_ENC_PARAMS_LENGTH];
u8 pu8_REPEATER_SUBS_DATA[PARAM_REPEATER_SUBS_DATA_LENGTH];
} UnionHanEEPROMBackupEBlocksPools;
typedef struct
{
long mType;
ST_APPCMBS_CONTAINER Content;
} ST_APPCMBS_LINUX_CONTAINER, *PST_APPCMBS_LINUX_CONTAINER;
typedef struct
{
E_CMBS_HW_CHIP u8_HwChip; /*!< HW chip */
E_CMBS_HW_CHIP_VERSION u8_HwChipVersion; /*!< HW chip version */
E_CMBS_HW_BOARD u8_HwBoard; /*!< HW board type */
E_CMBS_HW_COM_TYPE u8_HwComType; /*!< HW communication */
} ST_CMBS_APP_INST, *PST_CMBS_APP_INST;
typedef enum
{
NO_EXTERNAL_CLIENT,
EXTERNAL_CLIENT_EXIST
}t_e_ExternalClient;
typedef u32(*t_fptrHANTargetAliveIndication)();
extern ST_CMBS_APPL g_cmbsappl;
#if defined( __cplusplus )
extern "C"
{
#endif
s8 app_ResponseCheck(void *pv_List);
u8 app_ASC2HEX(char *psz_Digits);
void keyb_ParamAreaGetBySegments(u32 u32_Pos, u32 u32_Length, u8 *pu8_Data, u32 packet_max_size);
void keyb_ParamAreaSetBySegments(u32 u32_Pos, u32 u32_Length, u8 *pu8_Data, u16 packet_max_size);
E_CMBS_RC keyb_ParamAreaGetFromFile(u8 *pu8_Data, u8 *pu8_path);
t_e_ExternalClient appcmbs_GetExternalClientInformation();
void appcmbs_SetExternalClientInformation(t_e_ExternalClient client);
//callback for target alive indication
void appcmbs_RegisterTargetAliveIndicationCB(t_fptrHANTargetAliveIndication fpt_registerCallBackForTargetAliveIndication);
// callback for CMBS responses according specification
int app_ServiceEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_CallEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_SwupEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_FacilityEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_DataEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_LaEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_UleDataEntity(void * pv_AppRef, E_CMBS_EVENT_ID e_EventID, void * pv_EventData);
int app_SuotaEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_SuotaFileEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_RTPEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_HANEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_CmdEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
int app_PluginEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
#if defined (CRASH_DUMP)
int app_CrashDumpEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData);
#endif
// initialize the CMBS application
E_CMBS_RC appcmbs_Initialize(void *pv_AppReference, PST_CMBS_DEV pst_DevCtl, PST_CMBS_DEV pst_DevMedia, PST_CB_LOG_BUFFER pfn_log_buffer_Cb);
void appcmbs_Cleanup(void);
void appcmbs_InitEeprom(u8 *pu8_EEprom, u16 u16_Size);
int appcmbs_CordlessStart(ST_IE_SYPO_SPECIFICATION *SYPOParameters);
// synchronize upper application with async CMBS received Data
int appcmbs_ObjectSignalTrace(void);
void appcmbs_ObjectSignal(char *psz_Info, int n_InfoLen, int n_Info, int n_Event);
void appcmbs_PrepareRecvAdd(u32 u32_Token);
int appcmbs_WaitForContainer(int n_Event, PST_APPCMBS_CONTAINER pst_Container);
int appcmbs_WaitForEvent(int n_Event);
void appcmbs_IEInfoGet(void *pv_IE, u16 u16_IE, PST_APPCMBS_IEINFO p_Info);
void appcmbs_VersionGet(char *pc_Version);
unsigned long appcmbs_GetTickCount(void);
int appcmbs_ReconnectApplication(unsigned long ulTimeoutMs);
void app_CreateThread(start_routine);
PST_CMBS_APP_INST appcmbs_get_CMBSAppInstance(void);
void appcmbs_MaxTransferSizeGet(void);
#if defined( __cplusplus )
}
#endif
#endif // APPCMBS_H

View File

@@ -1,380 +0,0 @@
/*!
* \file appcrashdump.c
* \brief useful to collect the ram dump during cmbs crash
* \Author hareeshk
*
* @(#) %filespec: appcrashdump.c
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
*
*******************************************************************************/
#if ! defined ( WIN32 )
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#include <sys/time.h>
#include <signal.h>
#include <string.h>
#endif
#include "stdio.h"
#include "cmbs_api.h"
#include "cfr_mssg.h"
#include "cmbs_fifo.h"
#include "appcmbs.h"
#include "appcrashdump.h"
FILE *g_fpCDFile = NULL;
#define DEBUG_CRASHDUMP
u32 g_CDPacketNr = 0;
u32 g_CDTotalPackets = 0;
void app_CrashDumpRequestNextPacket(void);
/************************ APP Crash Dump Common APIs to Map CMBS APIs**********************/
void app_ConfigCrashDump(E_CRASH_DUMP_ENABLE_STATUS u8_EnableStatus)
{
cmbs_dsr_ConfigCrashDump(g_cmbsappl.pv_CMBSRef, u8_EnableStatus);
}
void app_ReadCrashDumpConfig(void)
{
cmbs_dsr_ReadCrashDumpConfig(g_cmbsappl.pv_CMBSRef);
}
void app_CrashDumpStart(void)
{
cmbs_dsr_CrashDumpStart(g_cmbsappl.pv_CMBSRef);
}
void app_CrashDumpPacketSend(PST_IE_PACKET_NUMBER pst_PktNr)
{
cmbs_dsr_CrashDumpDataPacketSend(g_cmbsappl.pv_CMBSRef, pst_PktNr);
}
void app_CrashDumpSendDataPacketRes(ST_IE_RESPONSE st_Response)
{
cmbs_dsr_CrashDumpDataPacketSendRes(g_cmbsappl.pv_CMBSRef, st_Response);
}
void app_CrashDumpEnd(void)
{
cmbs_dsr_CrashDumpEnd(g_cmbsappl.pv_CMBSRef);
}
void app_CrashDumpSendEndRes(ST_IE_RESPONSE st_Response)
{
cmbs_dsr_CrashDumpEndRes(g_cmbsappl.pv_CMBSRef, st_Response);
}
/************************ APP Crash Dump routines **********************/
void app_CrashDumpProcStart(void)
{
char filename[20] = { 0 };
g_fpCDFile = fopen("crash.bin", "wb");
if ( g_fpCDFile == NULL )
{
printf("[Crash Dump] File creation error\n\n");
return;
}
else
{
printf("[Crash Dump] File created successfully. File name: %s\n\n", filename);
}
app_CrashDumpStart();
}
void app_OnCrashDumpStartRes(void *pvAppRefHandle, void *pv_List)
{
ST_IE_RESPONSE st_Response;
ST_IE_PACKET_NUMBER st_PktNr;
void *pv_IE = NULL;
u16 u16_IE;
E_CMBS_RC e_rc = CMBS_RC_MAX;
UNUSED_PARAMETER(pvAppRefHandle);
memset(&st_PktNr, 0x00, sizeof(st_PktNr));
st_Response.e_Response = CMBS_RESPONSE_ERROR;
if(pv_List)
{
cmbs_api_ie_GetFirst(pv_List, &pv_IE, &u16_IE);
while (pv_IE != NULL)
{
switch (u16_IE)
{
case CMBS_IE_RESPONSE:
e_rc = cmbs_api_ie_ResponseGet(pv_IE, &st_Response);
break;
case CMBS_IE_PACKET_NUMBER:
e_rc = cmbs_api_ie_PacketNumberGet(pv_IE, &st_PktNr);
break;
}
cmbs_api_ie_GetNext(pv_List, &pv_IE, &u16_IE);
}
if ((st_Response.e_Response != CMBS_RESPONSE_OK) || (e_rc != CMBS_RC_OK) || (st_PktNr.u16_TotalPkts == 0))
{
printf("app_OnCrashDumpStartRes: Response Error. Closing the file \n");
if (g_fpCDFile)
{
fclose(g_fpCDFile);
g_fpCDFile = NULL;
}
return;
}
printf("app_OnCrashDumpStartRes: CrashDump Procedure started successfully\n");
}
g_CDPacketNr=0;
g_CDTotalPackets = st_PktNr.u16_TotalPkts;
#if defined(CRASH_DUMP_IN_HOST_CONTROL)
app_CrashDumpRequestNextPacket(); /* To request for the next packet*/
#endif
}
#if defined(CRASH_DUMP_IN_HOST_CONTROL)
void app_CrashDumpRequestNextPacket(void)
{
ST_IE_PACKET_NUMBER st_PktNr;
st_PktNr.u16_PktNr = ++g_CDPacketNr; //Increment the packet number
st_PktNr.u16_TotalPkts = g_CDTotalPackets;
if(g_CDPacketNr <= g_CDTotalPackets)
{
app_CrashDumpPacketSend(&st_PktNr);
}
else
{
app_CrashDumpEnd();
}
}
void app_OnCrashDumpDataPacketSendRes(void *pvAppRefHandle, void *pv_Param)
{
ST_IE_RESPONSE st_Response;
ST_IE_DATA st_Data;
void *pv_IE = NULL;
u16 u16_IE;
UNUSED_PARAMETER(pvAppRefHandle);
st_Response.e_Response = CMBS_RESPONSE_ERROR;
memset(&st_Data,0x00, sizeof(ST_IE_DATA));
if(pv_Param)
{
cmbs_api_ie_GetFirst(pv_Param, &pv_IE, &u16_IE);
while (pv_IE != NULL)
{
switch (u16_IE)
{
case CMBS_IE_DATA:
cmbs_api_ie_DataGet(pv_IE, &st_Data);
break;
}
cmbs_api_ie_GetNext(pv_Param, &pv_IE, &u16_IE);
}
}
if(g_fpCDFile && st_Data.pu8_Data && st_Data.u16_DataLen &&
(st_Data.u16_DataLen <= 512))
{
u32 u32_cnt;
u32_cnt = fwrite(st_Data.pu8_Data, 1, st_Data.u16_DataLen, g_fpCDFile);
if(u32_cnt == st_Data.u16_DataLen)
{
st_Response.e_Response = CMBS_RESPONSE_OK;
}
else
{
printf("app_OnCrashDumpPacketSend: Write Fail Invalid length. Closing the file\n");
fclose(g_fpCDFile);
g_fpCDFile = NULL;
}
}
else
{
if(!g_fpCDFile)
printf("app_OnCrashDumpPacketSend: Error File was not created. Closing the file\n");
else
printf("app_OnCrashDumpPacketSend: Error in received data length. Closing the file\n");
if (g_fpCDFile)
{
fclose(g_fpCDFile);
g_fpCDFile = NULL;
}
}
if(st_Response.e_Response == CMBS_RESPONSE_OK)
{
app_CrashDumpRequestNextPacket();
}
else
{
app_CrashDumpEnd();
}
}
void app_OnCrashDumpEndRes(void *pvAppRefHandle, void *pv_Param)
{
UNUSED_PARAMETER(pvAppRefHandle);
UNUSED_PARAMETER(pv_Param);
if (g_fpCDFile)
{
fclose(g_fpCDFile);
g_fpCDFile = NULL;
}
g_CDPacketNr=0;
}
#else /* ELSE of CRASH_DUMP_IN_HOST_CONTROL*/
void app_OnCrashDumpPacketSend(void *pvAppRefHandle, void *pv_Param)
{
ST_IE_PACKET_NUMBER st_PktNr;
ST_IE_DATA st_Data;
void *pv_IE = NULL;
u16 u16_IE;
UNUSED_PARAMETER(pvAppRefHandle);
memset(&st_Data,0x00, sizeof(ST_IE_DATA));
memset(&st_PktNr,0x00, sizeof(ST_IE_PACKET_NUMBER));
if(pv_Param)
{
cmbs_api_ie_GetFirst(pv_Param, &pv_IE, &u16_IE);
while (pv_IE != NULL)
{
switch (u16_IE)
{
case CMBS_IE_PACKET_NUMBER:
cmbs_api_ie_PacketNumberGet(pv_IE, &st_PktNr);
break;
case CMBS_IE_DATA:
cmbs_api_ie_DataGet(pv_IE, &st_Data);
break;
}
cmbs_api_ie_GetNext(pv_Param, &pv_IE, &u16_IE);
}
}
if(g_fpCDFile && st_Data.pu8_Data && st_Data.u16_DataLen &&
(st_Data.u16_DataLen <= 512))
{
u32 u32_cnt;
u32_cnt = fwrite(st_Data.pu8_Data, 1, st_Data.u16_DataLen, g_fpCDFile);
if(u32_cnt != st_Data.u16_DataLen)
{
printf("app_OnCrashDumpPacketSend: Write Fail Invalid length. Closing the file\n");
fclose(g_fpCDFile);
g_fpCDFile = NULL;
}
}
else
{
if(!g_fpCDFile)
printf("app_OnCrashDumpPacketSend: Error File was not created. Closing the file\n");
else
printf("app_OnCrashDumpPacketSend: Error in received data length. Closing the file\n");
if (g_fpCDFile)
{
fclose(g_fpCDFile);
g_fpCDFile = NULL;
}
}
//app_CrashDumpSendDataPacketRes(st_Response);
}
void app_OnCrashDumpEnd(void *pvAppRefHandle, void *pv_List)
{
ST_IE_RESPONSE st_Response;
UNUSED_PARAMETER(pvAppRefHandle);
UNUSED_PARAMETER(pv_List);
st_Response.e_Response= CMBS_RESPONSE_ERROR;
if (g_fpCDFile)
{
fclose(g_fpCDFile);
g_fpCDFile = NULL;
st_Response.e_Response= CMBS_RESPONSE_OK;
}
g_CDPacketNr=0;
app_CrashDumpSendEndRes(st_Response);
}
#endif /*CRASH_DUMP_IN_HOST_CONTROL*/
// ========== app_CrashDumpEntity ===========
/*!
\brief dispatcher fo Crash Dump CMBS events
\param[in] pv_AppRef application reference pointer
\param[in] e_EventID received CMBS event
\param[in] pv_EventData pointer to IE list
\return <int> TRUE, if consumed
*/
int app_CrashDumpEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData)
{
switch (e_EventID)
{
case CMBS_EV_DSR_CRASH_DUMP_START_RES:
app_OnCrashDumpStartRes(pv_AppRef, pv_EventData);
break;
#if defined(CRASH_DUMP_IN_HOST_CONTROL)
case CMBS_EV_DSR_CRASH_DUMP_PACKETSEND_RES:
app_OnCrashDumpDataPacketSendRes(pv_AppRef, pv_EventData);
break;
case CMBS_EV_DSR_CRASH_DUMP_END_RES:
app_OnCrashDumpEndRes(pv_AppRef, pv_EventData);
break;
#else
case CMBS_EV_DSR_CRASH_DUMP_PACKETSEND:
app_OnCrashDumpPacketSend(pv_AppRef, pv_EventData);
break;
case CMBS_EV_DSR_CRASH_DUMP_END:
app_OnCrashDumpEnd(pv_AppRef, pv_EventData);
break;
#endif
default:
return FALSE;
}
return TRUE;
}

View File

@@ -1,31 +0,0 @@
/*!
* \file appcrashdump.h
* \brief
* \Author hareeshk
*
* @(#) %filespec: appcrashdump. %
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
*******************************************************************************/
#if !defined( APPFACILITY_H )
#define APPCRASHDUMP_H
#if defined( __cplusplus )
extern "C"
{
#endif
extern void app_ConfigCrashDump(E_CRASH_DUMP_ENABLE_STATUS u8_EnableStatus);
extern void app_ReadCrashDumpConfig(void);
extern void app_CrashDumpProcStart(void);
#if defined( __cplusplus )
}
#endif
#endif //APPFACILITY_H
//*/

View File

@@ -1,140 +0,0 @@
/*!
* \file appdata.c
* \brief handles CAT-iq data functioality
* \Author stein
*
* @(#) %filespec: appdata.c~10 %
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
*
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if ! defined ( WIN32 )
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <sys/time.h>
#include <signal.h>
#endif
#include "cmbs_int.h"
#include "cmbs_api.h"
#include "cfr_ie.h"
#include "cfr_mssg.h"
#include "appcmbs.h"
#include "appmsgparser.h"
extern u16 app_HandsetMap( char * psz_Handsets );
E_CMBS_RC app_OnDataSessionOpen(void *pvAppRefHandle, void *pv_Param)
{
ST_IE_RESPONSE st_Response;
ST_IE_DATA st_Data;
void *pv_IE = NULL;
u16 u16_IE;
u16 u16_SessionId = 0;
PST_CFR_IE_LIST p_List = (PST_CFR_IE_LIST)cmbs_api_ie_GetList();
st_Data.u16_DataLen = 0;
if(pv_Param)
{
cmbs_api_ie_GetFirst(pv_Param, &pv_IE, &u16_IE);
while (pv_IE != NULL)
{
switch (u16_IE)
{
case CMBS_IE_DATA:
cmbs_api_ie_DataGet(pv_IE, &st_Data);
break;
case CMBS_IE_DATA_SESSION_ID:
cmbs_api_ie_ShortValueGet( pv_IE, &u16_SessionId, CMBS_IE_DATA_SESSION_ID );
break;
}
cmbs_api_ie_GetNext(pv_Param, &pv_IE, &u16_IE);
}
}
if (st_Data.u16_DataLen > 0)
{
if (((st_Data.pu8_Data[1] & 0x0f) == 0x00) && (st_Data.pu8_Data[6] == 0x80) && (st_Data.pu8_Data[7] == 0x01))
{//No IWU_ATTR_PROFSUBTYPE_GMEP & Application os 0x80 01, Simple Data call not SOUTA session
cmbs_api_ie_ShortValueAdd( p_List, u16_SessionId, CMBS_IE_DATA_SESSION_ID );
st_Response.e_Response = CMBS_RESPONSE_OK;
cmbs_api_ie_ResponseAdd( p_List, &st_Response );
cmbs_int_EventSend( CMBS_EV_DSR_HS_DATA_SESSION_OPEN_RES, p_List->pu8_Buffer, p_List->u16_CurSize );
return CMBS_RC_OK;
}
}
return CMBS_RC_OK;
}
E_CMBS_RC app_DataSessionOpen( char * psz_Handset )
{
ST_DATA_SESSION_TYPE
st_DataSessionType;
u16 u16_Handset = app_HandsetMap( psz_Handset );
st_DataSessionType.e_ChannelType = CMBS_DATA_CHANNEL_IWU;
st_DataSessionType.e_ServiceType = CMBS_DATA_SERVICE_TRANSPARENT;
return cmbs_dsr_hs_DataSessionOpen( g_cmbsappl.pv_CMBSRef,
&st_DataSessionType,
u16_Handset );
}
E_CMBS_RC app_DataSend( u16 u16_SessionId, ST_IE_DATA * pst_Data )
{
return cmbs_dsr_hs_DataSend( g_cmbsappl.pv_CMBSRef,
u16_SessionId, pst_Data->pu8_Data, pst_Data->u16_DataLen );
}
E_CMBS_RC app_DataSessionClose( u16 u16_SessionId )
{
return cmbs_dsr_hs_DataSessionClose( g_cmbsappl.pv_CMBSRef,
u16_SessionId );
}
// ========== app_DataEntity ===========
/*!
\brief CMBS entity to handle response information from target side
\param[in] pv_AppRef application reference
\param[in] e_EventID received CMBS event
\param[in] pv_EventData pointer to IE list
\return <int>
*/
int app_DataEntity( void * pv_AppRef, E_CMBS_EVENT_ID e_EventID, void * pv_EventData )
{
UNUSED_PARAMETER( pv_AppRef );
UNUSED_PARAMETER( pv_EventData );
if( e_EventID == CMBS_EV_DSR_HS_DATA_SESSION_OPEN )
{//Call New Fn here
app_OnDataSessionOpen(pv_AppRef,pv_EventData);
return TRUE;
}else if( e_EventID == CMBS_EV_DSR_HS_DATA_SESSION_OPEN_RES ||
e_EventID == CMBS_EV_DSR_HS_DATA_SESSION_CLOSE ||
e_EventID == CMBS_EV_DSR_HS_DATA_SESSION_CLOSE_RES ||
e_EventID == CMBS_EV_DSR_HS_DATA_SEND ||
e_EventID == CMBS_EV_DSR_HS_DATA_SEND_RES )
{
return TRUE;
}
else
return FALSE;
}
//*/

View File

@@ -1,33 +0,0 @@
/*!
* \file appdata.h
* \brief
* \Author stein
*
* @(#) %filespec: appdata.h~DMZD53#5 %
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
*******************************************************************************/
#if !defined( APPCATIQ_H )
#define APPCATIQ_H
#if defined( __cplusplus )
extern "C"
{
#endif
E_CMBS_RC app_DataSessionOpen( char * psz_Handset );
E_CMBS_RC app_DataSend( u16 u16_SessionId, ST_IE_DATA * pst_Data );
E_CMBS_RC app_DataSessionClose( u16 u16_SessionId );
#if defined( __cplusplus )
}
#endif
#endif //APPCATIQ_H
//*/

View File

@@ -1,720 +0,0 @@
/*!
* \file appfacility.c
* \brief handles CAT-iq facilities functionality
* \Author stein
*
* @(#) %filespec: appfacility.c~10 %
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
*
*******************************************************************************/
#if ! defined ( WIN32 )
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <sys/time.h>
#include <signal.h>
#include <string.h>
#endif
#include "cmbs_api.h"
#include "cfr_mssg.h"
#include "cmbs_fifo.h"
#include "appcmbs.h"
#include "stdio.h"
#include "appfacility.h"
#include "cmbs_util.h"
#define MAX_FACILITY_MSG_FOR_HS 10
#define NEW_MSG_ADDED 1
#define MSG_SEND_RESPONSE 0
extern u16 app_HandsetMap(char *psz_Handsets);
/* Data structures for Fifo handling */
typedef struct
{
u16 u16_RequestId;
u8 u8_LineId;
u16 u16_Messages;
E_CMBS_MWI_TYPE eType;
} ST_APP_FACILITY_MWI;
typedef struct
{
u16 u16_RequestId;
u8 u8_LineId;
u16 u16_NewMissedCalls;
bool bNewMissedCall;
u16 u16_TotalMissedCalls;
} ST_APP_FACILITY_MCN;
typedef struct
{
u16 u16_RequestId;
u8 u8_ListId;
u8 u8_ListEntries;
u8 u8_LineId;
u8 u8_LineSubtype;
ST_APP_FACILITY_LCN_DETAILS st_Details;
} ST_APP_FACILITY_LCN;
typedef struct
{
u16 u16_RequestId;
u8 u8_NumOfWebCont;
} ST_APP_FACILITY_WC;
typedef struct
{
u16 u16_RequestId;
u16 u16_Reserved;
u8 pu8_Data[CMBS_PROP_EVENT_LENGTH];
u8 u8_DataLen;
} ST_APP_FACILITY_PROP;
typedef struct
{
u16 u16_RequestId;
ST_DATE_TIME st_DateTime;
} ST_APP_FACILITY_DT;
typedef struct
{
u16 u16_RequestId;
u8 u8_LineId;
u32 u32_LineUseStatus;
} ST_APP_FACILITY_LUI;
typedef struct
{
u16 u16_RequestId;
u8 u8_LineId;
} ST_APP_FACILITY_HUI;
typedef struct
{
u16 u16_RequestId;
u8 u8_LineId;
u8 u8_Type;
} ST_APP_FACILITY_DI;
typedef struct
{
u16 u16_RequestId;
u8 u8_SMSType;
u16 u16_TotalNumOfMsgs;
u16 u16_NumOfUnreadMsgs;
}ST_APP_FACILITY_SMS;
typedef struct
{
u16 u16_RequestId;
u16 u16_PropEvent;
u8 pu8_Data[CMBS_PROP_EVENT_LENGTH];
u8 u8_DataLen;
} ST_APP_FACILITY_PROP_EVENT_NOTIFICATION;
typedef enum
{
FACILITY_TYPE_MWI,
FACILITY_TYPE_MISSED_CALL,
FACILITY_TYPE_LIST_CHANGED,
FACILITY_TYPE_WEB_CONTENT,
FACILITY_TYPE_PROP_EVENT,
FACILITY_TYPE_DATE_TIME,
FACILITY_TYPE_LINE_USE,
FACILITY_TYPE_HANDSET_USE,
FACILITY_TYPE_DIAGNOSTICS,
FACILITY_TYPE_SMS,
FACILITY_PROP_EVENT_NOTIFICATION,
FACILITY_TYPE_LIST_CHANGED_EX
} E_APP_FACILITY_TYPE;
typedef union
{
ST_APP_FACILITY_MWI st_MWI;
ST_APP_FACILITY_MCN st_MCN;
ST_APP_FACILITY_LCN st_LCN;
ST_APP_FACILITY_WC st_WC;
ST_APP_FACILITY_PROP st_PROP;
ST_APP_FACILITY_DT st_DT;
ST_APP_FACILITY_LUI st_LUI;
ST_APP_FACILITY_HUI st_HUI;
ST_APP_FACILITY_DI st_DI;
ST_APP_FACILITY_SMS st_SMS;
ST_APP_FACILITY_PROP_EVENT_NOTIFICATION st_PropEventNotify;
} U_APP_FACILITY_MSG;
typedef struct
{
E_APP_FACILITY_TYPE e_type;
u16 u16_Handsets;
U_APP_FACILITY_MSG u_msg;
} ST_APP_FACILITY_MSG;
static CFR_CMBS_CRITICALSECTION FifoCriticalSection;
ST_CMBS_FIFO app_FacilityFifos[CMBS_HS_SUBSCRIBED_MAX_NUM];
u8 app_FacilityBuffers[CMBS_HS_SUBSCRIBED_MAX_NUM][sizeof(ST_APP_FACILITY_MSG)* MAX_FACILITY_MSG_FOR_HS];
u16 g_u16_BlockHsMask=0;
u16 app_HsMask2HsNum(u16 u16_HsMask);
static E_CMBS_RC app_Facility_PushToFifos(ST_APP_FACILITY_MSG *pst_msg)
{
u8 handset;
u16 handsetMask;
if ( !pst_msg )
{
APP_FACILITY_ERROR_PRINT("app_Facility_PushToFifos NULL pointer provided\n");
return CMBS_RC_ERROR_PARAMETER;
}
handsetMask = pst_msg->u16_Handsets;
for (handset = 0; handset < CMBS_HS_SUBSCRIBED_MAX_NUM; ++handset)
{
if ( (1 << handset) & handsetMask )
{
pst_msg->u16_Handsets = (1 << handset);
if ( !cmbs_util_FifoPush(&app_FacilityFifos[handset], pst_msg) )
{
APP_FACILITY_ERROR_PRINT("FIFO %hhu full !!\n", handset);
}
}
}
return CMBS_RC_OK;
}
static E_CMBS_RC app_Facility_SendToTarget(u16 u16_HsMask, bool bReason)
{
u8 handset;
APP_FACILITY_ERROR_PRINT("app_Facility_SendToTarget u16_HsMask<%hu> bReason<%u>\n", u16_HsMask,(u32)bReason);
// Remove blocked HS Mask, This is to temporarily stop facility to some handsets.
u16_HsMask &= ~(g_u16_BlockHsMask);
if ( !u16_HsMask )
{
return CMBS_RC_OK;
}
for (handset = 0; handset < CMBS_HS_SUBSCRIBED_MAX_NUM; ++handset)
{
if ( (1 << handset) & u16_HsMask )
{
bool bSendMsg = FALSE;
// if the fifo is of size 1 and we entered this function because of new message added, we can send it immediately
if ( bReason == NEW_MSG_ADDED )
{
if ( cmbs_util_FifoCount(&app_FacilityFifos[handset]) == 1 )
bSendMsg = TRUE;
}
// if we have messages in the fifo and we entered this function becasue transmission of previous message is over, we can send another message
else if ( cmbs_util_FifoCount(&app_FacilityFifos[handset]) )
{
bSendMsg = TRUE;
}
if ( bSendMsg )
{
E_CMBS_RC u8_return = CMBS_RC_OK;
ST_APP_FACILITY_MSG *pst_Msg = cmbs_util_FifoGet(&app_FacilityFifos[handset]);
if ( !pst_Msg )
{
APP_FACILITY_ERROR_PRINT("app_Facility_SendToTarget failed getting a message from FIFO %hhu\n", handset);
return CMBS_RC_ERROR_PARAMETER;
}
switch (pst_Msg->e_type)
{
case FACILITY_TYPE_MWI:
APP_FACILITY_INFO_PRINT("Sending MWI\n");
u8_return = cmbs_dsr_gen_SendMWI(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_MWI.u16_RequestId, pst_Msg->u_msg.st_MWI.u8_LineId,
pst_Msg->u16_Handsets, pst_Msg->u_msg.st_MWI.u16_Messages, pst_Msg->u_msg.st_MWI.eType);
break;
case FACILITY_TYPE_MISSED_CALL:
APP_FACILITY_INFO_PRINT("Sending MISSED CALL NOTIF\n");
u8_return = cmbs_dsr_gen_SendMissedCalls(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_MCN.u16_RequestId, pst_Msg->u_msg.st_MCN.u8_LineId, pst_Msg->u16_Handsets, pst_Msg->u_msg.st_MCN.u16_NewMissedCalls,
pst_Msg->u_msg.st_MCN.bNewMissedCall, pst_Msg->u_msg.st_MCN.u16_TotalMissedCalls);
break;
case FACILITY_TYPE_LIST_CHANGED:
APP_FACILITY_INFO_PRINT("Sending LIST CHANGED NOTIF\n");
u8_return = cmbs_dsr_gen_SendListChanged(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_LCN.u16_RequestId, pst_Msg->u16_Handsets,
pst_Msg->u_msg.st_LCN.u8_ListId, pst_Msg->u_msg.st_LCN.u8_ListEntries, pst_Msg->u_msg.st_LCN.u8_LineId, pst_Msg->u_msg.st_LCN.u8_LineSubtype);
break;
case FACILITY_TYPE_WEB_CONTENT:
APP_FACILITY_INFO_PRINT("Sending WEB CONTENT\n");
u8_return = cmbs_dsr_gen_SendWebContent(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_WC.u16_RequestId, pst_Msg->u16_Handsets, pst_Msg->u_msg.st_WC.u8_NumOfWebCont);
break;
case FACILITY_TYPE_PROP_EVENT:
APP_FACILITY_INFO_PRINT("Sending PROP. EVENT\n");
u8_return = cmbs_dsr_gen_SendPropEvent(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_PROP.u16_RequestId, pst_Msg->u_msg.st_PROP.u16_Reserved, pst_Msg->u_msg.st_PROP.pu8_Data,
pst_Msg->u_msg.st_PROP.u8_DataLen, pst_Msg->u16_Handsets);
break;
case FACILITY_TYPE_DATE_TIME:
APP_FACILITY_INFO_PRINT("Sending DATE AND TIME UPDATE\n");
u8_return = cmbs_dsr_time_Update(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_DT.u16_RequestId, &pst_Msg->u_msg.st_DT.st_DateTime, pst_Msg->u16_Handsets);
break;
case FACILITY_TYPE_LINE_USE:
APP_FACILITY_INFO_PRINT("Sending LINE USE INDICATION\n");
u8_return = cmbs_dsr_gen_SendLineUseStatusInd(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_LUI.u16_RequestId, pst_Msg->u_msg.st_LUI.u8_LineId, pst_Msg->u_msg.st_LUI.u32_LineUseStatus, pst_Msg->u16_Handsets);
break;
case FACILITY_TYPE_HANDSET_USE:
APP_FACILITY_INFO_PRINT("Sending HANDSET USE INDICATION\n");
u8_return = cmbs_dsr_gen_SendHSUseStatusInd(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_HUI.u16_RequestId, pst_Msg->u_msg.st_HUI.u8_LineId, pst_Msg->u16_Handsets);
break;
case FACILITY_TYPE_DIAGNOSTICS:
APP_FACILITY_INFO_PRINT("Sending DIAGNOSTICS INDICATION\n");
u8_return = cmbs_dsr_gen_SendDiagnosticStatusInd(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_DI.u16_RequestId, pst_Msg->u_msg.st_DI.u8_LineId, pst_Msg->u_msg.st_DI.u8_Type, pst_Msg->u16_Handsets);
break;
case FACILITY_TYPE_SMS:
APP_FACILITY_INFO_PRINT("Sending SMS INDICATION\n");
u8_return = cmbs_dsr_gen_SendSMSNotification(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_SMS.u16_RequestId, pst_Msg->u_msg.st_SMS.u8_SMSType, pst_Msg->u_msg.st_SMS.u16_NumOfUnreadMsgs, pst_Msg->u_msg.st_SMS.u16_TotalNumOfMsgs, pst_Msg->u16_Handsets);
break;
case FACILITY_PROP_EVENT_NOTIFICATION:
APP_FACILITY_INFO_PRINT("Sending Prop event notification\n");
u8_return = cmbs_dsr_gen_SendPropEventNotification(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_PropEventNotify.u16_RequestId, pst_Msg->u_msg.st_PropEventNotify.u16_PropEvent, pst_Msg->u_msg.st_PropEventNotify.pu8_Data, pst_Msg->u_msg.st_PropEventNotify.u8_DataLen, pst_Msg->u16_Handsets);
break;
case FACILITY_TYPE_LIST_CHANGED_EX:
APP_FACILITY_INFO_PRINT("Sending LIST CHANGED NOTIF with Details\n");
u8_return = cmbs_dsr_gen_SendListChangedEx(g_cmbsappl.pv_CMBSRef, pst_Msg->u_msg.st_LCN.u16_RequestId, pst_Msg->u16_Handsets,
pst_Msg->u_msg.st_LCN.u8_ListId, pst_Msg->u_msg.st_LCN.u8_ListEntries, pst_Msg->u_msg.st_LCN.u8_LineId, pst_Msg->u_msg.st_LCN.u8_LineSubtype, (PST_IE_GEN_EVENT_DETAILS)&pst_Msg->u_msg.st_LCN.st_Details);
break;
default:
APP_FACILITY_ERROR_PRINT("Unkown facility message type\n");
break;
}
if (u8_return == CMBS_RC_ERROR_NOT_SUPPORTED)
{
// remove message from FIFO
cmbs_util_FifoPop(&app_FacilityFifos[handset]);
}
}
}
}
return CMBS_RC_OK;
}
// ========== app_FacilityMWI ===========
/*!
\brief sending Voice/SMS/Email Message Waiting Indication
\param[in,out] psz_Handsets pointer to parameter string,e.g."1234" or "all"
\return <E_CMBS_RC>
*/
E_CMBS_RC app_FacilityMWI(u16 u16_RequestId, u8 u8_LineId, u16 u16_Messages, u16 u16_HSMask, E_CMBS_MWI_TYPE eType)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilityMWI\n");
msg.e_type = FACILITY_TYPE_MWI;
msg.u16_Handsets = u16_HSMask;
msg.u_msg.st_MWI.u16_RequestId = u16_RequestId;
msg.u_msg.st_MWI.u8_LineId = u8_LineId;
msg.u_msg.st_MWI.u16_Messages = u16_Messages;
msg.u_msg.st_MWI.eType = eType;
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_HSMask, NEW_MSG_ADDED);
}
E_CMBS_RC app_FacilityMissedCalls(u16 u16_RequestId, u8 u8_LineId, u16 u16_NewMissedCalls, u16 u16_HSMask, bool bNewMissedCall, u16 u16_TotalMissedCalls)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilityMissedCalls\n");
msg.e_type = FACILITY_TYPE_MISSED_CALL;
msg.u16_Handsets = u16_HSMask;
msg.u_msg.st_MCN.u16_RequestId = u16_RequestId;
msg.u_msg.st_MCN.u8_LineId = u8_LineId;
msg.u_msg.st_MCN.u16_NewMissedCalls = u16_NewMissedCalls;
msg.u_msg.st_MCN.bNewMissedCall = bNewMissedCall;
msg.u_msg.st_MCN.u16_TotalMissedCalls = u16_TotalMissedCalls;
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_HSMask, NEW_MSG_ADDED);
}
E_CMBS_RC app_FacilityListChanged(u16 u16_RequestId, u8 u8_ListId, u8 u8_ListEntries, u16 u16_HSMask, u8 u8_LineId, u8 u8_LineSubtype)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilityListChanged\n");
msg.e_type = FACILITY_TYPE_LIST_CHANGED;
msg.u16_Handsets = u16_HSMask;
msg.u_msg.st_LCN.u16_RequestId = u16_RequestId;
msg.u_msg.st_LCN.u8_ListId = u8_ListId;
msg.u_msg.st_LCN.u8_ListEntries = u8_ListEntries;
msg.u_msg.st_LCN.u8_LineId = u8_LineId;
msg.u_msg.st_LCN.u8_LineSubtype = u8_LineSubtype;
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_HSMask, NEW_MSG_ADDED);
}
E_CMBS_RC app_FacilityWebContent(u16 u16_RequestId, u8 u8_NumOfWebCont, u16 u16_HSMask)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilityWebContent\n");
msg.e_type = FACILITY_TYPE_WEB_CONTENT;
msg.u16_Handsets = u16_HSMask;
msg.u_msg.st_WC.u16_RequestId = u16_RequestId;
msg.u_msg.st_WC.u8_NumOfWebCont = u8_NumOfWebCont;
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_HSMask, NEW_MSG_ADDED);
}
E_CMBS_RC app_FacilityPropEvent(u16 u16_RequestId, u16 u16_Reserved, u8 *pu8_Data, u8 u8_DataLen, u16 u16_HSMask)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilityPropEvent\n");
msg.e_type = FACILITY_TYPE_PROP_EVENT;
msg.u16_Handsets = u16_HSMask;
msg.u_msg.st_PROP.u16_RequestId = u16_RequestId;
msg.u_msg.st_PROP.u16_Reserved = u16_Reserved;
memcpy(msg.u_msg.st_PROP.pu8_Data, pu8_Data, sizeof(msg.u_msg.st_PROP.pu8_Data));
msg.u_msg.st_PROP.u8_DataLen = u8_DataLen;
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_HSMask, NEW_MSG_ADDED);
}
E_CMBS_RC app_FacilityDateTime(u16 u16_RequestId, ST_DATE_TIME *pst_DateTime, u16 u16_HSMask)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilityDateTime\n");
msg.e_type = FACILITY_TYPE_DATE_TIME;
msg.u16_Handsets = u16_HSMask;
msg.u_msg.st_DT.u16_RequestId = u16_RequestId;
memcpy(&msg.u_msg.st_DT.st_DateTime, pst_DateTime, sizeof(msg.u_msg.st_DT.st_DateTime));
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_HSMask, NEW_MSG_ADDED);
}
E_CMBS_RC app_FacilityPropEventNotification(u16 u16_RequestId, u16 u16_PropEvent, u8 * pu8_Data, u8 u8_DataLen, char * psz_Handsets)
{
ST_APP_FACILITY_MSG msg;
E_CMBS_RC e_rc;
u16 u16_Handsets = app_HandsetMap(psz_Handsets);
msg.e_type = FACILITY_PROP_EVENT_NOTIFICATION;
msg.u16_Handsets = u16_Handsets;
msg.u_msg.st_PropEventNotify.u16_RequestId = u16_RequestId;
msg.u_msg.st_PropEventNotify.u16_PropEvent = u16_PropEvent;
if (u8_DataLen + FACILITY_PROP_EVENT_HEADER_LEN <= MAX_FACILITY_PROP_EVENT_LEN)
{
msg.u_msg.st_PropEventNotify.pu8_Data[0] = (CUSTOMER_DESCRIMINATOR >> 8) & 0xFF; //Discriminator Upper Byte
msg.u_msg.st_PropEventNotify.pu8_Data[1] = CUSTOMER_DESCRIMINATOR & 0xFF; //Discriminator Lower Byte
memcpy(&msg.u_msg.st_PropEventNotify.pu8_Data[2], pu8_Data, u8_DataLen);
msg.u_msg.st_PropEventNotify.u8_DataLen = u8_DataLen;
// push to Fifos
app_Facility_PushToFifos(&msg);
e_rc = app_Facility_SendToTarget(u16_Handsets, NEW_MSG_ADDED);
}
else
{
e_rc = CMBS_RC_ERROR_OUT_OF_MEM;
}
return e_rc;
}
E_CMBS_RC app_FacilityLineUseIndication(u16 u16_RequestId, u8 u8_LineId, u32 u32_LineUseStatus, u16 u16_Hs)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilityLineUseIndication\n");
msg.e_type = FACILITY_TYPE_LINE_USE;
msg.u16_Handsets = u16_Hs;
msg.u_msg.st_LUI.u16_RequestId = u16_RequestId;
msg.u_msg.st_LUI.u8_LineId = u8_LineId;
msg.u_msg.st_LUI.u32_LineUseStatus = u32_LineUseStatus;
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_Hs, NEW_MSG_ADDED);
}
E_CMBS_RC app_FacilityHSUseIndication(u16 u16_RequestId, u8 u8_LineId, u16 u16_Hs)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilityHSUseIndication\n");
msg.e_type = FACILITY_TYPE_HANDSET_USE;
msg.u16_Handsets = u16_Hs;
msg.u_msg.st_HUI.u16_RequestId = u16_RequestId;
msg.u_msg.st_HUI.u8_LineId = u8_LineId;
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_Hs, NEW_MSG_ADDED);
}
E_CMBS_RC app_FacilityDiagnosticIndication(u16 u16_RequestId, u8 u8_LineId, u8 u8_Type, u16 u16_Hs)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilityDiagnosticIndication\n");
msg.e_type = FACILITY_TYPE_DIAGNOSTICS;
msg.u16_Handsets = u16_Hs;
msg.u_msg.st_DI.u16_RequestId = u16_RequestId;
msg.u_msg.st_DI.u8_LineId = u8_LineId;
msg.u_msg.st_DI.u8_Type = u8_Type;
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_Hs, NEW_MSG_ADDED);
}
E_CMBS_RC app_FacilitySMSMessageNotification(u8 u8_SMSType, u16 u16_TotalNumOfMsgs, u16 u16_NumOfUnreadMsgs, u16 u16_HSMask)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilitySMSMessageNotification\n");
msg.e_type = FACILITY_TYPE_SMS;
msg.u16_Handsets = u16_HSMask;
msg.u_msg.st_SMS.u16_RequestId = 0;
msg.u_msg.st_SMS.u16_NumOfUnreadMsgs = u16_NumOfUnreadMsgs;
msg.u_msg.st_SMS.u16_TotalNumOfMsgs = u16_TotalNumOfMsgs;
msg.u_msg.st_SMS.u8_SMSType = u8_SMSType;
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_HSMask, NEW_MSG_ADDED);
}
E_CMBS_RC app_FacilityListChangedEx(u16 u16_RequestId, u8 u8_ListId, u8 u8_ListEntries, u16 u16_HSMask, u8 u8_LineId, u8 u8_LineSubtype,
ST_APP_FACILITY_LCN_DETAILS *pst_Details)
{
ST_APP_FACILITY_MSG msg;
APP_FACILITY_INFO_PRINT("app_FacilityListChangedEx\n");
msg.e_type = FACILITY_TYPE_LIST_CHANGED_EX;
msg.u16_Handsets = u16_HSMask;
msg.u_msg.st_LCN.u16_RequestId = u16_RequestId;
msg.u_msg.st_LCN.u8_ListId = u8_ListId;
msg.u_msg.st_LCN.u8_ListEntries = u8_ListEntries;
msg.u_msg.st_LCN.u8_LineId = u8_LineId;
msg.u_msg.st_LCN.u8_LineSubtype = u8_LineSubtype;
memcpy(&msg.u_msg.st_LCN.st_Details, pst_Details, sizeof(ST_APP_FACILITY_LCN_DETAILS));
// push to Fifos
app_Facility_PushToFifos(&msg);
// send to target if needed
return app_Facility_SendToTarget(u16_HSMask, NEW_MSG_ADDED);
}
// ========== app_FacilityEntity ===========
/*!
\brief CMBS entity to handle response information from target side
\param[in] pv_AppRef application reference
\param[in] e_EventID received CMBS event
\param[in] pv_EventData pointer to IE list
\return <int>
*/
int app_FacilityEntity(void *pv_AppRef, E_CMBS_EVENT_ID e_EventID, void *pv_EventData)
{
ST_IE_RESPONSE st_Response;
UNUSED_PARAMETER(pv_AppRef);
UNUSED_PARAMETER(pv_EventData);
APP_FACILITY_INFO_PRINT("app_FacilityEntity e_EventID %u\n",(u32)e_EventID);
st_Response.e_Response = CMBS_RESPONSE_OK;
switch (e_EventID)
{
case CMBS_EV_DSR_GEN_SEND_MWI_RES:
case CMBS_EV_DSR_GEN_SEND_MISSED_CALLS_RES:
case CMBS_EV_DSR_GEN_SEND_LIST_CHANGED_RES:
case CMBS_EV_DSR_GEN_SEND_WEB_CONTENT_RES:
case CMBS_EV_DSR_GEN_SEND_PROP_EVENT_RES:
case CMBS_EV_DSR_TIME_UPDATE_RES:
case CMBS_EV_DSR_GEN_DIAGNOSTIC_STATUS_RES:
case CMBS_EV_DSR_GEN_LINE_USE_STATUS_RES:
case CMBS_EV_DSR_GEN_HS_USE_STATUS_RES:
case CMBS_EV_DSR_GEN_SEND_SMS_MSG_NOTIFICATION_RES:
case CMBS_EV_DSR_GEN_SEND_PROP_EVENT_NOTIFY_RES:
{
// extract handset number
void *pv_IE;
u16 u16_IE;
u16 u16_Handset = 0;
if ( pv_EventData )
{
cmbs_api_ie_GetFirst(pv_EventData, &pv_IE, &u16_IE);
while (pv_IE != NULL)
{
if ( CMBS_IE_HANDSETS == u16_IE )
{
cmbs_api_ie_HandsetsGet(pv_IE, &u16_Handset);
}
if ( CMBS_IE_RESPONSE == u16_IE )
{
cmbs_api_ie_ResponseGet(pv_IE, &st_Response);
}
cmbs_api_ie_GetNext(pv_EventData, &pv_IE, &u16_IE);
}
}
else
{
APP_FACILITY_ERROR_PRINT("null pointer received !\n");
}
if (st_Response.e_Response == CMBS_RESPONSE_NO_LINK_AVL)
{
// There was no free instance for the handset, delay a bit and retry
SleepMs(200);
// send message again, thus don't remove it
}
else
{
// remove acked message from fifo
cmbs_util_FifoPop(&app_FacilityFifos[(app_HsMask2HsNum(u16_Handset)) - 1]);
}
// send next message to target
app_Facility_SendToTarget(u16_Handset, MSG_SEND_RESPONSE);
return TRUE; // event consumed
}
default:
return FALSE; // event not consumed
}
}
// ========== app_FacilityInit ===========
/*!
\brief Init function for the facility module
\return <int>
*/
E_CMBS_RC app_FacilityInit(void)
{
u8 i;
// init Fifos
for (i = 0; i < CMBS_HS_SUBSCRIBED_MAX_NUM; ++i)
{
cmbs_util_FifoInit(&app_FacilityFifos[i], app_FacilityBuffers[i], sizeof(ST_APP_FACILITY_MSG), MAX_FACILITY_MSG_FOR_HS, FifoCriticalSection);
}
return CMBS_RC_OK;
}
u16 app_HsMask2HsNum(u16 u16_HsMask)
{
u8 u8_i;
for (u8_i = 0; u8_i < 16; ++u8_i)
{
if ( u16_HsMask & (1 << u8_i) )
{
return u8_i + 1;
}
}
return 0;
}
void app_FacilityBlockHsMask(u16 u16_HsMask)
{
u16 u16_prev_BlockHsMask = g_u16_BlockHsMask;
// Blocked HS Mask, This is to temporarily stop facility to some handsets.
g_u16_BlockHsMask = u16_HsMask;
if (u16_prev_BlockHsMask != 0)
{
/* trigger facility to previously blocked handsets */
app_Facility_SendToTarget(u16_prev_BlockHsMask, MSG_SEND_RESPONSE);
}
}
/***** [End Of File] *****************************************************************************************************************************/

View File

@@ -1,86 +0,0 @@
/*!
* \file appfacility.h
* \brief
* \Author stein
*
* @(#) %filespec: appfacility.h~6 %
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
*******************************************************************************/
#if !defined( APPFACILITY_H )
#define APPFACILITY_H
#if defined( __cplusplus )
extern "C"
{
#endif
typedef enum
{
APP_FACILITY_CHANGE_EDIT = 0, /*!< List change due to edit/modification */
APP_FACILITY_CHANGE_ADD, /*!< List change due to addition */
APP_FACILITY_CHANGE_DELETE /*!< List change due to deletion */
} E_APP_FACILITY_CHANGE_REASON;
#define APP_FACILITY_MAX_SUB_DETAILS 5
typedef struct
{
u16 u16_Change; //E_CMBS_LIST_CHANGE_REASON
u16 u16_EntryId;
u16 u16_PosIndex;
} ST_APP_FACILITY_LCN_SUB_DETAILS;
typedef struct
{
u8 u8_Count;
u16 u16_OrgHs;
ST_APP_FACILITY_LCN_SUB_DETAILS st_SubDetails[APP_FACILITY_MAX_SUB_DETAILS]; //E_CMBS_LIST_CHANGE_REASON
} ST_APP_FACILITY_LCN_DETAILS;
E_CMBS_RC app_FacilityInit(void);
E_CMBS_RC app_FacilityMWI( u16 u16_RequestId, u8 u8_LineId, u16 u16_Messages, u16 u16_HSMask, E_CMBS_MWI_TYPE eType );
E_CMBS_RC app_FacilityMissedCalls( u16 u16_RequestId, u8 u8_LineId, u16 u16_NewMissedCalls, u16 u16_HSMask, bool bNewMissedCall, u16 u16_TotalMissedCalls );
E_CMBS_RC app_FacilityListChanged( u16 u16_RequestId, u8 u8_ListId, u8 u8_ListEntries, u16 u16_HSMask, u8 u8_LineId, u8 u8_LineSubtype );
E_CMBS_RC app_FacilityWebContent( u16 u16_RequestId, u8 u8_NumOfWebCont, u16 u16_HSMask );
E_CMBS_RC app_FacilityPropEvent( u16 u16_RequestId, u16 u16_Reserved, u8 * pu8_Data, u8 u8_DataLen, u16 u16_HSMask );
E_CMBS_RC app_FacilityDateTime( u16 u16_RequestId, ST_DATE_TIME * pst_DateTime, u16 u16_Hs);
E_CMBS_RC app_FacilityLineUseIndication(u16 u16_RequestId, u8 u8_LineId, u32 u32_LineUseStatus, u16 u16_Hs);
E_CMBS_RC app_FacilityHSUseIndication( u16 u16_RequestId, u8 u8_LineId, u16 u16_Hs);
E_CMBS_RC app_FacilityDiagnosticIndication( u16 u16_RequestId, u8 u8_LineId, u8 u8_Type, u16 u16_Hs);
E_CMBS_RC app_FacilitySMSMessageNotification(u8 u8_NewSMS, u16 u16_TotalNumOfMsgs, u16 u16_NumOfUnreadMsgs, u16 u16_HSMask);
E_CMBS_RC app_FacilityPropEventNotification(u16 u16_RequestId, u16 u16_PropEvent, u8 * pu8_Data, u8 u8_DataLen, char * psz_Handsets);
E_CMBS_RC app_FacilityListChangedEx(u16 u16_RequestId, u8 u8_ListId, u8 u8_ListEntries, u16 u16_HSMask, u8 u8_LineId, u8 u8_LineSubtype,
ST_APP_FACILITY_LCN_DETAILS *pst_Details);
void app_FacilityBlockHsMask(u16 u16_HsMask);
#define MAX_FACILITY_PROP_EVENT_LEN CMBS_PROP_EVENT_LENGTH
#define FACILITY_PROP_EVENT_HEADER_LEN 5
#define FACILITY_DISCRIMINATOR_TYPE 0x81
#define CUSTOMER_DESCRIMINATOR 0x0505
#include "tcx_hostlog.h"
#define APP_FACILITY_INFO_PRINT(format, ...) tcx_WriteLog(FACILITY_MODULE, LOG_LEVEL_INFO, format, ##__VA_ARGS__ )
#define APP_FACILITY_TRACE_PRINT(format, ...) tcx_WriteLog(FACILITY_MODULE, LOG_LEVEL_TRACE, format, ##__VA_ARGS__ )
#define APP_FACILITY_WARNING_PRINT(format, ...) tcx_WriteLog(FACILITY_MODULE, LOG_LEVEL_WARNING, format, ##__VA_ARGS__ )
#define APP_FACILITY_ERROR_PRINT(format, ...) tcx_WriteLog(FACILITY_MODULE, LOG_LEVEL_ERROR, format, ##__VA_ARGS__ )
#define APP_FACILITY_RT_PRINT(format, ...) tcx_WriteLog(FACILITY_MODULE, LOG_LEVEL_REAL_TIME, format, ##__VA_ARGS__ )
#define APP_FACILITY_PRINT_DATA(pu8_Buffer, u16_Length) tcx_WriteLogData(FACILITY_MODULE, LOG_LEVEL_INFO, pu8_Buffer, u16_Length)
#if defined( __cplusplus )
}
#endif
#endif //APPFACILITY_H
//*/

View File

@@ -1,197 +0,0 @@
/*!
* \file appfun.c
* \brief HAN FUN API
* \author ULE BS Team
*
*
*******************************************************************************/
#include "cfr_ie.h"
#include "cmbs_han.h"
#include "cmbs_fun.h"
#include "appfun.h"
#include "appstreambuffer.h"
#include "tcx_hostlog.h"
#define HAN_FUN_APP_INFO_PRINT(format, ...) tcx_WriteLog(FUN_APP, LOG_LEVEL_INFO, format, ##__VA_ARGS__ )
#define HAN_FUN_APP_TRACE_PRINT(format, ...) tcx_WriteLog(FUN_APP, LOG_LEVEL_TRACE, format, ##__VA_ARGS__ )
#define HAN_FUN_APP_WARNING_PRINT(format, ...) tcx_WriteLog(FUN_APP, LOG_LEVEL_WARNING, format, ##__VA_ARGS__ )
#define HAN_FUN_APP_ERROR_PRINT(format, ...) tcx_WriteLog(FUN_APP, LOG_LEVEL_ERROR, format, ##__VA_ARGS__ )
#define HAN_FUN_APP_RT_PRINT(format, ...) tcx_WriteLog(FUN_APP, LOG_LEVEL_REAL_TIME, format, ##__VA_ARGS__ )
#define HAN_FUN_APP_PRINT_DATA(pu8_Buffer, u16_Length) tcx_WriteLogData(FUN_APP, LOG_LEVEL_INFO, pu8_Buffer, u16_Length)
///////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
// TODO: use serialize and deserialize CMBS methods and remove these hardcoded methods
///////////////////////////////////////////////////////////////////////////////////
u16 pr_hanEndian_SwapBytesU16( u16 u16_Value )
{
return ( ((u16_Value & 0x00FF) << 8) |
((u16_Value & 0xFF00) >> 8) );
}
u32 pr_hanEndian_SwapBytesU32( u32 u32_Value )
{
return ( ( (u32_Value & 0x000000FF) << 24 ) |
( (u32_Value & 0x0000FF00) << 8 ) |
( (u32_Value & 0x00FF0000) >> 8 ) |
( (u32_Value & 0xFF000000) >> 24 ) );
}
u32 pr_hanEndian_HtoN_u32( u32 u32_Value )
{
return pr_hanEndian_SwapBytesU32( u32_Value );
}
u32 pr_hanEndian_NtoH_u32( u32 u32_Value )
{
return pr_hanEndian_SwapBytesU32( u32_Value );
}
u16 pr_hanEndian_HtoN_u16( u16 u16_Value )
{
return pr_hanEndian_SwapBytesU16( u16_Value );
}
u16 pr_hanEndian_NtoH_u16( u16 u16_Value )
{
return pr_hanEndian_SwapBytesU16( u16_Value );
}
///////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////// app_fun_ParseFUNRegistrationMessage /////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void app_fun_ParseFUNRegistrationMessage(IN u8 *p_Msg, OUT PST_FUN_DEVICE_INFO pst_FunInfoEepromStructure)
{
u8 u, i, length;
t_st_streamBuffer st_OtaStream;
u8 u8_Field;
u8 DiscriminatorType;
u8 DeviceUIDSize;
PST_IE_HAN_MSG pstIe_Msg = (PST_IE_HAN_MSG) p_Msg;
app_streamBuffer_CreateWithPayload(&st_OtaStream, pstIe_Msg->pu8_Data, pstIe_Msg->u16_DataLen, pstIe_Msg->u16_DataLen);
// Discriminator Type and Dev UID Type
u8_Field = app_streamBuffer_GetData8(&st_OtaStream);
DiscriminatorType = GET_BITFIELD_VAL( u8_Field, FUN_IF_DEV_MNGT_REG_DISCRIMINATOR_TYPE );
DeviceUIDSize = app_streamBuffer_GetData8(&st_OtaStream);
// Device UID ( variable length ) - we are going to just skip it for now
app_streamBuffer_SkipData8Array(&st_OtaStream, DeviceUIDSize);
// Discriminator Value Optional
if ( DiscriminatorType == FUN_IF_DEV_MNGT_REG_RESP_DISCR_TYPE_PROPRIETARY )
{
// Need to read and store the Descriminator Value ( EMC )
pst_FunInfoEepromStructure->DeviceEMC = pr_hanEndian_NtoH_u16(app_streamBuffer_GetData16(&st_OtaStream));
}
else
{
pst_FunInfoEepromStructure->DeviceEMC = 0;
}
pst_FunInfoEepromStructure->NumOfUnits = app_streamBuffer_GetData8(&st_OtaStream);
if(pst_FunInfoEepromStructure->NumOfUnits > MAX_NUM_OF_UNITS_IN_DEVICE)
{
pst_FunInfoEepromStructure->NumOfUnits = MAX_NUM_OF_UNITS_IN_DEVICE;
}
for (u=0; u < pst_FunInfoEepromStructure->NumOfUnits; u++)
{
//read Unit #u
//if Unit is not supporting optional interfaces, we know it only according to the length=3 (there will be no NumberOfOptionalInterfaces field at all)
length = app_streamBuffer_GetData8(&st_OtaStream);
//read Unit Id
pst_FunInfoEepromStructure->Units[u].UnitId = app_streamBuffer_GetData8(&st_OtaStream);
//read Unit type
pst_FunInfoEepromStructure->Units[u].UnitType = pr_hanEndian_NtoH_u16(app_streamBuffer_GetData16(&st_OtaStream));
if(length > 3 ) //sizeof unitId + sizeof UnitType
{
//read number of optional interfaces
pst_FunInfoEepromStructure->Units[u].NumberOfOptionalInterfaces = app_streamBuffer_GetData8(&st_OtaStream);
if(pst_FunInfoEepromStructure->Units[u].NumberOfOptionalInterfaces > MAX_NUM_OF_OPTIONAL_INTERFACES_IN_UNIT)
{
pst_FunInfoEepromStructure->Units[u].NumberOfOptionalInterfaces = MAX_NUM_OF_OPTIONAL_INTERFACES_IN_UNIT;
}
//read all optional interface
for(i=0; i < pst_FunInfoEepromStructure->Units[u].NumberOfOptionalInterfaces; i++)
{
pst_FunInfoEepromStructure->Units[u].OptionalInterfaces[i] = pr_hanEndian_NtoH_u16(app_streamBuffer_GetData16(&st_OtaStream));
}
}
else
{
pst_FunInfoEepromStructure->Units[u].NumberOfOptionalInterfaces = 0;
}
}
pst_FunInfoEepromStructure->DeviceId = pstIe_Msg->u16_SrcDeviceId;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////// app_fun_BuildFUNRegistrationResponse /////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void app_fun_BuildFUNRegistrationResponse(IN u8 *p_Msg, OUT u8 *p_ResMsg, OUT u8 *p_ResMsgCtl)
{
t_st_streamBuffer st_OtaStream;
u8 RegResponse = 0;
PST_IE_HAN_MSG pstIe_RegMsg = (PST_IE_HAN_MSG) p_Msg;
PST_IE_HAN_MSG pstIe_ResMsg = (PST_IE_HAN_MSG) p_ResMsg;
PST_IE_HAN_MSG_CTL pst_HANResMsgCtl = (PST_IE_HAN_MSG_CTL) p_ResMsgCtl;
// initialize pst_HANResMsgCtl
pst_HANResMsgCtl->ImmediateSend = 0;
pst_HANResMsgCtl->IsLast = 0;
pst_HANResMsgCtl->Reserved = 0;
app_streamBuffer_CreateEmpty(&st_OtaStream, pstIe_ResMsg->pu8_Data, CMBS_HAN_MAX_MSG_LEN);
// fill the network part
pstIe_ResMsg->u16_SrcDeviceId = OTA_BASE_DEVICE_ID;
pstIe_ResMsg->u8_SrcUnitId = OTA_BASE_UNIT_MANAGMENT_UNIT_ID;
pstIe_ResMsg->u16_DstDeviceId = pstIe_RegMsg->u16_SrcDeviceId;
pstIe_ResMsg->u8_DstUnitId = OTA_DST_UNIT_MANAGMENT_UNIT_ID;
pstIe_ResMsg->u8_DstAddressType = OTA_ADDR_TYPE_INDIVIDUAL;
// fill the application part
pstIe_ResMsg->u8_MsgSequence = pstIe_RegMsg->u8_MsgSequence;
pstIe_ResMsg->e_MsgType = OTA_MSG_TYPE_COMMAND_RESPONSE;
pstIe_ResMsg->u8_InterfaceType = OTA_INTERFACE_TYPE_SERVER;
pstIe_ResMsg->u16_InterfaceId = FUN_INTERFACE_DEVICE_MGNT;
pstIe_ResMsg->u8_InterfaceMember = FUN_IF_DEV_MNGT_CMD_REGISTER_DEVICE;
app_streamBuffer_AddData8(&st_OtaStream, RegResponse);
app_streamBuffer_AddData16(&st_OtaStream, pr_hanEndian_HtoN_u16(pstIe_ResMsg->u16_DstDeviceId | (FUN_IF_DEV_MNGT_REG_RESP_DISCR_TYPE_NON_PROPRIETARY << (sizeof(pstIe_ResMsg->u16_DstDeviceId)-1))));
// update length of data
pstIe_ResMsg->u16_DataLen = app_streamBuffer_GetDataSize(&st_OtaStream);
pstIe_ResMsg->st_MsgTransport.u16_Reserved = 0;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*---------[End Of File]---------------------------------------------------------------------------------------------------------------------------*/

View File

@@ -1,60 +0,0 @@
/*!
* \file appfun.h
* \brief HAN FUN API
* \author ULE BS Team
*
*
*
*******************************************************************************/
#if !defined( _APPFUN_H )
#define _APPFUN_H
#include "cmbs_api.h"
////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Methods ////
////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ========== app_fun_ParseFUNRegistrationMessage ===========
/*!
\brief
This function parses FUN registration msg received from device stIe_Msg
and stores FUN registration data in pst_FunInfoEepromStructure
void app_fun_ParseFUNRegistrationMessage(IN u8 *stIe_Msg, OUT PST_FUN_DEVICE_INFO pst_FunInfoEepromStructure)
\param[in] stIe_Msg reference pointer to CMBS msg stores FUN Registration msg
\param[out] pst_FunInfoEepromStructure pointer to a struct used to store FUN registration data
\return void
*/
void app_fun_ParseFUNRegistrationMessage(IN u8 *stIe_Msg, OUT PST_FUN_DEVICE_INFO pst_FunInfoEepromStructure);
// ========== app_fun_BuildFUNRegistrationResponse ===========
/*!
\brief
This function builds FUN registration msg response to be sent to adevice p_ResMsg and p_ResMsgCtl
void app_fun_BuildFUNRegistrationResponse(IN u8 *p_Msg, OUT u8 *p_ResMsg, OUT u8 *p_ResMsgCtl)
\param[in] p_Msg reference pointer CMBS msg stores FUN Registration msg
\param[out] p_ResMsg reference pointer to CMBS msg to store FUN Registration msg response
\param[out] p_ResMsgCtl reference pointer to CMBS control msg FUN Registration msg control info
\return void
*/
void app_fun_BuildFUNRegistrationResponse(IN u8 *p_Msg, OUT u8 *p_ResMsg, OUT u8 *p_ResMsgCtl);
#endif // _APPFUN_H
/**********************[End Of File]**********************************************************************************************************/
/*---------[End Of File]---------------------------------------------------------------------------------------------------------------------------*/

File diff suppressed because it is too large Load Diff

View File

@@ -1,197 +0,0 @@
/*!
* \file apphan.h
* \brief HAN API
* \author CMBS Team
*
*
*******************************************************************************/
#if !defined( _APPHAN_H )
#define _APPHAN_H
#include "cmbs_han.h"
#include "hanfun_protocol_defs.h"
#include "cmbs_fifo.h"
int app_HANEntity ( void * pv_AppRef, E_CMBS_EVENT_ID e_EventID, void * pv_EventData );
E_CMBS_RC app_DsrHanMngrInit ( ST_HAN_CONFIG * pst_HANConfig );
E_CMBS_RC app_DsrHanMngrStart ( void );
E_CMBS_RC app_DsrHanDeviceReadTable (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry, u8 isBrief );
E_CMBS_RC app_DsrHanReadExtendedDeviceTablePhase2 (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry);
E_CMBS_RC app_DsrHanDeviceWriteTable (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry, ST_HAN_DEVICE_ENTRY * pst_HANDeviceEntriesArray);
E_CMBS_RC app_DsrHanBindReadTable (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry );
E_CMBS_RC app_DsrHanBindWriteTable (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry, ST_HAN_BIND_ENTRY * pst_HANBindEntriesArray );
E_CMBS_RC app_DsrHanBindAddEntry (PST_HAN_BIND_ENTRY pst_HANBindEntry);
E_CMBS_RC app_DsrHanBindRemoveEntry(PST_HAN_BIND_ENTRY pst_HANBindEntry);
E_CMBS_RC app_DsrHanClearBindTable( void );
E_CMBS_RC app_DsrHanGroupReadTable (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry, u16 u16_GroupId);
E_CMBS_RC app_DsrHanGroupReadList (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry );
E_CMBS_RC app_DsrHanReadBroadcastCahnnelTable (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry);
E_CMBS_RC app_DsrHanGroupWriteTable (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry, ST_HAN_GROUP_TABLE_ENTRY * pst_HANGroupEntriesArray );
E_CMBS_RC app_DsrHanGroupCreateGroup ( u8 u8_BroadcastChannelId );
E_CMBS_RC app_DsrHanGroupRemoveGroup ( u16 u16_GroupId );
E_CMBS_RC app_DsrHanGroupAddDeviceToGroup(u16 u16_GroupId, u16 u16_DeviceId, u8 u8_UnitId);
E_CMBS_RC app_DsrHanGroupRemoveDeviceFromGroup(u16 u16_GroupId, u16 u16_DeviceId, u8 u8_UnitId);
E_CMBS_RC app_DsrHanMsgRecvRegister (ST_HAN_MSG_REG_INFO * pst_HANMsgRegInfo);
E_CMBS_RC app_DsrHanMsgRecvUnregister (ST_HAN_MSG_REG_INFO * pst_HANMsgRegInfo);
E_CMBS_RC app_DsrHanMsgSendTxRequest (u16 u16_DeviceId );
E_CMBS_RC app_DsrHanMsgSendTxEnd (u16 u16_DeviceId );
E_CMBS_RC app_DsrHanMsgSend (u16 u16_RequestId, u16 u16_DestDeviceId, ST_IE_HAN_MSG_CTL* pst_HANMsgCtl ,ST_IE_HAN_MSG * pst_HANMsg);
E_CMBS_RC app_DsrHanRawMsgSend (u16 u16_RequestId, u16 u16_DestDeviceId, ST_IE_HAN_MSG_CTL* pst_HANMsgCtl ,ST_IE_DATA * pst_HANRawMsg);
E_CMBS_RC app_DsrHanDeleteDevice (u16 u16_DeviceId , bool b_BlackList);
E_CMBS_RC app_DsrHanSendBaseUpdatedNotification ( u16 u16_DeviceId );
E_CMBS_RC app_DsrHanGetFunProtocolInfo ();
E_CMBS_RC app_DsrHanGetDeviceConnectionStatus ( u16 u16_DeviceId );
E_CMBS_RC app_DsrHanReadSingleDeviceRegistrationInformation(u16 u16_DeviceId);
E_CMBS_RC app_DsrHanReadSingleDeviceRegistrationInformationPhase2(u16 u16_DeviceId);
E_CMBS_RC app_DsrHan_HanSetLogLevel(u8 u8_LogLevel);
E_CMBS_RC app_DsrHan_HanGetLogLevel(void);
E_CMBS_RC app_DsrHanLoggerEnable(bool b_enable);
E_CMBS_RC app_DsrHanCpLoggerEnable(bool b_enable);
E_CMBS_RC app_DsrHanNotifyOnVoiceCall(u16 u16_DeviceId);
E_CMBS_RC app_DsrHanGetMaxNumOfDevices(void);
E_CMBS_RC app_DsrHanReadBlackListedDeviceTable (u16 u16_NumOfEntries, u16 u16_IndexOfFirstEntry);
E_CMBS_RC app_DsrHanMarkCcmKeyAsUsed( u16 u16_DeviceNumber , u8 u8_CCMKeyUsed);
E_CMBS_RC app_DsrHanSetTxMicCorruptNum(u16 u16_DeviceNumber);
E_CMBS_RC app_DsrHanSetTxSeqNum(u16 u16_DeviceNumber, u16 u16_TxSequenceNumber );
E_CMBS_RC app_DsrHanGetTxSeqNum(u16 u16_DeviceNumber);
E_CMBS_RC app_DsrHanGetRxSeqNum(u16 u16_DeviceNumber);
E_CMBS_RC app_DsrHanSetTxAckDropNum(u16 u16_TxAckDropNumber);
E_CMBS_RC app_DsrHanSetPvcState(u16 u16_DeviceNumber, u8 u8_PVCState );
E_CMBS_RC app_DsrHanSetRxGain(u8 u8_RxGainVal );
E_CMBS_RC app_DsrHanGetRxGain(void );
E_CMBS_RC app_DsrHanSendPvcResetReq( u16 u16_DeviceNumber );
E_CMBS_RC app_DsrHanGetPvcResetReqState( u16 u16_DeviceNumber );
E_CMBS_RC app_DsrHanReadFullDeviceRegistrationInfo(u16 u16_DeviceId);
E_CMBS_RC app_DsrHanWriteFullDeviceRegistrationInfo(u16 u16_DeviceId, ST_HAN_FULL_DEVICE_REGISTRATION_INFO *pst_DeviceRegistrationInfo);
E_CMBS_RC app_DsrHanTBR6SetPM(u8 u8_Carrier , u32 u32_Period );
E_CMBS_RC app_DsrHanTBR6SetGUCI(u8 * pIPUI );
E_CMBS_RC app_DsrHanTBR6ResetStatistics(void );
E_CMBS_RC app_DsrHanModificationULEPagingInterval (u16 u16_DeviceId, u32 u32_ULEPagingIntervalMs );
E_CMBS_RC app_DsrHanNodeSetupAttemptsEnable (bool b_enable);
E_CMBS_RC app_DsrHanGetNumOfRegDevices(void);
E_CMBS_RC app_DsrHanStartVbs (u16 u16_GroupId);
E_CMBS_RC app_DsrHanStopVbs (u16 u16_GroupId);
E_CMBS_RC app_DsrHanReadBroadcastChannelType (u8 u8_BroadcastChannelId);
E_CMBS_RC app_DsrHanReadDeviceVbsCapabilities (u16 u16_DeviceId);
void SetWaitForReady(u16 u16_deviceId, bool Mode);
bool GetWaitForReady(u16 u16_deviceId);
void SetDuringDeleteReq(bool status);
bool SetIfNotAlreadyDuringDeleteReq(void);
void SetReleaseLink(u16 u16_deviceId, bool ReleaseLinkMode);
bool GetReleaseLink(u16 u16_deviceId);
PST_CMBS_FIFO Get_UleMsgFifo(u16 u16_deviceId);
PST_CMBS_FIFO Get_UleRawMsgFifo(u16 u16_deviceId);
void app_HanPushPendingDeviceToDelete(u16 u16_deviceId, bool b_BlackList);
u16 app_HanPopPendingDeviceToDelete();
u8 app_HanDbGetFunMsgQSizeForDevice();
void app_DsrHanVoiceCallReq (u16 u16_DstDeviceId, u8 u8_DstUnitId, PST_HAN_VOICE_CALL_REQ_PARAMS Pst_CallReqParams);
void app_HanOnFunMsgReceived(void *pv_EventData, ST_IE_HAN_MSG * pstIe_Msg );
void app_HanOnRawMsgReceived(void *pv_EventData, ST_IE_DATA * pstIe_RawMsg );
void app_HanRegularStart( u8 RegisterForHanMessages );
void app_HanPrintMessageFields(ST_IE_HAN_MSG* pMsg);
void app_HanPrintRawMessageFields(ST_IE_DATA* pMsg, u16 u16_DeviceId);
u8 app_HAN_GetHANConfiguration( void );
void app_HAN_SetHANConfiguration(u8 u8_HANServiceConfig);
u8 app_HAN_GetHANConfiguration( void );
void app_HAN_SetHANConfiguration(u8 u8_HANServiceConfig);
void app_HANRestoreSequenceNumbers (void);
void app_HanOnSuotaOverFunMsgReceived(ST_IE_HAN_MSG * stIe_Msg );
void app_HanSendSUOTAOverFunGetChunkRes(u8 deviceId, u8 AppRef, u8 * u8_Buffer, u16 u16_BuffLen );
void appHanDbHandleDevDeleteOnTargetUp();
void app_HanDbInitialize();
#ifdef WIN32
DWORD app_tempThread(LPVOID lpThreadParameter);
#elif __linux__
void* app_tempThread(void *ptr);
#endif
#define MAX_ULE_DEVICES_HOST 1001 // Maximal number of ULE that host supports + 1 (to include also device 0 that is not used today)
#define ALL_ULE_DEVICES_HOST 0xFFFF // All devices as a group
#define NO_ULE_DEVICE_HOST 0xFFFE // for internal use only
// Test Mode interface
#define HAN_IFACE_TESTMODE 0x7F01
// server attributes
#define HAN_IFACE_TESTMODE_ATTR_BULK_SIZE 1
#define HAN_IFACE_TESTMODE_ATTR_BULK_INTERVAL 2
#define HAN_IFACE_TESTMODE_ATTR_PACKET_INTERVAL 3
// commands client to server
#define HAN_IFACE_TESTMODE_CMD_ENABLE 1
#define HAN_IFACE_TESTMODE_CMD_TXTDD_START 2
// needed for payload
#define HAN_IFACE_TESTMODE_CMD_ENABLE_VALUE_DISABLE 0// payload of one Byte for the command (0 Disable , 1 Enable)
#define HAN_IFACE_TESTMODE_CMD_ENABLE_VALUE_ENABLE 1
// MEMORY Access interface
#define HAN_IFACE_MEMORY_ACCESS 0x7F04
// commands client to server
#define HAN_IFACE_EEPROM_ACCESS_CMD_GET 1
#define HAN_IFACE_EEPROM_ACCESS_CMD_SET 2
// Interface direction
#define HAN_IFACE_DIRECTION_SERVER 1
#define HAN_IFACE_DIRECTION_CLIENT 0
#define MEMORY_ACCESS_CMND_PAYLOAD_HEADER_SIZE 7
#define MEMORY_ACCESS_CMND_PAYLOAD_MAX_SIZE 500
#define HAN_TEST_DIALOG 3
typedef struct
{
ST_IE_HAN_MSG st_HANmsg;
u8 paylod[CMBS_HAN_MAX_MSG_LEN*2];
} ST_IE_FULL_HAN_MSG , * PST_IE_FULL_HAN_MSG;
typedef struct
{
bool b_Response;
u16 u16_deviceID;
u16 u16_status;
}ST_CMBS_IE_RES, *PST_CMBS_IE_RES;
typedef struct // Msg Struct to be saved in message Queue
{
ST_IE_HAN_MSG_CTL st_HANMsgCtl;
ST_IE_HAN_MSG st_HANMsg;
u8 Payload[CMBS_HAN_MAX_MSG_DATA_LEN];
}ST_FUN_MSG, *PST_FUN_MSG;
typedef struct // Raw Msg Struct to be saved in message Queue
{
ST_IE_HAN_MSG_CTL st_HANMsgCtl;
ST_IE_DATA st_RawMsg;
u16 u16_DeviceId;
u8 Payload[CMBS_HAN_MAX_MSG_DATA_LEN];
}ST_RAW_MSG, *PST_RAW_MSG;
#endif // _APPHAN_H
/**********************[End Of File]**********************************************************************************************************/

View File

@@ -1,254 +0,0 @@
/*!
* \file apphan.c
* \brief HAN API
* \author CMBS Team
*
*
*******************************************************************************/
#include <string.h>
#include <stdio.h>
#include "apphanDb.h"
#include "apphan.h"
#include "cfr_mssg.h"
#include "appcmbs.h"
#include "cmbs_fifo.h"
#define FUN_MSG_FIFO_SIZE 20 // max messages per HAN device
#define RAW_MSG_FIFO_SIZE 20 // max raw messages per HAN device
void han_applUleMsgFiFoInitialize();
void han_applRawMsgFiFoInitialize();
////////////////////////////////////////////////////
// Message Queue per ULE device -- definitions
static ST_FUN_MSG g_CMBS_UleMsgBuffer[MAX_ULE_DEVICES_HOST][FUN_MSG_FIFO_SIZE];
static ST_RAW_MSG g_CMBS_UleRawMsgBuffer[MAX_ULE_DEVICES_HOST][RAW_MSG_FIFO_SIZE];
static ST_CMBS_FIFO g_UleMsgFifo[MAX_ULE_DEVICES_HOST];
static ST_CMBS_FIFO g_UleRawMsgFifo[MAX_ULE_DEVICES_HOST];
static bool WaitForReady[MAX_ULE_DEVICES_HOST]; // TxRequest was sent, we ae waiting for TxReady indication
static bool ReleaseLink[MAX_ULE_DEVICES_HOST]; // Dynamically updated by application: If to send TxEnd to device when its fifo is empty, to save link
// Consecutive Delete requests should be serialized.
static st_DeleteRequestQueue PendingDeleteReqests[MAX_ULE_DEVICES_HOST+1]; // last entry is for Delete ALL pending request
static bool DuringDeleteReq=FALSE;
static CFR_CMBS_CRITICALSECTION HanServerCriticalSection;
//////////////////////////////////////////////////
ST_CMBS_FIFO* app_HanDbGetUleMsgFifo()
{
return g_UleMsgFifo;
}
bool app_HanDbPrintFifoStatistic(u16 u16_DeviceID)
{
//print only devices that used fifo
if(g_UleMsgFifo[u16_DeviceID].s_fifo_statistics.u32_MaxInUse > 0)
{
printf("\n\n==== FIFO STATISTICS FOR DEVICE: %d ====\n",u16_DeviceID);
cmbs_util_FifoPrintStatistics(&g_UleMsgFifo[u16_DeviceID]);
return TRUE;
}
return FALSE;
}
void app_HanDbInitialize()
{
han_applUleMsgFiFoInitialize();
han_applRawMsgFiFoInitialize();
CFR_CMBS_INIT_CRITICALSECTION(HanServerCriticalSection); // init of this CS is NOT conditioned by HanServer flag
SetDuringDeleteReq(FALSE);
}
void han_applUleMsgFiFoInitialize ()
{
u32 u32_Index;
for ( u32_Index = 0; u32_Index < MAX_ULE_DEVICES_HOST; ++u32_Index )
{
cmbs_util_FifoInit( &g_UleMsgFifo[u32_Index],
g_CMBS_UleMsgBuffer[u32_Index],
(u16)sizeof(ST_FUN_MSG),
FUN_MSG_FIFO_SIZE,
HanServerCriticalSection); // use same critical section for all devices
WaitForReady[u32_Index] = FALSE;
}
}
///////////////////////////////////////////////////////////////
void han_applRawMsgFiFoInitialize ()
{
u32 u32_Index;
for ( u32_Index = 0; u32_Index < MAX_ULE_DEVICES_HOST; ++u32_Index )
{
cmbs_util_FifoInit( &g_UleRawMsgFifo[u32_Index],
g_CMBS_UleRawMsgBuffer[u32_Index],
(u16)sizeof(ST_RAW_MSG),
RAW_MSG_FIFO_SIZE,
HanServerCriticalSection); // use same critical section for all devices
WaitForReady[u32_Index] = FALSE;
}
}
///////////////////////////////////////////////////////////////
PST_CMBS_FIFO Get_UleMsgFifo(u16 u16_deviceId)
{
return &g_UleMsgFifo[u16_deviceId];
}
///////////////////////////////////////////////////////////////
PST_CMBS_FIFO Get_UleRawMsgFifo(u16 u16_deviceId)
{
return &g_UleRawMsgFifo[u16_deviceId];
}
///////////////////////////////////////////////////////////////
void SetReleaseLink(u16 u16_deviceId, bool ReleaseLinkMode)
{
CFR_CMBS_ENTER_CRITICALSECTION(HanServerCriticalSection);
ReleaseLink[u16_deviceId] = ReleaseLinkMode;
CFR_CMBS_LEAVE_CRITICALSECTION(HanServerCriticalSection);
}
bool GetReleaseLink(u16 u16_deviceId)
{
bool ret;
CFR_CMBS_ENTER_CRITICALSECTION(HanServerCriticalSection);
ret = ReleaseLink[u16_deviceId];
CFR_CMBS_LEAVE_CRITICALSECTION(HanServerCriticalSection);
return ret;
}
///////////////////////////////////////////////////////////////
void SetWaitForReady(u16 u16_deviceId, bool Mode)
{
CFR_CMBS_ENTER_CRITICALSECTION(HanServerCriticalSection);
WaitForReady[u16_deviceId] = Mode;
CFR_CMBS_LEAVE_CRITICALSECTION(HanServerCriticalSection);
}
bool GetWaitForReady(u16 u16_deviceId)
{
bool ret;
CFR_CMBS_ENTER_CRITICALSECTION(HanServerCriticalSection);
ret = WaitForReady[u16_deviceId];
CFR_CMBS_LEAVE_CRITICALSECTION(HanServerCriticalSection);
return ret;
}
///////////////////////////////////////////////////////////////
void SetDuringDeleteReq(bool status)
{
CFR_CMBS_ENTER_CRITICALSECTION(HanServerCriticalSection);
DuringDeleteReq = status;
CFR_CMBS_LEAVE_CRITICALSECTION(HanServerCriticalSection);
}
// This function protects the Delete Request:
// Set only if not already during previous request
// return TRUE iff request was set now
bool SetIfNotAlreadyDuringDeleteReq(void)
{
bool ret = FALSE;
CFR_CMBS_ENTER_CRITICALSECTION(HanServerCriticalSection);
if (!DuringDeleteReq)
{
DuringDeleteReq=TRUE;
ret = TRUE;
}
CFR_CMBS_LEAVE_CRITICALSECTION(HanServerCriticalSection);
return ret;
}
// return u16_deviceId, which may be also ALL_ULE_DEVICES_HOST
u16 app_HanPopPendingDeviceToDelete()
{
int i;
u16 u16_deviceId = NO_ULE_DEVICE_HOST;
CFR_CMBS_ENTER_CRITICALSECTION(HanServerCriticalSection);
for (i = 0; i <= MAX_ULE_DEVICES_HOST; i++) //
{
if (PendingDeleteReqests[i].b_PendingRequest)
{
PendingDeleteReqests[i].b_PendingRequest = FALSE;
if (i == MAX_ULE_DEVICES_HOST)
{
u16_deviceId = ALL_ULE_DEVICES_HOST;
}
else
{
u16_deviceId = i;
if (PendingDeleteReqests[i].b_BlackListDeleteRequest)
{
PendingDeleteReqests[i].b_BlackListDeleteRequest = FALSE;
u16_deviceId |= 0x8000;
}
}
// anyhow break
break;
}
}
CFR_CMBS_LEAVE_CRITICALSECTION(HanServerCriticalSection);
return u16_deviceId;
}
// input u16_deviceId may be ALL_ULE_DEVICES_HOST
void app_HanPushPendingDeviceToDelete(u16 u16_deviceId, bool b_BlackList)
{
CFR_CMBS_ENTER_CRITICALSECTION(HanServerCriticalSection);
if (u16_deviceId == ALL_ULE_DEVICES_HOST)
{
PendingDeleteReqests[MAX_ULE_DEVICES_HOST].b_PendingRequest = TRUE;
}
else
{
PendingDeleteReqests[u16_deviceId].b_PendingRequest= TRUE;
PendingDeleteReqests[u16_deviceId].b_BlackListDeleteRequest = b_BlackList ? TRUE : FALSE;
}
CFR_CMBS_LEAVE_CRITICALSECTION(HanServerCriticalSection);
}
u8 app_HanDbGetFunMsgQSizeForDevice()
{
return FUN_MSG_FIFO_SIZE;
}
void appHanDbHandleDevDeleteOnTargetUp()
{
PendingDeleteReqests[MAX_ULE_DEVICES_HOST].b_BlackListDeleteRequest = FALSE;
PendingDeleteReqests[MAX_ULE_DEVICES_HOST].b_PendingRequest = FALSE;
DuringDeleteReq = FALSE;
}

View File

@@ -1,25 +0,0 @@
/*!
* \file appHanDb.h
* \brief Fifo message queue for CMBS host and CMBS target
* \autor HAN Team
*
*******************************************************************
*/
#if !defined( _APPHANDB_H )
#define _APPHANDB_H
#include "cmbs_fifo.h"
ST_CMBS_FIFO* app_HanDbGetUleMsgFifo();
bool app_HanDbPrintFifoStatistic(u16 u16_DeviceID);
typedef struct st_DeleteRequestQueue
{
bool b_PendingRequest;
bool b_BlackListDeleteRequest;
}st_DeleteRequestQueue, *pst_DeleteRequestQueue;
#endif // _APPHANDB_H

View File

@@ -1,227 +0,0 @@
/*!
* \file apphanvoicecallroutingtable.c
* \brief
* \author Moria Aharon
*
* @(#) apphanvoicecallroutingtable.c~1
*
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "apphanvoicecallroutingtable.h"
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
#define INVALID_ENTITY_ID 0
#define ANY_ENTITY_ID (u16)-1
// VoiceCall Routing Table DB
static st_apphan_VoiceCallRoutingTableRecord g_st_apphan_VoiceCallRoutingTable[VOICE_CALL_ROUTING_TABLE_SIZE];
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
bool p_VoiceCallRoutingTable_AddRecordToTable(st_apphan_VoiceCallRoutingTableRecord * pst_apphan_VoiceCallRoutingTableRecord)
{
u16 u16_Index;
if (!p_VoiceCallRoutingTable_IsRecordValid(pst_apphan_VoiceCallRoutingTableRecord))
{
return FALSE;
}
for (u16_Index = 0; u16_Index < VOICE_CALL_ROUTING_TABLE_SIZE; u16_Index++)
{
// search for the first empty record
if (g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_SrcId == INVALID_ENTITY_ID)
{
g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_DstType = pst_apphan_VoiceCallRoutingTableRecord->u8_DstType;
g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_DstId = pst_apphan_VoiceCallRoutingTableRecord->u16_DstId;
g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_DstUnitId = pst_apphan_VoiceCallRoutingTableRecord->u8_DstUnitId;
g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcType = pst_apphan_VoiceCallRoutingTableRecord->u8_SrcType;
g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_SrcId = pst_apphan_VoiceCallRoutingTableRecord->u16_SrcId;
g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcUnitId = pst_apphan_VoiceCallRoutingTableRecord->u8_SrcUnitId;
if (pst_apphan_VoiceCallRoutingTableRecord->pu8_DstDialStr[0] != 0)
strcpy((char *)g_st_apphan_VoiceCallRoutingTable[u16_Index].pu8_DstDialStr, (const char *)pst_apphan_VoiceCallRoutingTableRecord->pu8_DstDialStr);
return TRUE;
}
}
return FALSE;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
bool p_VoiceCallRoutingTable_RemoveRecordFromTable(st_apphan_VoiceCallRoutingTableRecord * pst_apphan_VoiceCallRoutingTableRecord)
{
u16 u16_Index;
for (u16_Index=0; u16_Index<VOICE_CALL_ROUTING_TABLE_SIZE; u16_Index++)
{
if (g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_DstType == pst_apphan_VoiceCallRoutingTableRecord->u8_DstType &&
g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_DstId == pst_apphan_VoiceCallRoutingTableRecord->u16_DstId &&
g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_DstUnitId == pst_apphan_VoiceCallRoutingTableRecord->u8_DstUnitId &&
g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcType == pst_apphan_VoiceCallRoutingTableRecord->u8_SrcType &&
g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_SrcId == pst_apphan_VoiceCallRoutingTableRecord->u16_SrcId &&
g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcUnitId == pst_apphan_VoiceCallRoutingTableRecord->u8_SrcUnitId &&
!strcmp((char *)g_st_apphan_VoiceCallRoutingTable[u16_Index].pu8_DstDialStr, (const char *)pst_apphan_VoiceCallRoutingTableRecord->pu8_DstDialStr))
{
memset((void*) &g_st_apphan_VoiceCallRoutingTable[u16_Index], 0, sizeof(st_apphan_VoiceCallRoutingTableRecord));
return TRUE;
}
}
return FALSE;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
bool p_VoiceCallRoutingTable_IsRecordValid (st_apphan_VoiceCallRoutingTableRecord * pst_apphan_VoiceCallRoutingTableRecord)
{
if (pst_apphan_VoiceCallRoutingTableRecord->u8_SrcType >= ENTITY_TYPE_MAX ||
pst_apphan_VoiceCallRoutingTableRecord->u8_DstType >= ENTITY_TYPE_MAX ||
pst_apphan_VoiceCallRoutingTableRecord->u16_SrcId == INVALID_ENTITY_ID ||
pst_apphan_VoiceCallRoutingTableRecord->u16_DstId == INVALID_ENTITY_ID )
{
return FALSE;
}
return TRUE;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
u16 p_VoiceCallRoutingTable_CountTableEntries(void)
{
u16 u16_Index, u16_EntryCount = 0;
for (u16_Index=0; u16_Index<VOICE_CALL_ROUTING_TABLE_SIZE; u16_Index++)
{
if (g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_SrcId != INVALID_ENTITY_ID)
{
u16_EntryCount++;
}
}
return u16_EntryCount;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
void p_VoiceCallRoutingTable_PrintTable(void)
{
u16 u16_Index;
printf("\n=============================\n");
printf(" VoiceCall Routing Table\n");
printf("=============================\n\n");
for (u16_Index=0; u16_Index<VOICE_CALL_ROUTING_TABLE_SIZE; u16_Index++)
{
if (g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_SrcId != INVALID_ENTITY_ID)
{
printf("Src Type: %s\n", g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcType == DEVICE_ENTITY ? "Device" : "HS");
printf("Src ID: %d\n", g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_SrcId);
if(g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcType == DEVICE_ENTITY)
{
printf("Src Unit ID: %d\n", g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcUnitId);
}
printf("Dst Type: %s\n", g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_DstType==DEVICE_ENTITY ? "Device" : "HS");
printf("Dst ID: %d\n", g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_DstId);
if(g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_DstType == DEVICE_ENTITY)
{
printf("Dst Unit ID: %d\n", g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_DstUnitId);
}
if (g_st_apphan_VoiceCallRoutingTable[u16_Index].pu8_DstDialStr[0])
{
printf("Dst Dial Str: %s\n", g_st_apphan_VoiceCallRoutingTable[u16_Index].pu8_DstDialStr);
}
printf("------------------------------\n");
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
void p_VoiceCallRoutingTable_ClearTable(void)
{
memset( (void *) &g_st_apphan_VoiceCallRoutingTable[0], 0, sizeof(g_st_apphan_VoiceCallRoutingTable));
}
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
bool p_VoiceCallRoutingTable_FindMatchForHS(u16 u16_HsNum, const char *pu8_DialStr, st_apphan_VoiceCallRoutingTableRecord *pst_VoiceCallRoutingTableRecord)
{
u16 u16_Index;
for (u16_Index=0; u16_Index<VOICE_CALL_ROUTING_TABLE_SIZE; u16_Index++)
{
// HS entry
if (g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcType == HS_ENTITY &&
// HS number
(g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_SrcId == ANY_ENTITY_ID || g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_SrcId == u16_HsNum) &&
// check if dest dial string is the same
((g_st_apphan_VoiceCallRoutingTable[u16_Index].pu8_DstDialStr[0] == 0) ||
(pu8_DialStr && !strcmp(pu8_DialStr, (const char *)g_st_apphan_VoiceCallRoutingTable[u16_Index].pu8_DstDialStr))))
{
memcpy((void *) pst_VoiceCallRoutingTableRecord, (void *) &g_st_apphan_VoiceCallRoutingTable[u16_Index], sizeof(st_apphan_VoiceCallRoutingTableRecord));
return TRUE;
}
}
return FALSE;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
bool p_VoiceCallRoutingTable_FindMatchForDevice(u16 u16_DeviceId, u8 u8_UnitId, const char *pu8_DialStr, st_apphan_VoiceCallRoutingTableRecord *pst_VoiceCallRoutingTableRecord)
{
u16 u16_Index;
for (u16_Index=0; u16_Index<VOICE_CALL_ROUTING_TABLE_SIZE; u16_Index++)
{
// Device entry
if (g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcType == DEVICE_ENTITY &&
// device ID
(g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_SrcId == ANY_ENTITY_ID || g_st_apphan_VoiceCallRoutingTable[u16_Index].u16_SrcId == u16_DeviceId) &&
// Unit ID
(g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcUnitId == (u8)ANY_ENTITY_ID || g_st_apphan_VoiceCallRoutingTable[u16_Index].u8_SrcUnitId == u8_UnitId) &&
// check if dest dial string is the same or missinig on both sides
((g_st_apphan_VoiceCallRoutingTable[u16_Index].pu8_DstDialStr[0] == 0) ||
(pu8_DialStr && !strcmp(pu8_DialStr, (const char *)g_st_apphan_VoiceCallRoutingTable[u16_Index].pu8_DstDialStr))))
{
memcpy((void *) pst_VoiceCallRoutingTableRecord, (void *) &g_st_apphan_VoiceCallRoutingTable[u16_Index], sizeof(st_apphan_VoiceCallRoutingTableRecord));
return TRUE;
}
}
return FALSE;
}
//--------[End of file]---------------------------------------------------------------------------------------------------------------------------------

View File

@@ -1,59 +0,0 @@
/*!
* \file apphanvoicecallroutingtable.h
* \brief
* \author Moria Aharon
*
* @(#) apphanvoicecallroutingtable.h~1
*
*******************************************************************************/
#if !defined( _APPHANVOICECALLROUTINGTABLE_H )
#define _APPHANVOICECALLROUTINGTABLE_H
#include "cmbs_api.h"
#define DIAL_STR_LEN 16
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
typedef struct
{
u8 u8_SrcType;
u16 u16_SrcId;
u8 u8_SrcUnitId;
u8 u8_DstType;
u16 u16_DstId;
u8 u8_DstUnitId;
u8 pu8_DstDialStr[DIAL_STR_LEN];
} st_apphan_VoiceCallRoutingTableRecord;
typedef enum
{
HS_ENTITY = 0,
DEVICE_ENTITY,
ENTITY_TYPE_MAX,
} t_en_VoiceCallRoutingTable_EntityType;
// VoiceCall Routing Table Record size
#define VOICE_CALL_ROUTING_TABLE_SIZE 20
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////
bool p_VoiceCallRoutingTable_AddRecordToTable(st_apphan_VoiceCallRoutingTableRecord * pst_apphan_VoiceCallRoutingTableRecord);
bool p_VoiceCallRoutingTable_RemoveRecordFromTable(st_apphan_VoiceCallRoutingTableRecord * pst_apphan_VoiceCallRoutingTableRecord);
bool p_VoiceCallRoutingTable_IsRecordValid (st_apphan_VoiceCallRoutingTableRecord * pst_apphan_VoiceCallRoutingTableRecord);
u16 p_VoiceCallRoutingTable_CountTableEntries(void);
void p_VoiceCallRoutingTable_PrintTable(void);
void p_VoiceCallRoutingTable_ClearTable(void);
bool p_VoiceCallRoutingTable_FindMatchForHS(u16 u16_HsNum, const char *pu8_DialStr, st_apphan_VoiceCallRoutingTableRecord *pst_VoiceCallRoutingTableRecord);
bool p_VoiceCallRoutingTable_FindMatchForDevice(u16 u16_DeviceId, u8 u8_UnitId, const char *pu8_DialStr, st_apphan_VoiceCallRoutingTableRecord *pst_VoiceCallRoutingTableRecord);
#endif // _APPHANAUDIOROUTINGTABLE_H

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,31 +0,0 @@
/*!
* \file applistacc.h
* \brief
* \Author stein
*
* @(#) %filespec: applistacc.h~DMZD53#3 %
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
*******************************************************************************/
#if !defined( APPLISTACC_H )
#define APPLISTACC_H
#if defined( __cplusplus )
extern "C"
{
#endif
void app_LaInitialize( void );
#if defined( __cplusplus )
}
#endif
#endif //APPCATIQ_H
//*/

View File

@@ -1,173 +0,0 @@
/*!
* \file applog.c
* \brief handles DECT logger functionality
* \Author podolskyi
*
* @(#) %filespec: applog.c~3 %
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
*
*******************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cmbs_api.h"
#include "cfr_ie.h"
#include "cfr_mssg.h"
#include "cfr_debug.h"
#include "appcmbs.h"
#include "appmsgparser.h"
FILE* g_pDectLogFile=NULL;
//////////////////////////////////////////////////////////////////////////
/// externs
//////////////////////////////////////////////////////////////////////////
extern void app_DectLoggerResetOutputBuffer(void);
extern u8* app_DectLoggerGetOutputBuffer(u16* pIndex);
#define CMBS_DECT_LOG_BUFF_SIZE (512)
u8 u8_gDectLogPrintBuffer[CMBS_DECT_LOG_BUFF_SIZE];
u16 u16_gDectLogPrintIndex;
void app_DectLoggerResetOutputBuffer(void)
{
u16_gDectLogPrintIndex = 0;
memset(u8_gDectLogPrintBuffer,0x0,sizeof(u8_gDectLogPrintBuffer));
}
//////////////////////////////////////////////////////////////////////////
u8* app_DectLoggerGetOutputBuffer(u16* pIndex)
{
* pIndex = u16_gDectLogPrintIndex;
return u8_gDectLogPrintBuffer;
}
//////////////////////////////////////////////////////////////////////////
E_CMBS_RC app_LogStartDectLogger( void )
{
return cmbs_dsr_StartDectLogger(g_cmbsappl.pv_CMBSRef);
}
//////////////////////////////////////////////////////////////////////////
E_CMBS_RC app_LogStoptDectLoggerAndRead( void )
{
return cmbs_dsr_StopDectLoggerAndRead(g_cmbsappl.pv_CMBSRef);
}
//////////////////////////////////////////////////////////////////////////
void app_DectLoggerDataInd(void * pv_EventData )
{
void * pv_IE = NULL;
u16 u16_IE;
ST_IE_DATA stData = {0,0};
u16 u16_Index=0,u16_PrintIndex=0,i;
u8 *pOutBuffer;
cmbs_api_ie_GetFirst( pv_EventData, &pv_IE, &u16_IE );
cmbs_api_ie_DataGet(pv_IE,&stData);
// check necessary conditions for continue processing
if ((stData.pu8_Data == NULL) ||(g_pDectLogFile == NULL))
return;
while (u16_Index < stData.u16_DataLen)
{
app_DectLoggerResetOutputBuffer();
cmbs_api_ParseDectMsg(&stData.pu8_Data[u16_Index+3],stData.pu8_Data[u16_Index],stData.pu8_Data[u16_Index+1]);
if (stData.pu8_Data[u16_Index+2] == 0)
{
fprintf(g_pDectLogFile,"\nTX BS --> HS%d ",stData.pu8_Data[u16_Index+1]);
}
else
{
fprintf(g_pDectLogFile,"\nRX BS <-- HS%d ",stData.pu8_Data[u16_Index+1]);
}
for (i=0;i<stData.pu8_Data[u16_Index];i++)
{
fprintf(g_pDectLogFile,"%x ",stData.pu8_Data[u16_Index+3+i]);
}
fprintf(g_pDectLogFile,"\n");
fflush(g_pDectLogFile);
pOutBuffer = app_DectLoggerGetOutputBuffer(&u16_PrintIndex);
if (g_pDectLogFile)
{
fwrite(pOutBuffer,1,u16_PrintIndex,g_pDectLogFile);
fflush(g_pDectLogFile);
}
u16_Index += (stData.pu8_Data[u16_Index]+3);
}
//No need to sedn response cmbs_dsr_DectLoggerDataIndRes(g_cmbsappl.pv_CMBSRef);
}
//////////////////////////////////////////////////////////////////////////
void app_DectLoggerStartResp(void * pv_EventData)
{
E_CMBS_RC retCode = app_ResponseCheck( pv_EventData ) ? CMBS_RC_ERROR_GENERAL : CMBS_RC_OK;
if (CMBS_RC_OK == retCode)
{
g_pDectLogFile = fopen("dect_scenario.log","w");
if (!g_pDectLogFile)
{
CFR_DBG_ERROR("\n Can't create output log file \n");
}
else
{
CFR_DBG_INFO("\n DectLogger started successfully \n");
}
}
else
{
CFR_DBG_ERROR("\n Error during starting DectLogger, maybe DECT_DBG not defined? ");
}
}
//////////////////////////////////////////////////////////////////////////
void app_DectLoggerStopResp(void * pv_EventData)
{
E_CMBS_RC retCode = app_ResponseCheck( pv_EventData ) ? CMBS_RC_ERROR_GENERAL : CMBS_RC_OK;
if (g_pDectLogFile)
{
fclose(g_pDectLogFile);
g_pDectLogFile = NULL;
}
if (CMBS_RC_OK == retCode)
{
CFR_DBG_INFO("\n DectLogger stopped successfully \n");
}
else
{
CFR_DBG_ERROR("\n Error during stopping DectLogger, maybe DECT_DBG not defined? \n");
}
}
//////////////////////////////////////////////////////////////////////////
int app_LogEntity( void * pv_AppRef, E_CMBS_EVENT_ID e_EventID, void * pv_EventData )
{
UNUSED_PARAMETER(pv_AppRef);
switch (e_EventID)
{
case CMBS_EV_DSR_START_DECT_LOGGER_RES:
app_DectLoggerStartResp(pv_EventData);
break;
case CMBS_EV_DSR_DECT_DATA_IND:
app_DectLoggerDataInd(pv_EventData);
break;
case CMBS_EV_DSR_STOP_AND_READ_DECT_LOGGER_RES:
app_DectLoggerStopResp(pv_EventData);
break;
default:
return FALSE;
break;
}
return TRUE;
}

View File

@@ -1,31 +0,0 @@
/*!
* \file applog.h
* \brief
* \Author podolskyi
*
* @(#) %filespec: applog.h~1 %
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
*******************************************************************************/
#if !defined( APPLOG_H )
#define APPLOG_H
#if defined( __cplusplus )
extern "C"
{
#endif
E_CMBS_RC app_LogStartDectLogger ( void );
E_CMBS_RC app_LogStoptDectLoggerAndRead ( void );
int app_LogEntity ( void * pv_AppRef, E_CMBS_EVENT_ID e_EventID, void * pv_EventData );
#if defined( __cplusplus )
}
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,33 +0,0 @@
/*!
* \file appmsgparser.h
* \brief This file contains internal structures and definitions of CMBS
*
* \author podolskiy
*
* @(#) %filespec: appmsgparser.h~2 %
*
*******************************************************************************
* \par History
* \n==== History ============================================================\n
* date name version action \n
* ----------------------------------------------------------------------------\n
* 02-Nov-10 podolskiy 1 Initial creation \n
*******************************************************************************/
#ifndef APP_MSG_PARSER
#define APP_MSG_PARSER
void app_IEToString(void *pv_IE, u16 u16_IE);
u32 app_PrintIe2Log(char *pOutput, u32 u32_OutputSize, void *pv_IE, u16 u16_IE);
void app_set_msgparserEnabled(u8 value);
u8 app_get_msgparserEnabled();
char * app_GetAFEEndpointString(E_CMBS_AFE_CHANNEL e_Channel);
char * app_GetCodecString( E_CMBS_AUDIO_CODEC e_Codec );
char * app_GetHWCOMString( E_CMBS_HW_COM_TYPE e_HWComType );
char * app_GetHWChipString( E_CMBS_HW_CHIP e_HWChip );
char * app_GetHWChipVersionString( E_CMBS_HW_CHIP_VERSION e_HWChipVersion );
char * app_GetLineUseStatus(E_CMBS_LINE_DIAG_STATUS e_LineUseStatus);
char * app_GetOKStatus(E_CMBS_LINE_DIAG_OK_STATUS e_OKStatus);
char * app_GetErrorType(E_CMBS_LINE_DIAG_ERROR_TYPE e_ErrorType);
char * app_GetLocalErrorNumber(E_CMBS_LINE_DIAG_LOCAL_ERROR_NUMBER e_LocalErrorNumber);
#endif //APP_MSG_PARSER

View File

@@ -1,313 +0,0 @@
/*!
* \file apprtp.c
* \brief RTP API
* \author Denis Matiukha
*
* @(#) apprtp.c~1
*
*******************************************************************************/
#include <stdio.h>
#include "cmbs_api.h"
#include "cfr_ie.h"
#include "cfr_mssg.h"
#include "cmbs_event.h"
#include "appcmbs.h"
#include "appmsgparser.h"
#include "apprtp.h"
E_CMBS_RC app_RTPSessionStart( u32 u32_ChannelID, const ST_IE_RTP_SESSION_INFORMATION * pst_RTPSessionInformation )
{
PST_CFR_IE_LIST p_RefIEList;
ST_IE_MEDIA_CHANNEL st_MediaChannel;
//
// Allocate new IE list.
//
p_RefIEList = (PST_CFR_IE_LIST)cmbs_api_ie_GetList();
if ( p_RefIEList == 0 )
{
puts( "Can not allocate new IE List.\n" );
return CMBS_RC_ERROR_OUT_OF_MEM;
}
//
// Add relevant IEs to the list.
//
st_MediaChannel.u32_ChannelID = u32_ChannelID;
st_MediaChannel.u32_ChannelParameter = 0;
st_MediaChannel.e_Type = CMBS_MEDIA_TYPE_RTP;
cmbs_api_ie_MediaChannelAdd( p_RefIEList, &st_MediaChannel );
cmbs_api_ie_RTPSessionInformationAdd( p_RefIEList, pst_RTPSessionInformation );
//
// Call CMBS API function.
//
return cmbs_rtp_SessionStart( g_cmbsappl.pv_CMBSRef, p_RefIEList );
}
E_CMBS_RC app_RTPSessionStop( u32 u32_ChannelID )
{
PST_CFR_IE_LIST p_RefIEList;
ST_IE_MEDIA_CHANNEL st_MediaChannel;
//
// Allocate new IE list.
//
p_RefIEList = (PST_CFR_IE_LIST)cmbs_api_ie_GetList();
if ( p_RefIEList == 0 )
{
puts( "Can not allocate new IE List.\n" );
return CMBS_RC_ERROR_OUT_OF_MEM;
}
//
// Add relevant IEs to the list.
//
st_MediaChannel.u32_ChannelID = u32_ChannelID;
st_MediaChannel.u32_ChannelParameter = 0;
st_MediaChannel.e_Type = CMBS_MEDIA_TYPE_RTP;
cmbs_api_ie_MediaChannelAdd( p_RefIEList, &st_MediaChannel );
//
// Call CMBS API function.
//
return cmbs_rtp_SessionStop( g_cmbsappl.pv_CMBSRef, p_RefIEList );
}
E_CMBS_RC app_RTPSessionUpdate( u32 u32_ChannelID, const ST_IE_RTP_SESSION_INFORMATION * pst_RTPSessionInformation )
{
PST_CFR_IE_LIST p_RefIEList;
ST_IE_MEDIA_CHANNEL st_MediaChannel;
//
// Allocate new IE list.
//
p_RefIEList = (PST_CFR_IE_LIST)cmbs_api_ie_GetList();
if ( p_RefIEList == 0 )
{
puts( "Can not allocate new IE List.\n" );
return CMBS_RC_ERROR_OUT_OF_MEM;
}
//
// Add relevant IEs to the list.
//
st_MediaChannel.u32_ChannelID = u32_ChannelID;
st_MediaChannel.u32_ChannelParameter = 0;
st_MediaChannel.e_Type = CMBS_MEDIA_TYPE_RTP;
cmbs_api_ie_MediaChannelAdd( p_RefIEList, &st_MediaChannel );
cmbs_api_ie_RTPSessionInformationAdd( p_RefIEList, pst_RTPSessionInformation );
//
// Call CMBS API function.
//
return cmbs_rtp_SessionUpdate( g_cmbsappl.pv_CMBSRef, p_RefIEList );
}
E_CMBS_RC app_RTCPSessionStart( u32 u32_ChannelID, u32 u32_RTCPInterval )
{
PST_CFR_IE_LIST p_RefIEList;
ST_IE_MEDIA_CHANNEL st_MediaChannel;
//
// Allocate new IE list.
//
p_RefIEList = (PST_CFR_IE_LIST)cmbs_api_ie_GetList();
if ( p_RefIEList == 0 )
{
puts( "Can not allocate new IE List.\n" );
return CMBS_RC_ERROR_OUT_OF_MEM;
}
//
// Add relevant IEs to the list.
//
st_MediaChannel.u32_ChannelID = u32_ChannelID;
st_MediaChannel.u32_ChannelParameter = 0;
st_MediaChannel.e_Type = CMBS_MEDIA_TYPE_RTP;
cmbs_api_ie_MediaChannelAdd( p_RefIEList, &st_MediaChannel );
cmbs_api_ie_RTCPIntervalAdd( p_RefIEList, u32_RTCPInterval );
//
// Call CMBS API function.
//
return cmbs_rtcp_SessionStart( g_cmbsappl.pv_CMBSRef, p_RefIEList );
}
E_CMBS_RC app_RTCPSessionStop( u32 u32_ChannelID )
{
PST_CFR_IE_LIST p_RefIEList;
ST_IE_MEDIA_CHANNEL st_MediaChannel;
//
// Allocate new IE list.
//
p_RefIEList = (PST_CFR_IE_LIST)cmbs_api_ie_GetList();
if ( p_RefIEList == 0 )
{
puts( "Can not allocate new IE List.\n" );
return CMBS_RC_ERROR_OUT_OF_MEM;
}
//
// Add relevant IEs to the list.
//
st_MediaChannel.u32_ChannelID = u32_ChannelID;
st_MediaChannel.u32_ChannelParameter = 0;
st_MediaChannel.e_Type = CMBS_MEDIA_TYPE_RTP;
cmbs_api_ie_MediaChannelAdd( p_RefIEList, &st_MediaChannel );
//
// Call CMBS API function.
//
return cmbs_rtcp_SessionStop( g_cmbsappl.pv_CMBSRef, p_RefIEList );
}
E_CMBS_RC app_RTPSendDTMF( u32 u32_ChannelID, const ST_IE_RTP_DTMF_EVENT * pst_RTPDTMFEvent, const ST_IE_RTP_DTMF_EVENT_INFO * pst_RTPDTMFEventInfo )
{
PST_CFR_IE_LIST p_RefIEList;
ST_IE_MEDIA_CHANNEL st_MediaChannel;
//
// Allocate new IE list.
//
p_RefIEList = (PST_CFR_IE_LIST)cmbs_api_ie_GetList();
if ( p_RefIEList == 0 )
{
puts( "Can not allocate new IE List.\n" );
return CMBS_RC_ERROR_OUT_OF_MEM;
}
//
// Add relevant IEs to the list.
//
st_MediaChannel.u32_ChannelID = u32_ChannelID;
st_MediaChannel.u32_ChannelParameter = 0;
st_MediaChannel.e_Type = CMBS_MEDIA_TYPE_RTP;
cmbs_api_ie_MediaChannelAdd( p_RefIEList, &st_MediaChannel );
cmbs_api_ie_RTPDTMFEventAdd( p_RefIEList, pst_RTPDTMFEvent );
cmbs_api_ie_RTPDTMFEventInfoAdd( p_RefIEList, pst_RTPDTMFEventInfo );
//
// Call CMBS API function.
//
return cmbs_rtp_SendDTMF( g_cmbsappl.pv_CMBSRef, p_RefIEList );
}
E_CMBS_RC app_RTPEnableFaxAudioProcessingMode( u32 u32_ChannelID )
{
PST_CFR_IE_LIST p_RefIEList;
ST_IE_MEDIA_CHANNEL st_MediaChannel;
//
// Allocate new IE list.
//
p_RefIEList = (PST_CFR_IE_LIST)cmbs_api_ie_GetList();
if ( p_RefIEList == 0 )
{
puts( "Can not allocate new IE List.\n" );
return CMBS_RC_ERROR_OUT_OF_MEM;
}
//
// Add relevant IEs to the list.
//
st_MediaChannel.u32_ChannelID = u32_ChannelID;
st_MediaChannel.u32_ChannelParameter = 0;
st_MediaChannel.e_Type = CMBS_MEDIA_TYPE_RTP;
cmbs_api_ie_MediaChannelAdd( p_RefIEList, &st_MediaChannel );
//
// Call CMBS API function.
//
return cmbs_rtp_EnableFaxAudioProcessingMode( g_cmbsappl.pv_CMBSRef, p_RefIEList );
}
E_CMBS_RC app_RTPDisableFaxAudioProcessingMode( u32 u32_ChannelID )
{
PST_CFR_IE_LIST p_RefIEList;
ST_IE_MEDIA_CHANNEL st_MediaChannel;
//
// Allocate new IE list.
//
p_RefIEList = (PST_CFR_IE_LIST)cmbs_api_ie_GetList();
if ( p_RefIEList == 0 )
{
puts( "Can not allocate new IE List.\n" );
return CMBS_RC_ERROR_OUT_OF_MEM;
}
//
// Add relevant IEs to the list.
//
st_MediaChannel.u32_ChannelID = u32_ChannelID;
st_MediaChannel.u32_ChannelParameter = 0;
st_MediaChannel.e_Type = CMBS_MEDIA_TYPE_RTP;
cmbs_api_ie_MediaChannelAdd( p_RefIEList, &st_MediaChannel );
//
// Call CMBS API function.
//
return cmbs_rtp_DisableFaxAudioProcessingMode( g_cmbsappl.pv_CMBSRef, p_RefIEList );
}
int app_RTPEntity( void * pv_AppRef, E_CMBS_EVENT_ID e_EventID, void * pv_EventData )
{
UNUSED_PARAMETER( pv_AppRef );
UNUSED_PARAMETER( pv_EventData );
if( e_EventID == CMBS_EV_RTP_SESSION_START_RES ||
e_EventID == CMBS_EV_RTP_SESSION_STOP_RES ||
e_EventID == CMBS_EV_RTP_SESSION_UPDATE_RES ||
e_EventID == CMBS_EV_RTCP_SESSION_START_RES ||
e_EventID == CMBS_EV_RTCP_SESSION_STOP_RES ||
e_EventID == CMBS_EV_RTP_SEND_DTMF_RES ||
e_EventID == CMBS_EV_RTP_ENABLE_FAX_AUDIO_PROCESSING_MODE_RES ||
e_EventID == CMBS_EV_RTP_DISABLE_FAX_AUDIO_PROCESSING_MODE_RES
)
{
if ( g_cmbsappl.n_Token )
{
appcmbs_ObjectSignal( NULL, 0, 1, e_EventID );
}
return TRUE;
}
else
{
return FALSE;
}
}

Some files were not shown because too many files have changed in this diff Show More