SlsDetectorReceiver.h 2.28 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//###########################################################################
// 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 __SLS_DETECTOR_RECEIVER_H
#define __SLS_DETECTOR_RECEIVER_H

26
#include "SlsDetectorFrameMap.h"
27
#include "SlsDetectorModel.h"
28
29

#include "sls/Receiver.h"
30
31
32
33
34
35
36
37
38
39
40
41
42
43

namespace lima 
{

namespace SlsDetector
{

class Camera;

class Receiver 
{
	DEB_CLASS_NAMESPC(DebModCamera, "Receiver", "SlsDetector");

public:
44
45
46
	typedef slsDetectorDefs::sls_detector_header sls_detector_header;
	typedef slsDetectorDefs::sls_receiver_header sls_receiver_header;
	typedef slsDetectorDefs::receiver_image_data ImageData;
47

48
49
50
51
	Receiver(Camera *cam, int idx, int rx_port);
	~Receiver();

	void start();
52

53
54
55
	void setGapPixelsEnable(bool enable)
	{ m_gap_pixels_enable = enable; }

56
57
	void prepareAcq();

58
59
	void setCPUAffinity(const RecvCPUAffinity& recv_affinity);

60
61
62
63
	bool getImage(ImageData& image_data);
	
	SlsDetector::Stats& getStats()
	{ return m_stats.stats; }
64

65
66
67
	void clearAllBuffers()
	{ m_recv->clearAllBuffers(); }

68
69
70
private:
	friend class Camera;

71
72
73
74
75
76
77
78
79
	struct Stats {
		SlsDetector::Stats stats;
		Timestamp last_t0;
		Timestamp last_t1;
		void reset()
		{
			stats.reset();
			last_t0 = last_t1 = Timestamp();
		}
80
	};
81

82
	bool readRecvImage(ImageData *image_data);
83

84
85
86
87
	Camera *m_cam;
	int m_idx;
	int m_rx_port;
	Args m_args;
88
89
	bool m_gap_pixels_enable;
	AutoPtr<sls::Receiver> m_recv;
90
	Stats m_stats;
91
92
93
94
95
96
97
98
99
}; 


} // namespace SlsDetector

} // namespace lima


#endif // __SLS_DETECTOR_RECEIVER_H