#1147304 uvcdynctrl-data: add dynamic controls for the Anker PowerConf C200

#1147304#5
Date:
2026-09-10 14:33:50 UTC
From:
To:
Adding Anker PowerConf C200 (USB 291a:3369) HDR and horizontal flip.

The patch adds uvcdynctrl/data/291a/anker.xml and needs the usual line in
debian/patches/series.

Description: Add dynamic control definitions for the Anker PowerConf C200
Author: Fredrik Liljegren <fredrik@liljegren.org>
Forwarded: not-needed
Last-Update: 2026-09-10
Index: libwebcam/uvcdynctrl/data/291a/anker.xml
===================================================================
--- /dev/null
+++ libwebcam/uvcdynctrl/data/291a/anker.xml
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<config version="1.0"
+	xmlns="http://www.saicare.com"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://www.saicare.com uvcconfig.xsd"
+>
+
+	<meta>
+		<version>1.0</version>
+		<author>Fredrik Liljegren</author>
+		<contact>fredrik@liljegren.org</contact>
+		<revision>0.5</revision>
+		<copyright></copyright>
+		<history>
+			Initial import of the Anker PowerConf C200 HDR and horizontal flip controls.
+		</history>
+	</meta>
+
+	<constants>
+
+		<!-- Extension unit GUID as carried by the descriptor (byte-reversed H.264 XU GUID) -->
+		<constant type="guid">
+			<id>UVC_GUID_ANKER_C200_XU</id>
+			<value>41769ea2-04de-e347-8b2b-f4341aff003b</value>
+		</constant>
+
+		<!-- Control selectors -->
+		<constant type="integer">
+			<id>XU_C200_HORIZONTAL_FLIP</id>
+			<value>17</value>
+		</constant>
+		<constant type="integer">
+			<id>XU_C200_HDR</id>
+			<value>19</value>
+		</constant>
+
+		<!-- V4L2 control identifiers -->
+		<constant type="integer">
+			<id>V4L2_CID_C200_HDR</id>
+			<value>0x0A291A02</value>
+		</constant>
+		<constant type="integer">
+			<id>V4L2_CID_C200_HORIZONTAL_FLIP</id>
+			<value>0x0A291A03</value>
+		</constant>
+
+	</constants>
+
+	<devices>
+		<device>
+			<match>
+				<vendor_id>0x291a</vendor_id>
+				<product_id>0x3369</product_id>
+			</match>
+
+			<controls>
+
+				<control id="c200_hdr">
+					<entity>UVC_GUID_ANKER_C200_XU</entity>
+					<selector>XU_C200_HDR</selector>
+					<index>0</index>
+					<size>60</size>
+					<requests>
+						<request>SET_CUR</request>
+						<request>GET_CUR</request>
+						<request>GET_MIN</request>
+						<request>GET_MAX</request>
+						<request>GET_RES</request>
+						<request>GET_DEF</request>
+					</requests>
+					<description>
+						High dynamic range. Always reads back as enabled,
+						whatever the real state.
+					</description>
+				</control>
+
+				<control id="c200_horizontal_flip">
+					<entity>UVC_GUID_ANKER_C200_XU</entity>
+					<selector>XU_C200_HORIZONTAL_FLIP</selector>
+					<index>1</index>
+					<size>60</size>
+					<requests>
+						<request>SET_CUR</request>
+						<request>GET_CUR</request>
+						<request>GET_MIN</request>
+						<request>GET_MAX</request>
+						<request>GET_RES</request>
+						<request>GET_DEF</request>
+					</requests>
+					<description>
+						Mirror the image horizontally. Only takes effect while
+						the camera is streaming.
+					</description>
+				</control>
+
+			</controls>
+		</device>
+	</devices>
+
+	<mappings>
+
+		<mapping>
+			<name>HDR</name>
+			<uvc>
+				<control_ref idref="c200_hdr"/>
+				<size>8</size>
+				<offset>0</offset>
+				<uvc_type>UVC_CTRL_DATA_TYPE_BOOLEAN</uvc_type>
+			</uvc>
+			<v4l2>
+				<id>V4L2_CID_C200_HDR</id>
+				<v4l2_type>V4L2_CTRL_TYPE_BOOLEAN</v4l2_type>
+			</v4l2>
+		</mapping>
+
+		<mapping>
+			<name>Horizontal Flip</name>
+			<uvc>
+				<control_ref idref="c200_horizontal_flip"/>
+				<size>8</size>
+				<offset>0</offset>
+				<uvc_type>UVC_CTRL_DATA_TYPE_BOOLEAN</uvc_type>
+			</uvc>
+			<v4l2>
+				<id>V4L2_CID_C200_HORIZONTAL_FLIP</id>
+				<v4l2_type>V4L2_CTRL_TYPE_BOOLEAN</v4l2_type>
+			</v4l2>
+		</mapping>
+
+	</mappings>
+</config>