diff options
Diffstat (limited to 'gisi/message.c')
-rw-r--r-- | gisi/message.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gisi/message.c b/gisi/message.c index 9284d597..51672e68 100644 --- a/gisi/message.c +++ b/gisi/message.c @@ -25,6 +25,7 @@ #include <stdint.h> #include <errno.h> +#include <arpa/inet.h> #include <glib.h> #include "message.h" @@ -102,6 +103,22 @@ gboolean g_isi_msg_data_get_byte(const GIsiMessage *msg, unsigned offset, return TRUE; } +gboolean g_isi_msg_data_get_word(const GIsiMessage *msg, unsigned offset, + uint16_t *word) +{ + const uint8_t *buf = g_isi_msg_data(msg); + uint16_t val; + + if (!buf || g_isi_msg_data_len(msg) < offset + 1) + return FALSE; + + memcpy(&val, buf + offset, sizeof(uint16_t)); + if (word) + *word = ntohs(val); + + return TRUE; +} + gboolean g_isi_msg_data_get_struct(const GIsiMessage *msg, unsigned offset, const void **type, size_t len) { |