summaryrefslogtreecommitdiffstats
path: root/gisi/message.c
diff options
context:
space:
mode:
Diffstat (limited to 'gisi/message.c')
-rw-r--r--gisi/message.c17
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)
{