Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Jens Krüger
Lima
Commits
a93a23b5
Commit
a93a23b5
authored
Nov 16, 2012
by
Roberto Arturo Homs-Regojo
Browse files
Merge remote branch 'remotes/origin/master'
parents
8d8f8688
1edfe550
Changes
10
Hide whitespace changes
Inline
Side-by-side
.gitmodules
View file @
a93a23b5
...
...
@@ -79,3 +79,6 @@
[submodule "camera/rayonixhs"]
path = camera/rayonixhs
url = git://github.com/esrf-bliss/Lima-camera-rayonixhs
[submodule "camera/andor3"]
path = camera/andor3
url = git://github.com:esrf-bliss/Lima-camera-andor3.git
build/Makefile
View file @
a93a23b5
...
...
@@ -57,7 +57,7 @@ create-links = \
############################
CORE_LDFLAGS
:=
-L
../third-party/Processlib/build
CORE_LDLIBS
:=
-lprocesslib
CORE_LDLIBS
:=
-lprocesslib
-lrt
ifneq
($(COMPILE_CBF_SAVING),0)
CORE_LDFLAGS
+=
-L
../third-party/CBFLib/lib
...
...
andor3
@
f3608545
Subproject commit f36085451d71d98f36ab31722af424978cc6377c
camera/simulator/test/Makefile
View file @
a93a23b5
...
...
@@ -37,7 +37,7 @@ SRCS = $(test-objs:.o=.cpp) $(testsimulator-objs:.o=.cpp) \
INC
=
-I
../include
-I
../../../common/include
-I
../../../hardware/include
-I
../../../third-party/Processlib/core/include
CXXFLAGS
+=
$(INC)
-Wall
-pthread
-g
LDFLAGS
=
-L
../../../third-party/Processlib/build
-lprocesslib
-pthread
LDFLAGS
=
-L
../../../third-party/Processlib/build
-lprocesslib
-pthread
-lrt
all
:
test testsimulator testsimuhwinterface
...
...
xpad
@
ff2b40cc
Compare
4f998444
...
ff2b40cc
Subproject commit
4f9984446624d38445a2efec20772bc52a272bdb
Subproject commit
ff2b40cc47be0b62f486e4cdb75b6c2bc5d562c8
common/include/Timer.h
0 → 100644
View file @
a93a23b5
//###########################################################################
// This file is part of LImA, a Library for Image Acquisition
//
// Copyright (C) : 2009-2011
// European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
// This is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, see <http://www.gnu.org/licenses/>.
//###########################################################################
#ifndef TIMER_H
#define TIMER_H
#include
"ThreadUtils.h"
#ifdef WIN32
#else // unix
#include
<features.h>
#if (_POSIX_C_SOURCE - 0) >= 199309L
#include
<time.h>
#include
<signal.h>
namespace
lima
{
class
Timer
{
public:
enum
Stat
{
DOWN
,
DELAY
,
UP
,
RISING_EDGE
,
FALLING_EDGE
};
class
Callback
{
friend
class
Timer
;
protected:
virtual
void
start
()
{}
virtual
void
risingEdge
()
{}
virtual
void
fallingEdge
()
{}
virtual
void
end
()
{}
};
Timer
(
Callback
*
=
NULL
);
~
Timer
();
void
delayStart
(
double
delay
,
double
uptime
,
int
nb_iter
=
1
,
double
latency
=
0.
);
void
start
(
double
uptime
,
int
nb_iter
=
1
,
double
latency
=
0.
);
void
stop
();
private:
static
void
_rising_handle
(
union
sigval
);
friend
void
_rising_handle
(
union
sigval
);
static
void
_falling_handle
(
union
sigval
);
friend
void
_falling_handle
(
union
sigval
);
void
_stop
();
timer_t
m_rising_timer_id
;
timer_t
m_falling_timer_id
;
int
m_iter
;
Callback
*
m_callback
;
Mutex
m_mutex
;
Stat
m_stat
;
};
}
#else
#warning Timer not implemented
#endif
#endif // WIN32
#endif
common/sip/Timer.sip
0 → 100644
View file @
a93a23b5
//###########################################################################
// This file is part of LImA, a Library for Image Acquisition
//
// Copyright (C) : 2009-2011
// European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
// This is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, see <http://www.gnu.org/licenses/>.
//###########################################################################
class Timer
{
%TypeHeaderCode
#include <Timer.h>
%End
public:
enum Stat {DOWN,UP,RISING_EDGE,FALLING_EDGE};
class Callback
{
protected:
virtual void start();
virtual void risingEdge();
virtual void fallingEdge();
virtual void end();
};
Timer(Timer::Callback* = NULL);
~Timer();
void delayStart(double delay,double uptime,
int nb_iter = 1,double latency = 0.);
void start(double uptime,int nb_iter = 1,double latency = 0.);
void stop();
};
common/src/Makefile
View file @
a93a23b5
...
...
@@ -20,7 +20,8 @@
# along with this program; if not, see <http://www.gnu.org/licenses/>.
############################################################################
common-objs
:=
Constants.o SizeUtils.o Timestamp.o ThreadUtils.o Exceptions.o
\
MemUtils.o RegExUtils.o AcqState.o Debug.o VideoUtils.o Event.o
MemUtils.o RegExUtils.o AcqState.o Debug.o VideoUtils.o Event.o
\
Timer.o
SRCS
=
$
(
common-objs:.o
=
.cpp
)
...
...
common/src/Timer.cpp
0 → 100644
View file @
a93a23b5
//###########################################################################
// This file is part of LImA, a Library for Image Acquisition
//
// Copyright (C) : 2009-2011
// European Synchrotron Radiation Facility
// BP 220, Grenoble 38043
// FRANCE
//
// This is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This software is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, see <http://www.gnu.org/licenses/>.
//###########################################################################
#include
"Timer.h"
#ifdef WIN32
#else // unix
#if (_POSIX_C_SOURCE - 0) >= 199309L
using
namespace
lima
;
/** @brief Timer constructor
*/
Timer
::
Timer
(
Timer
::
Callback
*
callback
)
:
m_callback
(
callback
),
m_stat
(
DOWN
)
{
struct
sigevent
sev
;
sev
.
sigev_notify
=
SIGEV_THREAD
;
sev
.
sigev_signo
=
SIGRTMIN
;
sev
.
sigev_value
.
sival_ptr
=
this
;
sev
.
sigev_notify_function
=
Timer
::
_rising_handle
;
sev
.
sigev_notify_attributes
=
NULL
;
timer_create
(
CLOCK_REALTIME
,
&
sev
,
&
m_rising_timer_id
);
sev
.
sigev_notify_function
=
Timer
::
_falling_handle
;
timer_create
(
CLOCK_REALTIME
,
&
sev
,
&
m_falling_timer_id
);
}
/** @brief Timer destructor
*/
Timer
::~
Timer
()
{
timer_delete
(
m_rising_timer_id
);
timer_delete
(
m_falling_timer_id
);
}
/** @brief similare to start by with a delay
@see Timer::start
*/
void
Timer
::
delayStart
(
double
delay
,
double
uptime
,
int
nb_tick
,
double
latency
)
{
m_iter
=
nb_tick
;
struct
itimerspec
rising_value
;
struct
itimerspec
falling_value
;
time_t
second
=
time_t
(
delay
);
rising_value
.
it_value
.
tv_sec
=
second
;
rising_value
.
it_value
.
tv_nsec
=
long
((
delay
-
second
)
*
1e9
);
double
nextRising
=
uptime
+
latency
;
second
=
time_t
(
nextRising
);
rising_value
.
it_interval
.
tv_sec
=
second
;
rising_value
.
it_interval
.
tv_nsec
=
long
((
nextRising
-
second
)
*
1e9
);
falling_value
.
it_interval
=
rising_value
.
it_interval
;
double
nextFalling
=
delay
+
uptime
;
second
=
time_t
(
nextFalling
);
falling_value
.
it_value
.
tv_sec
=
second
;
falling_value
.
it_value
.
tv_nsec
=
long
((
nextFalling
-
second
)
*
1e9
);
if
(
m_callback
)
m_callback
->
start
();
AutoMutex
lock
(
m_mutex
);
m_stat
=
DELAY
;
timer_settime
(
m_rising_timer_id
,
0
,
&
rising_value
,
NULL
);
timer_settime
(
m_falling_timer_id
,
0
,
&
falling_value
,
NULL
);
}
/** @brief start timer.
This will create a periodic signal during nb tick with an uptime and a latency (all in second)
@param uptime the time between a RISING_EDGE and a FALLING_EDGE
@param nb_tick the total period of the signal if <= 0 infinite
@param latency the time between a FALLING_EDGE and a RISING_EDGE
*/
void
Timer
::
start
(
double
uptime
,
int
nb_tick
,
double
latency
)
{
m_iter
=
nb_tick
;
struct
itimerspec
falling_value
;
struct
itimerspec
rising_value
;
time_t
second
=
time_t
(
uptime
);
falling_value
.
it_value
.
tv_sec
=
second
;
falling_value
.
it_value
.
tv_nsec
=
long
((
uptime
-
second
)
*
1e9
);
if
(
nb_tick
!=
1
)
{
double
nextRising
=
uptime
+
latency
;
second
=
time_t
(
nextRising
);
falling_value
.
it_interval
.
tv_sec
=
second
;
falling_value
.
it_interval
.
tv_nsec
=
long
((
nextRising
-
second
)
*
1e9
);
rising_value
.
it_value
=
rising_value
.
it_interval
=
falling_value
.
it_interval
;
}
else
{
rising_value
.
it_value
.
tv_sec
=
falling_value
.
it_interval
.
tv_sec
=
0
;
rising_value
.
it_value
.
tv_nsec
=
falling_value
.
it_interval
.
tv_nsec
=
0
;
}
AutoMutex
lock
(
m_mutex
);
m_stat
=
RISING_EDGE
;
lock
.
unlock
();
if
(
m_callback
)
{
m_callback
->
start
();
m_callback
->
risingEdge
();
}
lock
.
lock
();
if
(
m_stat
==
RISING_EDGE
)
{
m_stat
=
UP
;
timer_settime
(
m_falling_timer_id
,
0
,
&
falling_value
,
NULL
);
timer_settime
(
m_rising_timer_id
,
0
,
&
rising_value
,
NULL
);
}
}
void
Timer
::
stop
()
{
AutoMutex
lock
(
m_mutex
);
_stop
();
}
void
Timer
::
_stop
()
{
struct
itimerspec
value
;
value
.
it_value
.
tv_sec
=
value
.
it_interval
.
tv_sec
=
0
;
value
.
it_value
.
tv_nsec
=
value
.
it_interval
.
tv_nsec
=
0
;
timer_settime
(
m_falling_timer_id
,
0
,
&
value
,
NULL
);
timer_settime
(
m_rising_timer_id
,
0
,
&
value
,
NULL
);
if
(
m_callback
&&
m_stat
!=
FALLING_EDGE
)
m_callback
->
fallingEdge
();
if
(
m_callback
&&
m_stat
!=
DOWN
)
m_callback
->
end
();
m_stat
=
DOWN
;
}
void
Timer
::
_rising_handle
(
union
sigval
usr_arg
)
{
Timer
*
self
=
(
Timer
*
)
usr_arg
.
sival_ptr
;
AutoMutex
lock
(
self
->
m_mutex
);
self
->
m_stat
=
Timer
::
RISING_EDGE
;
lock
.
unlock
();
if
(
self
->
m_callback
)
self
->
m_callback
->
risingEdge
();
lock
.
lock
();
if
(
self
->
m_stat
==
Timer
::
RISING_EDGE
)
self
->
m_stat
=
Timer
::
UP
;
}
void
Timer
::
_falling_handle
(
union
sigval
usr_arg
)
{
Timer
*
self
=
(
Timer
*
)
usr_arg
.
sival_ptr
;
AutoMutex
lock
(
self
->
m_mutex
);
self
->
m_stat
=
Timer
::
FALLING_EDGE
;
lock
.
unlock
();
if
(
self
->
m_callback
)
self
->
m_callback
->
fallingEdge
();
lock
.
lock
();
if
(
self
->
m_iter
>
0
&&
!--
self
->
m_iter
)
self
->
_stop
();
}
#endif // _POSIX_C_SOURCE
#endif // unix
common/test/Makefile
View file @
a93a23b5
...
...
@@ -22,7 +22,7 @@
SRCS
=
testregex.cpp
CXXFLAGS
=
-Wall
-I
../include
-pthread
-g
LDFLAGS
=
-pthread
LDFLAGS
=
-pthread
-lrt
all
:
testregex
...
...
Write
Preview
Supports
Markdown
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