From the cpp side, it was mostly because of my lack of cpp understanding. There was only one compilation error thrown by an incomplete function declaration, but it took me hours to find how to resolve... :
error: no matching function for call to 'Bela_createAuxiliaryTask'
candidate function not viable: no known conversion from 'void ()' to 'void (*)(void *)' for 1st argument
Replace void serialInputRead()
by void serialInputRead(void*)
at the end of the render.cpp file and it's ok!
From the pure data side, i needed to transmit raw messages without parsing them in cpp, so it needed to be converted from symbol to list, that's where [vs2l] is useful. Here's an example :
Serial messages are sent from render.cpp to libpd by
libpd_symbol("serialusb", receivedChars);
And received then parsed in pd by :