Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
Beam Positoning Monitor - Software
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Beam Positoning Monitor - Software
Commits
6e8049a4
Commit
6e8049a4
authored
May 27, 2015
by
Lucas Russo
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'mlm-czmq3.0-upgrade' into devel
parents
2ecec50b
5b3c70a3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
55 changed files
with
888 additions
and
499 deletions
+888
-499
.gitmodules
.gitmodules
+0
-3
.travis.yml
.travis.yml
+4
-0
Makefile
Makefile
+15
-46
README.md
README.md
+24
-10
Makefile
cfg/Makefile
+4
-2
bpm_sw.cfg
cfg/bpm_sw.cfg
+3
-3
compile.sh
compile.sh
+2
-1
Makefile
examples/Makefile
+1
-1
acq.c
examples/acq.c
+11
-11
ad9510_ctl.c
examples/ad9510_ctl.c
+6
-8
adc_data.c
examples/adc_data.c
+57
-9
adc_dly.c
examples/adc_dly.c
+6
-8
dsp_swap.c
examples/dsp_swap.c
+7
-9
fmc130m_4ch_ctl.c
examples/fmc130m_4ch_ctl.c
+1
-8
leds.c
examples/leds.c
+6
-8
monit_amp.c
examples/monit_amp.c
+64
-8
monit_pos.c
examples/monit_pos.c
+64
-8
rffe_ctl.c
examples/rffe_ctl.c
+6
-8
si571_ctl.c
examples/si571_ctl.c
+6
-1
test_data_en.c
examples/test_data_en.c
+6
-8
libmdp
foreign/libmdp
+0
-1
dev_io.c
src/dev_io/dev_io.c
+17
-23
dev_io_cfg.c
src/dev_io/dev_io_cfg.c
+11
-19
dev_io_core.c
src/dev_io/dev_io_core.c
+219
-105
dev_io_core.h
src/dev_io/dev_io_core.h
+11
-7
dev_io_err.c
src/dev_io/dev_io_err.c
+4
-2
dev_io_err.h
src/dev_io/dev_io_err.h
+2
-0
dev_mngr.c
src/dev_mngr/dev_mngr.c
+1
-1
dev_mngr_core.c
src/dev_mngr/dev_mngr_core.c
+24
-19
dev_mngr_core.h
src/dev_mngr/dev_mngr_core.h
+1
-2
Makefile
src/libs/libbpmclient/Makefile
+14
-14
README.deps
src/libs/libbpmclient/README.deps
+1
-1
bpm_client.c
src/libs/libbpmclient/bpm_client.c
+48
-30
bpm_client.h
src/libs/libbpmclient/bpm_client.h
+3
-2
bpm_client_rw_param.c
src/libs/libbpmclient/bpm_client_rw_param.c
+2
-2
bpm_client_rw_param.h
src/libs/libbpmclient/bpm_client_rw_param.h
+1
-1
compile.sh
src/libs/libbpmclient/compile.sh
+37
-0
Makefile
src/libs/liberrhand/Makefile
+12
-12
msg.c
src/msg/msg.c
+10
-9
msg.h
src/msg/msg.h
+2
-2
smio_thsafe_zmq_client.c
src/msg/smio_thsafe_ops/smio_thsafe_zmq_client.c
+6
-6
sm_io_afc_diag_defaults.c
src/sm_io/modules/afc_diag/sm_io_afc_diag_defaults.c
+4
-0
sm_io_dsp_defaults.c
src/sm_io/modules/dsp/sm_io_dsp_defaults.c
+4
-0
sm_io_fmc130m_4ch_defaults.c
src/sm_io/modules/fmc130m_4ch/sm_io_fmc130m_4ch_defaults.c
+4
-0
sm_io_rffe_defaults.c
src/sm_io/modules/rffe/sm_io_rffe_defaults.c
+4
-0
sm_io_swap_defaults.c
src/sm_io/modules/swap/sm_io_swap_defaults.c
+4
-0
sm_pr_bsmp_defaults.h
src/sm_io/protocols/ops/sm_pr_bsmp_defaults.h
+2
-7
sm_pr_i2c_defaults.h
src/sm_io/protocols/ops/sm_pr_i2c_defaults.h
+0
-1
rw_param.h
src/sm_io/rw_param/rw_param.h
+1
-1
sm_io.c
src/sm_io/sm_io.c
+1
-1
sm_io.h
src/sm_io/sm_io.h
+7
-6
sm_io_bootstrap.c
src/sm_io/sm_io_bootstrap.c
+128
-60
sm_io_bootstrap.h
src/sm_io/sm_io_bootstrap.h
+5
-4
sm_io_err.c
src/sm_io/sm_io_err.c
+3
-1
sm_io_err.h
src/sm_io/sm_io_err.h
+2
-0
No files found.
.gitmodules
View file @
6e8049a4
...
...
@@ -4,9 +4,6 @@
[submodule "foreign/pcie-driver"]
path = foreign/pcie-driver
url = https://github.com/lnls-dig/fpga_pcie_driver.git
[submodule "foreign/libmdp"]
path = foreign/libmdp
url = https://github.com/lnls-dig/majordomo.git
[submodule "foreign/bpm-sw-cli"]
path = foreign/bpm-sw-cli
url = https://github.com/lnls-dig/bpm-sw-cli.git
.travis.yml
View file @
6e8049a4
...
...
@@ -32,6 +32,10 @@ before_script:
-
git clone git://github.com/zeromq/zyre.git
-
( cd zyre; ./autogen.sh; ./configure; make check; sudo make install; sudo ldconfig )
# Malamute
-
git clone git://github.com/zeromq/malamute.git
-
( cd malamute; ./autogen.sh; ./configure; make check; sudo make install; sudo ldconfig )
# Build and check this project
script
:
-
./ci_build.sh
Makefile
View file @
6e8049a4
...
...
@@ -31,12 +31,11 @@ AFE_RFFE_TYPE ?= 2
# synthesized.
WITH_DEVIO_CFG
?=
y
# Selects the install location of the config file
CFG_DIR
?=
/etc/bpm_sw
PREFIX
?=
/usr/local
export
PREFIX
CFG_DIR
?=
${
PREFIX
}
/etc/bpm_sw
export
CFG_DIR
INSTALL_DIR
?=
/usr/local
export
INSTALL_DIR
# Config filename
CFG_FILENAME
=
bpm_sw.cfg
...
...
@@ -46,7 +45,6 @@ INIT_SCRIPTS = init.sh shutdown.sh
FOREIGN_DIR
=
foreign
# Our submodules and third-party codes
LIBMDP_DIR
=
$(FOREIGN_DIR)
/libmdp/libmdp
LIBBSMP_DIR
=
$(FOREIGN_DIR)
/libbsmp
PCIE_DRIVER_DIR
=
$(FOREIGN_DIR)
/pcie-driver
...
...
@@ -144,7 +142,7 @@ CFLAGS_PLATFORM = -Wall -Wextra -Werror
LDFLAGS_PLATFORM
=
# Libraries
LIBS
=
-lm
-lzmq
-lczmq
-lm
dp
-lpcidriver
LIBS
=
-lm
-lzmq
-lczmq
-lm
lm
-lpcidriver
# FIXME: make the project libraries easily interchangeable, specifying
# the lib only a single time
...
...
@@ -251,7 +249,6 @@ revision_SRCS = $(patsubst %.o,%.c,$(revision_OBJS))
libdisptable libdisptable_install libdisptable_uninstall libdisptable_clean libdisptable_mrproper
\
libbpmclient libbpmclient_install libbpmclient_uninstall libbpmclient_clean libbpmclient_mrproper
\
libsdbfs libsdbfs_install libsdbfs_uninstall libsdbfs_clean libsdbfs_mrproper
\
libmdp libmdp_install libmdp_uninstall libmdp_clean libmdp_mrproper
\
libbsmp libbsmp_install libbsmp_uninstall libbsmp_clean libbsmp_mrproper
\
core_install core_uninstall core_clean core_mrproper
\
tests tests_clean tests_mrproper
\
...
...
@@ -337,42 +334,14 @@ lib_pcie_driver_clean:
lib_pcie_driver_mrproper
:
lib_pcie_driver_clean
libmdp_pre
:
ifeq
($(wildcard
$(LIBMDP_DIR)/Makefile),)
@echo
"LIBMDP is not configured. Configuring ..."
@cd
$(LIBMDP_DIR)
&&
\
./autogen.sh
&&
\
./configure
endif
libmdp
:
libmdp_pre
$(MAKE)
-C
$(LIBMDP_DIR)
libmdp_install
:
libmdp_pre
$(MAKE)
-C
$(LIBMDP_DIR)
install
ldconfig
libmdp_uninstall
:
libmdp_pre
$(MAKE)
-C
$(LIBMDP_DIR)
uninstall
libmdp_clean
:
ifneq
($(wildcard
$(LIBMDP_DIR)/Makefile),)
$(MAKE)
-C
$(LIBMDP_DIR)
clean
endif
libmdp_mrproper
:
ifneq
($(wildcard
$(LIBMDP_DIR)/Makefile),)
$(MAKE)
-C
$(LIBMDP_DIR)
distclean
endif
libbsmp
:
$(MAKE)
-C
$(LIBBSMP_DIR)
all
libbsmp_install
:
$(MAKE)
-C
$(LIBBSMP_DIR)
PREFIX
=
$(
INSTALL_DIR
)
install
$(MAKE)
-C
$(LIBBSMP_DIR)
PREFIX
=
$(
PREFIX
)
install
libbsmp_uninstall
:
$(MAKE)
-C
$(LIBBSMP_DIR)
PREFIX
=
$(
INSTALL_DIR
)
uninstall
$(MAKE)
-C
$(LIBBSMP_DIR)
PREFIX
=
$(
PREFIX
)
uninstall
libbsmp_clean
:
$(MAKE)
-C
$(LIBBSMP_DIR)
clean
...
...
@@ -474,23 +443,23 @@ libsdbfs_mrproper:
# External project dependencies
deps
:
lib
mdp lib
bsmp lib_pcie_driver
deps
:
libbsmp lib_pcie_driver
deps_install
:
lib
mdp_install lib
bsmp_install lib_pcie_driver_install
deps_install
:
libbsmp_install lib_pcie_driver_install
deps_uninstall
:
lib
mdp_uninstall lib
bsmp_uninstall lib_pcie_driver_uninstall
deps_uninstall
:
libbsmp_uninstall lib_pcie_driver_uninstall
deps_clean
:
lib
mdp_clean lib
bsmp_clean lib_pcie_driver_clean
deps_clean
:
libbsmp_clean lib_pcie_driver_clean
deps_mrproper
:
lib
mdp_mrproper lib
bsmp_mrproper lib_pcie_driver_mrproper
deps_mrproper
:
libbsmp_mrproper lib_pcie_driver_mrproper
core_install
:
$
(
foreach core_bin,
$(OUT)
,install
-m
755
$(core_bin)
$(
INSTALL_DIR
)
/bin
$(CMDSEP)
)
$
(
foreach core_script,
$(INIT_SCRIPTS)
,install
-m
755
$(core_script)
$(
INSTALL_DIR
)
/etc
$(CMDSEP)
)
$
(
foreach core_bin,
$(OUT)
,install
-m
755
$(core_bin)
$(
PREFIX
)
/bin
$(CMDSEP)
)
$
(
foreach core_script,
$(INIT_SCRIPTS)
,install
-m
755
$(core_script)
$(
PREFIX
)
/etc
$(CMDSEP)
)
core_uninstall
:
$
(
foreach core_bin,
$(ALL_OUT)
,rm
-f
$(
INSTALL_DIR
)
/bin/
$(core_bin)
$(CMDSEP)
)
$
(
foreach core_script,
$(INIT_SCRIPTS)
,rm
-f
$(
INSTALL_DIR
)
/etc/
$(core_script)
$(CMDSEP)
)
$
(
foreach core_bin,
$(ALL_OUT)
,rm
-f
$(
PREFIX
)
/bin/
$(core_bin)
$(CMDSEP)
)
$
(
foreach core_script,
$(INIT_SCRIPTS)
,rm
-f
$(
PREFIX
)
/etc/
$(core_script)
$(CMDSEP)
)
core_clean
:
rm
-f
$(OBJS_all)
$
(
OBJS_all:.o
=
.d
)
...
...
README.md
View file @
6e8049a4
...
...
@@ -6,22 +6,36 @@ Software for controlling the AFC BPM boards
## Prerequisites:
Make sure you have the following libraries installed:
Make sure you have the following libraries installed, either by download
the binaries or executing the instructions below:
*
zeromq-4.0.4 (http://zeromq.org/area:download)
*
czmq-2.2.0 (http://czmq.zeromq.org/page:get-the-software)
*
zeromq-4.2.0 (http://zeromq.org/area:download)
*
czmq-3.0.1 (http://czmq.zeromq.org/page:get-the-software)
*
mlm-0.1.0 (https://github.com/zeromq/malamute.git)
Cloning this repository
## Optional libraries:
git clone --recursive https://github.com/lerwys/bpm-sw.git
*
uuid (distribution available):
sudo apt-get install uuid
Install the Majordomo application from this repository (autotools-based)
### Prerequisites Installation Instructions
cd majordomo/libmdp
git clone git://github.com/zeromq/libzmq.git && \
git clone git://github.com/zeromq/czmq.git && \
git clone git://github.com/zeromq/malamute.git &&
for project in libsodium libzmq czmq malamute; do
cd $project
./autogen.sh
./configure && make check
sudo make install
sudo ldconfig
cd ..
done
Execute the traditional sequence of autotools commands:
## Cloning this repository
./autogen.sh && make && sudo make install
git clone --recursive https://github.com/lerwys/bpm-sw.git
## PCIe Installation Instructions
...
...
@@ -194,7 +208,7 @@ the PCIe kernel driver.
If the PCIe driver is already installed, you could
run it without superuser.
./compile.sh
./compile.sh
<board type = [ml605|afcv3]>
### Client
...
...
cfg/Makefile
View file @
6e8049a4
...
...
@@ -11,7 +11,9 @@ OBJCOPY = $(CROSS_COMPILE)objcopy
SIZE
=
$(CROSS_COMPILE)
size
MAKE
=
make
CFG_DIR
?=
/etc/bpm_sw
PREFIX
?=
/usr/local
CFG_DIR
?=
${
PREFIX
}
/etc/bpm_sw
# Get all .cfg files
CFG_FILES
?=
$
(
wildcard
*
.cfg
)
...
...
@@ -22,7 +24,7 @@ CFG_FILES ?= $(wildcard *.cfg)
all
:
install
:
@
mkdir
-p
$(CFG_DIR)
@
mkdir
-
m
755
-
p
$(CFG_DIR)
$
(
foreach cfg,
$(CFG_FILES)
,install
-m
755
$(cfg)
$(CFG_DIR)
/
$(CMDSEP)
)
uninstall
:
...
...
cfg/bpm_sw.cfg
View file @
6e8049a4
...
...
@@ -3,9 +3,9 @@
# Device manager configurations
dev_mngr
broker
bind = tcp://1
0.0.18.35:8888
bind = tcp://1
27.0.0.1:9999
log
dir = /
export
/remote_logs
dir = /
media
/remote_logs
filename = dev_mngr.log
verbose = 1 # Ask for a trace
daemonize = no # Ask for daemonize process (options are: yes or no)
...
...
@@ -16,7 +16,7 @@ dev_io
bpm0
dbe
afe
bind =
tcp://10.0.18.59:6791
bind =
bpm1
dbe
afe
...
...
compile.sh
View file @
6e8049a4
...
...
@@ -43,7 +43,8 @@ WITH_DEVIO_CFG=y
# Selects the install location of the config file
CFG_FILENAME
=
/etc/bpm_sw/bpm_sw.cfg
# Selects the install location of the config file
CFG_DIR
=
/etc/bpm_sw
PREFIX
=
/usr/local
CFG_DIR
=
${
PREFIX
}
/etc/bpm_sw
COMMAND_DEPS
=
"
\
make deps &&
\
...
...
examples/Makefile
View file @
6e8049a4
...
...
@@ -34,7 +34,7 @@ CFLAGS_PLATFORM = -Wall -Wextra -Werror
LDFLAGS_PLATFORM
=
# Libraries
LIBS
=
-lbpmclient
-lerrhand
-lm
dp
-lczmq
-lzmq
LIBS
=
-lbpmclient
-lerrhand
-lm
lm
-lczmq
-lzmq
# General library flags -L<libdir>
LFLAGS
=
...
...
examples/acq.c
View file @
6e8049a4
...
...
@@ -3,7 +3,6 @@
* * a client and the FPGA device
* */
#include <mdp.h>
#include <czmq.h>
#include <inttypes.h>
#include <stdio.h>
...
...
@@ -19,7 +18,6 @@
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
/* Arbitrary hard limits */
#define MAX_NUM_SAMPLES (1 << 28)
...
...
@@ -127,8 +125,6 @@ int main (int argc, char *argv [])
broker_endp
=
strdup
(
"ipc://"
DFLT_BIND_FOLDER
);
}
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
/* Set default number samples */
uint32_t
num_samples
;
if
(
num_samples_str
==
NULL
)
{
...
...
@@ -173,12 +169,6 @@ int main (int argc, char *argv [])
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
if
(
board_number
>
MAX_BOARD_NUMBER
)
{
fprintf
(
stderr
,
"[client:acq]: Board number too big! Defaulting to: %u
\n
"
,
MAX_BOARD_NUMBER
);
board_number
=
MAX_BOARD_NUMBER
;
}
}
/* Set default bpm number */
...
...
@@ -199,7 +189,13 @@ int main (int argc, char *argv [])
}
char
service
[
50
];
sprintf
(
service
,
"BPM%u:DEVIO:ACQ%u"
,
board_number
,
bpm_number
);
snprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:ACQ%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
uint32_t
data_size
=
num_samples
*
acq_chan
[
chan
].
sample_size
;
uint32_t
*
data
=
(
uint32_t
*
)
zmalloc
(
data_size
*
sizeof
(
uint8_t
));
...
...
@@ -224,6 +220,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"clear
\n
"
);
print_data
(
chan
,
data
,
acq_trans
.
block
.
bytes_read
);
err_bpm_client_new:
err_bpm_get_curve:
str_p
=
&
chan_str
;
free
(
*
str_p
);
...
...
@@ -231,6 +228,9 @@ err_bpm_get_curve:
str_p
=
&
board_number_str
;
free
(
*
str_p
);
board_number_str
=
NULL
;
str_p
=
&
bpm_number_str
;
free
(
*
str_p
);
bpm_number_str
=
NULL
;
str_p
=
&
num_samples_str
;
free
(
*
str_p
);
num_samples_str
=
NULL
;
...
...
examples/ad9510_ctl.c
View file @
6e8049a4
...
...
@@ -18,7 +18,6 @@
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
#define FUNC_AD9510_A_DIV_IDX 0
#define FUNC_AD9510_B_DIV_IDX 1
...
...
@@ -186,12 +185,6 @@ int main (int argc, char *argv [])
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
if
(
board_number
>
MAX_BOARD_NUMBER
)
{
fprintf
(
stderr
,
"[client:leds]: BOARD number too big! Defaulting to: %u
\n
"
,
MAX_BOARD_NUMBER
);
board_number
=
MAX_BOARD_NUMBER
;
}
}
/* Set default bpm number */
...
...
@@ -212,9 +205,13 @@ int main (int argc, char *argv [])
}
char
service
[
50
];
s
printf
(
service
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
s
nprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
for
(
i
=
0
;
i
<
MAX_NUM_FUNCS
;
++
i
)
{
if
(
func_call
[
i
].
call
==
1
)
{
...
...
@@ -230,6 +227,7 @@ int main (int argc, char *argv [])
}
}
err_bpm_client_new:
bpm_client_destroy
(
&
bpm_client
);
/* ugly... */
...
...
examples/adc_data.c
View file @
6e8049a4
...
...
@@ -11,18 +11,27 @@
#define DFLT_BIND_FOLDER "/tmp/bpm"
#define DFLT_BPM_NUMBER 0
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
void
print_help
(
char
*
program_name
)
{
printf
(
"Usage: %s [options]
\n
"
"
\t
-h This help message
\n
"
"
\t
-v Verbose output
\n
"
"
\t
-b <broker_endpoint> Broker endpoint
\n
"
,
program_name
);
"
\t
-b <broker_endpoint> Broker endpoint
\n
"
"
\t
-board <AMC board = [0|1|2|3|4|5]>
\n
"
"
\t
-bpm <BPM number = [0|1]>
\n
"
,
program_name
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
verbose
=
0
;
char
*
broker_endp
=
NULL
;
char
*
board_number_str
=
NULL
;
char
*
bpm_number_str
=
NULL
;
char
**
str_p
=
NULL
;
if
(
argc
<
2
)
{
...
...
@@ -58,11 +67,46 @@ int main (int argc, char *argv [])
broker_endp
=
strdup
(
"ipc://"
DFLT_BIND_FOLDER
);
}
/* Set default board number */
uint32_t
board_number
;
if
(
board_number_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: Setting default value to BOARD number: %u
\n
"
,
DFLT_BOARD_NUMBER
);
board_number
=
DFLT_BOARD_NUMBER
;
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
}
/* Set default bpm number */
uint32_t
bpm_number
;
if
(
bpm_number_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:leds]: Setting default value to BPM number: %u
\n
"
,
DFLT_BPM_NUMBER
);
bpm_number
=
DFLT_BPM_NUMBER
;
}
else
{
bpm_number
=
strtoul
(
bpm_number_str
,
NULL
,
10
);
if
(
bpm_number
>
MAX_BPM_NUMBER
)
{
fprintf
(
stderr
,
"[client:leds]: BPM number too big! Defaulting to: %u
\n
"
,
MAX_BPM_NUMBER
);
bpm_number
=
MAX_BPM_NUMBER
;
}
}
char
service
[
50
];
snprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
uint32_t
adc_data
;
bpm_client_err_e
err
=
bpm_get_adc_data0
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
&
adc_data
);
bpm_client_err_e
err
=
bpm_get_adc_data0
(
bpm_client
,
service
,
&
adc_data
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_adc_data0 failed
\n
"
);
goto
err_get_adc_data
;
...
...
@@ -70,8 +114,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:adc_data]: data0 = %d
\n
"
,
(
int16_t
)
adc_data
);
err
=
bpm_get_adc_data1
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
&
adc_data
);
err
=
bpm_get_adc_data1
(
bpm_client
,
service
,
&
adc_data
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_adc_data1 failed
\n
"
);
goto
err_get_adc_data
;
...
...
@@ -79,8 +122,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:adc_data]: data1 = %d
\n
"
,
(
int16_t
)
adc_data
);
err
=
bpm_get_adc_data2
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
&
adc_data
);
err
=
bpm_get_adc_data2
(
bpm_client
,
service
,
&
adc_data
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_adc_data2 failed
\n
"
);
goto
err_get_adc_data
;
...
...
@@ -88,8 +130,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:adc_data]: data2 = %d
\n
"
,
(
int16_t
)
adc_data
);
err
=
bpm_get_adc_data3
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
&
adc_data
);
err
=
bpm_get_adc_data3
(
bpm_client
,
service
,
&
adc_data
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_adc_data3 failed
\n
"
);
goto
err_get_adc_data
;
...
...
@@ -97,10 +138,17 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:adc_data]: data3 = %d
\n
"
,
(
int16_t
)
adc_data
);
err_bpm_client_new:
err_get_adc_data:
bpm_client_destroy
(
&
bpm_client
);
str_p
=
&
broker_endp
;
free
(
*
str_p
);
broker_endp
=
NULL
;
str_p
=
&
board_number_str
;
free
(
*
str_p
);
board_number_str
=
NULL
;
str_p
=
&
bpm_number_str
;
free
(
*
str_p
);
bpm_number_str
=
NULL
;
return
0
;
}
examples/adc_dly.c
View file @
6e8049a4
...
...
@@ -18,7 +18,6 @@
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
#define DFLT_ADC_DLY_VALUE 10
#define MAX_ADC_DLY_VALUE 31
...
...
@@ -113,12 +112,6 @@ int main (int argc, char *argv [])
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
if
(
board_number
>
MAX_BOARD_NUMBER
)
{
fprintf
(
stderr
,
"[client:leds]: BOARD number too big! Defaulting to: %u
\n
"
,
MAX_BOARD_NUMBER
);
board_number
=
MAX_BOARD_NUMBER
;
}
}
/* Set default bpm number */
...
...
@@ -193,9 +186,13 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:adc_dly]: ADC delay value = %u
\n
"
,
dly_val
);
char
service
[
50
];
s
printf
(
service
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
s
nprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
/* Call the appropriate delay function. FIXME: the case construct is
* not generic nor expansible */
...
...
@@ -217,6 +214,7 @@ int main (int argc, char *argv [])
break
;
}
err_bpm_client_new:
bpm_client_destroy
(
&
bpm_client
);
str_p
=
&
board_number_str
;
...
...
examples/dsp_swap.c
View file @
6e8049a4
...
...
@@ -16,7 +16,6 @@
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
void
print_help
(
char
*
program_name
)
{
...
...
@@ -107,12 +106,6 @@ int main (int argc, char *argv [])
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
if
(
board_number
>
MAX_BOARD_NUMBER
)
{
fprintf
(
stderr
,
"[client:dsp]: BOARD number too big! Defaulting to: %u
\n
"
,
MAX_BOARD_NUMBER
);
board_number
=
MAX_BOARD_NUMBER
;
}
}
/* Set default bpm number */
...
...
@@ -134,11 +127,15 @@ int main (int argc, char *argv [])
/* Generate the service names for each SMIO */
char
service_dsp
[
50
];
s
printf
(
service_dsp
,
"BPM%u:DEVIO:DSP%u"
,
board_number
,
bpm_number
);
s
nprintf
(
service_dsp
,
strlen
(
service_dsp
)
+
1
,
"BPM%u:DEVIO:DSP%u"
,
board_number
,
bpm_number
);
char
service_swap
[
50
];
s
printf
(
service_swap
,
"BPM%u:DEVIO:SWAP%u"
,
board_number
,
bpm_number
);
s
nprintf
(
service_swap
,
strlen
(
service_swap
)
+
1
,
"BPM%u:DEVIO:SWAP%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
uint32_t
kx_set
=
10000000
;
fprintf
(
stdout
,
"[client:dsp]: kx = %u
\n
"
,
kx_set
);
...
...
@@ -289,6 +286,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:swap]: bpm_set_gain_d = direct %u, inverted %u was successfully executed
\n
"
,
gain_aa
,
gain_ac
);
err_bpm_client_new:
err_bpm_exit:
err_bpm_get:
err_bpm_set:
...
...
examples/fmc130m_4ch_ctl.c
View file @
6e8049a4
...
...
@@ -16,7 +16,6 @@
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
void
print_help
(
char
*
program_name
)
{
...
...
@@ -123,12 +122,6 @@ int main (int argc, char *argv [])
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
if
(
board_number
>
MAX_BOARD_NUMBER
)
{
fprintf
(
stderr
,
"[client:fmc130m_4ch]: BOARD number too big! Defaulting to: %u
\n
"
,
MAX_BOARD_NUMBER
);
board_number
=
MAX_BOARD_NUMBER
;
}
}
/* Set default bpm number */
...
...
@@ -150,7 +143,7 @@ int main (int argc, char *argv [])
/* Generate the service names for each SMIO */
char
service
[
50
];
s
printf
(
service
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
s
nprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
...
...
examples/leds.c
View file @
6e8049a4
...
...
@@ -15,7 +15,6 @@
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
void
print_help
(
char
*
program_name
)
{
...
...
@@ -85,12 +84,6 @@ int main (int argc, char *argv [])
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
if
(
board_number
>
MAX_BOARD_NUMBER
)
{
fprintf
(
stderr
,
"[client:leds]: BOARD number too big! Defaulting to: %u
\n
"
,
MAX_BOARD_NUMBER
);
board_number
=
MAX_BOARD_NUMBER
;
}
}
/* Set default bpm number */
...
...
@@ -111,9 +104,13 @@ int main (int argc, char *argv [])
}
char
service
[
50
];
s
printf
(
service
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
s
nprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
for
(
i
=
0
;
i
<
32768
;
++
i
)
{
uint32_t
leds
=
(
1
<<
1
);
...
...
@@ -129,6 +126,7 @@ int main (int argc, char *argv [])
}
}
err_bpm_client_new:
bpm_client_destroy
(
&
bpm_client
);
str_p
=
&
broker_endp
;
...
...
examples/monit_amp.c
View file @
6e8049a4
...
...
@@ -11,18 +11,28 @@
#define DFLT_BIND_FOLDER "/tmp/bpm"
#define DFLT_BPM_NUMBER 0
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
void
print_help
(
char
*
program_name
)
{
printf
(
"Usage: %s [options]
\n
"
"
\t
-h This help message
\n
"
"
\t
-v Verbose output
\n
"
"
\t
-b <broker_endpoint> Broker endpoint
\n
"
,
program_name
);
"
\t
-b <broker_endpoint> Broker endpoint
\n
"
"
\t
-board <AMC board = [0|1|2|3|4|5]>
\n
"
"
\t
-bpm <BPM number = [0|1]>
\n
"
,
program_name
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
verbose
=
0
;
char
*
broker_endp
=
NULL
;
char
*
board_number_str
=
NULL
;
char
*
bpm_number_str
=
NULL
;
char
**
str_p
=
NULL
;
if
(
argc
<
2
)
{
...
...
@@ -47,6 +57,13 @@ int main (int argc, char *argv [])
else
if
(
streq
(
argv
[
i
],
"-b"
))
{
str_p
=
&
broker_endp
;
}
else
if
(
streq
(
argv
[
i
],
"-board"
))
{
/* board_number: board number */
str_p
=
&
board_number_str
;
}
else
if
(
streq
(
argv
[
i
],
"-bpm"
))
{
str_p
=
&
bpm_number_str
;
}
/* Fallout for options with parameters */
else
{
*
str_p
=
strdup
(
argv
[
i
]);
...
...
@@ -58,10 +75,45 @@ int main (int argc, char *argv [])
broker_endp
=
strdup
(
"ipc://"
DFLT_BIND_FOLDER
);
}
/* Set default board number */
uint32_t
board_number
;
if
(
board_number_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: Setting default value to BOARD number: %u
\n
"
,
DFLT_BOARD_NUMBER
);
board_number
=
DFLT_BOARD_NUMBER
;
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
}
/* Set default bpm number */
uint32_t
bpm_number
;
if
(
bpm_number_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:leds]: Setting default value to BPM number: %u
\n
"
,
DFLT_BPM_NUMBER
);
bpm_number
=
DFLT_BPM_NUMBER
;
}
else
{
bpm_number
=
strtoul
(
bpm_number_str
,
NULL
,
10
);
if
(
bpm_number
>
MAX_BPM_NUMBER
)
{
fprintf
(
stderr
,
"[client:leds]: BPM number too big! Defaulting to: %u
\n
"
,
MAX_BPM_NUMBER
);
bpm_number
=
MAX_BPM_NUMBER
;
}
}
char
service
[
50
];
snprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:DSP%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
uint32_t
monit_amp
;
bpm_client_err_e
err
=
bpm_get_monit_amp_ch0
(
bpm_client
,
"BPM0:DEVIO:DSP0"
,
bpm_client_err_e
err
=
bpm_get_monit_amp_ch0
(
bpm_client
,
service
,
&
monit_amp
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_monit_amp_ch0 failed
\n
"
);
...
...
@@ -70,8 +122,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:monit_amp]: monitoring amplitude ch0 = %u
\n
"
,
monit_amp
);
err
=
bpm_get_monit_amp_ch1
(
bpm_client
,
"BPM0:DEVIO:DSP0"
,
&
monit_amp
);
err
=
bpm_get_monit_amp_ch1
(
bpm_client
,
service
,
&
monit_amp
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_monit_amp_ch1 failed
\n
"
);
goto
err_get_monit_amp
;
...
...
@@ -79,8 +130,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:monit_amp]: monitoring amplitude ch1 = %u
\n
"
,
monit_amp
);
err
=
bpm_get_monit_amp_ch2
(
bpm_client
,
"BPM0:DEVIO:DSP0"
,
&
monit_amp
);
err
=
bpm_get_monit_amp_ch2
(
bpm_client
,
service
,
&
monit_amp
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_monit_amp_ch2 failed
\n
"
);
goto
err_get_monit_amp
;
...
...
@@ -88,8 +138,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:monit_amp]: monitoring amplitude ch2 = %u
\n
"
,
monit_amp
);
err
=
bpm_get_monit_amp_ch3
(
bpm_client
,
"BPM0:DEVIO:DSP0"
,
&
monit_amp
);
err
=
bpm_get_monit_amp_ch3
(
bpm_client
,
service
,
&
monit_amp
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_monit_amp_ch3 failed
\n
"
);
goto
err_get_monit_amp
;
...
...
@@ -97,8 +146,15 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:monit_amp]: monitoring amplitude ch3 = %u
\n
"
,
monit_amp
);
err_bpm_client_new:
err_get_monit_amp:
bpm_client_destroy
(
&
bpm_client
);
str_p
=
&
board_number_str
;
free
(
*
str_p
);
board_number_str
=
NULL
;
str_p
=
&
bpm_number_str
;
free
(
*
str_p
);
bpm_number_str
=
NULL
;
str_p
=
&
broker_endp
;
free
(
*
str_p
);
broker_endp
=
NULL
;
...
...
examples/monit_pos.c
View file @
6e8049a4
...
...
@@ -11,18 +11,28 @@
#define DFLT_BIND_FOLDER "/tmp/bpm"
#define DFLT_BPM_NUMBER 0
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
void
print_help
(
char
*
program_name
)
{
printf
(
"Usage: %s [options]
\n
"
"
\t
-h This help message
\n
"
"
\t
-v Verbose output
\n
"
"
\t
-b <broker_endpoint> Broker endpoint
\n
"
,
program_name
);
"
\t
-b <broker_endpoint> Broker endpoint
\n
"
"
\t
-board <AMC board = [0|1|2|3|4|5]>
\n
"
"
\t
-bpm <BPM number = [0|1]>
\n
"
,
program_name
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
verbose
=
0
;
char
*
broker_endp
=
NULL
;
char
*
board_number_str
=
NULL
;
char
*
bpm_number_str
=
NULL
;
char
**
str_p
=
NULL
;
if
(
argc
<
2
)
{
...
...
@@ -47,6 +57,13 @@ int main (int argc, char *argv [])
else
if
(
streq
(
argv
[
i
],
"-b"
))
{
str_p
=
&
broker_endp
;
}
else
if
(
streq
(
argv
[
i
],
"-board"
))
{
/* board_number: board number */
str_p
=
&
board_number_str
;
}
else
if
(
streq
(
argv
[
i
],
"-bpm"
))
{
str_p
=
&
bpm_number_str
;
}
/* Fallout for options with parameters */
else
{
*
str_p
=
strdup
(
argv
[
i
]);
...
...
@@ -58,10 +75,45 @@ int main (int argc, char *argv [])
broker_endp
=
strdup
(
"ipc://"
DFLT_BIND_FOLDER
);
}
/* Set default board number */
uint32_t
board_number
;
if
(
board_number_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: Setting default value to BOARD number: %u
\n
"
,
DFLT_BOARD_NUMBER
);
board_number
=
DFLT_BOARD_NUMBER
;
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
}
/* Set default bpm number */
uint32_t
bpm_number
;
if
(
bpm_number_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:leds]: Setting default value to BPM number: %u
\n
"
,
DFLT_BPM_NUMBER
);
bpm_number
=
DFLT_BPM_NUMBER
;
}
else
{
bpm_number
=
strtoul
(
bpm_number_str
,
NULL
,
10
);
if
(
bpm_number
>
MAX_BPM_NUMBER
)
{
fprintf
(
stderr
,
"[client:leds]: BPM number too big! Defaulting to: %u
\n
"
,
MAX_BPM_NUMBER
);
bpm_number
=
MAX_BPM_NUMBER
;
}
}
char
service
[
50
];
snprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:DSP%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
uint32_t
monit_pos
;
bpm_client_err_e
err
=
bpm_get_monit_pos_x
(
bpm_client
,
"BPM0:DEVIO:DSP0"
,
bpm_client_err_e
err
=
bpm_get_monit_pos_x
(
bpm_client
,
service
,
&
monit_pos
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_monit_pos_x failed
\n
"
);
...
...
@@ -70,8 +122,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:monit_pos]: monitoring pos x = %d
\n
"
,
(
int32_t
)
monit_pos
);
err
=
bpm_get_monit_pos_y
(
bpm_client
,
"BPM0:DEVIO:DSP0"
,
&
monit_pos
);
err
=
bpm_get_monit_pos_y
(
bpm_client
,
service
,
&
monit_pos
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_monit_pos_y failed
\n
"
);
goto
err_get_monit_pos
;
...
...
@@ -79,8 +130,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:monit_pos]: monitoring pos y = %d
\n
"
,
(
int32_t
)
monit_pos
);
err
=
bpm_get_monit_pos_q
(
bpm_client
,
"BPM0:DEVIO:DSP0"
,
&
monit_pos
);
err
=
bpm_get_monit_pos_q
(
bpm_client
,
service
,
&
monit_pos
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_monit_pos_q failed
\n
"
);
goto
err_get_monit_pos
;
...
...
@@ -88,8 +138,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:monit_pos]: monitoring pos q = %d
\n
"
,
(
int32_t
)
monit_pos
);
err
=
bpm_get_monit_pos_sum
(
bpm_client
,
"BPM0:DEVIO:DSP0"
,
&
monit_pos
);
err
=
bpm_get_monit_pos_sum
(
bpm_client
,
service
,
&
monit_pos
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_monit_pos_sum failed
\n
"
);
goto
err_get_monit_pos
;
...
...
@@ -97,8 +146,15 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:monit_pos]: monitoring pos sum = %d
\n
"
,
(
int32_t
)
monit_pos
);
err_bpm_client_new:
err_get_monit_pos:
bpm_client_destroy
(
&
bpm_client
);
str_p
=
&
board_number_str
;
free
(
*
str_p
);
board_number_str
=
NULL
;
str_p
=
&
bpm_number_str
;
free
(
*
str_p
);
bpm_number_str
=
NULL
;
str_p
=
&
broker_endp
;
free
(
*
str_p
);
broker_endp
=
NULL
;
...
...
examples/rffe_ctl.c
View file @
6e8049a4
...
...
@@ -18,7 +18,6 @@
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
#define FUNC_RFFE_SW_IDX 0
#define FUNC_RFFE_ATT1_IDX 1
...
...
@@ -198,12 +197,6 @@ int main (int argc, char *argv [])
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
if
(
board_number
>
MAX_BOARD_NUMBER
)
{
fprintf
(
stderr
,
"[client:rffe]: BOARD number too big! Defaulting to: %u
\n
"
,
MAX_BOARD_NUMBER
);
board_number
=
MAX_BOARD_NUMBER
;
}
}
/* Set default bpm number */
...
...
@@ -224,9 +217,13 @@ int main (int argc, char *argv [])
}
char
service
[
50
];
s
printf
(
service
,
"BPM%u:DEVIO:RFFE%u"
,
board_number
,
bpm_number
);
s
nprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:RFFE%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
for
(
i
=
0
;
i
<
MAX_NUM_FUNCS
;
++
i
)
{
if
(
func_call
[
i
].
call
==
1
)
{
...
...
@@ -242,6 +239,7 @@ int main (int argc, char *argv [])
}
}
err_bpm_client_new:
bpm_client_destroy
(
&
bpm_client
);
/* ugly... */
...
...
examples/si571_ctl.c
View file @
6e8049a4
...
...
@@ -138,9 +138,13 @@ int main (int argc, char *argv [])
}
char
service
[
50
];
s
printf
(
service
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
s
nprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
bpm_client_err_e
err
=
bpm_set_si571_set_freq
(
bpm_client
,
service
,
si571_freq
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
...
...
@@ -148,6 +152,7 @@ int main (int argc, char *argv [])
goto
err_bpm_set_freq
;
}
err_bpm_client_new:
err_bpm_set_freq:
bpm_client_destroy
(
&
bpm_client
);
...
...
examples/test_data_en.c
View file @
6e8049a4
...
...
@@ -18,7 +18,6 @@
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
void
print_help
(
char
*
program_name
)
{
...
...
@@ -93,12 +92,6 @@ int main (int argc, char *argv [])
}
else
{
board_number
=
strtoul
(
board_number_str
,
NULL
,
10
);
if
(
board_number
>
MAX_BOARD_NUMBER
)
{
fprintf
(
stderr
,
"[client:leds]: BOARD number too big! Defaulting to: %u
\n
"
,
MAX_BOARD_NUMBER
);
board_number
=
MAX_BOARD_NUMBER
;
}
}
/* Set default bpm number */
...
...
@@ -136,14 +129,19 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:test_data_en]: test_data_en = %u
\n
"
,
test_data_en
);
char
service
[
50
];
s
printf
(
service
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
s
nprintf
(
service
,
strlen
(
service
)
+
1
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
if
(
bpm_client
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: bpm_client could be created
\n
"
);
goto
err_bpm_client_new
;
}
/* Test data enable */
bpm_set_adc_test_data_en
(
bpm_client
,
service
,
test_data_en
);
/* Cleanup */
err_bpm_client_new:
bpm_client_destroy
(
&
bpm_client
);
str_p
=
&
board_number_str
;
...
...
libmdp
@
5008743e
Subproject commit 5008743e14bf166304fa776e8b0601ca81b890fb
src/dev_io/dev_io.c
View file @
6e8049a4
...
...
@@ -233,10 +233,14 @@ int main (int argc, char *argv[])
DBE_DEBUG
(
DBG_DEV_IO
|
DBG_LVL_INFO
,
"[dev_io] Slot number: 0x%08X
\n
"
,
dev_id
);
/* FIXME: give some time for the process to terminate gracefully */
sleep
(
4
);
/* Kill DEVIO cfg as we've already got our slot number */
kill
(
child_devio_cfg_pid
,
DEVIO_KILL_CFG_SIGNAL
);
/* Wait child */
hutils_wait_chld
();
/* Destroy libclient */
bpm_client_destroy
(
&
client_cfg
);
#endif
/* We don't need it anymore */
...
...
@@ -280,33 +284,23 @@ int main (int argc, char *argv[])
goto
err_devio
;
}
/* err = devio_init_poller_sm (devio); */
err
=
devio_init_poller_sm
(
devio
);
/* Step 1: Loop though all the SDB records and intialize (boot) the
* smio modules*/
/* Step 2: Optionally, register the necessary smio modules specifying
* its ID and calling devio_register_sm */
/* Step 3: Poll all PIPE's sockets to determine if we have something to
* handle, like messages from smios */
/* Step 3.5: If we do, call devio_handle_smio () and treat its
* request as appropriate */
err
=
devio_loop
(
devio
);
if
(
err
!=
DEVIO_SUCCESS
)
{
DBE_DEBUG
(
DBG_DEV_IO
|
DBG_LVL_FATAL
,
"[dev_io] devio_init_poller_sm error!
\n
"
);
DBE_DEBUG
(
DBG_DEV_IO
|
DBG_LVL_FATAL
,
"[dev_io] devio_loop error: %s
\n
"
,
devio_err_str
(
err
));
goto
err_devio
;
}
while
(
!
zctx_interrupted
)
{
/* Step 1: Loop though all the SDB records and intialize (boot) the
* smio modules*/
/* Step 2: Optionally, register the necessary smio modules specifying
* its ID and calling devio_register_sm */
/* Step 3: Poll all PIPE's sockets to determine if we have something to
* handle, like messages from smios */
/* Step 3.5: If we do, call devio_handle_smio () and treat its
* request as appropriate */
/* devio_poll_all_sm (devio); */
err
=
devio_poll_all_sm
(
devio
);
if
(
err
!=
DEVIO_SUCCESS
)
{
DBE_DEBUG
(
DBG_DEV_IO
|
DBG_LVL_FATAL
,
"[dev_io] devio_poll_all_sm error. Exiting ...
\n
"
);
goto
err_devio
;
}
/* wait child */
hutils_wait_chld
();
}
/* wait child */
hutils_wait_chld
();
err_devio:
devio_destroy
(
&
devio
);
...
...
src/dev_io/dev_io_cfg.c
View file @
6e8049a4
...
...
@@ -196,29 +196,21 @@ int main (int argc, char *argv[])
goto
err_devio
;
}
err
=
devio_init_poller_sm
(
devio
);
/* Step 1: Loop though all the SDB records and intialize (boot) the
* smio modules*/
/* Step 2: Optionally, register the necessary smio modules specifying
* its ID and calling devio_register_sm */
/* Step 3: Poll all PIPE's sockets to determine if we have something to
* handle, like messages from smios */
/* Step 3.5: If we do, call devio_handle_smio () and treat its
* request as appropriate */
err
=
devio_loop
(
devio
);
if
(
err
!=
DEVIO_SUCCESS
)
{
DBE_DEBUG
(
DBG_DEV_IO
|
DBG_LVL_FATAL
,
"[dev_io] devio_init_poller_sm error!
\n
"
);
DBE_DEBUG
(
DBG_DEV_IO
|
DBG_LVL_FATAL
,
"[dev_io] devio_loop error: %s
\n
"
,
devio_err_str
(
err
));
goto
err_devio
;
}
while
(
!
zctx_interrupted
)
{
/* Step 1: Loop though all the SDB records and intialize (boot) the
* smio modules*/
/* Step 2: Optionally, register the necessary smio modules specifying
* its ID and calling devio_register_sm */
/* Step 3: Poll all PIPE's sockets to determine if we have something to
* handle, like messages from smios */
/* Step 3.5: If we do, call devio_handle_smio () and treat its
* request as appropriate */
err
=
devio_poll_all_sm
(
devio
);
if
(
err
!=
DEVIO_SUCCESS
)
{
DBE_DEBUG
(
DBG_DEV_IO
|
DBG_LVL_FATAL
,
"[dev_io] devio_poll2_all_sm error. Exiting ...
\n
"
);
goto
err_devio
;
}
}
err_devio:
devio_destroy
(
&
devio
);
err_exit:
...
...
src/dev_io/dev_io_core.c
View file @
6e8049a4
This diff is collapsed.
Click to expand it.
src/dev_io/dev_io_core.h
View file @
6e8049a4
...
...
@@ -9,7 +9,7 @@
#define _DEV_IO_CORE_H_
#include "czmq.h"
#include
"mdp.h"
#include
<malamute.h>
#include "hutils.h"
#include "disp_table.h"
...
...
@@ -22,9 +22,11 @@
struct
_devio_t
{
/* General information */
zctx_t
*
ctx
;
/* zeroMQ Context */
void
**
pipes
;
/* Address nodes using this array of pipes */
zmq_pollitem_t
*
poller
;
/* Poller structure to multiplex threads messages. New version */
zactor_t
**
pipes_mgmt
;
/* Address nodes using this array of actors (Management PIPES) */
zsock_t
**
pipes_msg
;
/* Address nodes using this array of actors (Message PIPES) */
zactor_t
**
pipes_config
;
/* Address config actors using this array of actors (Config PIPES) */
zpoller_t
*
poller
;
/* Poller structure to multiplex threads messages */
zpoller_t
*
poller_config
;
/* Poller structure to multiplex config threads messages*/
unsigned
int
nnodes
;
/* Number of actual nodes */
char
*
name
;
/* Identification of this worker instance */
char
*
log_file
;
/* Log filename for tracing and debugging */
...
...
@@ -41,6 +43,10 @@ struct _devio_t {
* this dev_io can handle. It is composed
* of key (10-char ID) / value (sm_io instance) */
zhash_t
*
sm_io_h
;
/* Hash containing all the Config sm_io objects that
* this dev_io can handle. It is composed
* of key (10-char ID) / value (sm_io instance) */
zhash_t
*
sm_io_cfg_h
;
/* Dispatch table containing all the sm_io thsafe operations
* that we need to handle. It is composed
* of key (4-char ID) / value (pointer to function) */
...
...
@@ -93,10 +99,8 @@ devio_err_e devio_register_sm (devio_t *self, uint32_t smio_id,
devio_err_e
devio_register_all_sm
(
devio_t
*
self
);
devio_err_e
devio_unregister_sm
(
devio_t
*
self
,
const
char
*
smio_key
);
devio_err_e
devio_unregister_all_sm
(
devio_t
*
self
);
/* Initilize poller with all of the initialized PIPE sockets */
devio_err_e
devio_init_poller_sm
(
devio_t
*
self
);
/* Poll all PIPE sockets */
devio_err_e
devio_
poll_all_sm
(
devio_t
*
self
);
devio_err_e
devio_
loop
(
devio_t
*
self
);
/* Router for all the opcodes registered for this dev_io */
/* devio_err_e devio_do_op (devio_t *self, uint32_t opcode, int nargs, ...); */
/* Router for all of the low-level operations for this dev_io */
...
...
src/dev_io/dev_io_err.c
View file @
6e8049a4
...
...
@@ -15,15 +15,17 @@ static const char *devio_err [DEVIO_ERR_END] =
[
DEVIO_SUCCESS
]
=
"Success"
,
[
DEVIO_ERR_ALLOC
]
=
"Could not allocate memory"
,
[
DEVIO_ERR_FUNC_NOT_IMPL
]
=
"Function not implemented"
,
[
DEVIO_ERR_SMIO_DO_OP
]
=
"Error calling specific sm_io function"
,
[
DEVIO_ERR_NO_SMIO_OP
]
=
"No sm_io registered for this opcode"
,
[
DEVIO_ERR_NO_SMIO_ID
]
=
"No sm_io registered with this ID"
,
[
DEVIO_ERR_
SMIO_DO_OP
]
=
"Error calling specific sm_io function
"
,
[
DEVIO_ERR_
MAX_SMIOS
]
=
"Maximum number os SMIOs reached
"
,
[
DEVIO_ERR_NO_NODES
]
=
"No thread nodes available"
,
[
DEVIO_ERR_UNINIT_POLLER
]
=
"Poller uninitilized"
,
[
DEVIO_ERR_INTERRUPTED_POLLER
]
=
"Poller interrupted. zeroMQ context was terminated or received interrupt signal"
,
[
DEVIO_ERR_BAD_MSG
]
=
"Malformed message received"
,
[
DEVIO_ERR_TERMINATED
]
=
"Terminated devio instance"
,
[
DEVIO_ERR_SMIO_DESTROY
]
=
"Could not destroy sm_io instance"
[
DEVIO_ERR_SMIO_DESTROY
]
=
"Could not destroy sm_io instance"
,
[
DEVIO_ERR_INV_SOCKET
]
=
"Invalid socket reference"
};
/* Convert enumeration type to string */
...
...
src/dev_io/dev_io_err.h
View file @
6e8049a4
...
...
@@ -19,12 +19,14 @@ enum _devio_err_e
DEVIO_ERR_SMIO_DO_OP
,
/* Error calling sm_io specific function */
DEVIO_ERR_NO_SMIO_OP
,
/* No sm_io registered for the opcode argument */
DEVIO_ERR_NO_SMIO_ID
,
/* No sm_io registered with the id argument */
DEVIO_ERR_MAX_SMIOS
,
/* Maximum number os SMIOs reached */
DEVIO_ERR_NO_NODES
,
/* No thread nodes available */
DEVIO_ERR_UNINIT_POLLER
,
/* Uninitliazed poller */
DEVIO_ERR_INTERRUPTED_POLLER
,
/* Poller interrupted. zeroMQ context was terminated or received interrupt signal */
DEVIO_ERR_BAD_MSG
,
/* Malformed message received */
DEVIO_ERR_TERMINATED
,
/* Terminated devio instance */
DEVIO_ERR_SMIO_DESTROY
,
/* Could not destroy sm_io instance */
DEVIO_ERR_INV_SOCKET
,
/* Invalid socket reference */
DEVIO_ERR_END
/* End of enum marker */
};
...
...
src/dev_mngr/dev_mngr.c
View file @
6e8049a4
...
...
@@ -255,7 +255,7 @@ int main (int argc, char *argv[])
DBE_DEBUG
(
DBG_DEV_MNGR
|
DBG_LVL_TRACE
,
"[dev_mngr] Monitoring devices ...
\n
"
);
/* Do until a C^c is pressed (daemon mode unset) or SIGTERM signal arrives */
while
(
!
z
ctx
_interrupted
)
{
while
(
!
z
sys
_interrupted
)
{
/* DBE_DEBUG (DBG_DEV_MNGR | DBG_LVL_TRACE, "[dev_mngr] ., PID: %d\n", getpid()); */
...
...
src/dev_mngr/dev_mngr_core.c
View file @
6e8049a4
...
...
@@ -97,6 +97,10 @@
DEVIO_LOG_INST_TYPE "." \
DEVIO_LOG_SUFFIX
#define DEVIO_MLM_PREFIX_CFG_DIR "/usr/local"
#define DEVIO_MLM_CFG_DIR "/etc/malamute"
#define DEVIO_MLM_CFG_FILENAME "malamute.cfg"
/* Configuration variables. To be filled by dev_mngr */
const
char
*
dmngr_log_filename
=
NULL
;
char
*
dmngr_log_dir
=
NULL
;
...
...
@@ -139,15 +143,6 @@ dmngr_t * dmngr_new (char *name, char *endpoint, int verbose,
dmngr_t
*
self
=
(
dmngr_t
*
)
zmalloc
(
sizeof
*
self
);
ASSERT_ALLOC
(
self
,
err_self_alloc
);
/* Initialize the Device Manager */
self
->
ctx
=
zctx_new
();
ASSERT_ALLOC
(
self
->
ctx
,
err_ctx_alloc
);
/* Create Dealer for use with zbeacon */
self
->
dealer
=
zsocket_new
(
self
->
ctx
,
ZMQ_DEALER
);
ASSERT_ALLOC
(
self
->
dealer
,
err_dealer_alloc
);
zsocket_bind
(
self
->
dealer
,
"%s"
,
endpoint
);
self
->
name
=
strdup
(
name
);
ASSERT_ALLOC
(
self
->
name
,
err_name_alloc
);
self
->
endpoint
=
strdup
(
endpoint
);
...
...
@@ -168,6 +163,13 @@ dmngr_t * dmngr_new (char *name, char *endpoint, int verbose,
self
->
broker_running
=
false
;
/* Create Dealer for use with zbeacon and bind it to the endpoint */
self
->
dealer
=
zsock_new_dealer
(
NULL
);
ASSERT_ALLOC
(
self
->
dealer
,
err_dealer_alloc
);
int
rc
=
zsock_bind
(
self
->
dealer
,
"%s"
,
self
->
endpoint
);
ASSERT_TEST
(
rc
>
-
1
,
"Dealer socket could not bind to specified endpoint"
,
err_dealer_bind
);
/* Scan devios for the first time */
uint32_t
num_devs_found
=
0
;
dmngr_err_e
err
=
_dmngr_scan_devs
(
self
,
&
num_devs_found
);
...
...
@@ -181,8 +183,12 @@ dmngr_t * dmngr_new (char *name, char *endpoint, int verbose,
return
self
;
err_scan_devs:
zsock_unbind
(
self
->
dealer
,
"%s"
,
endpoint
);
err_dealer_bind:
zsock_destroy
(
&
self
->
dealer
);
err_dealer_alloc:
err_hints_h_alloc:
zhash_destroy
(
&
self
->
devio_info_h
);
zhash_destroy
(
&
self
->
devio_info_h
);
err_devio_info_h_alloc:
zlist_destroy
(
&
self
->
ops
->
sig_ops
);
err_list_alloc:
...
...
@@ -192,10 +198,6 @@ err_ops_alloc:
err_endpoint_alloc:
free
(
self
->
name
);
err_name_alloc:
zsocket_destroy
(
self
->
ctx
,
self
->
dealer
);
err_dealer_alloc:
zctx_destroy
(
&
self
->
ctx
);
err_ctx_alloc:
free
(
self
);
err_self_alloc:
return
NULL
;
...
...
@@ -210,14 +212,14 @@ dmngr_err_e dmngr_destroy (dmngr_t **self_p)
dmngr_t
*
self
=
*
self_p
;
/* Starting destructing by the last resource */
zsock_unbind
(
self
->
dealer
,
"%s"
,
self
->
endpoint
);
zsock_destroy
(
&
self
->
dealer
);
zhash_destroy
(
&
self
->
hints_h
);
zhash_destroy
(
&
self
->
devio_info_h
);
zlist_destroy
(
&
self
->
ops
->
sig_ops
);
free
(
self
->
ops
);
free
(
self
->
endpoint
);
free
(
self
->
name
);
zsocket_destroy
(
self
->
ctx
,
self
->
dealer
);
zctx_destroy
(
&
self
->
ctx
);
free
(
self
);
*
self_p
=
NULL
;
...
...
@@ -329,6 +331,8 @@ bool dmngr_is_broker_running (dmngr_t *self)
dmngr_err_e
dmngr_spawn_broker
(
dmngr_t
*
self
,
char
*
broker_endp
)
{
(
void
)
broker_endp
;
assert
(
self
);
assert
(
broker_endp
);
...
...
@@ -345,9 +349,10 @@ dmngr_err_e dmngr_spawn_broker (dmngr_t *self, char *broker_endp)
DBE_DEBUG
(
DBG_DEV_MNGR
|
DBG_LVL_TRACE
,
"[dev_mngr_core] Spawning Broker ...
\n
"
);
/* Specify if broker is to be run in verbose mode or not */
char
*
argv_exec
[]
=
{
"mdp_broker"
,
broker_endp
,
NULL
};
/* char *argv_exec[] = {"mdp_broker", "-v", NULL}; */
int
spawn_err
=
_dmngr_spawn_chld
(
self
,
"mdp_broker"
,
argv_exec
);
char
*
argv_exec
[]
=
{
"malamute"
,
"-f"
,
DEVIO_MLM_PREFIX_CFG_DIR
"/"
DEVIO_MLM_CFG_DIR
"/"
DEVIO_MLM_CFG_FILENAME
,
NULL
};
int
spawn_err
=
_dmngr_spawn_chld
(
self
,
"malamute"
,
argv_exec
);
/* Just fail miserably, for now */
ASSERT_TEST
(
spawn_err
>=
0
,
"Could not spawn broker"
,
...
...
src/dev_mngr/dev_mngr_core.h
View file @
6e8049a4
...
...
@@ -47,8 +47,7 @@ struct _dmngr_ops_t {
struct
_dmngr_t
{
/* General information */
zctx_t
*
ctx
;
/* zeroMQ context */
void
*
dealer
;
/* zeroMQ Dealer socket */
zsock_t
*
dealer
;
/* zeroMQ Dealer socket */
char
*
name
;
/* Identification of this dmngr instance */
char
*
endpoint
;
/* Endpoint to connect to */
int
verbose
;
/* Print activity to stdout */
...
...
src/libs/libbpmclient/Makefile
View file @
6e8049a4
...
...
@@ -16,8 +16,8 @@ PWD = $(shell pwd)
# Select board in which we will work. Options are: ml605 or afcv3
BOARD
?=
ml605
INSTALL_DIR
?=
/usr/local
export
INSTALL_DIR
PREFIX
?=
/usr/local
export
PREFIX
LIBBPMCLIENT
=
libbpmclient
...
...
@@ -67,7 +67,7 @@ CFLAGS_PLATFORM = -Wall -Wextra -Werror
LDFLAGS_PLATFORM
=
# Libraries
LIBS
=
-lzmq
-lczmq
-lm
dp
LIBS
=
-lzmq
-lczmq
-lm
lm
-luuid
# General library flags -L<libdir>
LFLAGS
=
...
...
@@ -188,7 +188,7 @@ all: $(TARGET_STATIC) $(TARGET_SHARED_VER) pre_inst
# Compile dynamic library
%.so.$(LIB_VER)
:
$$($$*_OBJS) $(OBJ_REVISION)
$(CC)
-shared
-fPIC
-Wl
,-soname,
$@
-o
$@
$^
$(LDFLAGS)
$(CC)
-shared
-fPIC
-Wl
,-soname,
$@
-o
$@
$^
$(LDFLAGS)
$(LIBS)
$(REVISION_NAME).o
:
$(REVISION_NAME).c
$(CC)
$(CFLAGS)
-DGIT_REVISION
=
"
\"
$(GIT_REVISION)
\"
"
\
...
...
@@ -241,19 +241,19 @@ pre_clean:
rm
-f
$(header)
$(CMDSEP)
)
install
:
$
(
foreach lib,
$(TARGET_SHARED_VER)
,install
-m
755
$(lib)
$(
INSTALL_DIR
)
/lib
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,ln
-sf
$(lib)
.
$(LIB_VER)
$(
INSTALL_DIR
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,ln
-sf
$(lib)
.
$(LIB_VER)
$(
INSTALL_DIR
)
/lib/
$(lib)
.
$(LIB_VER_MAJOR)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_STATIC)
,install
-m
755
$(lib)
$(
INSTALL_DIR
)
/lib
$(CMDSEP)
)
$
(
foreach header,
$
(
$(LIBBPMCLIENT)
_INST_HEADERS
)
,install
-m
755
$(header)
$(
INSTALL_DIR
)
/include
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED_VER)
,install
-m
755
$(lib)
$(
PREFIX
)
/lib
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,ln
-sf
$(lib)
.
$(LIB_VER)
$(
PREFIX
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,ln
-sf
$(lib)
.
$(LIB_VER)
$(
PREFIX
)
/lib/
$(lib)
.
$(LIB_VER_MAJOR)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_STATIC)
,install
-m
755
$(lib)
$(
PREFIX
)
/lib
$(CMDSEP)
)
$
(
foreach header,
$
(
$(LIBBPMCLIENT)
_INST_HEADERS
)
,install
-m
755
$(header)
$(
PREFIX
)
/include
$(CMDSEP)
)
uninstall
:
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
INSTALL_DIR
)
/lib/
$(lib)
.
$(LIB_VER)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
INSTALL_DIR
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
INSTALL_DIR
)
/lib/
$(lib)
.
$(LIB_VER_MAJOR)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_STATIC)
,rm
-f
$(
INSTALL_DIR
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
PREFIX
)
/lib/
$(lib)
.
$(LIB_VER)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
PREFIX
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
PREFIX
)
/lib/
$(lib)
.
$(LIB_VER_MAJOR)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_STATIC)
,rm
-f
$(
PREFIX
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach header,
$
(
notdir
$
(
$(LIBBPMCLIENT)
_INST_HEADERS
))
,rm
-f
\
$(
INSTALL_DIR
)
/include/
$(header)
$(CMDSEP)
)
$(
PREFIX
)
/include/
$(header)
$(CMDSEP)
)
clean
:
pre_clean
rm
-f
$(OBJS_all)
$
(
OBJS_all:.o
=
.d
)
$(REVISION_NAME)
.o
...
...
src/libs/libbpmclient/README.deps
View file @
6e8049a4
...
...
@@ -4,6 +4,6 @@ Project Dependencies:
libdisptable
Foreign Dependencies:
libm
dp
libm
lm
libczmq
libzmq
src/libs/libbpmclient/bpm_client.c
View file @
6e8049a4
...
...
@@ -39,6 +39,7 @@
bpm_client_err_str (err_type))
#define BPMCLIENT_DFLT_LOG_MODE "w"
#define BPMCLIENT_MLM_CONNECT_TIMEOUT 1000
/* in ms */
static
bpm_client_t
*
_bpm_client_new
(
char
*
broker_endp
,
int
verbose
,
const
char
*
log_file_name
,
const
char
*
log_mode
);
...
...
@@ -104,7 +105,8 @@ void bpm_client_destroy (bpm_client_t **self_p)
bpm_client_t
*
self
=
*
self_p
;
self
->
acq_chan
=
NULL
;
mdp_client_destroy
(
&
self
->
mdp_client
);
mlm_client_destroy
(
&
self
->
mlm_client
);
zuuid_destroy
(
&
self
->
uuid
);
free
(
self
);
*
self_p
=
NULL
;
}
...
...
@@ -114,6 +116,8 @@ void bpm_client_destroy (bpm_client_t **self_p)
static
bpm_client_t
*
_bpm_client_new
(
char
*
broker_endp
,
int
verbose
,
const
char
*
log_file_name
,
const
char
*
log_mode
)
{
(
void
)
verbose
;
assert
(
broker_endp
);
/* Set logfile available for all dev_mngr and dev_io instances.
...
...
@@ -126,16 +130,30 @@ static bpm_client_t *_bpm_client_new (char *broker_endp, int verbose,
bpm_client_t
*
self
=
zmalloc
(
sizeof
*
self
);
ASSERT_ALLOC
(
self
,
err_self_alloc
);
self
->
mdp_client
=
mdp_client_new
(
broker_endp
,
verbose
);
ASSERT_TEST
(
self
->
mdp_client
!=
NULL
,
"Could not create MDP client"
,
err_mdp_client
);
/* Generate UUID to work with MLM broker */
self
->
uuid
=
zuuid_new
();
ASSERT_ALLOC
(
self
->
uuid
,
err_uuid_alloc
);
self
->
mlm_client
=
mlm_client_new
();
ASSERT_TEST
(
self
->
mlm_client
!=
NULL
,
"Could not create MLM client"
,
err_mlm_client
);
/* Connect to broker with current UUID address in canonical form */
int
rc
=
mlm_client_connect
(
self
->
mlm_client
,
broker_endp
,
BPMCLIENT_MLM_CONNECT_TIMEOUT
,
zuuid_str_canonical
(
self
->
uuid
));
ASSERT_TEST
(
rc
>=
0
,
"Could not connect MLM client to broker"
,
err_mlm_connect
);
/* Initialize acquisition table */
self
->
acq_chan
=
acq_chan
;
return
self
;
err_mdp_client:
err_mlm_connect:
mlm_client_destroy
(
&
self
->
mlm_client
);
err_mlm_client:
zuuid_destroy
(
&
self
->
uuid
);
err_uuid_alloc:
free
(
self
);
err_self_alloc:
return
NULL
;
...
...
@@ -170,10 +188,10 @@ bpm_client_err_e bpm_func_exec (bpm_client_t *self, const disp_op_t *func, char
input
+=
in_size
;
}
m
dp_client_send
(
self
->
mdp_client
,
service
,
&
msg
);
m
lm_client_sendto
(
self
->
mlm_client
,
service
,
NULL
,
NULL
,
0
,
&
msg
);
/* Receive report */
zmsg_t
*
report
=
m
dp_client_recv
(
self
->
mdp_client
,
NULL
,
NULL
);
zmsg_t
*
report
=
m
lm_client_recv
(
self
->
mlm_client
);
ASSERT_TEST
(
report
!=
NULL
,
"Report received is NULL"
,
err_msg
);
/* Message is:
...
...
@@ -267,7 +285,7 @@ bpm_client_err_e bpm_blink_leds (bpm_client_t *self, char *service, uint32_t led
ASSERT_ALLOC
(
request
,
err_send_msg_alloc
,
BPM_CLIENT_ERR_ALLOC
);
zmsg_addmem
(
request
,
&
operation
,
sizeof
(
operation
));
zmsg_addmem
(
request
,
&
leds
,
sizeof
(
leds
));
m
dp_client_send
(
self
->
mdp_client
,
service
,
&
request
);
m
lm_client_sendto
(
self
->
mlm_client
,
service
,
NULL
,
NULL
,
0
,
&
request
);
err_send_msg_alloc:
return
err
;
...
...
@@ -323,7 +341,7 @@ bpm_client_err_e bpm_ad9510_cfg_defaults (bpm_client_t *self, char *service)
zmsg_t
*
request
=
zmsg_new
();
ASSERT_ALLOC
(
request
,
err_send_msg_alloc
,
BPM_CLIENT_ERR_ALLOC
);
zmsg_addmem
(
request
,
&
operation
,
sizeof
(
operation
));
m
dp_client_send
(
self
->
mdp_client
,
service
,
&
request
);
m
lm_client_sendto
(
self
->
mlm_client
,
service
,
NULL
,
NULL
,
0
,
&
request
);
err_send_msg_alloc
:
return
err
;
...
...
@@ -851,10 +869,10 @@ static bpm_client_err_e _bpm_data_acquire (bpm_client_t *self, char *service,
zmsg_addmem
(
request
,
&
operation
,
sizeof
(
operation
));
zmsg_addmem
(
request
,
&
acq_req
->
num_samples
,
sizeof
(
acq_req
->
num_samples
));
zmsg_addmem
(
request
,
&
acq_req
->
chan
,
sizeof
(
acq_req
->
chan
));
m
dp_client_send
(
self
->
mdp_client
,
service
,
&
request
);
m
lm_client_sendto
(
self
->
mlm_client
,
service
,
NULL
,
NULL
,
0
,
&
request
);
/* Receive report */
zmsg_t
*
report
=
m
dp_client_recv
(
self
->
mdp_client
,
NULL
,
NULL
);
zmsg_t
*
report
=
m
lm_client_recv
(
self
->
mlm_client
);
ASSERT_TEST
(
report
!=
NULL
,
"Report received is NULL"
,
err_null_report
);
/* Message is:
...
...
@@ -897,10 +915,10 @@ static bpm_client_err_e _bpm_check_data_acquire (bpm_client_t *self, char *servi
* frame 0: operation code */
zmsg_t
*
request
=
zmsg_new
();
zmsg_addmem
(
request
,
&
operation
,
sizeof
(
operation
));
m
dp_client_send
(
self
->
mdp_client
,
service
,
&
request
);
m
lm_client_sendto
(
self
->
mlm_client
,
service
,
NULL
,
NULL
,
0
,
&
request
);
/* Receive report */
zmsg_t
*
report
=
m
dp_client_recv
(
self
->
mdp_client
,
NULL
,
NULL
);
zmsg_t
*
report
=
m
lm_client_recv
(
self
->
mlm_client
);
ASSERT_TEST
(
report
!=
NULL
,
"Report received is NULL"
,
err_null_report
);
/* Message is:
...
...
@@ -951,9 +969,9 @@ static bpm_client_err_e _bpm_wait_data_acquire_timed (bpm_client_t *self, char *
bpm_client_err_e
err
=
BPM_CLIENT_SUCCESS
;
time_t
start
=
time
(
NULL
);
while
((
time
(
NULL
)
-
start
)
*
1000
<
timeout
)
{
if
(
z
ctx
_interrupted
)
{
if
(
z
sys
_interrupted
)
{
err
=
BPM_CLIENT_INT
;
goto
bpm_z
ctx
_interrupted
;
goto
bpm_z
sys
_interrupted
;
}
err
=
_bpm_check_data_acquire
(
self
,
service
);
...
...
@@ -971,7 +989,7 @@ static bpm_client_err_e _bpm_wait_data_acquire_timed (bpm_client_t *self, char *
/* timeout occured */
err
=
BPM_CLIENT_ERR_TIMEOUT
;
bpm_z
ctx
_interrupted:
bpm_z
sys
_interrupted:
exit:
return
err
;
}
...
...
@@ -995,10 +1013,10 @@ static bpm_client_err_e _bpm_get_data_block (bpm_client_t *self, char *service,
zmsg_addmem
(
request
,
&
operation
,
sizeof
(
operation
));
zmsg_addmem
(
request
,
&
acq_trans
->
req
.
chan
,
sizeof
(
acq_trans
->
req
.
chan
));
zmsg_addmem
(
request
,
&
acq_trans
->
block
.
idx
,
sizeof
(
acq_trans
->
block
.
idx
));
m
dp_client_send
(
self
->
mdp_client
,
service
,
&
request
);
m
lm_client_sendto
(
self
->
mlm_client
,
service
,
NULL
,
NULL
,
0
,
&
request
);
/* Receive report */
zmsg_t
*
report
=
m
dp_client_recv
(
self
->
mdp_client
,
NULL
,
NULL
);
zmsg_t
*
report
=
m
lm_client_recv
(
self
->
mlm_client
);
ASSERT_TEST
(
report
!=
NULL
,
"Report received is NULL"
,
err_null_report
);
/* Message is:
...
...
@@ -1103,9 +1121,9 @@ bpm_client_err_e bpm_get_curve (bpm_client_t *self, char *service,
uint32_t
data_size
=
acq_trans
->
block
.
data_size
;
/* Save the original buffer size fopr later */
/* Client requisition: get data block */
for
(
uint32_t
block_n
=
0
;
block_n
<=
block_n_valid
;
block_n
++
)
{
if
(
z
ctx
_interrupted
)
{
if
(
z
sys
_interrupted
)
{
err
=
BPM_CLIENT_INT
;
goto
bpm_z
ctx
_interrupted
;
goto
bpm_z
sys
_interrupted
;
}
acq_trans
->
block
.
idx
=
block_n
;
...
...
@@ -1137,7 +1155,7 @@ bpm_client_err_e bpm_get_curve (bpm_client_t *self, char *service,
"Data curve of %u bytes was successfully acquired
\n
"
,
total_bread
);
err_bpm_get_data_block:
bpm_z
ctx
_interrupted:
bpm_z
sys
_interrupted:
err_bpm_wait_data_acquire:
err_bpm_data_acquire:
return
err
;
...
...
@@ -1255,9 +1273,9 @@ static bpm_client_err_e _bpm_acq_get_curve (bpm_client_t *self, char *service, a
/* Fill all blocks */
for
(
uint32_t
block_n
=
0
;
block_n
<=
block_n_valid
;
block_n
++
)
{
if
(
z
ctx
_interrupted
)
{
if
(
z
sys
_interrupted
)
{
err
=
BPM_CLIENT_INT
;
goto
bpm_z
ctx
_interrupted
;
goto
bpm_z
sys
_interrupted
;
}
acq_trans
->
block
.
idx
=
block_n
;
...
...
@@ -1289,7 +1307,7 @@ static bpm_client_err_e _bpm_acq_get_curve (bpm_client_t *self, char *service, a
DBE_DEBUG
(
DBG_LIB_CLIENT
|
DBG_LVL_TRACE
,
"[libclient] bpm_get_curve: "
"Data curve of %u bytes was successfully acquired
\n
"
,
total_bread
);
bpm_z
ctx
_interrupted:
bpm_z
sys
_interrupted:
err_bpm_get_data_block:
return
err
;
}
...
...
@@ -1330,9 +1348,9 @@ static bpm_client_err_e _bpm_full_acq (bpm_client_t *self, char *service, acq_tr
/* Client requisition: get data block */
for
(
uint32_t
block_n
=
0
;
block_n
<=
block_n_valid
;
block_n
++
)
{
if
(
z
ctx
_interrupted
)
{
if
(
z
sys
_interrupted
)
{
err
=
BPM_CLIENT_INT
;
goto
bpm_z
ctx
_interrupted
;
goto
bpm_z
sys
_interrupted
;
}
acq_trans
->
block
.
idx
=
block_n
;
...
...
@@ -1364,7 +1382,7 @@ static bpm_client_err_e _bpm_full_acq (bpm_client_t *self, char *service, acq_tr
DBE_DEBUG
(
DBG_LIB_CLIENT
|
DBG_LVL_TRACE
,
"[libclient] bpm_get_curve: "
"Data curve of %u bytes was successfully acquired
\n
"
,
total_bread
);
bpm_z
ctx
_interrupted:
bpm_z
sys
_interrupted:
err_bpm_get_data_block:
err_check_data_acquire:
return
err
;
...
...
@@ -1949,9 +1967,9 @@ static bpm_client_err_e _func_polling (bpm_client_t *self, char *name, char *ser
bpm_client_err_e
err
=
BPM_CLIENT_SUCCESS
;
time_t
start
=
time
(
NULL
);
while
(
time
(
NULL
)
-
start
<
timeout
)
{
if
(
z
ctx
_interrupted
)
{
if
(
z
sys
_interrupted
)
{
err
=
BPM_CLIENT_INT
;
goto
bpm_z
ctx
_interrupted
;
goto
bpm_z
sys
_interrupted
;
}
const
disp_op_t
*
func
=
bpm_func_translate
(
name
);
err
=
bpm_func_exec
(
self
,
func
,
service
,
input
,
output
);
...
...
@@ -1965,7 +1983,7 @@ static bpm_client_err_e _func_polling (bpm_client_t *self, char *name, char *ser
/* timeout occured */
err
=
BPM_CLIENT_ERR_TIMEOUT
;
bpm_z
ctx
_interrupted:
bpm_z
sys
_interrupted:
exit:
return
err
;
}
src/libs/libbpmclient/bpm_client.h
View file @
6e8049a4
...
...
@@ -9,7 +9,7 @@
#define _BPM_CLIENT_H_
#include <inttypes.h>
#include <m
dp
.h>
#include <m
alamute
.h>
#include "bpm_client_codes.h"
#include "bpm_client_err.h"
...
...
@@ -19,7 +19,8 @@ struct _acq_chan_t;
/* Our structure */
struct
_bpm_client_t
{
mdp_client_t
*
mdp_client
;
/* Majordomo client instance */
zuuid_t
*
uuid
;
/* Client UUID */
mlm_client_t
*
mlm_client
;
/* Malamute client instance */
const
struct
_acq_chan_t
*
acq_chan
;
/* Acquisition buffer table */
};
...
...
src/libs/libbpmclient/bpm_client_rw_param.c
View file @
6e8049a4
...
...
@@ -48,7 +48,7 @@ bpm_client_err_e param_client_send_gen_rw (bpm_client_t *self, char *service,
zmsg_addmem
(
request
,
&
rw
,
sizeof
(
rw
));
zmsg_addmem
(
request
,
param
,
size
);
m
dp_client_send
(
self
->
mdp_client
,
service
,
&
request
);
m
lm_client_sendto
(
self
->
mlm_client
,
service
,
NULL
,
NULL
,
0
,
&
request
);
err_send_msg_alloc:
err_param_null:
...
...
@@ -64,7 +64,7 @@ bpm_client_err_e param_client_recv_rw (bpm_client_t *self, char *service,
bpm_client_err_e
err
=
BPM_CLIENT_SUCCESS
;
/* Receive report */
*
report
=
m
dp_client_recv
(
self
->
mdp_client
,
NULL
,
NULL
);
*
report
=
m
lm_client_recv
(
self
->
mlm_client
);
ASSERT_TEST
(
*
report
!=
NULL
,
"Could not receive message"
,
err_null_msg
,
BPM_CLIENT_ERR_SERVER
);
...
...
src/libs/libbpmclient/bpm_client_rw_param.h
View file @
6e8049a4
...
...
@@ -9,7 +9,7 @@
#define _BPM_CLIENT_RW_PARAM_H_
#include <inttypes.h>
#include <m
dp
.h>
#include <m
alamute
.h>
#include "bpm_client_codes.h"
#include "bpm_client_rw_param_codes.h"
...
...
src/libs/libbpmclient/compile.sh
0 → 100755
View file @
6e8049a4
#!/bin/bash
# All of our Makefile options
# Select board in which we will work. Options are: ml605 or afcv3
BOARD
=
afcv3
#Select if we want to compile with debug mode on. Options are: y(es) or n(o)
ERRHAND_DBG
=
y
# Select the minimum debug verbosity. See liberrhand file errhand_opts.h for more info.
ERRHAND_MIN_LEVEL
=
DBG_LVL_INFO
# Select the subsytems which will have the debug on. See liberrhand file errhand_opts.h for more info.
ERRHAND_SUBSYS_ON
=
'"(DBG_DEV_MNGR | DBG_DEV_IO | DBG_SM_IO | DBG_LIB_CLIENT | DBG_SM_PR | DBG_SM_CH | DBG_LL_IO | DBG_HAL_UTILS)"'
# Select the FMC ADC board type. Options are: passive or active
COMMAND_LIBBPMCLIENT
=
"
\
make BOARD=
${
BOARD
}
\
ERRHAND_DBG=
${
ERRHAND_DBG
}
\
ERRHAND_MIN_LEVEL=
${
ERRHAND_MIN_LEVEL
}
\
ERRHAND_SUBSYS_ON='"
${
ERRHAND_SUBSYS_ON
}
"' &&
\
sudo make install"
COMMAND_ARRAY
=(
"
${
COMMAND_LIBBPMCLIENT
}
"
)
for
i
in
"
${
COMMAND_ARRAY
[@]
}
"
do
echo
"Executing: "
$i
eval
$i
# Check return value
rc
=
$?
if
[[
$rc
!=
0
]]
;
then
exit
$rc
fi
done
src/libs/liberrhand/Makefile
View file @
6e8049a4
...
...
@@ -21,8 +21,8 @@ LIB_VER_MINOR = 0
LIB_VER_REVISION
=
0
LIB_VER
=
$(LIB_VER_MAJOR)
.
$(LIB_VER_MINOR)
.
$(LIB_VER_REVISION)
INSTALL_DIR
?=
/usr/local
export
INSTALL_DIR
PREFIX
?=
/usr/local
export
PREFIX
# General C flags
CFLAGS
=
-std
=
gnu99
-O2
-fPIC
...
...
@@ -156,19 +156,19 @@ all: $(TARGET_STATIC) $(TARGET_SHARED_VER)
@
rm
-f
$*
.d.tmp
install
:
$
(
foreach lib,
$(TARGET_SHARED_VER)
,install
-m
755
$(lib)
$(
INSTALL_DIR
)
/lib
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,ln
-sf
$(lib)
.
$(LIB_VER)
$(
INSTALL_DIR
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,ln
-sf
$(lib)
.
$(LIB_VER)
$(
INSTALL_DIR
)
/lib/
$(lib)
.
$(LIB_VER_MAJOR)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_STATIC)
,install
-m
755
$(lib)
$(
INSTALL_DIR
)
/lib
$(CMDSEP)
)
$
(
foreach header,
$
(
$(LIBBPMCLIENT)
_INST_HEADERS
)
,install
-m
755
$(header)
$(
INSTALL_DIR
)
/include
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED_VER)
,install
-m
755
$(lib)
$(
PREFIX
)
/lib
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,ln
-sf
$(lib)
.
$(LIB_VER)
$(
PREFIX
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,ln
-sf
$(lib)
.
$(LIB_VER)
$(
PREFIX
)
/lib/
$(lib)
.
$(LIB_VER_MAJOR)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_STATIC)
,install
-m
755
$(lib)
$(
PREFIX
)
/lib
$(CMDSEP)
)
$
(
foreach header,
$
(
$(LIBBPMCLIENT)
_INST_HEADERS
)
,install
-m
755
$(header)
$(
PREFIX
)
/include
$(CMDSEP)
)
uninstall
:
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
INSTALL_DIR
)
/lib/
$(lib)
.
$(LIB_VER)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
INSTALL_DIR
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
INSTALL_DIR
)
/lib/
$(lib)
.
$(LIB_VER_MAJOR)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_STATIC)
,rm
-f
$(
INSTALL_DIR
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
PREFIX
)
/lib/
$(lib)
.
$(LIB_VER)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
PREFIX
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_SHARED)
,rm
-f
$(
PREFIX
)
/lib/
$(lib)
.
$(LIB_VER_MAJOR)
$(CMDSEP)
)
$
(
foreach lib,
$(TARGET_STATIC)
,rm
-f
$(
PREFIX
)
/lib/
$(lib)
$(CMDSEP)
)
$
(
foreach header,
$
(
notdir
$
(
$(LIBBPMCLIENT)
_INST_HEADERS
))
,rm
-f
\
$(
INSTALL_DIR
)
/include/
$(header)
$(CMDSEP)
)
$(
PREFIX
)
/include/
$(header)
$(CMDSEP)
)
clean
:
rm
-f
$(OBJS_all)
$
(
OBJS_all:.o
=
.d
)
...
...
src/msg/msg.c
View file @
6e8049a4
...
...
@@ -47,8 +47,8 @@ static msg_err_e _msg_format_client_response (int disp_table_ret,
static
RW_REPLY_TYPE
_msg_format_reply_code
(
int
reply_code
);
static
zmsg_t
*
_msg_create_client_response
(
RW_REPLY_TYPE
reply_code
,
uint32_t
reply_size
,
uint32_t
*
data_out
,
bool
with_data_frame
);
static
void
_msg_send_client_response_m
dp
(
RW_REPLY_TYPE
reply_code
,
uint32_t
reply_size
,
uint32_t
*
data_out
,
bool
with_data_frame
,
m
dp_worker
_t
*
worker
,
static
void
_msg_send_client_response_m
lm
(
RW_REPLY_TYPE
reply_code
,
uint32_t
reply_size
,
uint32_t
*
data_out
,
bool
with_data_frame
,
m
lm_client
_t
*
worker
,
zframe_t
*
reply_to
);
static
void
_msg_send_client_response_sock
(
RW_REPLY_TYPE
reply_code
,
uint32_t
reply_size
,
uint32_t
*
data_out
,
bool
with_data_frame
,
zframe_t
*
reply_to
);
...
...
@@ -63,8 +63,8 @@ msg_err_e msg_validate (void *msg, msg_type_e expected_msg_type)
return
_msg_validate
(
msg
,
expected_msg_type
);
}
/* Handle M
DP
protocol (used by SMIOs, for instance) request */
msg_err_e
msg_handle_m
dp
_request
(
void
*
owner
,
void
*
args
,
/* Handle M
LM
protocol (used by SMIOs, for instance) request */
msg_err_e
msg_handle_m
lm
_request
(
void
*
owner
,
void
*
args
,
disp_table_t
*
disp_table
)
{
msg_err_e
err
=
MSG_SUCCESS
;
...
...
@@ -97,14 +97,14 @@ msg_err_e msg_handle_mdp_request (void *owner, void *args,
err_format_response
);
/* Send response back to client */
_msg_send_client_response_m
dp
(
reply_code
,
disp_table_ret
,
ret
,
with_data_frame
,
_msg_send_client_response_m
lm
(
reply_code
,
disp_table_ret
,
ret
,
with_data_frame
,
self
->
worker
,
msg
->
reply_to
);
return
err
;
err_format_response:
err_get_opcode:
_msg_send_client_response_m
dp
(
PARAM_ERR
,
0
,
NULL
,
false
,
self
->
worker
,
_msg_send_client_response_m
lm
(
PARAM_ERR
,
0
,
NULL
,
false
,
self
->
worker
,
msg
->
reply_to
);
err_inv_msg:
return
err
;
...
...
@@ -331,16 +331,17 @@ static RW_REPLY_TYPE _msg_format_reply_code (int reply_code)
return
(
reply_code
<
0
)
?
-
reply_code
:
reply_code
;
}
static
void
_msg_send_client_response_m
dp
(
RW_REPLY_TYPE
reply_code
,
uint32_t
reply_size
,
uint32_t
*
data_out
,
bool
with_data_frame
,
m
dp_worker
_t
*
worker
,
static
void
_msg_send_client_response_m
lm
(
RW_REPLY_TYPE
reply_code
,
uint32_t
reply_size
,
uint32_t
*
data_out
,
bool
with_data_frame
,
m
lm_client
_t
*
worker
,
zframe_t
*
reply_to
)
{
(
void
)
reply_to
;
zmsg_t
*
msg
=
_msg_create_client_response
(
reply_code
,
reply_size
,
data_out
,
with_data_frame
);
ASSERT_TEST
(
msg
!=
NULL
,
"Could format client message"
,
err_fmt_client_message
);
m
dp_worker_send
(
worker
,
&
msg
,
reply_to
);
m
lm_client_sendto
(
worker
,
mlm_client_sender
(
worker
),
NULL
,
NULL
,
0
,
&
msg
);
err_fmt_client_message:
return
;
}
...
...
src/msg/msg.h
View file @
6e8049a4
...
...
@@ -42,8 +42,8 @@ msg_err_e msg_validate (void *msg, msg_type_e expected_msg_type);
* message checking */
msg_err_e
msg_check_gen_zmq_args
(
const
disp_op_t
*
disp_op
,
zmsg_t
*
zmq_msg
);
/* Handle M
DP
protocol (used by SMIOs, for instance) request */
msg_err_e
msg_handle_m
dp
_request
(
void
*
owner
,
void
*
args
,
/* Handle M
LM
protocol (used by SMIOs, for instance) request */
msg_err_e
msg_handle_m
lm
_request
(
void
*
owner
,
void
*
args
,
disp_table_t
*
disp_table
);
/* Handle regular protocol (used by DEVIOs, for instance) request */
msg_err_e
msg_handle_sock_request
(
void
*
owner
,
void
*
args
,
...
...
src/msg/smio_thsafe_ops/smio_thsafe_zmq_client.c
View file @
6e8049a4
...
...
@@ -116,7 +116,7 @@ ssize_t thsafe_zmq_client_read_block (smio_t *self, uint64_t offs, size_t size,
debug_log_print_zmq_msg
(
send_msg
);
#endif
zerr
=
zmsg_send
(
&
send_msg
,
self
->
pipe
);
zerr
=
zmsg_send
(
&
send_msg
,
self
->
pipe
_msg
);
ASSERT_TEST
(
zerr
==
0
,
"Could not send message"
,
err_send_msg
);
/* Message is:
...
...
@@ -164,7 +164,7 @@ ssize_t thsafe_zmq_client_write_block (smio_t *self, uint64_t offs, size_t size,
debug_log_print_zmq_msg
(
send_msg
);
#endif
zerr
=
zmsg_send
(
&
send_msg
,
self
->
pipe
);
zerr
=
zmsg_send
(
&
send_msg
,
self
->
pipe
_msg
);
ASSERT_TEST
(
zerr
==
0
,
"Could not send message"
,
err_send_msg
);
/* Message is:
...
...
@@ -242,7 +242,7 @@ int _thsafe_zmq_client_open_release (smio_t *self, llio_endpoint_t *endpoint, ui
#ifdef LOCAL_MSG_DBG
debug_log_print_zmq_msg
(
send_msg
);
#endif
zerr
=
zmsg_send
(
&
send_msg
,
self
->
pipe
);
zerr
=
zmsg_send
(
&
send_msg
,
self
->
pipe
_msg
);
ASSERT_TEST
(
zerr
==
0
,
"Could not send message"
,
err_send_msg
);
/* Message is:
...
...
@@ -325,7 +325,7 @@ static ssize_t _thsafe_zmq_client_read_generic (smio_t *self, uint64_t offs, uin
debug_log_print_zmq_msg
(
send_msg
);
#endif
zerr
=
zmsg_send
(
&
send_msg
,
self
->
pipe
);
zerr
=
zmsg_send
(
&
send_msg
,
self
->
pipe
_msg
);
ASSERT_TEST
(
zerr
==
0
,
"Could not send message"
,
err_send_msg
);
/* Message is:
...
...
@@ -389,7 +389,7 @@ static ssize_t _thsafe_zmq_client_write_generic (smio_t *self, uint64_t offs, co
debug_log_print_zmq_msg
(
send_msg
);
#endif
zerr
=
zmsg_send
(
&
send_msg
,
self
->
pipe
);
zerr
=
zmsg_send
(
&
send_msg
,
self
->
pipe
_msg
);
ASSERT_TEST
(
zerr
==
0
,
"Could not send message"
,
err_send_msg
);
...
...
@@ -422,7 +422,7 @@ static zmsg_t *_thsafe_zmq_client_recv_confirmation (smio_t *self)
assert
(
self
);
/* Wait for response */
zmsg_t
*
recv_msg
=
zmsg_recv
(
self
->
pipe
);
zmsg_t
*
recv_msg
=
zmsg_recv
(
self
->
pipe
_msg
);
/* Do not pop the message, just set a cursor to it */
zframe_t
*
reply_frame
=
zmsg_first
(
recv_msg
);
...
...
src/sm_io/modules/afc_diag/sm_io_afc_diag_defaults.c
View file @
6e8049a4
...
...
@@ -47,6 +47,7 @@ smio_err_e afc_diag_config_defaults (char *broker_endp, char *service,
bpm_client_t
*
config_client
=
bpm_client_new_log_mode
(
broker_endp
,
0
,
log_file_name
,
SMIO_AFC_DIAG_LIBBPMCLIENT_LOG_MODE
);
ASSERT_ALLOC
(
config_client
,
err_alloc_client
);
uint32_t
card_slot
=
0
;
client_err
=
bpm_get_afc_diag_card_slot
(
config_client
,
service
,
&
card_slot
);
...
...
@@ -60,5 +61,8 @@ smio_err_e afc_diag_config_defaults (char *broker_endp, char *service,
err_param_get:
bpm_client_destroy
(
&
config_client
);
err_alloc_client:
DBE_DEBUG
(
DBG_SM_IO
|
DBG_LVL_INFO
,
"[sm_io:afc_diag_defaults] Exiting Config thread %s
\n
"
,
service
);
return
err
;
}
src/sm_io/modules/dsp/sm_io_dsp_defaults.c
View file @
6e8049a4
...
...
@@ -48,6 +48,7 @@ smio_err_e dsp_config_defaults (char *broker_endp, char *service,
bpm_client_t
*
config_client
=
bpm_client_new_log_mode
(
broker_endp
,
0
,
log_file_name
,
SMIO_DSP_LIBBPMCLIENT_LOG_MODE
);
ASSERT_ALLOC
(
config_client
,
err_alloc_client
);
client_err
=
bpm_set_kx
(
config_client
,
service
,
DSP_DFLT_KX_VAL
);
ASSERT_TEST
(
client_err
==
BPM_CLIENT_SUCCESS
,
"Could not set KX value"
,
...
...
@@ -75,5 +76,8 @@ smio_err_e dsp_config_defaults (char *broker_endp, char *service,
err_param_set:
bpm_client_destroy
(
&
config_client
);
err_alloc_client:
DBE_DEBUG
(
DBG_SM_IO
|
DBG_LVL_INFO
,
"[sm_io:dsp_defaults] Exiting Config thread %s
\n
"
,
service
);
return
err
;
}
src/sm_io/modules/fmc130m_4ch/sm_io_fmc130m_4ch_defaults.c
View file @
6e8049a4
...
...
@@ -48,6 +48,7 @@ smio_err_e fmc130m_4ch_config_defaults (char *broker_endp, char *service,
bpm_client_t
*
config_client
=
bpm_client_new_log_mode
(
broker_endp
,
0
,
log_file_name
,
SMIO_FMC130M_4CH_LIBBPMCLIENT_LOG_MODE
);
ASSERT_ALLOC
(
config_client
,
err_alloc_client
);
client_err
=
bpm_set_fmc_pll_function
(
config_client
,
service
,
FMC130M_4CH_DFLT_PLL_FUNC
);
ASSERT_TEST
(
client_err
==
BPM_CLIENT_SUCCESS
,
"Could not set FMC PLL function"
,
...
...
@@ -80,5 +81,8 @@ smio_err_e fmc130m_4ch_config_defaults (char *broker_endp, char *service,
err_param_set:
bpm_client_destroy
(
&
config_client
);
err_alloc_client:
DBE_DEBUG
(
DBG_SM_IO
|
DBG_LVL_INFO
,
"[sm_io:fmc130m_4ch_defaults] Exiting Config thread %s
\n
"
,
service
);
return
err
;
}
src/sm_io/modules/rffe/sm_io_rffe_defaults.c
View file @
6e8049a4
...
...
@@ -47,6 +47,7 @@ smio_err_e rffe_config_defaults (char *broker_endp, char *service,
bpm_client_t
*
config_client
=
bpm_client_new_log_mode
(
broker_endp
,
0
,
log_file_name
,
SMIO_RFFE_LIBBPMCLIENT_LOG_MODE
);
ASSERT_ALLOC
(
config_client
,
err_alloc_client
);
client_err
=
bpm_set_rffe_sw
(
config_client
,
service
,
RFFE_DFLT_SW
);
ASSERT_TEST
(
client_err
==
BPM_CLIENT_SUCCESS
,
"Could not set RFFE switching value"
,
...
...
@@ -62,5 +63,8 @@ smio_err_e rffe_config_defaults (char *broker_endp, char *service,
err_param_set:
bpm_client_destroy
(
&
config_client
);
err_alloc_client:
DBE_DEBUG
(
DBG_SM_IO
|
DBG_LVL_INFO
,
"[sm_io:rffe_defaults] Exiting Config thread %s
\n
"
,
service
);
return
err
;
}
src/sm_io/modules/swap/sm_io_swap_defaults.c
View file @
6e8049a4
...
...
@@ -48,6 +48,7 @@ smio_err_e swap_config_defaults (char *broker_endp, char *service,
bpm_client_t
*
config_client
=
bpm_client_new_log_mode
(
broker_endp
,
0
,
log_file_name
,
SMIO_SWAP_LIBBPMCLIENT_LOG_MODE
);
ASSERT_ALLOC
(
config_client
,
err_alloc_client
);
client_err
=
bpm_set_sw
(
config_client
,
service
,
SWAP_DFLT_SW
);
ASSERT_TEST
(
client_err
==
BPM_CLIENT_SUCCESS
,
"Could not set switching state"
,
...
...
@@ -79,5 +80,8 @@ smio_err_e swap_config_defaults (char *broker_endp, char *service,
err_param_set:
bpm_client_destroy
(
&
config_client
);
err_alloc_client:
DBE_DEBUG
(
DBG_SM_IO
|
DBG_LVL_INFO
,
"[sm_io:swap_defaults] Exiting Config thread %s
\n
"
,
service
);
return
err
;
}
src/sm_io/protocols/ops/sm_pr_bsmp_defaults.h
View file @
6e8049a4
...
...
@@ -5,13 +5,8 @@
* Released according to the GNU LGPL, version 3 or any later version.
*/
#ifndef _SM_PR_I2C_DEFAULTS_H_
#define _SM_PR_I2C_DEFAULTS_H_
#define SM_PR_I2C_DFLT_SYS_FREQ 100000000
/* 100 MHz */
#define SM_PR_I2C_DFLT_I2C_FREQ 100000
/* 100 KHz */
#define SM_PR_I2C_DFLT_I2C_CONFIG 0x0
/* Nothing for now */
#define SM_PR_I2C_DFLT_I2C_SLEEP_USECS 10000
/* 10 ms sleep between read/writes */
#ifndef _SM_PR_BSMP_DEFAULTS_H_
#define _SM_PR_BSMP_DEFAULTS_H_
#endif
src/sm_io/protocols/ops/sm_pr_i2c_defaults.h
View file @
6e8049a4
...
...
@@ -11,7 +11,6 @@
#define SM_PR_I2C_DFLT_SYS_FREQ 100000000
/* 100 MHz */
#define SM_PR_I2C_DFLT_I2C_FREQ 100000
/* 100 KHz */
#define SM_PR_I2C_DFLT_I2C_CONFIG 0x0
/* Nothing for now */
#define SM_PR_I2C_DFLT_I2C_SLEEP_USECS 10000
/* 10 ms sleep between read/writes */
#endif
src/sm_io/rw_param/rw_param.h
View file @
6e8049a4
...
...
@@ -6,7 +6,7 @@
*/
#include <inttypes.h>
#include <m
dp
.h>
#include <m
alamute
.h>
#include "varg_macros.h"
#include "rw_param_codes.h"
#include "msg.h"
...
...
src/sm_io/sm_io.c
View file @
6e8049a4
...
...
@@ -147,7 +147,7 @@ static smio_err_e _smio_do_op (void *owner, void *msg)
err_do_op
);
disp_table_t
*
disp_table
=
self
->
exp_ops_dtable
;
msg_err_e
merr
=
msg_handle_m
dp
_request
(
owner
,
msg
,
disp_table
);
msg_err_e
merr
=
msg_handle_m
lm
_request
(
owner
,
msg
,
disp_table
);
ASSERT_TEST
(
merr
==
MSG_SUCCESS
,
"Error handling request"
,
err_hand_req
,
SMIO_ERR_MSG_NOT_SUPP
/* returning a more meaningful error? */
);
...
...
src/sm_io/sm_io.h
View file @
6e8049a4
...
...
@@ -11,6 +11,7 @@
#include <inttypes.h>
#include <sys/types.h>
#include <stdbool.h>
#include <malamute.h>
/* #include "dev_io_core.h" */
#include "ll_io.h"
...
...
@@ -20,11 +21,11 @@
#include "sm_io_exports.h"
#include "msg.h"
#include "disp_table.h"
#include "mdp.h"
/* SMIO sockets IDs */
#define SMIO_PIPE_SOCK 0
#define SMIO_END_SOCK 1
#define SMIO_PIPE_MGMT_SOCK 0
#define SMIO_MLM_SOCK 1
#define SMIO_END_SOCK 2
#define SMIO_SOCKS_NUM SMIO_END_SOCK
struct
_devio_t
;
...
...
@@ -42,13 +43,13 @@ struct _smio_t {
char
*
name
;
/* Identification of this sm_io instance */
char
*
service
;
/* Exported service name */
/* int verbose; */
/* Print activity to stdout */
m
dp_worker_t
*
worker
;
/* zeroMQ Majordomo worker
*/
m
lm_client_t
*
worker
;
/* zeroMQ Malamute client (worker)
*/
struct
_devio_t
*
parent
;
/* Pointer back to parent dev_io */
void
*
smio_handler
;
/* Generic pointer to a device handler. This
must be cast to a specific type by the
devices functions */
z
ctx_t
*
ctx
;
/* Our context
*/
void
*
pipe
;
/* Pipe back to parent to exchange
messages */
z
sock_t
*
pipe_mgmt
;
/* Pipe back to parent to exchange Management messages
*/
zsock_t
*
pipe_msg
;
/* Pipe back to parent to exchange Payload
messages */
/* Specific SMIO operations dispatch table for exported operations */
disp_table_t
*
exp_ops_dtable
;
...
...
src/sm_io/sm_io_bootstrap.c
View file @
6e8049a4
This diff is collapsed.
Click to expand it.
src/sm_io/sm_io_bootstrap.h
View file @
6e8049a4
...
...
@@ -63,6 +63,7 @@ typedef struct _smio_bootstrap_ops_t smio_bootstrap_ops_t;
struct
_th_boot_args_t
{
struct
_devio_t
*
parent
;
/* Pointer back to devo parent */
uint32_t
smio_id
;
/* ID of the SMIO instance */
zsock_t
*
pipe_msg
;
/* Message PIPE to actor */
char
*
broker
;
/* Endpoint to connect to broker */
char
*
service
;
/* (part of) the service name to be exported */
int
verbose
;
/* Print trace information to stdout*/
...
...
@@ -86,10 +87,10 @@ typedef struct _th_config_args_t th_config_args_t;
/************************************************************/
/************************ Our methods ***********************/
/************************************************************/
void
smio_startup
(
void
*
args
,
zctx_t
*
ctx
,
void
*
pipe
);
void
*
smio_config_defaults
(
void
*
args
);
struct
_smio_t
*
smio_new
(
th_boot_args_t
*
args
,
struct
_zctx_t
*
ctx
,
void
*
pipe
,
char
*
service
);
void
smio_startup
(
zsock_t
*
pipe
,
void
*
args
);
void
smio_config_defaults
(
zsock_t
*
pipe
,
void
*
args
);
struct
_smio_t
*
smio_new
(
th_boot_args_t
*
args
,
zsock_t
*
pipe_mgmt
,
zsock_t
*
pipe_msg
,
char
*
service
);
smio_err_e
smio_destroy
(
struct
_smio_t
**
self_p
);
smio_err_e
smio_loop
(
struct
_smio_t
*
self
);
...
...
src/sm_io/sm_io_err.c
View file @
6e8049a4
...
...
@@ -21,8 +21,10 @@ static const char *smio_err [SMIO_ERR_END] =
[
SMIO_ERR_EXPORT_OP
]
=
"Could not export function"
,
[
SMIO_ERR_CONFIG_DFLT
]
=
"Could not configure the default values"
,
[
SMIO_ERR_MSG_NOT_SUPP
]
=
"Exported message not supported"
,
[
SMIO_ERR_BAD_MSG
]
=
"Malformed message received"
,
[
SMIO_ERR_INTERRUPTED_POLLER
]
=
"Poller interrupted. zeroMQ context was "
"terminated or received interrupt signal"
"terminated or received interrupt signal"
,
[
SMIO_ERR_INV_SOCKET
]
=
"Invalid socket reference"
};
/* Convert enumeration type to string */
...
...
src/sm_io/sm_io_err.h
View file @
6e8049a4
...
...
@@ -22,8 +22,10 @@ enum _smio_err_e
SMIO_ERR_EXPORT_OP
,
/* Error exporting function */
SMIO_ERR_CONFIG_DFLT
,
/* Error configuring the default values */
SMIO_ERR_MSG_NOT_SUPP
,
/* Exported message not supported */
SMIO_ERR_BAD_MSG
,
/* Malformed message received */
SMIO_ERR_INTERRUPTED_POLLER
,
/* SMIO Poller interrupted. zeroMQ context was
terminated or received interrupt signal */
SMIO_ERR_INV_SOCKET
,
/* Invalid socket reference */
SMIO_ERR_END
/* End of enum marker */
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment