Commit 2f0974fda942f28b09b866991121aef9cb939cce (dated 2013-11-25 19:27:25) effectively changed the UAVTalk protocol by making the InstanceId mandatory for all objects. Previously, InstanceId was not transmitted for a single instance object.
Other GCS software derived from OpenPilot project (like TauLabs and dRonin) has retained the original behavior.
The net result is that there are now two versions of UAVTalk which both identify themselves as version 2. This makes development of new software to talk directly to a UAVTalk-enabled flight controller very problematic.
Since the LibrePilot/OpenPilot variants where the ones that made the change, they should be the ones to increment their version numbers.
Suggested masks look fine except maybe OBJ_ID_MASK that should be INST_ID_MASK.
To submit a pull request you need to fork the LP repo from here ; https://bitbucket.org/librepilot/librepilot and then push your branch to your fork.
In flight/uavtalk/inc/uavtalk_priv.h the two message types UAVTALK_TYPE_OBJ_TS and UAVTALK_TYPE_OBJ_ACK_TS include the timestamp bit in their mask.
I've made the baseline changes that I think we all agree on: increment to version 3 and make the bitmasks match the documentation. I compiled and tested it with my CC3DRevo. I don't have a useful way to test the python/java/UAVOMSPBridge/matlab sections though.
If you are in agreement that version 3 should actually use OBJ_ID_MASK = 0x08 in its logic, let me know and I will take a crack at it.
Please submit a PR with what you have already.
We will see about the 0x08 later. LP does not really need it. Do you ?
Differentiating based on v2 vs v3 is sufficient for my needs.