From e372f59715b9b209be14d8f622702e44c9c7c854 Mon Sep 17 00:00:00 2001 From: stas Date: Wed, 26 Feb 2025 17:10:46 +0100 Subject: [PATCH] update camera interface --- include/ehrenberg/devices/flexki_messages.h | 2 +- include/ehrenberg/devices/gen/camera.h | 43 +++++++++++++++++---- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/include/ehrenberg/devices/flexki_messages.h b/include/ehrenberg/devices/flexki_messages.h index a54c39f..6826687 100644 --- a/include/ehrenberg/devices/flexki_messages.h +++ b/include/ehrenberg/devices/flexki_messages.h @@ -43,7 +43,7 @@ static void send_msg(uint32_t cluster, uint32_t component, uint32_t msg_len, uin set_mkcontrolclusterstreamcontroller_REG_SEND(msgif, 1); } -static uint32_t check_response() { +static uint32_t check_response(void) { while (true) { if (get_mkcontrolclusterstreamcontroller_REG_ACK_PENDING_RESPONSE(msgif) != 0) { return get_mkcontrolclusterstreamcontroller_REG_RECV_ID_RECV_ID(msgif); diff --git a/include/ehrenberg/devices/gen/camera.h b/include/ehrenberg/devices/gen/camera.h index 8c82317..5affef0 100644 --- a/include/ehrenberg/devices/gen/camera.h +++ b/include/ehrenberg/devices/gen/camera.h @@ -1,10 +1,10 @@ /* -* Copyright (c) 2023 - 2024 MINRES Technologies GmbH +* Copyright (c) 2023 - 2025 MINRES Technologies GmbH * * SPDX-License-Identifier: Apache-2.0 * -* Generated at 2024-11-27 09:36:49 UTC -* by peakrdl_mnrs version 1.2.7 +* Generated at 2025-02-26 17:04:33 UTC +* by peakrdl_mnrs version 1.2.9 */ #ifndef _BSP_CAMERA_H @@ -15,6 +15,7 @@ typedef struct { volatile uint32_t PIXEL; volatile uint32_t CONFIG; + volatile uint32_t CONFIG1; volatile uint32_t DATA_SIZE; volatile uint32_t START; volatile uint32_t STATUS; @@ -83,6 +84,14 @@ typedef struct { #define CAMERA_CONFIG_HIGH_SPEED_MASK 0x1 #define CAMERA_CONFIG_HIGH_SPEED(V) ((V & CAMERA_CONFIG_HIGH_SPEED_MASK) << CAMERA_CONFIG_HIGH_SPEED_OFFS) +#define CAMERA_CONFIG1_AUTO_IDLE_OFFS 0 +#define CAMERA_CONFIG1_AUTO_IDLE_MASK 0x1 +#define CAMERA_CONFIG1_AUTO_IDLE(V) ((V & CAMERA_CONFIG1_AUTO_IDLE_MASK) << CAMERA_CONFIG1_AUTO_IDLE_OFFS) + +#define CAMERA_CONFIG1_AUTO_DISCARD_FRAME_OFFS 1 +#define CAMERA_CONFIG1_AUTO_DISCARD_FRAME_MASK 0x1 +#define CAMERA_CONFIG1_AUTO_DISCARD_FRAME(V) ((V & CAMERA_CONFIG1_AUTO_DISCARD_FRAME_MASK) << CAMERA_CONFIG1_AUTO_DISCARD_FRAME_OFFS) + #define CAMERA_DATA_SIZE_OFFS 0 #define CAMERA_DATA_SIZE_MASK 0x3 #define CAMERA_DATA_SIZE(V) ((V & CAMERA_DATA_SIZE_MASK) << CAMERA_DATA_SIZE_OFFS) @@ -96,7 +105,7 @@ typedef struct { #define CAMERA_STATUS(V) ((V & CAMERA_STATUS_MASK) << CAMERA_STATUS_OFFS) #define CAMERA_CAMERA_CLOCK_CTRL_OFFS 0 -#define CAMERA_CAMERA_CLOCK_CTRL_MASK 0xfffff +#define CAMERA_CAMERA_CLOCK_CTRL_MASK 0xfff #define CAMERA_CAMERA_CLOCK_CTRL(V) ((V & CAMERA_CAMERA_CLOCK_CTRL_MASK) << CAMERA_CAMERA_CLOCK_CTRL_OFFS) #define CAMERA_IE_EN_PIXEL_AVAIL_OFFS 0 @@ -215,6 +224,26 @@ inline void set_camera_config_high_speed(volatile camera_t* reg, uint8_t value){ reg->CONFIG = (reg->CONFIG & ~(0x1U << 31)) | (value << 31); } +//CAMERA_CONFIG1 +inline uint32_t get_camera_config1(volatile camera_t* reg){ + return reg->CONFIG1; +} +inline void set_camera_config1(volatile camera_t* reg, uint32_t value){ + reg->CONFIG1 = value; +} +inline uint32_t get_camera_config1_auto_idle(volatile camera_t* reg){ + return (reg->CONFIG1 >> 0) & 0x1; +} +inline void set_camera_config1_auto_idle(volatile camera_t* reg, uint8_t value){ + reg->CONFIG1 = (reg->CONFIG1 & ~(0x1U << 0)) | (value << 0); +} +inline uint32_t get_camera_config1_auto_discard_frame(volatile camera_t* reg){ + return (reg->CONFIG1 >> 1) & 0x1; +} +inline void set_camera_config1_auto_discard_frame(volatile camera_t* reg, uint8_t value){ + reg->CONFIG1 = (reg->CONFIG1 & ~(0x1U << 1)) | (value << 1); +} + //CAMERA_DATA_SIZE inline uint32_t get_camera_data_size(volatile camera_t* reg){ return reg->DATA_SIZE; @@ -259,10 +288,10 @@ inline void set_camera_camera_clock_ctrl(volatile camera_t* reg, uint32_t value) reg->CAMERA_CLOCK_CTRL = value; } inline uint32_t get_camera_camera_clock_ctrl_divider(volatile camera_t* reg){ - return (reg->CAMERA_CLOCK_CTRL >> 0) & 0xfffff; + return (reg->CAMERA_CLOCK_CTRL >> 0) & 0xfff; } -inline void set_camera_camera_clock_ctrl_divider(volatile camera_t* reg, uint32_t value){ - reg->CAMERA_CLOCK_CTRL = (reg->CAMERA_CLOCK_CTRL & ~(0xfffffU << 0)) | (value << 0); +inline void set_camera_camera_clock_ctrl_divider(volatile camera_t* reg, uint16_t value){ + reg->CAMERA_CLOCK_CTRL = (reg->CAMERA_CLOCK_CTRL & ~(0xfffU << 0)) | (value << 0); } //CAMERA_IE