# integer: TSDL integer
def _write_field_integer(self, fname, src_name, integer, scope_prefix=None):
bo = self._BO_SUFFIXES_MAP[integer.byte_order]
- t = self._get_obj_param_ctype(integer)
length = self._get_obj_size(integer)
+ signed = 'signed' if integer.signed else 'unsigned'
return self._template_to_clines(barectf.templates.WRITE_INTEGER,
- sz=length, bo=bo, type=t,
+ signed=signed, sz=length, bo=bo,
src_name=src_name)
# Returns the C lines for writing a TSDL enumeration field.
src_name_casted = '*(({}*) &{})'.format(t, src_name)
return self._template_to_clines(barectf.templates.WRITE_INTEGER,
- sz=length, bo=bo, type=t,
+ signed='unsigned', sz=length, bo=bo,
src_name=src_name_casted)
# Returns the C lines for writing either a TSDL array field or a
)"""
WRITE_INTEGER = """{ucprefix}_CHK_OFFSET_V(ctx->at, ctx->packet_size, {sz});
-{prefix}_bt_bitfield_write_{bo}(ctx->buf, uint8_t, ctx->at, {sz}, {src_name});
+{prefix}_write_integer_{signed}_{bo}(ctx->buf, ctx->at, {sz}, {src_name});
ctx->at += {sz};"""
HEADER = """#ifndef _{ucprefix}_H
#endif
+static
+void $prefix$_write_integer_signed_le(void *ptr, uint32_t at, uint32_t len, int64_t v)
+{
+ $prefix$_bt_bitfield_write_le(ptr, uint8_t, at, len, v);
+}
+
+static
+void $prefix$_write_integer_unsigned_le(void *ptr, uint32_t at, uint32_t len, uint64_t v)
+{
+ $prefix$_bt_bitfield_write_le(ptr, uint8_t, at, len, v);
+}
+
+static
+void $prefix$_write_integer_signed_be(void *ptr, uint32_t at, uint32_t len, int64_t v)
+{
+ $prefix$_bt_bitfield_write_be(ptr, uint8_t, at, len, v);
+}
+
+static
+void $prefix$_write_integer_unsigned_be(void *ptr, uint32_t at, uint32_t len, uint64_t v)
+{
+ $prefix$_bt_bitfield_write_be(ptr, uint8_t, at, len, v);
+}
+
#endif /* _$PREFIX$_BITFIELD_H */
"""