Hello Antoine,
I've been looking into to this a bit myself, and have had trouble with
the fact that the XML descriptions of the protocol are extremely
C-centric. As in, the union types defined in the XML are C-unions,
and I've seen a struct definition which uses padding-bytes to store
semantically useful data.
Both of which are fine things to do in C, but a bit tricky to map onto Haskell.