From accc0929cd9cbbb559caa7305b9e71bcdccfbb9b Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Wed, 7 Mar 2018 09:31:46 +0000 Subject: [PATCH] Initla commit FossilOrigin-Name: 53b4bc73a86d7fb2348d9dbb030a1f250be017133b5c32df0cb153c35de89437 --- src/cw/cw_format_scan_hex_bytes.c | 53 +++++++++++++++++++++++ src/cw/cw_type_version.c | 72 +++++++++++++++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 src/cw/cw_format_scan_hex_bytes.c create mode 100644 src/cw/cw_type_version.c diff --git a/src/cw/cw_format_scan_hex_bytes.c b/src/cw/cw_format_scan_hex_bytes.c new file mode 100644 index 00000000..1573cd68 --- /dev/null +++ b/src/cw/cw_format_scan_hex_bytes.c @@ -0,0 +1,53 @@ +#include +#include "format.h" + + +/** + * Read hex bytes from a string to an uint8_t array + * @param dst destination array + * @param s string to read + * @param len length of string + * @return 0 if all was ok \n 1 if an error has occured. + */ + +int cw_format_scan_hex_bytes(uint8_t *dst,const char *s, int len) +{ + int rc ; + int err=0; + int val; + int c; + int i; + + if ( len & 1){ + rc = sscanf(s,"%01X",&c); + if (rc!=1){ + c=0; + err=1; + } + *dst++=c; + s++; + len--; + } + + + for (i=0; i. + +*/ + +#include + +#include "format.h" +#include "cw.h" +#include "cw_types.h" + +static mavldata_t *get(mavldata_t * data, const uint8_t * src, int len) +{ + + uint8_t * s; + s = bstr16_create(src,len); + if (!s) + return NULL; + + data->kv.priv = &cw_type_version; + data->kv.val.ptr=s; + return data; +} + +static int put(mavldata_t *data, uint8_t * dst) +{ + return cw_put_bstr16(dst, data->kv.val.ptr); +} + +static int to_str(const mavldata_t *data, char *dst, int max_len) +{ + char *d; + d=dst; + if (format_is_utf8(bstr16_data(data->kv.val.ptr), bstr16_len(data->kv.val.ptr))) { + d += sprintf(d, "%.*s", bstr16_len(data->kv.val.ptr), + bstr16_data(data->kv.val.ptr)); + } else { + d += sprintf(d, ".x"); + d += format_hex(d, bstr16_data(data->kv.val.ptr), bstr16_len(data->kv.val.ptr)); + } + + return d-dst; +} + +static mavldata_t *from_str(mavldata_t * data, const char *src) +{ + return NULL; +} + + +const struct cw_Type cw_type_version = { + "VersionStr", /* name */ + NULL, /* del */ + put, /* put */ + get, /* get */ + to_str, /* to_str */ + from_str /* from_str */ +}; +