]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ump_msg: Add a new helper snd_ump_get_byte()
authorTakashi Iwai <tiwai@suse.de>
Sun, 28 Jul 2024 08:46:11 +0000 (10:46 +0200)
committerTakashi Iwai <tiwai@suse.de>
Sun, 28 Jul 2024 08:54:53 +0000 (10:54 +0200)
For making it easier to extract a byte from the UMP packet no matter
which endian is used, introduce a new helper function
snd_ump_get_byte().  It'll be useful for retrieving SysEx byte or a
name string.

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

index 9b189144e664dd5c69c05cc12940436a245dc734..617dbe42687059cbc30791dd4ad1d74e7df68856 100644 (file)
@@ -1001,6 +1001,18 @@ static inline uint8_t snd_ump_sysex_msg_length(const uint32_t *ump)
        return (*ump >> 16) & 0xf;
 }
 
+/**
+ * \brief extract one byte from a UMP packet
+ */
+static inline uint8_t snd_ump_get_byte(const uint32_t *ump, unsigned int offset)
+{
+#ifdef SNDRV_BIG_ENDIAN
+       return ((const uint8_t *)ump)[offset];
+#else
+       return ((const uint8_t *)ump)[(offset & ~3) | (3 - (offset & 3))];
+#endif
+}
+
 int snd_ump_msg_sysex_expand(const uint32_t *ump, uint8_t *buf, size_t maxlen,
                             size_t *filled);
 int snd_ump_packet_length(unsigned int type);