From 6ed4c64b99087e696c7a951be9672fcec31b7404 Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Sat, 19 Mar 2016 11:32:11 +0000 Subject: [PATCH] Inital commit. FossilOrigin-Name: 19cc0b9eb587e93e5e4fe945d7e65d1b7f39d16fddef4b7493f499f98f35e9b3 --- src/cw/mbag_set_from_buf.c | 73 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/cw/mbag_set_from_buf.c diff --git a/src/cw/mbag_set_from_buf.c b/src/cw/mbag_set_from_buf.c new file mode 100644 index 00000000..878d2758 --- /dev/null +++ b/src/cw/mbag_set_from_buf.c @@ -0,0 +1,73 @@ +#include "mbag.h" +#include "item.h" +#include "cw.h" + +int mbag_set_from_buf(mbag_t dst, cw_itemdef_t * idef, const char *item_id, uint8_t *data, int len) +{ + +/* if (!idef) { + cw_log(LOG_ERR,"No itemdef found for %s",item_id); + return 0; + } + + + if (idef->type->mbag_set){ + printf("Found a set function for %s\n",idef->type->name); + idef->type->mbag_set(idef,item_id, + exit(0); + } +*/ + + if (idef->type == MBAG_BYTE) { + mbag_set_byte(dst, item_id, *data); + return 1; + } + if (idef->type == MBAG_WORD) { + mbag_set_word(dst, item_id, cw_get_word(data)); + return 1; + } + if (idef->type == MBAG_DWORD) { + mbag_set_dword(dst, item_id, cw_get_dword(data)); + return 1; + } + if (idef->type == MBAG_STR) { + mbag_set_strn(dst, item_id, (char *) data, len); + return 1; + } + if (idef->type == MBAG_BSTR) { + mbag_set_bstrn(dst, item_id, data, len); + return 1; + } + + if (idef->type == MBAG_BSTR16) { + mbag_set_bstr16n(dst, item_id, data, len); + return 1; + } + +/* if (idef->type == MBAG_DATA) { + mbag_set_data(dst, item_id, data, len); + return 1; + } +*/ + if (idef->type == MBAG_VENDORSTR) { + mbag_set_bstrv(dst, item_id, + cw_get_dword(data), data + 4, len - 4); + return 1; + } + + + +// printf("Idef: %s\n",idef->type->name); + + + +/* cw_log(LOG_ERR, + "Can't handle item type %d in definition for incomming msg %d (%s) - %d, cw_in_generic.", + idef->type, a->msg_id, cw_strmsg(a->msg_id), a->elem_id); + return 0; +*/ + return 0; + +} + +