The mistake you are making is in regard to the Presence Vector field. A Presence Vector is not part of every JAUS message, i.e. it is not contained in the header structure. You can see what fields are and are not contained in the header by looking at the header for any of the messages or looking it up in the JAUS RA document. The Presence Vector is used when some or all fields of a given message are optional. It indicates which fields are presence in the message at runtime.
For messages that do include a Presence Vector, such as you have implemented, the first element packed and unpacked from the byte stream in the dataToBuffer and dataFromBuffer methods has to be that Presence Vector. I suspect the only mistake you have made is not to explicitly pack and unpack the Presence Vector field.
There is a good blurb on Presence Vectors in the
Creating an Experimental Message tutorial. It suggests the
Report Global Pose message as a good example of a message which uses a Presence Vector for optional fields.
Remember: If you don't want optional fields in a message, there is no need for the Presence Vector at all and you can omit it completely!