In AP_Motors6DOF.h add an enum for your frame to the sub_frame_t (The location of this is important to match changes in QGroundControl. I added mine after CUSTOM so it was number 8)
4 In AP_Motors6DOF.cpp add in your case statement. The add_motor_raw_6dof calls should match what you put in SIM_Submarine.cpp.
In AP_Motors6DOF.cpp check out the function output_armed_stabilizing. My frame was similar to vectored so I just added an else if to call output_armed_stabilizing_vectored() for my frame.
I also modified vehicleinfo.py to add my frame and make it the default_frame.
Vehicle.cc in Vehicle::motorCount() in case MAV_TYPE_SUBMARINE add to the enum and add the case for your frame returning the number of motors on your sub. Note: the ordering of this enum matches the changes in ArduSub.
In APMSubFrameComponentSummary.qml add a case for your sub in function frameName(). Also the case number (in my situation it is 8 since I added after CUSTOM) is whatever location in the enum(s) your frame is.
In APMParameterFactMetaData.Sub.4.0.xml in <param humanName=“Frame configuration” name=“ArduSub:FRAME_CONFIG” add a <value code=“8”>My Frame</value> Note: 8 is th place in the enum(s) for my frame.
qgcimages.qrc add a line for your frame image matching the those already there and put your image in the right place.
APMSubFrameComponent.qml add a ListElement for your frame under ListModel id:subFrameModel. The paramValue should match your location in the enums and cases. Also add a QCGButton for your frame in the Component selectParamFileDialogComponent
APMSubMotorDisplay,qml in the function getImage add a case (same number as the enums) to return your image.
I think that’s it. If anyone sees that I’m off target please let me know.
Also, you can replace src/FlightMap/Images/sub.png if you want.