Closed
Description
The Java code generator hard-codes a sysid of 255 and compid of 190, overwriting a user-specified sysid or compid. For example, this is the msg_heartbeat packing function:
public MAVLinkPacket pack(){
MAVLinkPacket packet = new MAVLinkPacket(MAVLINK_MSG_LENGTH);
packet.sysid = 255;
packet.compid = 190;
packet.msgid = MAVLINK_MSG_ID_HEARTBEAT;
packet.payload.putUnsignedInt(custom_mode);
packet.payload.putUnsignedByte(type);
packet.payload.putUnsignedByte(autopilot);
packet.payload.putUnsignedByte(base_mode);
packet.payload.putUnsignedByte(system_status);
packet.payload.putUnsignedByte(mavlink_version);
return packet;
}
This was most likely implemented because Java is typically used for a GCS, but that is not always the case. In my case, I am creating a mock drone in Java. It makes sense that these values could be used as defaults, but should not be hard-coded into packing functions.
My recommendation is to make these defaults in MAVLinkMessage, and remove them from the subclassed message packing functions.
Metadata
Metadata
Assignees
Labels
No labels