areaDetector 3-14
EPICS areaDetector framework
stream2.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdbool.h>
4#include <stddef.h>
5#include <stdint.h>
6
7#if defined(__cplusplus)
8extern "C" {
9#endif
10
19
20// https://github.com/dectris/documentation/blob/main/cbor/dectris-compression-tag.md
22 // Name of compression algorithm used.
23 char* algorithm;
24 // Element size if required for decompression, reserved otherwise.
25 // Required by algorithm "bslz4".
26 uint64_t elem_size;
27 // Uncompressed size of the data.
28 uint64_t orig_size;
29};
30
31// Represents a byte string, possibly compressed.
33 const uint8_t* ptr;
34 size_t len;
36};
37
38// CBOR tags used with typed arrays.
39//
40// https://www.rfc-editor.org/rfc/rfc8746.html#tab-tag-values
47
48// A typed array defined in RFC 8746 section 2.
49//
50// https://www.rfc-editor.org/rfc/rfc8746.html#name-typed-arrays
52 // CBOR tag of the typed array.
53 uint64_t tag;
54 // Byte representation of the array elements.
56};
57
58// A multi-dimensional array defined in RFC 8746 section 3.1.
59//
60// The array is always a typed array of row-major order.
61//
62// https://www.rfc-editor.org/rfc/rfc8746.html#name-multi-dimensional-array
63// https://www.rfc-editor.org/rfc/rfc8746.html#name-row-major-order
65 uint64_t dim[2];
67};
68
70 char** ptr;
71 size_t len;
72};
73
78
83
85 double increment;
86 double start;
87};
88
96
101
106
111
116
118 char* channel;
119 double energy;
120};
121
126
128 const uint8_t* ptr;
129 size_t len;
130};
131
137
143
180
194
200
201enum stream2_result stream2_parse_msg(const uint8_t* buffer,
202 const size_t size,
203 struct stream2_msg** msg_out);
204void stream2_free_msg(struct stream2_msg* msg);
205
206// Gets the element size of a typed array.
208 const struct stream2_typed_array* array,
209 uint64_t* elem_size);
210
211#if defined(__cplusplus)
212}
213#endif
enum stream2_result stream2_parse_msg(const uint8_t *buffer, const size_t size, struct stream2_msg **msg_out)
Definition stream2.c:878
stream2_typed_array_tag
Definition stream2.h:41
@ STREAM2_TYPED_ARRAY_UINT16_LITTLE_ENDIAN
Definition stream2.h:43
@ STREAM2_TYPED_ARRAY_UINT32_LITTLE_ENDIAN
Definition stream2.h:44
@ STREAM2_TYPED_ARRAY_UINT8
Definition stream2.h:42
@ STREAM2_TYPED_ARRAY_FLOAT32_LITTLE_ENDIAN
Definition stream2.h:45
stream2_msg_type
Definition stream2.h:132
@ STREAM2_MSG_IMAGE
Definition stream2.h:134
@ STREAM2_MSG_START
Definition stream2.h:133
@ STREAM2_MSG_END
Definition stream2.h:135
void stream2_free_msg(struct stream2_msg *msg)
Definition stream2.c:929
enum stream2_result stream2_typed_array_elem_size(const struct stream2_typed_array *array, uint64_t *elem_size)
Definition stream2.c:944
stream2_result
Definition stream2.h:11
@ STREAM2_ERROR_SIGNATURE
Definition stream2.h:14
@ STREAM2_ERROR_NOT_IMPLEMENTED
Definition stream2.h:17
@ STREAM2_ERROR_DECODE
Definition stream2.h:15
@ STREAM2_OK
Definition stream2.h:12
@ STREAM2_ERROR_PARSE
Definition stream2.h:16
@ STREAM2_ERROR_OUT_OF_MEMORY
Definition stream2.h:13
Definition stream2.h:69
size_t len
Definition stream2.h:71
char ** ptr
Definition stream2.h:70
Definition stream2.h:32
size_t len
Definition stream2.h:34
const uint8_t * ptr
Definition stream2.h:33
struct stream2_compression compression
Definition stream2.h:35
Definition stream2.h:21
char * algorithm
Definition stream2.h:23
uint64_t elem_size
Definition stream2.h:26
uint64_t orig_size
Definition stream2.h:28
Definition stream2.h:195
uint64_t series_id
Definition stream2.h:197
enum stream2_msg_type type
Definition stream2.h:196
char * series_unique_id
Definition stream2.h:198
Definition stream2.h:79
struct stream2_flatfield * ptr
Definition stream2.h:80
size_t len
Definition stream2.h:81
Definition stream2.h:74
char * channel
Definition stream2.h:75
struct stream2_multidim_array flatfield
Definition stream2.h:76
Definition stream2.h:84
double increment
Definition stream2.h:85
double start
Definition stream2.h:86
Definition stream2.h:89
struct stream2_goniometer_axis omega
Definition stream2.h:92
struct stream2_goniometer_axis phi
Definition stream2.h:93
struct stream2_goniometer_axis two_theta
Definition stream2.h:94
struct stream2_goniometer_axis chi
Definition stream2.h:90
struct stream2_goniometer_axis kappa
Definition stream2.h:91
Definition stream2.h:102
size_t len
Definition stream2.h:104
struct stream2_image_data * ptr
Definition stream2.h:103
Definition stream2.h:97
char * channel
Definition stream2.h:98
struct stream2_multidim_array data
Definition stream2.h:99
Definition stream2.h:181
uint64_t stop_time[2]
Definition stream2.h:190
uint64_t real_time[2]
Definition stream2.h:187
enum stream2_msg_type type
Definition stream2.h:182
struct stream2_user_data user_data
Definition stream2.h:191
uint64_t image_id
Definition stream2.h:186
uint64_t start_time[2]
Definition stream2.h:189
char * series_date
Definition stream2.h:188
char * series_unique_id
Definition stream2.h:184
struct stream2_image_data_map data
Definition stream2.h:192
uint64_t series_id
Definition stream2.h:183
Definition stream2.h:138
uint64_t series_id
Definition stream2.h:140
enum stream2_msg_type type
Definition stream2.h:139
char * series_unique_id
Definition stream2.h:141
Definition stream2.h:64
uint64_t dim[2]
Definition stream2.h:65
struct stream2_typed_array array
Definition stream2.h:66
Definition stream2.h:112
struct stream2_pixel_mask * ptr
Definition stream2.h:113
size_t len
Definition stream2.h:114
Definition stream2.h:107
char * channel
Definition stream2.h:108
struct stream2_multidim_array pixel_mask
Definition stream2.h:109
Definition stream2.h:144
double count_time
Definition stream2.h:153
double incident_wavelength
Definition stream2.h:167
double frame_time
Definition stream2.h:161
char * series_unique_id
Definition stream2.h:147
uint64_t saturation_value
Definition stream2.h:173
double pixel_size_y
Definition stream2.h:172
struct stream2_threshold_energy_map threshold_energy
Definition stream2.h:176
double beam_center_x
Definition stream2.h:150
bool virtual_pixel_interpolation_enabled
Definition stream2.h:178
struct stream2_typed_array countrate_correction_lookup_table
Definition stream2.h:155
struct stream2_flatfield_map flatfield
Definition stream2.h:159
char * image_dtype
Definition stream2.h:163
uint64_t image_size_x
Definition stream2.h:164
char * detector_serial_number
Definition stream2.h:157
double beam_center_y
Definition stream2.h:151
struct stream2_array_text_string channels
Definition stream2.h:152
char * arm_date
Definition stream2.h:149
bool countrate_correction_enabled
Definition stream2.h:154
enum stream2_msg_type type
Definition stream2.h:145
uint64_t number_of_images
Definition stream2.h:168
double incident_energy
Definition stream2.h:166
struct stream2_pixel_mask_map pixel_mask
Definition stream2.h:169
struct stream2_user_data user_data
Definition stream2.h:177
bool flatfield_enabled
Definition stream2.h:160
bool pixel_mask_enabled
Definition stream2.h:170
uint64_t image_size_y
Definition stream2.h:165
struct stream2_goniometer goniometer
Definition stream2.h:162
char * sensor_material
Definition stream2.h:174
double pixel_size_x
Definition stream2.h:171
double detector_translation[3]
Definition stream2.h:158
double sensor_thickness
Definition stream2.h:175
uint64_t series_id
Definition stream2.h:146
char * detector_description
Definition stream2.h:156
Definition stream2.h:122
size_t len
Definition stream2.h:124
struct stream2_threshold_energy * ptr
Definition stream2.h:123
Definition stream2.h:117
double energy
Definition stream2.h:119
char * channel
Definition stream2.h:118
Definition stream2.h:51
struct stream2_bytes data
Definition stream2.h:55
uint64_t tag
Definition stream2.h:53
Definition stream2.h:127
size_t len
Definition stream2.h:129
const uint8_t * ptr
Definition stream2.h:128