Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
F
FMC TDC 1ns 5cha - 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
FMC TDC 1ns 5cha - Software
Commits
99ac1e1c
Commit
99ac1e1c
authored
Apr 09, 2015
by
Federico Vaga
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lib: export function to set/get buffer lenght/mode
Signed-off-by:
Federico Vaga
<
federico.vaga@cern.ch
>
parent
969d7208
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
121 additions
and
1 deletion
+121
-1
fmctdc-lib.c
lib/fmctdc-lib.c
+106
-0
fmctdc-lib.h
lib/fmctdc-lib.h
+15
-1
No files found.
lib/fmctdc-lib.c
View file @
99ac1e1c
...
@@ -369,6 +369,112 @@ int fmctdc_set_acquisition(struct fmctdc_board *userb, int on)
...
@@ -369,6 +369,112 @@ int fmctdc_set_acquisition(struct fmctdc_board *userb, int on)
return
fmctdc_sysfs_set
(
b
,
"enable_inputs"
,
&
val
);
return
fmctdc_sysfs_set
(
b
,
"enable_inputs"
,
&
val
);
}
}
/**
* The function returns current buffer mode: 0 for FIFO, 1 for circular buffer.
* @param[in] userb TDC board instance token
* @param[in] channel to use
* @return buffer mode, otherwise a negative errno code is set
* appropriately
*/
int
fmctdc_get_buffer_mode
(
struct
fmctdc_board
*
userb
,
unsigned
int
channel
)
{
__define_board
(
b
,
userb
);
uint32_t
val
;
char
attr
[
64
];
int
ret
;
if
(
channel
>=
FMCTDC_NUM_CHANNELS
)
{
errno
=
EINVAL
;
return
-
1
;
}
snprintf
(
attr
,
sizeof
(
attr
),
"ft-ch%d/chan0/buffer/prefer-new"
,
channel
+
1
);
ret
=
fmctdc_sysfs_get
(
b
,
attr
,
&
val
);
if
(
ret
)
return
ret
;
return
val
;
}
/**
* The function sets the buffer mode for a channel
* @param[in] userb TDC board instance token
* @param[in] channel to use
* @param[in] mode buffer mode to use
* @return 0 on success, otherwise a negative errno code is set
* appropriately
*/
int
fmctdc_set_buffer_mode
(
struct
fmctdc_board
*
userb
,
unsigned
int
channel
,
enum
fmctdc_buffer_mode
mode
)
{
__define_board
(
b
,
userb
);
uint32_t
val
;
char
attr
[
64
];
if
(
channel
>=
FMCTDC_NUM_CHANNELS
)
{
errno
=
EINVAL
;
return
-
1
;
}
snprintf
(
attr
,
sizeof
(
attr
),
"ft-ch%d/chan0/buffer/prefer-new"
,
channel
+
1
);
val
=
mode
;
return
fmctdc_sysfs_set
(
b
,
attr
,
&
val
);
}
/**
* The function returns current buffer lenght (number of timestamps)
* @param[in] userb TDC board instance token
* @param[in] channel to use
* @return buffer lenght, otherwise a negative errno code is set
* appropriately
*/
int
fmctdc_get_buffer_len
(
struct
fmctdc_board
*
userb
,
unsigned
int
channel
)
{
__define_board
(
b
,
userb
);
uint32_t
val
;
char
attr
[
64
];
int
ret
;
if
(
channel
>=
FMCTDC_NUM_CHANNELS
)
{
errno
=
EINVAL
;
return
-
1
;
}
snprintf
(
attr
,
sizeof
(
attr
),
"ft-ch%d/chan0/buffer/max-buffer-len"
,
channel
+
1
);
ret
=
fmctdc_sysfs_get
(
b
,
attr
,
&
val
);
if
(
ret
)
return
ret
;
return
val
;
}
/**
* The function set the buffer lenght
* @param[in] userb TDC board instance token
* @param[in] channel to use
* @param[in] lenght maximum number of timestamps to store
* @return 0 on success, otherwise a negative errno code is set
* appropriately
*/
int
fmctdc_set_buffer_len
(
struct
fmctdc_board
*
userb
,
unsigned
int
channel
,
unsigned
int
lenght
)
{
__define_board
(
b
,
userb
);
uint32_t
val
;
char
attr
[
64
];
if
(
channel
>=
FMCTDC_NUM_CHANNELS
)
{
errno
=
EINVAL
;
return
-
1
;
}
snprintf
(
attr
,
sizeof
(
attr
),
"ft-ch%d/chan0/buffer/max-buffer-len"
,
channel
+
1
);
val
=
lenght
;
return
fmctdc_sysfs_set
(
b
,
attr
,
&
val
);
}
/**
/**
* It opens a TDC channel. Internally, it opens the ZIO control channel
* It opens a TDC channel. Internally, it opens the ZIO control channel
...
...
lib/fmctdc-lib.h
View file @
99ac1e1c
...
@@ -25,6 +25,11 @@ enum fmctdc_channel {
...
@@ -25,6 +25,11 @@ enum fmctdc_channel {
FMCTDC_NUM_CHANNELS
=
5
FMCTDC_NUM_CHANNELS
=
5
};
};
enum
fmctdc_buffer_mode
{
FMCTDC_BUFFER_FIFO
=
0
,
FMCTDC_BUFFER_CIRC
,
};
/**
/**
* Opaque data type used as token
* Opaque data type used as token
*/
*/
...
@@ -82,7 +87,16 @@ extern int fmctdc_get_acquisition(struct fmctdc_board *b);
...
@@ -82,7 +87,16 @@ extern int fmctdc_get_acquisition(struct fmctdc_board *b);
extern
int
fmctdc_set_termination
(
struct
fmctdc_board
*
b
,
unsigned
int
channel
,
extern
int
fmctdc_set_termination
(
struct
fmctdc_board
*
b
,
unsigned
int
channel
,
int
enable
);
int
enable
);
extern
int
fmctdc_get_termination
(
struct
fmctdc_board
*
b
,
unsigned
int
channel
);
extern
int
fmctdc_get_termination
(
struct
fmctdc_board
*
b
,
unsigned
int
channel
);
extern
int
fmctdc_get_buffer_mode
(
struct
fmctdc_board
*
userb
,
unsigned
int
channel
);
extern
int
fmctdc_set_buffer_mode
(
struct
fmctdc_board
*
userb
,
unsigned
int
channel
,
enum
fmctdc_buffer_mode
mode
);
extern
int
fmctdc_get_buffer_len
(
struct
fmctdc_board
*
userb
,
unsigned
int
channel
);
extern
int
fmctdc_set_buffer_len
(
struct
fmctdc_board
*
userb
,
unsigned
int
channel
,
unsigned
int
lenght
);
extern
int
fmctdc_fread
(
struct
fmctdc_board
*
b
,
unsigned
int
channel
,
extern
int
fmctdc_fread
(
struct
fmctdc_board
*
b
,
unsigned
int
channel
,
struct
fmctdc_time
*
t
,
int
n
);
struct
fmctdc_time
*
t
,
int
n
);
extern
int
fmctdc_fileno_channel
(
struct
fmctdc_board
*
b
,
unsigned
int
channel
);
extern
int
fmctdc_fileno_channel
(
struct
fmctdc_board
*
b
,
unsigned
int
channel
);
...
...
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