]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ump_msg: Define types for UMP Mixed Data Set messages
authorTakashi Iwai <tiwai@suse.de>
Sun, 28 Jul 2024 08:24:18 +0000 (10:24 +0200)
committerTakashi Iwai <tiwai@suse.de>
Sun, 28 Jul 2024 08:55:00 +0000 (10:55 +0200)
Mixed Data Set messages is another messages of the type 5
(SND_UMP_MSG_TYPE_EXTENDED_DATA) with the status 8 and 9.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/ump_msg.h

index 617dbe42687059cbc30791dd4ad1d74e7df68856..a64cb317889e9bcc1a8aa00e87029f4615bf868c 100644 (file)
@@ -683,6 +683,69 @@ typedef union _snd_ump_msg_flex_data {
        uint32_t                        raw[4];         /**< raw UMP packet */
 } snd_ump_msg_flex_data_t;
 
+/** Mixed Data Set Chunk Header Message (128bit) */
+typedef struct _snd_ump_msg_mixed_data_header {
+#ifdef __BIG_ENDIAN_BITFIELD
+       uint8_t type:4;         /**< UMP packet type */
+       uint8_t group:4;        /**< UMP Group */
+       uint8_t status:4;       /**< Status */
+       uint8_t mds_id:4;       /**< Mixed Data Set ID */
+       uint16_t bytes;         /**< Number of valid bytes in this chunk */
+
+       uint16_t chunks;        /**< Number of chunks in mixed data set */
+       uint16_t chunk;         /**< Number of this chunk */
+
+       uint16_t manufacturer;  /**< Manufacturer ID */
+       uint16_t device;        /**< Device ID */
+
+       uint16_t sub_id_1;      /**< Sub ID \# 1 */
+       uint16_t sub_id_2;      /**< Sub ID \# 2 */
+#else
+       uint16_t bytes;         /**< Number of valid bytes in this chunk */
+       uint8_t mds_id:4;       /**< Mixed Data Set ID */
+       uint8_t status:4;       /**< Status */
+       uint8_t group:4;        /**< UMP Group */
+       uint8_t type:4;         /**< UMP packet type */
+
+       uint16_t chunk;         /**< Number of this chunk */
+       uint16_t chunks;        /**< Number of chunks in mixed data set */
+
+       uint16_t device;        /**< Device ID */
+       uint16_t manufacturer;  /**< Manufacturer ID */
+
+       uint16_t sub_id_2;      /**< Sub ID \# 2 */
+       uint16_t sub_id_1;      /**< Sub ID \# 1 */
+#endif
+} snd_ump_msg_mixed_data_header_t;
+
+/** Mixed Data Set Chunk Payload Message (128bit) */
+typedef struct _snd_ump_msg_mixed_data_payload {
+#ifdef __BIG_ENDIAN_BITFIELD
+       uint8_t type:4;         /**< UMP packet type */
+       uint8_t group:4;        /**< UMP Group */
+       uint8_t status:4;       /**< Status */
+       uint8_t mds_id:4;       /**< Mixed Data Set ID */
+       uint16_t payload1;      /**< Payload */
+
+       uint32_t payloads[3];   /**< Payload */
+#else
+       uint16_t payload1;      /**< Payload */
+       uint8_t mds_id:4;       /**< Mixed Data Set ID */
+       uint8_t status:4;       /**< Status */
+       uint8_t group:4;        /**< UMP Group */
+       uint8_t type:4;         /**< UMP packet type */
+
+       uint32_t payloads[3];   /**< Payload */
+#endif
+} snd_ump_msg_mixed_data_payload_t;
+
+/** Mixed Data Set Chunk Message (128bit) */
+typedef union _snd_ump_msg_mixed_data {
+       snd_ump_msg_mixed_data_header_t header;         /**< Header */
+       snd_ump_msg_mixed_data_payload_t payload;       /**< Payload */
+       uint32_t                        raw[4];         /**< raw UMP packet */
+} snd_ump_msg_mixed_data_t;
+
 /** Jitter Reduction Clock / Timestamp Message (32bit) */
 typedef struct _snd_ump_msg_jr_clock {
 #ifdef SNDRV_BIG_ENDIAN_BITFIELD
@@ -803,6 +866,12 @@ enum {
        SND_UMP_SYSEX_STATUS_END        = 3,
 };
 
+/** MIDI 2.0 Mixed Data Set Status */
+enum {
+       SND_UMP_MIXED_DATA_SET_STATUS_HEADER    = 8,
+       SND_UMP_MIXED_DATA_SET_STATUS_PAYLOAD   = 9,
+};
+
 /** UMP Utility Type Status (type 0x0) **/
 enum {
        SND_UMP_UTILITY_MSG_STATUS_NOOP         = 0x00,