AxsunOCTCapture.dll
AxsunOCTCapture.dll captures and buffers streamed imaged data from the Axsun Ethernet DAQ and displays or returns images to the calling application on request.
AxsunOCTCapture.h
Go to the documentation of this file.
1 // AxsunOCTCapture.h
2 // Copyright 2017 Axsun Technologies
29 #ifndef AXSUNOCTCAPTURE_H
30 #define AXSUNOCTCAPTURE_H
31 
32 // defines
33 #ifdef _WINDOWS
34 #define EXPORT __declspec(dllexport)
35 #endif // _WINDOWS
36 #ifdef __GNUC__
37 #define EXPORT __attribute__((visibility("default")))
38 #endif // __GNUC__
39 
40 
41 // includes
42 #include <stdint.h> // for integer typedefs
43 #ifdef __GNUC__
44 #include <stddef.h> // for size_t on linux
45 #endif // __GNUC__
46 
47 
48 // enumerated data types
49 typedef enum data_type {
50  u8,
51  u16,
52  u32,
53  cmplx // (16 bit Imaginary, 16 bit Real)
54 } data_type;
55 
56 typedef enum colormap {
57  sepia,
58  greyscale,
59  inv_grayscale,
60  user
61 } colormap;
62 
63 typedef enum request_mode {
64  retrieve_to_caller,
65  display_only,
66  retrieve_and_display
67 } request_mode;
68 
69 typedef enum scan_cmd_t { // for analog waveform generation control
92 } scan_cmd_t;
93 
94 typedef struct scan_params_t { // for analog waveform generation control
96  uint32_t X_increments;
98  uint32_t Y_increments;
100  double X_range;
102  double Y_range;
104  double X_shift;
106  double Y_shift;
108  double Y_idle;
110  double X_phase;
112  double rotate;
113 } scan_params_t;
114 
115 typedef struct ext_pattern_t { // for analog waveform generation control
121  double * linear_pattern;
123  double * raster_pattern;
124 } ext_pattern_t;
125 
126 // public function declarations and descriptions
127 
128 #ifdef __cplusplus
129 extern "C" {
130 #endif
131 
142  EXPORT int32_t axStartSession(uint32_t capacity);
143 
152  EXPORT int32_t axStopSession(void);
153 
162  EXPORT size_t axGetMessage(char* message_out);
163 
176  EXPORT int32_t axGetStatus(uint32_t * imaging, uint32_t * last_packet_in, uint32_t * last_frame_in, uint32_t *last_image_in, uint32_t * dropped_packets, uint32_t *frames_since_sync);
177 
183  EXPORT float axGetDataRate(void);
184 
198  EXPORT int32_t axGetImageInfo(int64_t requested_image_number, uint32_t * returned_image_number, uint32_t * required_buffer_size);
199 
218  EXPORT int32_t axGetImageInfoAdv(int64_t requested_image_number, uint32_t * returned_image_number, int32_t * height, int32_t * width, data_type *data_type_out, uint32_t * required_buffer_size, uint8_t * force_trig, uint8_t * trig_too_fast);
219 
236  EXPORT int32_t axRequestImage(int64_t requested_image_number, uint32_t * returned_image_number, int32_t * height, int32_t * width, data_type *data_type_out, uint8_t * image_data_out, uint32_t output_buf_len);
237 
259  EXPORT int32_t axRequestImageAdv(int64_t requested_image_number, uint8_t * image_data_out, uint8_t * metadata_out, int32_t * height, int32_t * width, data_type *data_type_out, uint32_t output_buf_len, uint8_t average_number, request_mode req_mode, uint8_t * force_trig, uint8_t * trig_too_fast);
260 
273  EXPORT int32_t axImageRequestSize(uint32_t start_Ascan, uint32_t total_Ascans);
274 
291  EXPORT int32_t axGetFrameInfoAdv(int64_t requested_frame_number, uint32_t * returned_frame_number, int32_t * height, int32_t * width, data_type *data_type_out, uint32_t * required_buffer_size);
292 
310  EXPORT int32_t axRequestFrameAdv(int64_t requested_frame_number, uint8_t * frame_data_out, uint8_t * metadata_out, int32_t * height, int32_t * width, data_type *data_type_out, uint32_t output_buf_len);
311 
326  EXPORT int32_t axGetCompressedJPEGInfo(int64_t requested_frame_number, uint32_t * returned_frame_number, uint32_t * required_buffer_size);
327 
344  EXPORT int32_t axRequestCompressedJPEG(int64_t requested_frame_number, uint8_t * JPEG_data_out, uint8_t * metadata_out, uint32_t output_buf_len);
345 
361  EXPORT int32_t axSetupDisplay(uint8_t window_mode_in, int32_t w_left, int32_t w_top, int32_t w_width, int32_t w_height, uintptr_t parent_window_handle);
362 
375  EXPORT int32_t axDisplayImage(int64_t requested_image_number, uint32_t * returned_image_number, int32_t * height, int32_t * width);
376 
384  EXPORT int32_t axSelectColormap(colormap colors);
385 
394  EXPORT int32_t axLoadUserColormap(uint8_t * user_colormap_in);
395 
410  EXPORT int32_t axScanConvert(uint8_t convert, uint8_t interpolation, float inner_radius, float outer_radius, float crop_inner, float crop_outer);
411 
423  EXPORT int32_t axUpdateView(int32_t w_left, int32_t w_top, int32_t w_width, int32_t w_height);
424 
435  EXPORT int32_t axCropRect(float crop_left, float crop_top, float crop_bottom, float crop_right);
436 
445  EXPORT int32_t axAdjustBrightnessContrast(float brightness, float contrast);
446 
454  EXPORT int32_t axHideWindow(uint32_t hidden);
455 
472  EXPORT int32_t axSetTrigTimeout(uint32_t timeout_frames);
473 
483  EXPORT int32_t axDownsampling(uint32_t downsampling_state);
484 
496  EXPORT int32_t axSaveFile(const char * path_file, uint32_t full_buffer, uint32_t * packets_written);
497 
509  EXPORT int32_t axLoadFile(const char * path_file, uint32_t * packets_read);
510 
520  EXPORT int32_t axClearBuffer(void);
521 
532  EXPORT int32_t axStartSessionPCIe(uint32_t capacity);
533 
544  EXPORT int32_t axImagingCntrlPCIe(int16_t number_of_images);
545 
556  EXPORT int32_t axWriteFPGAreg(uint16_t regnum, uint16_t regval);
557 
567  EXPORT int32_t axWriteFPGAregBIT(uint16_t regnum, uint8_t bitnum, uint8_t bitval);
568 
576  EXPORT int32_t axPipelineMode(uint8_t mode);
577 
586  EXPORT int32_t axReadFPGAreg(uint16_t regnum, uint16_t *regval);
587 
654  EXPORT int32_t axScanCmd(scan_cmd_t scan_command, double misc_scalar, scan_params_t * scan_parameters, ext_pattern_t * external_scan_pattern, void * RFU);
655 
656 #ifdef __cplusplus
657 }
658 #endif
659 
660 #endif // AXSUNOCTCAPTURE_H include guard
EXPORT int32_t axWriteFPGAreg(uint16_t regnum, uint16_t regval)
Write a FPGA register on the Axsun DAQ via the PCIe interface.
EXPORT int32_t axRequestImageAdv(int64_t requested_image_number, uint8_t *image_data_out, uint8_t *metadata_out, int32_t *height, int32_t *width, data_type *data_type_out, uint32_t output_buf_len, uint8_t average_number, request_mode req_mode, uint8_t *force_trig, uint8_t *trig_too_fast)
Advanced function for retrieving and/or displaying an image from the main image buffer.
EXPORT int32_t axScanCmd(scan_cmd_t scan_command, double misc_scalar, scan_params_t *scan_parameters, ext_pattern_t *external_scan_pattern, void *RFU)
Control analog output waveform generation for 2 channel (X-Y) scanners.
double Y_range
Definition: AxsunOCTCapture.h:102
uint32_t ext_X_increments
Definition: AxsunOCTCapture.h:117
EXPORT size_t axGetMessage(char *message_out)
Get explanation for errors or other status messages.
double * raster_pattern
Definition: AxsunOCTCapture.h:123
double X_shift
Definition: AxsunOCTCapture.h:104
EXPORT int32_t axGetStatus(uint32_t *imaging, uint32_t *last_packet_in, uint32_t *last_frame_in, uint32_t *last_image_in, uint32_t *dropped_packets, uint32_t *frames_since_sync)
Get status regarding imaging mode and main buffer statistics.
EXPORT int32_t axRequestImage(int64_t requested_image_number, uint32_t *returned_image_number, int32_t *height, int32_t *width, data_type *data_type_out, uint8_t *image_data_out, uint32_t output_buf_len)
Retrieve an image from the main image buffer into a user buffer.
EXPORT int32_t axSelectColormap(colormap colors)
Select the color scheme of images displayed in an OpenGL window.
uint32_t X_increments
Definition: AxsunOCTCapture.h:96
double X_phase
Definition: AxsunOCTCapture.h:110
Definition: AxsunOCTCapture.h:79
Definition: AxsunOCTCapture.h:85
EXPORT int32_t axStopSession(void)
Stop an Axsun Ethernet DAQ imaging session by deallocating resources.
Definition: AxsunOCTCapture.h:83
EXPORT int32_t axStartSessionPCIe(uint32_t capacity)
Start an Axsun PCIe DAQ imaging session by initializing PCIe interface and allocating memory for the ...
Definition: AxsunOCTCapture.h:87
uint32_t ext_Y_increments
Definition: AxsunOCTCapture.h:119
scan_cmd_t
Definition: AxsunOCTCapture.h:69
double * linear_pattern
Definition: AxsunOCTCapture.h:121
EXPORT int32_t axSetupDisplay(uint8_t window_mode_in, int32_t w_left, int32_t w_top, int32_t w_width, int32_t w_height, uintptr_t parent_window_handle)
Setup an OpenGL display window for direct rendering of image data.
EXPORT int32_t axWriteFPGAregBIT(uint16_t regnum, uint8_t bitnum, uint8_t bitval)
Write a single bit in an FPGA register on the Axsun DAQ via the PCIe interface.
EXPORT int32_t axGetCompressedJPEGInfo(int64_t requested_frame_number, uint32_t *returned_frame_number, uint32_t *required_buffer_size)
Get un-decompressed size information on a compressed JPEG frame in the main image buffer (A frame is ...
Definition: AxsunOCTCapture.h:81
EXPORT int32_t axHideWindow(uint32_t hidden)
Hide or unhide the OpenGL image display window.
Definition: AxsunOCTCapture.h:89
double Y_idle
Definition: AxsunOCTCapture.h:108
EXPORT int32_t axImagingCntrlPCIe(int16_t number_of_images)
Control the image streaming behavior of the Axsun PCIe DAQ between Live Imaging, Burst Recording...
EXPORT int32_t axPipelineMode(uint8_t mode)
Configures FPGA registers to output the desired data type & location from the processing pipeline via...
EXPORT int32_t axLoadFile(const char *path_file, uint32_t *packets_read)
Load contents from file on disk into main image buffer.
Definition: AxsunOCTCapture.h:91
EXPORT int32_t axSetTrigTimeout(uint32_t timeout_frames)
Control the behavior of Force Trigger mode.
EXPORT int32_t axReadFPGAreg(uint16_t regnum, uint16_t *regval)
Read a FPGA register on the Axsun DAQ via the PCIe interface.
EXPORT int32_t axSaveFile(const char *path_file, uint32_t full_buffer, uint32_t *packets_written)
Save contents of main image buffer to disk.
Definition: AxsunOCTCapture.h:77
EXPORT int32_t axDownsampling(uint32_t downsampling_state)
Enable or disable 2x downsampling during JPEG decompression.
EXPORT int32_t axGetFrameInfoAdv(int64_t requested_frame_number, uint32_t *returned_frame_number, int32_t *height, int32_t *width, data_type *data_type_out, uint32_t *required_buffer_size)
Get information on a frame in the main image buffer (A frame is 256 A-scans, unsynchronized with Imag...
Definition: AxsunOCTCapture.h:115
EXPORT int32_t axUpdateView(int32_t w_left, int32_t w_top, int32_t w_width, int32_t w_height)
Change the OpenGL window size and position.
EXPORT int32_t axLoadUserColormap(uint8_t *user_colormap_in)
Load a user-defined colormap for images displayed in an OpenGL window.
Definition: AxsunOCTCapture.h:94
uint32_t Y_increments
Definition: AxsunOCTCapture.h:98
double X_range
Definition: AxsunOCTCapture.h:100
EXPORT int32_t axScanConvert(uint8_t convert, uint8_t interpolation, float inner_radius, float outer_radius, float crop_inner, float crop_outer)
Change the polar -> rectangular scan conversion behavior of images displayed in an OpenGL window...
EXPORT float axGetDataRate(void)
Get instantaneous data transfer rate (Ethernet transfers only)
double rotate
Definition: AxsunOCTCapture.h:112
EXPORT int32_t axStartSession(uint32_t capacity)
Start an Axsun Ethernet DAQ imaging session by initializing packet capture and allocating memory for ...
Definition: AxsunOCTCapture.h:75
EXPORT int32_t axCropRect(float crop_left, float crop_top, float crop_bottom, float crop_right)
Change the rectangular cropping behavior of images displayed in an OpenGL window. ...
EXPORT int32_t axImageRequestSize(uint32_t start_Ascan, uint32_t total_Ascans)
Configure the cropped subset of A-scans to retrieve or display in subsequent calls to axRequestImage ...
EXPORT int32_t axClearBuffer(void)
Clear main image buffer by resetting all data to zero.
EXPORT int32_t axGetImageInfoAdv(int64_t requested_image_number, uint32_t *returned_image_number, int32_t *height, int32_t *width, data_type *data_type_out, uint32_t *required_buffer_size, uint8_t *force_trig, uint8_t *trig_too_fast)
Advanced function for getting information on an image in the main image buffer.
EXPORT int32_t axAdjustBrightnessContrast(float brightness, float contrast)
Change the brightness and contrast of images displayed in an OpenGL window.
Definition: AxsunOCTCapture.h:71
EXPORT int32_t axRequestCompressedJPEG(int64_t requested_frame_number, uint8_t *JPEG_data_out, uint8_t *metadata_out, uint32_t output_buf_len)
Retrieve an un-decompressed JPEG frame from the main image buffer (A frame is 256 A-scans...
EXPORT int32_t axRequestFrameAdv(int64_t requested_frame_number, uint8_t *frame_data_out, uint8_t *metadata_out, int32_t *height, int32_t *width, data_type *data_type_out, uint32_t output_buf_len)
Retrieve a frame from the main image buffer (A frame is 256 A-scans, unsynchronized with Image_sync s...
double Y_shift
Definition: AxsunOCTCapture.h:106
EXPORT int32_t axGetImageInfo(int64_t requested_image_number, uint32_t *returned_image_number, uint32_t *required_buffer_size)
Get information on an image in the main image buffer.
EXPORT int32_t axDisplayImage(int64_t requested_image_number, uint32_t *returned_image_number, int32_t *height, int32_t *width)
Display an image from the main image buffer directly to an OpenGL window (8-bit image data only)...
Definition: AxsunOCTCapture.h:73