From 0f0532eb6ff629480c5f1acbdbb5ca9acde6f256 Mon Sep 17 00:00:00 2001 From: Aki Niemi Date: Tue, 30 Nov 2010 14:51:39 +0200 Subject: gisi: Add getter for 16bit fields --- gisi/message.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'gisi/message.c') 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 #include +#include #include #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) { -- cgit v1.2.3