diff --git a/companion/src/CMakeLists.txt b/companion/src/CMakeLists.txt index 8c3e7f202..03a417961 100644 --- a/companion/src/CMakeLists.txt +++ b/companion/src/CMakeLists.txt @@ -6,6 +6,9 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") else(${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(COMPANION_NAME "companion") set(SIMULATOR_NAME "simulator") + if(APPLE) + set(SIMULATOR_LIB_PATH ${CMAKE_INSTALL_PREFIX}/Contents/companion.app/Ressources) + endif() endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") option(ALLOW_NIGHTLY_BUILDS "Allow nightly builds download / update") # Disabled by default @@ -264,7 +267,11 @@ target_link_libraries(${SIMULATOR_NAME} PRIVATE simulation common qxtcommandopti ############# Packaging #################### message(STATUS ${CMAKE_BINARY_DIR} ${CMAKE_INSTALL_PREFIX}/bin) -if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") +if(APPLE) + install(DIRECTORY ${CMAKE_BINARY_DIR}/ DESTINATION ${SIMULATOR_LIB_PATH} USE_SOURCE_PERMISSIONS + FILES_MATCHING PATTERN "libopentx-*.dylib" + ) +elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") install(TARGETS ${COMPANION_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) install(TARGETS ${SIMULATOR_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) install(DIRECTORY ${CMAKE_BINARY_DIR}/ DESTINATION ${SIMULATOR_LIB_PATH} USE_SOURCE_PERMISSIONS @@ -348,6 +355,9 @@ endif() if(APPLE) set(MACOSX_BUNDLE_ICON_FILE iconmac.icns) + SET_SOURCE_FILES_PROPERTIES(${PROJECT_SOURCE_DIR}/images/${MACOSX_BUNDLE_ICON_FILE} PROPERTIES MACOSX_PACKAGE_LOCATION Resources) + set(${COMPANION_SOURCES} ${COMPANION_SOURCES} ${PROJECT_SOURCE_DIR}/images/${MACOSX_BUNDLE_ICON_FILE}) + if(CMAKE_GENERATOR STREQUAL Xcode) set(WORK_DIR ${CMAKE_BINARY_DIR}/Debug) else() @@ -393,6 +403,15 @@ string(TOLOWER "${CPACK_PACKAGE_NAME}" CPACK_PACKAGE_NAME_LOWERCASE) # very poor trace-backs from the users when they report Companion crash set(CPACK_STRIP_FILES FALSE) +INSTALL(TARGETS ${COMPANION_NAME} + BUNDLE DESTINATION . COMPONENT Runtime + RUNTIME DESTINATION bin COMPONENT Runtime + ) + + +# directories to look for dependencies +SET(DIRS ${QT_LIBRARY_DIRS}) + find_program(DPKG_PROGRAM dpkg DOC "dpkg program of Debian-based systems") if(DPKG_PROGRAM) set(CPACK_GENERATOR "DEB") @@ -408,6 +427,14 @@ if(DPKG_PROGRAM) set(CPACK_DEBIAN_PACKAGE_VERSION_MINOR ${VERSION_MINOR}) set(CPACK_DEBIAN_ARCHITECTURE $(CMAKE_SYSTEM_PROCESSOR)) set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) +elseif(APPLE) + set(APPS "${COMPANION_NAME}.app") + set(CPACK_GENERATOR "DragNDrop") + set(CPACK_BINARY_DRAGNDROP ON) + set(CPACK_DMG_BACKGROUND_IMAGE ${COMPANION_SRC_DIRECTORY}/images/dmg_background.png) + set(CPACK_DMG_VOLUME_NAME "OpenTX Companion") + set(CPACK_DMG_DS_STORE ${PROJECT_SOURCE_DIR}/companion/targets/mac/DS_Store) + else(DPKG_PROGRAM) set(CPACK_GENERATOR "RPM") set(CPACK_RPM_PACKAGE_VERSION ${VERSION}) @@ -416,4 +443,11 @@ else(DPKG_PROGRAM) SET(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/lib /lib/udev /lib/udev/rules.d") endif(DPKG_PROGRAM) +INSTALL(CODE " + include(BundleUtilities) + " COMPONENT Runtime + VERIFY_APP(${COMPANION_NAME}) + ) + + include(CPack) diff --git a/radio/src/myeeprom.h b/radio/src/myeeprom.h index c18f4485d..0c2160afc 100644 --- a/radio/src/myeeprom.h +++ b/radio/src/myeeprom.h @@ -532,7 +532,12 @@ enum MultiModuleRFProtocols { MM_RF_PROTO_LAST= MM_RF_PROTO_CUSTOM }; -#define MM_RF_DSM2_22MS_6CH_OPTION 2 +#define MM_RF_DSM2_22MS_6CH_OPTION 2 + +#define MM_RF_FRSKY_SUBTYPE_D16 0 +#define MM_RF_FRSKY_SUBTYPE_D8 1 +#define MM_RF_FRSKY_SUBTYPE_D16_8CH 2 +#define MM_RF_FRSKY_SUBTYPE_V8 3 #define HAS_RF_PROTOCOL_FAILSAFE(rf) ((rf) == RF_PROTO_X16) #define HAS_RF_PROTOCOL_MODELINDEX(rf) (((rf) == RF_PROTO_X16) || ((rf) == RF_PROTO_LR12)) diff --git a/radio/src/pulses/multi_arm.cpp b/radio/src/pulses/multi_arm.cpp index f6a5ba623..00d4cd125 100644 --- a/radio/src/pulses/multi_arm.cpp +++ b/radio/src/pulses/multi_arm.cpp @@ -136,17 +136,17 @@ void setupPulsesMultimodule(uint8_t port) type = type + 1; if (g_model.moduleData[port].multi.rfProtocol == MM_RF_PROTO_FRSKY) { - if(subtype == 1) { + if(subtype == MM_RF_FRSKY_SUBTYPE_D8) { //D8 type = 3; subtype = 0; - } else if (subtype == 3) { - //LR12 + } else if (subtype == MM_RF_FRSKY_SUBTYPE_V8) { + //V8 type = 25; subtype = 0; } else { type = 15; - if (subtype == 2) // D16 8ch + if (subtype == MM_RF_FRSKY_SUBTYPE_D16_8CH) // D16 8ch subtype = 1; else subtype = 0; // D16 diff --git a/radio/src/telemetry/telemetry.h b/radio/src/telemetry/telemetry.h index 1236e4dd3..5b6d4676c 100644 --- a/radio/src/telemetry/telemetry.h +++ b/radio/src/telemetry/telemetry.h @@ -153,11 +153,11 @@ inline uint8_t modelTelemetryProtocol() if (g_model.moduleData[INTERNAL_MODULE].rfProtocol == RF_PROTO_OFF && g_model.moduleData[EXTERNAL_MODULE].type == MODULE_TYPE_MULTIMODULE) { if (g_model.moduleData[EXTERNAL_MODULE].multi.rfProtocol == MM_RF_PROTO_DSM2) return PROTOCOL_SPEKTRUM; - else if ((g_model.moduleData[EXTERNAL_MODULE].multi.rfProtocol == MM_RF_PROTO_FRSKY) && (g_model.moduleData[EXTERNAL_MODULE].subType == 1)) - // D8 - return PROTOCOL_FRSKY_D; - else + else if ((g_model.moduleData[EXTERNAL_MODULE].multi.rfProtocol == MM_RF_PROTO_FRSKY) && + (g_model.moduleData[EXTERNAL_MODULE].subType == MM_RF_FRSKY_SUBTYPE_D16 || g_model.moduleData[EXTERNAL_MODULE].subType == MM_RF_FRSKY_SUBTYPE_D16_8CH)) return PROTOCOL_FRSKY_SPORT; + else + return PROTOCOL_FRSKY_D; } #endif