summaryrefslogtreecommitdiffhomepage
path: root/video-ps3eye/shm-layout.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'video-ps3eye/shm-layout.hpp')
-rw-r--r--video-ps3eye/shm-layout.hpp41
1 files changed, 20 insertions, 21 deletions
diff --git a/video-ps3eye/shm-layout.hpp b/video-ps3eye/shm-layout.hpp
index 7fa29115..65b0a4f1 100644
--- a/video-ps3eye/shm-layout.hpp
+++ b/video-ps3eye/shm-layout.hpp
@@ -3,37 +3,36 @@
namespace ps3eye {
-struct shm_out {
+static constexpr unsigned num_channels = 3;
+
+struct shm_in {
enum class mode : uint8_t { qvga, vga, };
- enum class status : uint8_t { starting, running, fail, terminate, };
- uint8_t settings_updated;
- uint16_t framerate;
+ uint32_t settings_updated;
+ uint8_t framerate, channels;
mode resolution;
- status status_;
- uint8_t sharpness, contrast, brightness, hue, saturation;
- uint8_t gain, exposure, auto_gain, awb, test_pattern;
+ //uint8_t sharpness, contrast, brightness hue, saturation;
+ uint8_t gain, exposure, auto_gain, test_pattern;
+ uint8_t do_exit;
};
-struct shm_in {
- uint8_t settings_updated_ack;
- uint8_t timecode;
+struct shm_out
+{
+ enum class status : uint8_t { starting, running, fail, terminate, };
+
+ uint32_t timecode;
+ uint32_t settings_updated_ack;
+ status status_;
+ char error_string[256];
union {
- uint8_t data_320x240[320][240][3];
- uint8_t data_640x480[640][480][3];
+ uint8_t data_320x240[320][240][num_channels];
+ uint8_t data_640x480[640][480][num_channels];
};
};
-struct shm {
- static constexpr unsigned _cacheline_len = 64;
- static constexpr unsigned _padding_len =
- (_cacheline_len - (sizeof(shm_in) & (_cacheline_len - 1))) & (_cacheline_len - 1);
-
- using resolution = shm_out::mode;
- using status = shm_out::status;
-
+struct alignas(64) shm {
shm_out out;
- const char* _padding[_padding_len];
+ [[maybe_unused]] const char _padding[128 - sizeof(shm_out) % 128]; // NOLINT
shm_in in;
};