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
0ccb4338
Commit
0ccb4338
authored
Oct 23, 2014
by
Lucas Russo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
examples/*: add BPM and Board nubmer to CLI
parent
e2b1b56e
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
366 additions
and
34 deletions
+366
-34
acq.c
examples/acq.c
+45
-10
adc_data2.c
examples/adc_data2.c
+106
-0
adc_dly.c
examples/adc_dly.c
+82
-17
dsp_swap.c
examples/dsp_swap.c
+1
-1
leds.c
examples/leds.c
+65
-3
test_data_en.c
examples/test_data_en.c
+67
-3
No files found.
examples/acq.c
View file @
0ccb4338
...
...
@@ -12,8 +12,14 @@
#define DFLT_BIND_FOLDER "/tmp/bpm"
#define DEFAULT_NUM_SAMPLES 4096
#define DEFAULT_CHAN_NUM 0
#define DFLT_NUM_SAMPLES 4096
#define DFLT_CHAN_NUM 0
#define DFLT_BPM_NUMBER 0
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
/* Arbitrary hard limits */
#define MAX_NUM_SAMPLES (1 << 28)
...
...
@@ -22,7 +28,7 @@
void
print_data
(
uint32_t
chan
,
uint32_t
*
data
,
uint32_t
size
)
{
/* FIXME: Make it more generic */
if
(
chan
==
0
)
{
if
(
chan
==
0
||
chan
==
9
)
{
int16_t
*
raw_data16
=
(
int16_t
*
)
data
;
for
(
uint32_t
i
=
0
;
i
<
(
size
/
sizeof
(
uint16_t
))
/
4
;
i
++
)
{
if
(
zctx_interrupted
)
{
...
...
@@ -59,6 +65,7 @@ void print_help (char *program_name)
"
\t
-v Verbose output
\n
"
"
\t
-b <broker_endpoint> Broker endpoint
\n
"
"
\t
-s <num_samples_str> Number of samples
\n
"
"
\t
-board <AMC board = [0|1|2|3|4|5]>
\n
"
"
\t
-ch <chan_str> Acquisition channel
\n
"
,
program_name
);
}
...
...
@@ -68,6 +75,7 @@ int main (int argc, char *argv [])
int
verbose
=
0
;
char
*
broker_endp
=
NULL
;
char
*
num_samples_str
=
NULL
;
char
*
board_number_str
=
NULL
;
char
*
chan_str
=
NULL
;
char
**
str_p
=
NULL
;
...
...
@@ -99,6 +107,9 @@ int main (int argc, char *argv [])
else
if
(
streq
(
argv
[
i
],
"-ch"
))
{
/* ch: channel */
str_p
=
&
chan_str
;
}
else
if
(
streq
(
argv
[
i
],
"-board"
))
{
/* board_number: board number */
str_p
=
&
board_number_str
;
}
/* Fallout for options with parameters */
else
{
*
str_p
=
strdup
(
argv
[
i
]);
...
...
@@ -116,8 +127,8 @@ int main (int argc, char *argv [])
uint32_t
num_samples
;
if
(
num_samples_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: Setting default value to number of samples: %u
\n
"
,
D
EFAU
LT_NUM_SAMPLES
);
num_samples
=
D
EFAU
LT_NUM_SAMPLES
;
D
F
LT_NUM_SAMPLES
);
num_samples
=
D
F
LT_NUM_SAMPLES
;
}
else
{
num_samples
=
strtoul
(
num_samples_str
,
NULL
,
10
);
...
...
@@ -128,13 +139,13 @@ int main (int argc, char *argv [])
num_samples
=
MAX_NUM_SAMPLES
;
}
}
fprintf
(
stdout
,
"[client:acq]: num_samples = %u
\n
"
,
num_samples
);
//
fprintf (stdout, "[client:acq]: num_samples = %u\n", num_samples);
/* Set default channel */
uint32_t
chan
;
if
(
chan_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:acq]: Setting default value to 'chan'
\n
"
);
chan
=
D
EFAU
LT_CHAN_NUM
;
chan
=
D
F
LT_CHAN_NUM
;
}
else
{
chan
=
strtoul
(
chan_str
,
NULL
,
10
);
...
...
@@ -145,7 +156,27 @@ int main (int argc, char *argv [])
chan
=
MAX_NUM_CHANS
;
}
}
fprintf
(
stdout
,
"[client:acq]: chan = %u
\n
"
,
chan
);
//fprintf (stdout, "[client:acq]: chan = %u\n", chan);
/* 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
);
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
;
}
}
char
service
[
50
];
sprintf
(
service
,
"BPM%u:DEVIO:ACQ0"
,
board_number
);
uint32_t
data_size
=
num_samples
*
acq_chan
[
chan
].
sample_size
;
uint32_t
*
data
=
(
uint32_t
*
)
zmalloc
(
data_size
*
sizeof
(
uint8_t
));
...
...
@@ -158,20 +189,24 @@ int main (int argc, char *argv [])
.
data_size
=
data_size
,
}
};
bpm_client_err_e
err
=
bpm_get_curve
(
bpm_client
,
"BPM0:DEVIO:ACQ0"
,
&
acq_trans
,
bpm_client_err_e
err
=
bpm_get_curve
(
bpm_client
,
service
,
&
acq_trans
,
5000
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_curve failed
\n
"
);
goto
err_bpm_get_curve
;
}
fprintf
(
stdout
,
"[client:acq]: bpm_get_curve was successfully executed
\n
"
);
//fprintf (stdout, "[client:acq]: bpm_get_curve was successfully executed\n");
fprintf
(
stdout
,
"clear
\n
"
);
print_data
(
chan
,
data
,
acq_trans
.
block
.
bytes_read
);
err_bpm_get_curve:
str_p
=
&
chan_str
;
free
(
*
str_p
);
chan_str
=
NULL
;
str_p
=
&
board_number_str
;
free
(
*
str_p
);
board_number_str
=
NULL
;
str_p
=
&
num_samples_str
;
free
(
*
str_p
);
num_samples_str
=
NULL
;
...
...
examples/adc_data2.c
0 → 100644
View file @
0ccb4338
/*
* Simple example demonstrating the communication between
* a client and the FPGA device
*/
#include <mdp.h>
#include <czmq.h>
#include <inttypes.h>
#include <bpm_client.h>
#define DFLT_BIND_FOLDER "/tmp/bpm"
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
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
verbose
=
0
;
char
*
broker_endp
=
NULL
;
char
**
str_p
=
NULL
;
if
(
argc
<
2
)
{
print_help
(
argv
[
0
]);
exit
(
1
);
}
/* FIXME: This is rather buggy! */
/* Simple handling of command-line options. This should be done
* with getopt, for instance*/
int
i
;
for
(
i
=
1
;
i
<
argc
;
i
++
)
{
if
(
streq
(
argv
[
i
],
"-v"
))
{
verbose
=
1
;
}
else
if
(
streq
(
argv
[
i
],
"-h"
))
{
print_help
(
argv
[
0
]);
exit
(
1
);
}
else
if
(
streq
(
argv
[
i
],
"-b"
))
{
str_p
=
&
broker_endp
;
}
/* Fallout for options with parameters */
else
{
*
str_p
=
strdup
(
argv
[
i
]);
}
}
/* Set default broker address */
if
(
broker_endp
==
NULL
)
{
broker_endp
=
strdup
(
"ipc://"
DFLT_BIND_FOLDER
);
}
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
uint32_t
adc_data
;
bpm_client_err_e
err
=
bpm_get_adc_data0
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH1"
,
&
adc_data
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_adc_data0 failed
\n
"
);
goto
err_get_adc_data
;
}
fprintf
(
stdout
,
"[client:adc_data]: data0 = %d
\n
"
,
(
int16_t
)
adc_data
);
err
=
bpm_get_adc_data1
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH1"
,
&
adc_data
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_adc_data1 failed
\n
"
);
goto
err_get_adc_data
;
}
fprintf
(
stdout
,
"[client:adc_data]: data1 = %d
\n
"
,
(
int16_t
)
adc_data
);
err
=
bpm_get_adc_data2
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH1"
,
&
adc_data
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_adc_data2 failed
\n
"
);
goto
err_get_adc_data
;
}
fprintf
(
stdout
,
"[client:adc_data]: data2 = %d
\n
"
,
(
int16_t
)
adc_data
);
err
=
bpm_get_adc_data3
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH1"
,
&
adc_data
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
fprintf
(
stderr
,
"[client:acq]: bpm_get_adc_data3 failed
\n
"
);
goto
err_get_adc_data
;
}
fprintf
(
stdout
,
"[client:adc_data]: data3 = %d
\n
"
,
(
int16_t
)
adc_data
);
err_get_adc_data:
bpm_client_destroy
(
&
bpm_client
);
str_p
=
&
broker_endp
;
free
(
*
str_p
);
broker_endp
=
NULL
;
return
0
;
}
examples/adc_dly.c
View file @
0ccb4338
...
...
@@ -13,11 +13,20 @@
#define DFLT_BIND_FOLDER "/tmp/bpm"
/* Default value definitions */
#define DEFAULT_ADC_DLY_VALUE 10
#define DFLT_BPM_NUMBER 0
#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
#define DEFAULT_CHAN_NUM 0
#define DFLT_CHAN_NUM 0
#define MAX_CHAN_NUM 3
/* 0-3 */
#define DEFAULT_LINES_NUM 1
/* DATA */
#define DFLT_LINES_NUM 1
/* DATA */
#define MAX_LINES_NUM 3
/* DATA + CLOCK */
void
print_help
(
char
*
program_name
)
...
...
@@ -26,6 +35,8 @@ void print_help (char *program_name)
"
\t
-h This help message
\n
"
"
\t
-v Verbose output
\n
"
"
\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
"
"
\t
-ch <channel> ADC channel
\n
"
"
\t
-lines <delay_lines> ADC delay lines (1 = data, 2 = clock, 3 = both)
\n
"
"
\t
-val <delay_value> ADC delay value (0-31)
\n
"
...
...
@@ -36,6 +47,8 @@ int main (int argc, char *argv [])
{
int
verbose
=
0
;
char
*
broker_endp
=
NULL
;
char
*
board_number_str
=
NULL
;
char
*
bpm_number_str
=
NULL
;
char
*
chan_str
=
NULL
;
char
*
lines_str
=
NULL
;
char
*
dly_val_str
=
NULL
;
...
...
@@ -63,6 +76,14 @@ int main (int argc, char *argv [])
else
if
(
streq
(
argv
[
i
],
"-b"
))
{
str_p
=
&
broker_endp
;
}
else
if
(
streq
(
argv
[
i
],
"-board"
))
{
str_p
=
&
board_number_str
;
}
else
if
(
streq
(
argv
[
i
],
"-bpm"
))
{
str_p
=
&
bpm_number_str
;
}
else
if
(
streq
(
argv
[
i
],
"-ch"
))
{
/* ch: channel */
str_p
=
&
chan_str
;
}
...
...
@@ -83,14 +104,46 @@ 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 board number */
uint32_t
board_number
;
if
(
board_number_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:leds]: 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
);
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 */
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
;
}
}
/* Set default channel */
uint32_t
chan
;
if
(
chan_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:adc_dly]: Setting default value to: %u
\n
"
,
D
EFAU
LT_CHAN_NUM
);
chan
=
D
EFAU
LT_CHAN_NUM
;
D
F
LT_CHAN_NUM
);
chan
=
D
F
LT_CHAN_NUM
;
}
else
{
chan
=
strtoul
(
chan_str
,
NULL
,
10
);
...
...
@@ -107,8 +160,8 @@ int main (int argc, char *argv [])
uint32_t
lines
=
0
;
if
(
lines_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:adc_dly]: Setting default ADC lines to: %u
\n
"
,
D
EFAU
LT_LINES_NUM
);
lines
=
D
EFAU
LT_LINES_NUM
;
D
F
LT_LINES_NUM
);
lines
=
D
F
LT_LINES_NUM
;
}
else
{
lines
=
strtoul
(
lines_str
,
NULL
,
10
);
...
...
@@ -125,8 +178,8 @@ int main (int argc, char *argv [])
uint32_t
dly_val
=
0
;
if
(
dly_val_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:adc_dly]: Setting default ADC delay value to: %u
\n
"
,
D
EFAU
LT_ADC_DLY_VALUE
);
dly_val
=
D
EFAU
LT_ADC_DLY_VALUE
;
D
F
LT_ADC_DLY_VALUE
);
dly_val
=
D
F
LT_ADC_DLY_VALUE
;
}
else
{
dly_val
=
strtoul
(
dly_val_str
,
NULL
,
10
);
...
...
@@ -139,26 +192,39 @@ int main (int argc, char *argv [])
}
fprintf
(
stdout
,
"[client:adc_dly]: ADC delay value = %u
\n
"
,
dly_val
);
/* Call the appropriate delay fucntion. FIXME: the case construct is
char
service
[
50
];
sprintf
(
service
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
/* Call the appropriate delay function. FIXME: the case construct is
* not generic nor expansible */
switch
(
chan
)
{
case
0
:
bpm_set_adc_dly0
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
lines
,
dly_val
);
bpm_set_adc_dly0
(
bpm_client
,
service
,
lines
,
dly_val
);
break
;
case
1
:
bpm_set_adc_dly1
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
lines
,
dly_val
);
bpm_set_adc_dly1
(
bpm_client
,
service
,
lines
,
dly_val
);
break
;
case
2
:
bpm_set_adc_dly2
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
lines
,
dly_val
);
bpm_set_adc_dly2
(
bpm_client
,
service
,
lines
,
dly_val
);
break
;
case
3
:
bpm_set_adc_dly3
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
lines
,
dly_val
);
bpm_set_adc_dly3
(
bpm_client
,
service
,
lines
,
dly_val
);
break
;
default:
bpm_set_adc_dly0
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
lines
,
dly_val
);
bpm_set_adc_dly0
(
bpm_client
,
service
,
lines
,
dly_val
);
break
;
}
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
=
&
chan_str
;
free
(
*
str_p
);
chan_str
=
NULL
;
...
...
@@ -168,7 +234,6 @@ int main (int argc, char *argv [])
str_p
=
&
broker_endp
;
free
(
*
str_p
);
broker_endp
=
NULL
;
bpm_client_destroy
(
&
bpm_client
);
return
0
;
}
examples/dsp_swap.c
View file @
0ccb4338
...
...
@@ -107,7 +107,7 @@ int main (int argc, char *argv [])
fprintf
(
stdout
,
"[client:dsp]: bpm_get_ky = %u was successfully executed
\n
"
,
ky_get
);
uint32_t
ksum_set
=
0x
0F
FFFFF
;
// 1.0 FIX25_24;
uint32_t
ksum_set
=
0x
7
FFFFF
;
// 1.0 FIX25_24;
fprintf
(
stdout
,
"[client:dsp]: ksum = %u
\n
"
,
ksum_set
);
err
=
bpm_set_ksum
(
bpm_client
,
"BPM0:DEVIO:DSP0"
,
ksum_set
);
if
(
err
!=
BPM_CLIENT_SUCCESS
){
...
...
examples/leds.c
View file @
0ccb4338
...
...
@@ -11,11 +11,19 @@
#define DFLT_BIND_FOLDER "/tmp/bpm"
#define DFLT_BPM_NUMBER 0
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
void
print_help
(
char
*
program_name
)
{
printf
(
"Usage: %s [options]
\n
"
"
\t
-h This help message
\n
"
"
\t
-v Verbose output
\n
"
"
\t
-board <AMC board = [0|1|2|3|4|5]>
\n
"
"
\t
-bpm <BPM number = [0|1]>
\n
"
"
\t
-b <broker_endpoint> Broker endpoint
\n
"
,
program_name
);
}
...
...
@@ -23,7 +31,9 @@ int main (int argc, char *argv [])
{
int
verbose
=
0
;
char
*
broker_endp
=
NULL
;
char
**
str_p
;
char
*
board_number_str
=
NULL
;
char
*
bpm_number_str
=
NULL
;
char
**
str_p
=
NULL
;
if
(
argc
<
2
)
{
print_help
(
argv
[
0
]);
...
...
@@ -44,6 +54,14 @@ int main (int argc, char *argv [])
print_help
(
argv
[
0
]);
exit
(
1
);
}
else
if
(
streq
(
argv
[
i
],
"-board"
))
{
str_p
=
&
board_number_str
;
}
else
if
(
streq
(
argv
[
i
],
"-bpm"
))
{
str_p
=
&
bpm_number_str
;
}
else
if
(
streq
(
argv
[
i
],
"-b"
))
{
str_p
=
&
broker_endp
;
}
...
...
@@ -58,6 +76,43 @@ 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:leds]: 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
);
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 */
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
];
sprintf
(
service
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
for
(
i
=
0
;
i
<
32768
;
++
i
)
{
...
...
@@ -68,15 +123,22 @@ int main (int argc, char *argv [])
break
;
}
bpm_blink_leds
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
leds
);
usleep
(
8
0000
);
bpm_blink_leds
(
bpm_client
,
service
,
leds
);
usleep
(
40
0000
);
leds
<<=
1
;
}
}
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/test_data_en.c
View file @
0ccb4338
...
...
@@ -10,14 +10,23 @@
#include <bpm_client.h>
#define DFLT_BIND_FOLDER "/tmp/bpm"
#define DEFAULT_TEST_DATA_EN 0
#define DFLT_TEST_DATA_EN 0
#define MAX_TEST_DATA_EN 1
#define DFLT_BPM_NUMBER 0
#define MAX_BPM_NUMBER 1
#define DFLT_BOARD_NUMBER 0
#define MAX_BOARD_NUMBER 5
void
print_help
(
char
*
program_name
)
{
printf
(
"Usage: %s [options]
\n
"
"
\t
-h This help message
\n
"
"
\t
-v Verbose output
\n
"
"
\t
-board <AMC board = [0|1|2|3|4|5]>
\n
"
"
\t
-bpm <BPM number = [0|1]>
\n
"
"
\t
-e <[0|1]> Enable or disable TEST data
\n
"
"
\t
-b <broker_endpoint> Broker endpoint
\n
"
,
program_name
);
}
...
...
@@ -26,6 +35,8 @@ int main (int argc, char *argv [])
{
int
verbose
=
0
;
char
*
broker_endp
=
NULL
;
char
*
board_number_str
=
NULL
;
char
*
bpm_number_str
=
NULL
;
char
*
test_data_en_str
=
NULL
;
char
**
str_p
=
NULL
;
...
...
@@ -48,6 +59,14 @@ int main (int argc, char *argv [])
print_help
(
argv
[
0
]);
exit
(
1
);
}
else
if
(
streq
(
argv
[
i
],
"-board"
))
{
str_p
=
&
board_number_str
;
}
else
if
(
streq
(
argv
[
i
],
"-bpm"
))
{
str_p
=
&
bpm_number_str
;
}
else
if
(
streq
(
argv
[
i
],
"-e"
))
{
str_p
=
&
test_data_en_str
;
}
...
...
@@ -65,11 +84,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:leds]: 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
);
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 */
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
;
}
}
/* Set test data enable default */
uint32_t
test_data_en
;
if
(
test_data_en_str
==
NULL
)
{
fprintf
(
stderr
,
"[client:test_data_en]: Setting test DATA enable to 0
\n
"
);
test_data_en
=
D
EFAU
LT_TEST_DATA_EN
;
test_data_en
=
D
F
LT_TEST_DATA_EN
;
}
else
{
test_data_en
=
strtoul
(
test_data_en_str
,
NULL
,
10
);
...
...
@@ -82,12 +135,23 @@ int main (int argc, char *argv [])
}
fprintf
(
stdout
,
"[client:test_data_en]: test_data_en = %u
\n
"
,
test_data_en
);
char
service
[
50
];
sprintf
(
service
,
"BPM%u:DEVIO:FMC130M_4CH%u"
,
board_number
,
bpm_number
);
bpm_client_t
*
bpm_client
=
bpm_client_new
(
broker_endp
,
verbose
,
NULL
);
/* Test data enable */
bpm_set_adc_test_data_en
(
bpm_client
,
"BPM0:DEVIO:FMC130M_4CH0"
,
test_data_en
);
bpm_set_adc_test_data_en
(
bpm_client
,
service
,
test_data_en
);
/* Cleanup */
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
=
&
test_data_en_str
;
free
(
*
str_p
);
test_data_en_str
=
NULL
;
...
...
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