Skip to content

Commit

Permalink
ump_msg: Add a new helper snd_ump_get_byte()
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
tiwai committed Jul 28, 2024
1 parent 530e2f8 commit 28948f2
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions include/ump_msg.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 28948f2

Please sign in to comment.