Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/include/uapi/sound/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  fcp.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
/*
 * Focusrite Control Protocol Driver for ALSA
 *
 * Copyright (c) 2024-2025 by Geoffrey D. Bennett <g at b4.vu>
 */

/*
 * DOC: FCP (Focusrite Control Protocol) User-Space API
 *
 * This header defines the interface between the FCP kernel driver and
 * user-space programs to enable the use of the proprietary features
 * available in Focusrite USB audio interfaces. This includes Scarlett
 * 2nd Gen, 3rd Gen, 4th Gen, Clarett USB, Clarett+, and Vocaster
 * series devices.
 *
 * The interface is provided via ALSA's hwdep interface. Opening the
 * hwdep device requires CAP_SYS_RAWIO privileges as this interface
 * provides near-direct access.
 *
 * For details on the FCP protocol, refer to the kernel scarlett2
 * driver in sound/usb/mixer_scarlett2.c and the fcp-support project
 * at https://github.com/geoffreybennett/fcp-support
 *
 * For examples of using these IOCTLs, see the fcp-server source in
 * the fcp-support project.
 *
 * IOCTL Interface
 * --------------
 * FCP_IOCTL_PVERSION:
 *   Returns the protocol version supported by the driver.
 *
 * FCP_IOCTL_INIT:
 *   Initialises the protocol and synchronises sequence numbers
 *   between the driver and device. Must be called at least once
 *   before sending commands. Can be safely called again at any time.
 *
 * FCP_IOCTL_CMD:
 *   Sends an FCP command to the device and returns the response.
 *   Requires prior initialisation via FCP_IOCTL_INIT.
 *
 * FCP_IOCTL_SET_METER_MAP:
 *   Configures the Level Meter control's mapping between device
 *   meters and control channels. Requires FCP_IOCTL_INIT to have been
 *   called first. The map size and number of slots cannot be changed
 *   after initial configuration, although the map itself can be
 *   updated. Once configured, the Level Meter remains functional even
 *   after the hwdep device is closed.
 *
 * FCP_IOCTL_SET_METER_LABELS:
 *   Set the labels for the Level Meter control. Requires
 *   FCP_IOCTL_SET_METER_MAP to have been called first. labels[]
 *   should contain a sequence of null-terminated labels corresponding
 *   to the control's channels.
 */

#ifndef __UAPI_SOUND_FCP_H
#define __UAPI_SOUND_FCP_H

#include <linux/types.h>
#include <linux/ioctl.h>

#define FCP_HWDEP_MAJOR 2
#define FCP_HWDEP_MINOR 0
#define FCP_HWDEP_SUBMINOR 0

#define FCP_HWDEP_VERSION \
 ((FCP_HWDEP_MAJOR << 16) | \
  (FCP_HWDEP_MINOR << 8) | \
   FCP_HWDEP_SUBMINOR)

#define FCP_HWDEP_VERSION_MAJOR(v) (((v) >> 16) & 0xFF)
#define FCP_HWDEP_VERSION_MINOR(v) (((v) >> 8) & 0xFF)
#define FCP_HWDEP_VERSION_SUBMINOR(v) ((v) & 0xFF)

/* Get protocol version */
#define FCP_IOCTL_PVERSION _IOR('S', 0x60, int)

/* Start the protocol */

/* Step 0 and step 2 responses are variable length and placed in
 * resp[] one after the other.
 */

struct fcp_init {
 __u16 step0_resp_size;
 __u16 step2_resp_size;
 __u32 init1_opcode;
 __u32 init2_opcode;
 __u8  resp[];
} __attribute__((packed));

#define FCP_IOCTL_INIT _IOWR('S', 0x64, struct fcp_init)

/* Perform a command */

/* The request data is placed in data[] and the response data will
 * overwrite it.
 */

struct fcp_cmd {
 __u32 opcode;
 __u16 req_size;
 __u16 resp_size;
 __u8  data[];
} __attribute__((packed));
#define FCP_IOCTL_CMD _IOWR('S', 0x65, struct fcp_cmd)

/* Set the meter map */
struct fcp_meter_map {
 __u16 map_size;
 __u16 meter_slots;
 __s16 map[];
} __attribute__((packed));
#define FCP_IOCTL_SET_METER_MAP _IOW('S', 0x66, struct fcp_meter_map)

/* Set the meter labels */
struct fcp_meter_labels {
 __u16 labels_size;
 char  labels[];
} __attribute__((packed));
#define FCP_IOCTL_SET_METER_LABELS _IOW('S', 0x67, struct fcp_meter_labels)

#endif /* __UAPI_SOUND_FCP_H */

Messung V0.5
C=89 H=97 G=93

¤ Dauer der Verarbeitung: 0.19 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.