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>
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);