On Sun, May 31, 2020 at 11:26 AM, Timo Kokkonen <[email protected]> wrote:
> On Sat, May 30, 2020 at 11:18 PM Gerhard Sittig <[email protected]>
> wrote:
> > - Check portability. Do you fill in structs and then send _these_
> > to the wire? Might be convenient but need not work everywhere.
> > It's probably better to accept the tedium and properly stream
> > requests and responses for improved reliability. Notice that
> > the tedium is less with the recently introduced conversion
> > helpers which also advance their position in the stream.
>
> Code should be portable (?) I'm aware of dangers different cpu
> architectures, but yes I'm "cheating" little bit by using a struct,
> but the struct is (on purpose) just an array of bytes. This allows referencing
> positions in the buffer conveniently...
> I can't think of portability issues with this approach, or am I
> missing something?
When you have a struct you want to send over the line "as is" and not want the
compiler to optimize it (avoid padding), you should add
"__attribute__((packed))".
E.g.:
struct __attribute__((packed)) my_packet {
uint8_t my_unsigned_8_bit_field;
int16_t my_signed_16_bit_field;
};
IIRC this works for clang and gcc.
Cheers
Frank
_______________________________________________
sigrok-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sigrok-devel