The MavlinkPassthrough function make_command_ack_message() returns a mavlink_message_t, which can’t be passed to mavlink_msg_command_ack_encode_chan().
In contrast, ServerComponentImpl::make_command_ack_message() does return a mavlink_command_ack_t , and works properly with mavlink_msg_command_ack_encode_chan(), via ServerComponentImpl::send_command_ack().
Am I wrong? If so, how can I send an ACK with MavlinkPassthrough?