Hi Etienne, Sorry if I didn't express myself correctly. I meant that I have to create code to communicate through that protocol. I am not designing a protocol. Anyway, I was more interested on feedback from similar libraries or about the design of the library.
Cheers! On Sun, Oct 4, 2015 at 10:38 PM Etienne Champetier < champetier.etie...@gmail.com> wrote: > Hi, > > 2015-10-04 22:47 GMT+02:00 Javier Domingo Cansino <javier...@gmail.com>: > >> Hello, >> >> I asked Friday on IRC how to write blobs, I was suggested using >> blob_raw_put from libubox/blob.h, but as I have to implement a binary >> protocol that uses different endianess, non aligned data etc., I think the >> best solution is creating a set of helper functions to write/read blobs. >> > > I don't know what you really want to do, but have you looked at protobuf? > https://en.wikipedia.org/wiki/Protocol_Buffers > > > >> >> As this is quite generic library, there might already exist some work >> done that I am missing (please link!). I would love to have feedback from >> this design before typing code. >> >> I have started my work on github[1], which is basically a header file >> with the following comment and some prototype ideas. The syntax I have >> thought is described there, but it basically follows a printf syntax, >> allowing raw chars to be written. >> >> Cheers! >> >> /* >> * Syntax for the function is as follows. >> * %[n][a][lb][01r]{i,y,w,d,q,s} >> * >> * All the characters that don't follow this will be treated as raw >> chars >> * to be written as they are. >> * >> * Data type >> * * i - bit >> * * y - byte >> * * w - 2 byte word >> * * d - 4 byte word >> * * q - 8 byte word >> * * s - string without termination (use strlen()+1 in quantity to null) >> * >> * Data value >> * * 0 - fill the specified space with zeros >> * * 1 - fill the specified space with ones >> * * r - fill the specified space with random data >> * >> * String data type is not valid in this case >> * >> * Endianess. No conversion by default >> * * l - little endian >> * * b - big endian >> * >> * Alignment. No alignment by default >> * * a - align this to it's datatype >> * bits are aligned to byte >> * >> * Quantity. One by default >> * * n - number of same datatype (placed together) >> * this denotes length of string, padded with 0 >> * >> * Some examples: >> * * %4lw - 4 little endian 2 byte word >> * * %2i - 2 bits 'ab' from value b'000000ab' >> * * %2bi - 2 bits 'ab' from value b'000000ba' >> * * %2li - 2 bits 'ab' from value b'ab000000' >> * >> */ >> >> >> [1] Github branch: https://github.com/txomon/libubox >> >> _______________________________________________ >> openwrt-devel mailing list >> openwrt-devel@lists.openwrt.org >> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel >> >> >
_______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel