summaryrefslogtreecommitdiffstats
path: root/src/ufo-roof-config.h
diff options
context:
space:
mode:
authorSuren A. Chilingaryan <csa@suren.me>2020-01-26 08:14:32 +0100
committerSuren A. Chilingaryan <csa@suren.me>2020-01-26 08:14:32 +0100
commitea424f096c05a9587ffaa0bc6e5392790a046bd7 (patch)
tree01d0f9c596ebea229e6a8e2774a7a69a502a3488 /src/ufo-roof-config.h
parent02b452a86d11655002fdfbb1566ef494e2c954d2 (diff)
downloadufo-roof-ea424f096c05a9587ffaa0bc6e5392790a046bd7.tar.gz
ufo-roof-ea424f096c05a9587ffaa0bc6e5392790a046bd7.tar.bz2
ufo-roof-ea424f096c05a9587ffaa0bc6e5392790a046bd7.tar.xz
ufo-roof-ea424f096c05a9587ffaa0bc6e5392790a046bd7.zip
Build ROOF sinograms
Diffstat (limited to 'src/ufo-roof-config.h')
-rw-r--r--src/ufo-roof-config.h43
1 files changed, 32 insertions, 11 deletions
diff --git a/src/ufo-roof-config.h b/src/ufo-roof-config.h
index f90c5f3..b6ee748 100644
--- a/src/ufo-roof-config.h
+++ b/src/ufo-roof-config.h
@@ -4,30 +4,51 @@
#include <glib.h>
typedef struct {
+ // ROOF Hardware
+ gboolean roof_mode; // Indicates if ROOF is configured (1), otherwise only networking is implemented
+ guint n_planes; // Number of detector planes, ROOF module serves a ring segment from all planes in a round-robin fashion
+ guint n_modules; // Number of ROOF modules
+ guint channels_per_module; // Number of pixels in each module
+ guint samples_per_rotation; // Number of samples (projections) in a full fan sinogram; computed from sample_rate & image_rate if given
+ guint sample_rate; // Number of samples (projections) acquired per second, 0 - if unknown
+ guint imaging_rate; // Number of complete datasets (images) acquired per second, 0 - if unknown
+ guint bit_depth; // Number of bits per pixel (we currently support only multiples of 8)
+
+ // Geometry
+ guint fan_projections; // Number of fan projections = samples_per_rotation
+ guint fan_bins; // Number of fan detectors = n_modules * channels_per_module
+ guint parallel_projections;
+ guint parallel_bins;
+// guint detector_diameter;
+
+ // Optics
+
+
+ // Network Server / Reader
gchar *path; // Location of data files for simmulation purposes (i.e. reading a sequence of files instead listening on the corresponding ports)
guint first_file_number; // Indicates if the numbering of files starts at 0 or 1
gchar *protocol; // Protocols: tcp, udp, tcp6, udp6, ...
guint port; // First port
- guint n_streams; // Number of independent data streams (expected on sequential ports)
+ guint n_streams; // Number of independent data streams (expected on sequential ports), by default equal to number of ROOF modules
guint header_size; // Expected size of the packet header, for dgram protocols we need at least 32-bit sequence number. Defaults to uint32_t for udp* and 0 - otherwise
guint payload_size; // Expected size of TCP/UDP packet (without header)
- guint dataset_size; // Size of a single dataset (image, sinogram, etc.). This is real size in bytes, excluding all technical headers used in communication protocol.
+ guint dataset_size; // Size of a single dataset (image, sinogram, etc.). This is real size in bytes, excluding all technical headers used in communication protocol. Normally, it is computed based on ROOF hardware parameters.
+
+ // Performance parameters
+ guint max_packets; // limits maximum number of packets which are read at once
+ guint max_packet_size; // payload_size + header_size + ... (we don't care if tail is variable length provided that the complete packet does not exceed max_packet_size bytes)
+ guint buffer_size; // How many datasets we can buffer. There is no sense to have more than 2 for odered protocols (default), but having larger number could help for UDP if significant order disturbances are expected
+ guint drop_buffers; // If we are slow and lost some buffers, we may drop more than minimally necessary to catch up.
+ guint network_timeout; // Maximum time (us) to wait for data on the socket
+
-//?
/*
- guint pixels_per_module;
guint planes_per_module;
- guint samples_per_dataset;
*/
- guint max_packets; // limits maximum number of packets which are read at once
- guint max_packet_size; // payload_size + header_size + ...?
- guint buffer_size; // How many datasets we can buffer. There is no sense to have more than 2 for odered protocols (default), but having larger number could help for UDP if significant order disturbances are expected
- guint drop_buffers; // If we are slow and lost some buffers, we may drop more than minimally necessary to catch up.
- guint network_timeout; // Maximum time (us) to wait for data on the socket
-
+
} UfoRoofConfig;