Remote PX4 FMU firmware upgrade through mavlink

I designed this scheme:

Upload firmware to PX4 file system though mavlink_file_transfer_protocol_t mavlink.

Use PX4IO_Uploader Class to update Px4 firmware. (PX4IO_Uploader Class encapsulates the complete upgrade steps )

Does anyone know of a better way to upload file to PX4 instead of mavlink_file_transfer_protocol_t?
Does anyone have a better scheme of firmware upgrade?