diff --git a/source/backend/CarlaEngine.hpp b/source/backend/CarlaEngine.hpp index d6d646df9..3d6d2b9d5 100644 --- a/source/backend/CarlaEngine.hpp +++ b/source/backend/CarlaEngine.hpp @@ -1124,7 +1124,7 @@ public: void oscSend_bridge_parameter_ranges2(const uint32_t index, const float step, const float stepSmall, const float stepLarge) const noexcept; void oscSend_bridge_parameter_midi_cc(const uint32_t index, const int16_t cc) const noexcept; void oscSend_bridge_parameter_midi_channel(const uint32_t index, const uint8_t channel) const noexcept; - void oscSend_bridge_parameter_value(const int32_t index, const float value) const noexcept; // may be used for internal params (< 0) + void oscSend_bridge_parameter_value(const uint32_t index, const float value) const noexcept; void oscSend_bridge_default_value(const uint32_t index, const float value) const noexcept; void oscSend_bridge_current_program(const int32_t index) const noexcept; void oscSend_bridge_current_midi_program(const int32_t index) const noexcept; diff --git a/source/backend/engine/CarlaEngine.cpp b/source/backend/engine/CarlaEngine.cpp index 52e6c6cb1..84ace9231 100644 --- a/source/backend/engine/CarlaEngine.cpp +++ b/source/backend/engine/CarlaEngine.cpp @@ -16,7 +16,6 @@ */ /* TODO: - * - add more checks to oscSend_* stuff * - complete processRack(): carefully add to input, sorted events * - implement processPatchbay() * - implement oscSend_control_switch_plugins() @@ -35,6 +34,7 @@ #include "CarlaMIDI.h" +#include #include #include #include @@ -746,38 +746,56 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, cons CarlaPlugin* plugin = nullptr; -#if 0 //ndef BUILD_BRIDGE - const char* bridgeBinary; +#ifndef BUILD_BRIDGE + CarlaString bridgeBinary(pData->options.binaryDir); - switch (btype) + if (bridgeBinary.isNotEmpty()) { - case BINARY_POSIX32: - bridgeBinary = pData->options.bridge_posix32.isNotEmpty() ? (const char*)pData->options.bridge_posix32 : nullptr; - break; - case BINARY_POSIX64: - bridgeBinary = pData->options.bridge_posix64.isNotEmpty() ? (const char*)pData->options.bridge_posix64 : nullptr; - break; - case BINARY_WIN32: - bridgeBinary = pData->options.bridge_win32.isNotEmpty() ? (const char*)pData->options.bridge_win32 : nullptr; - break; - case BINARY_WIN64: - bridgeBinary = pData->options.bridge_win64.isNotEmpty() ? (const char*)pData->options.bridge_win64 : nullptr; - break; - default: - bridgeBinary = nullptr; - break; - } +# ifdef CARLA_OS_LINUX + // test for local build + if (bridgeBinary.endsWith("/source/backend/")) + bridgeBinary += "../bridges/"; +# endif # ifndef CARLA_OS_WIN - if (btype == BINARY_NATIVE && pData->options.bridge_native.isNotEmpty()) - bridgeBinary = (const char*)pData->options.bridge_native; + if (btype == BINARY_NATIVE) + { + bridgeBinary += "carla-bridge-native"; + } + else # endif + { + switch (btype) + { + case BINARY_POSIX32: + bridgeBinary += "carla-bridge-posix32"; + break; + case BINARY_POSIX64: + bridgeBinary += "carla-bridge-posix64"; + break; + case BINARY_WIN32: + bridgeBinary += "carla-bridge-win32.exe"; + break; + case BINARY_WIN64: + bridgeBinary += "carla-bridge-win64.exe"; + break; + default: + bridgeBinary.clear(); + break; + } + } - if (btype != BINARY_NATIVE || (pData->options.preferPluginBridges && bridgeBinary != nullptr)) + QFile file(bridgeBinary.getBuffer()); + + if (! file.exists()) + bridgeBinary.clear(); + } + + if (btype != BINARY_NATIVE || (pData->options.preferPluginBridges && bridgeBinary.isNotEmpty())) { if (bridgeBinary != nullptr) { - plugin = CarlaPlugin::newBridge(init, btype, ptype, bridgeBinary); + plugin = CarlaPlugin::newBridge(initializer, btype, ptype, bridgeBinary.getBuffer()); } # ifdef CARLA_OS_LINUX else if (btype == BINARY_WIN32) @@ -812,7 +830,7 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, cons } } else -#endif // BUILD_BRIDGE +#endif // ! BUILD_BRIDGE { bool use16Outs; setLastError("Invalid or unsupported plugin type"); @@ -829,22 +847,22 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, cons } else if (std::strcmp(label, "FluidSynth") == 0) { - use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true")); + use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true") == 0); plugin = CarlaPlugin::newFluidSynth(initializer, use16Outs); } else if (std::strcmp(label, "LinuxSampler (GIG)") == 0) { - use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true")); + use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true") == 0); plugin = CarlaPlugin::newLinuxSampler(initializer, "GIG", use16Outs); } else if (std::strcmp(label, "LinuxSampler (SF2)") == 0) { - use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true")); + use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true") == 0); plugin = CarlaPlugin::newLinuxSampler(initializer, "SF2", use16Outs); } else if (std::strcmp(label, "LinuxSampler (SFZ)") == 0) { - use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true")); + use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true") == 0); plugin = CarlaPlugin::newLinuxSampler(initializer, "SFZ", use16Outs); } else @@ -878,12 +896,12 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, cons break; case PLUGIN_FILE_GIG: - use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true")); + use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true") == 0); plugin = CarlaPlugin::newFileGIG(initializer, use16Outs); break; case PLUGIN_FILE_SF2: - use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true")); + use16Outs = (extra != nullptr && std::strcmp((const char*)extra, "true") == 0); plugin = CarlaPlugin::newFileSF2(initializer, use16Outs); break; @@ -2170,7 +2188,7 @@ void CarlaEngine::oscSend_bridge_audio_count(const uint32_t ins, const uint32_t char targetPath[std::strlen(pData->oscData->path)+20]; std::strcpy(targetPath, pData->oscData->path); std::strcat(targetPath, "/bridge_audio_count"); - try_lo_send(pData->oscData->target, targetPath, "iii", static_cast(ins), static_cast(outs)); + try_lo_send(pData->oscData->target, targetPath, "ii", static_cast(ins), static_cast(outs)); } void CarlaEngine::oscSend_bridge_midi_count(const uint32_t ins, const uint32_t outs) const noexcept @@ -2206,7 +2224,7 @@ void CarlaEngine::oscSend_bridge_program_count(const uint32_t count) const noexc CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); carla_debug("CarlaEngine::oscSend_bridge_program_count(%i)", count); - char targetPath[std::strlen(pData->oscData->path)+22]; + char targetPath[std::strlen(pData->oscData->path)+23]; std::strcpy(targetPath, pData->oscData->path); std::strcat(targetPath, "/bridge_program_count"); try_lo_send(pData->oscData->target, targetPath, "i", static_cast(count)); @@ -2292,7 +2310,7 @@ void CarlaEngine::oscSend_bridge_parameter_midi_channel(const uint32_t index, co try_lo_send(pData->oscData->target, targetPath, "ii", static_cast(index), static_cast(channel)); } -void CarlaEngine::oscSend_bridge_parameter_value(const int32_t index, const float value) const noexcept +void CarlaEngine::oscSend_bridge_parameter_value(const uint32_t index, const float value) const noexcept { CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); @@ -2303,7 +2321,7 @@ void CarlaEngine::oscSend_bridge_parameter_value(const int32_t index, const floa char targetPath[std::strlen(pData->oscData->path)+24]; std::strcpy(targetPath, pData->oscData->path); std::strcat(targetPath, "/bridge_parameter_value"); - try_lo_send(pData->oscData->target, targetPath, "if", index, value); + try_lo_send(pData->oscData->target, targetPath, "if", static_cast(index), value); } void CarlaEngine::oscSend_bridge_default_value(const uint32_t index, const float value) const noexcept @@ -2326,7 +2344,7 @@ void CarlaEngine::oscSend_bridge_current_program(const int32_t index) const noex CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); carla_debug("CarlaEngine::oscSend_bridge_current_program(%i)", index); - char targetPath[std::strlen(pData->oscData->path)+20]; + char targetPath[std::strlen(pData->oscData->path)+24]; std::strcpy(targetPath, pData->oscData->path); std::strcat(targetPath, "/bridge_current_program"); try_lo_send(pData->oscData->target, targetPath, "i", index); @@ -2339,7 +2357,7 @@ void CarlaEngine::oscSend_bridge_current_midi_program(const int32_t index) const CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); carla_debug("CarlaEngine::oscSend_bridge_current_midi_program(%i)", index); - char targetPath[std::strlen(pData->oscData->path)+25]; + char targetPath[std::strlen(pData->oscData->path)+30]; std::strcpy(targetPath, pData->oscData->path); std::strcat(targetPath, "/bridge_current_midi_program"); try_lo_send(pData->oscData->target, targetPath, "i", index); @@ -2392,6 +2410,9 @@ void CarlaEngine::oscSend_bridge_set_custom_data(const char* const type, const c CARLA_SAFE_ASSERT_RETURN(pData->oscData != nullptr,); CARLA_SAFE_ASSERT_RETURN(pData->oscData->path != nullptr && pData->oscData->path[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(pData->oscData->target != nullptr,); + CARLA_SAFE_ASSERT_RETURN(type != nullptr && type[0] != '\0',); + CARLA_SAFE_ASSERT_RETURN(key != nullptr && key[0] != '\0',); + CARLA_SAFE_ASSERT_RETURN(value != nullptr,); carla_debug("CarlaEngine::oscSend_bridge_set_custom_data(\"%s\", \"%s\", \"%s\")", type, key, value); char targetPath[std::strlen(pData->oscData->path)+24]; @@ -2414,9 +2435,6 @@ void CarlaEngine::oscSend_bridge_set_chunk_data(const char* const chunkFile) con try_lo_send(pData->oscData->target, targetPath, "s", chunkFile); } -// TODO? -//void oscSend_bridge_set_peaks() const; - #else void CarlaEngine::oscSend_control_add_plugin_start(const uint pluginId, const char* const pluginName) const noexcept { diff --git a/source/backend/engine/CarlaEngineOsc.cpp b/source/backend/engine/CarlaEngineOsc.cpp index ee1f8eb41..7c42b7105 100644 --- a/source/backend/engine/CarlaEngineOsc.cpp +++ b/source/backend/engine/CarlaEngineOsc.cpp @@ -316,45 +316,53 @@ int CarlaEngineOsc::handleMessage(const bool isTCP, const char* const path, cons // Plugin Bridges if ((plugin->getHints() & PLUGIN_IS_BRIDGE) != 0 && std::strlen(method) > 11 && std::strncmp(method, "bridge_", 7) == 0) { - if (std::strcmp(method+7, "audio_count") == 0) + const char* const bmethod(method+7); + + if (std::strcmp(bmethod, "plugin_info1") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgePluginInfo1, argc, argv, types); + if (std::strcmp(bmethod, "plugin_info2") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgePluginInfo2, argc, argv, types); + if (std::strcmp(bmethod, "audio_count") == 0) return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeAudioCount, argc, argv, types); - if (std::strcmp(method+7, "midi_count") == 0) + if (std::strcmp(bmethod, "midi_count") == 0) return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeMidiCount, argc, argv, types); - if (std::strcmp(method+7, "parameter_count") == 0) + if (std::strcmp(bmethod, "parameter_count") == 0) return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeParameterCount, argc, argv, types); - if (std::strcmp(method+7, "program_count") == 0) + if (std::strcmp(bmethod, "program_count") == 0) return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeProgramCount, argc, argv, types); - if (std::strcmp(method+7, "midi_program_count") == 0) + if (std::strcmp(bmethod, "midi_program_count") == 0) return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeMidiProgramCount, argc, argv, types); - if (std::strcmp(method+7, "plugin_info") == 0) - return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgePluginInfo, argc, argv, types); - if (std::strcmp(method+7, "parameter_info") == 0) - return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeParameterInfo, argc, argv, types); - if (std::strcmp(method+7, "parameter_data") == 0) + if (std::strcmp(bmethod, "parameter_data") == 0) return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeParameterData, argc, argv, types); - if (std::strcmp(method+7, "parameter_ranges") == 0) - return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeParameterRanges, argc, argv, types); - if (std::strcmp(method+7, "program_info") == 0) - return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeProgramInfo, argc, argv, types); - if (std::strcmp(method+7, "midi_program_info") == 0) - return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeMidiProgramInfo, argc, argv, types); - if (std::strcmp(method+7, "configure") == 0) + if (std::strcmp(bmethod, "parameter_ranges1") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeParameterRanges1, argc, argv, types); + if (std::strcmp(bmethod, "parameter_ranges2") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeParameterRanges2, argc, argv, types); + if (std::strcmp(bmethod, "parameter_midi_cc") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeParameterMidiCC, argc, argv, types); + if (std::strcmp(bmethod, "parameter_midi_channel") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeParameterMidiChannel, argc, argv, types); + if (std::strcmp(bmethod, "parameter_value") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeParameterValue, argc, argv, types); + if (std::strcmp(bmethod, "default_value") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeDefaultValue, argc, argv, types); + if (std::strcmp(bmethod, "current_program") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeCurrentProgram, argc, argv, types); + if (std::strcmp(bmethod, "current_midi_program") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeCurrentMidiProgram, argc, argv, types); + if (std::strcmp(bmethod, "program_name") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeProgramName, argc, argv, types); + if (std::strcmp(bmethod, "midi_program_data") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeMidiProgramData, argc, argv, types); + if (std::strcmp(bmethod, "configure") == 0) return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeConfigure, argc, argv, types); - if (std::strcmp(method+7, "set_parameter_value") == 0) - return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeSetParameterValue, argc, argv, types); - if (std::strcmp(method+7, "set_default_value") == 0) - return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeSetDefaultValue, argc, argv, types); - if (std::strcmp(method+7, "set_program") == 0) - return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeSetProgram, argc, argv, types); - if (std::strcmp(method+7, "set_midi_program") == 0) - return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeSetMidiProgram, argc, argv, types); - if (std::strcmp(method+7, "set_custom_data") == 0) + if (std::strcmp(bmethod, "set_custom_data") == 0) return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeSetCustomData, argc, argv, types); - if (std::strcmp(method+7, "set_chunk_data") == 0) + if (std::strcmp(bmethod, "set_chunk_data") == 0) return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeSetChunkData, argc, argv, types); - if (std::strcmp(method+7, "update") == 0) - return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeUpdateNow, argc, argv, types); - if (std::strcmp(method+7, "error") == 0) + if (std::strcmp(bmethod, "update") == 0) + return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeUpdate, argc, argv, types); + if (std::strcmp(bmethod, "error") == 0) return CarlaPluginSetOscBridgeInfo(plugin, kPluginBridgeError, argc, argv, types); } #endif diff --git a/source/backend/plugin/Lv2Plugin.cpp b/source/backend/plugin/Lv2Plugin.cpp index 1fc297f4a..6abdc1fca 100644 --- a/source/backend/plugin/Lv2Plugin.cpp +++ b/source/backend/plugin/Lv2Plugin.cpp @@ -3681,9 +3681,11 @@ public: if (bridgeBinary.isEmpty()) return nullptr; +#ifdef CARLA_OS_LINUX // test for local build if (bridgeBinary.endsWith("/source/backend/")) bridgeBinary += "../bridges/"; +#endif switch (type) { diff --git a/source/utils/CarlaBridgeUtils.hpp b/source/utils/CarlaBridgeUtils.hpp index d2b3b0029..67d714aae 100644 --- a/source/utils/CarlaBridgeUtils.hpp +++ b/source/utils/CarlaBridgeUtils.hpp @@ -23,26 +23,30 @@ // ----------------------------------------------------------------------- enum PluginBridgeInfoType { - kPluginBridgeAudioCount = 0, - kPluginBridgeMidiCount, - kPluginBridgeParameterCount, - kPluginBridgeProgramCount, - kPluginBridgeMidiProgramCount, - kPluginBridgePluginInfo, - kPluginBridgeParameterInfo, - kPluginBridgeParameterData, - kPluginBridgeParameterRanges, - kPluginBridgeProgramInfo, - kPluginBridgeMidiProgramInfo, - kPluginBridgeConfigure, - kPluginBridgeSetParameterValue, - kPluginBridgeSetDefaultValue, - kPluginBridgeSetProgram, - kPluginBridgeSetMidiProgram, - kPluginBridgeSetCustomData, - kPluginBridgeSetChunkData, - kPluginBridgeUpdateNow, - kPluginBridgeError + kPluginBridgeNull = 0, + kPluginBridgePluginInfo1, // uuh => category, hints, uniqueId + kPluginBridgePluginInfo2, // ssss => realName, label, maker, copyright + kPluginBridgeAudioCount, // uu => ins, outs + kPluginBridgeMidiCount, // uu => ins, outs + kPluginBridgeParameterCount, // uu => ins, outs + kPluginBridgeProgramCount, // u => count + kPluginBridgeMidiProgramCount, // u => count + kPluginBridgeParameterData, // uiuuss => index, rindex, type, hints, name, unit + kPluginBridgeParameterRanges1, // ufff => index, def, min, max + kPluginBridgeParameterRanges2, // ufff => index, step, stepSmall, stepLarge + kPluginBridgeParameterMidiCC, // ui => index, cc + kPluginBridgeParameterMidiChannel, // uu => index, channel + kPluginBridgeParameterValue, // uf => index, value + kPluginBridgeDefaultValue, // uf => index, value + kPluginBridgeCurrentProgram, // i => index + kPluginBridgeCurrentMidiProgram, // i => index + kPluginBridgeProgramName, // us => index, name + kPluginBridgeMidiProgramData, // uuus => index, bank, program, name + kPluginBridgeConfigure, // ss => key, value + kPluginBridgeSetCustomData, // sss => type, key, value + kPluginBridgeSetChunkData, // s => chunkFile + kPluginBridgeUpdate, // + kPluginBridgeError // }; enum PluginBridgeOpcode { @@ -89,6 +93,12 @@ const char* PluginBridgeInfoType2str(const PluginBridgeInfoType type) noexcept { switch (type) { + case kPluginBridgeNull: + return "kPluginBridgeNull"; + case kPluginBridgePluginInfo1: + return "kPluginBridgePluginInfo1"; + case kPluginBridgePluginInfo2: + return "kPluginBridgePluginInfo2"; case kPluginBridgeAudioCount: return "kPluginBridgeAudioCount"; case kPluginBridgeMidiCount: @@ -99,34 +109,36 @@ const char* PluginBridgeInfoType2str(const PluginBridgeInfoType type) noexcept return "kPluginBridgeProgramCount"; case kPluginBridgeMidiProgramCount: return "kPluginBridgeMidiProgramCount"; - case kPluginBridgePluginInfo: - return "kPluginBridgePluginInfo"; - case kPluginBridgeParameterInfo: - return "kPluginBridgeParameterInfo"; case kPluginBridgeParameterData: return "kPluginBridgeParameterData"; - case kPluginBridgeParameterRanges: - return "kPluginBridgeParameterRanges"; - case kPluginBridgeProgramInfo: - return "kPluginBridgeProgramInfo"; - case kPluginBridgeMidiProgramInfo: - return "kPluginBridgeMidiProgramInfo"; + case kPluginBridgeParameterRanges1: + return "kPluginBridgeParameterRanges1"; + case kPluginBridgeParameterRanges2: + return "kPluginBridgeParameterRanges2"; + case kPluginBridgeParameterMidiCC: + return "kPluginBridgeParameterMidiCC"; + case kPluginBridgeParameterMidiChannel: + return "kPluginBridgeParameterMidiChannel"; + case kPluginBridgeParameterValue: + return "kPluginBridgeParameterValue"; + case kPluginBridgeDefaultValue: + return "kPluginBridgeDefaultValue"; + case kPluginBridgeCurrentProgram: + return "kPluginBridgeCurrentProgram"; + case kPluginBridgeCurrentMidiProgram: + return "kPluginBridgeCurrentMidiProgram"; + case kPluginBridgeProgramName: + return "kPluginBridgeProgramName"; + case kPluginBridgeMidiProgramData: + return "kPluginBridgeMidiProgramData"; case kPluginBridgeConfigure: return "kPluginBridgeConfigure"; - case kPluginBridgeSetParameterValue: - return "kPluginBridgeSetParameterValue"; - case kPluginBridgeSetDefaultValue: - return "kPluginBridgeSetDefaultValue"; - case kPluginBridgeSetProgram: - return "kPluginBridgeSetProgram"; - case kPluginBridgeSetMidiProgram: - return "kPluginBridgeSetMidiProgram"; case kPluginBridgeSetCustomData: return "kPluginBridgeSetCustomData"; case kPluginBridgeSetChunkData: return "kPluginBridgeSetChunkData"; - case kPluginBridgeUpdateNow: - return "kPluginBridgeUpdateNow"; + case kPluginBridgeUpdate: + return "kPluginBridgeUpdate"; case kPluginBridgeError: return "kPluginBridgeError"; }