Example #1
0
        private void UpdateWirelessModule(Instrument settings, WirelessModule installedModule)
        {
            if (!_instCtrlr.Driver.Definition.HasWirelessFeature)
            {
                return;
            }

            // only SafeCore and Ventis Pro supports changing wireless module settings/options
            if (settings.Type != DeviceType.SC && settings.Type != DeviceType.VPRO)
            {
                return;
            }

            // ensure a wireless module is installed and we have settings to apply before continuing
            if (installedModule == null || settings.WirelessModule == null)
            {
                return;
            }

            Log.Debug(string.Format("{0}.UpdateWirelessModule", Name));

            WirelessModule moduleSettings = settings.WirelessModule;

            if (moduleSettings.TransmissionInterval != installedModule.TransmissionInterval)
            {
                LogUpdate("TransmissionInterval", moduleSettings.TransmissionInterval, installedModule.TransmissionInterval);

                _instCtrlr.Driver.setWirelessTransmissionInterval(moduleSettings.TransmissionInterval);
                installedModule.TransmissionInterval = moduleSettings.TransmissionInterval;
            }

            if (moduleSettings.EncryptionKey != installedModule.EncryptionKey)
            {
#if DEBUG // don't show encryption keys in release builds
                LogUpdate("CustomEncryptionKey", moduleSettings.EncryptionKey, installedModule.EncryptionKey);
#else
                LogUpdate("CustomEncryptionKey", string.Empty.PadRight(moduleSettings.EncryptionKey.Length, '*'), string.Empty.PadRight(installedModule.EncryptionKey.Length, '*'));
#endif
                _instCtrlr.Driver.setWirelessCustomEncryptionKey(moduleSettings.EncryptionKey);
                installedModule.EncryptionKey = moduleSettings.EncryptionKey;
            }

            if (moduleSettings.MessageHops != installedModule.MessageHops)
            {
                LogUpdate("MessageHops", moduleSettings.MessageHops, installedModule.MessageHops);

                _instCtrlr.Driver.setWirelessMessageHops(moduleSettings.MessageHops);
                installedModule.MessageHops = moduleSettings.MessageHops;
            }

            if (moduleSettings.MaxPeers != installedModule.MaxPeers)
            {
                LogUpdate("MaxPeers", moduleSettings.MaxPeers, installedModule.MaxPeers);

                _instCtrlr.Driver.setWirelessMaximumPeers(moduleSettings.MaxPeers);
                installedModule.MaxPeers = moduleSettings.MaxPeers;
            }

            if (moduleSettings.PrimaryChannel != installedModule.PrimaryChannel)
            {
                LogUpdate("PrimaryChannel", moduleSettings.PrimaryChannel, installedModule.PrimaryChannel);

                _instCtrlr.Driver.setWirelessPrimaryChannel(moduleSettings.PrimaryChannel);
                installedModule.PrimaryChannel = moduleSettings.PrimaryChannel;
            }

            if (moduleSettings.SecondaryChannel != installedModule.SecondaryChannel)
            {
                LogUpdate("SecondaryChannel", moduleSettings.SecondaryChannel, installedModule.SecondaryChannel);

                _instCtrlr.Driver.setWirelessSecondaryChannel(moduleSettings.SecondaryChannel);
                installedModule.SecondaryChannel = moduleSettings.SecondaryChannel;
            }

            if (moduleSettings.ActiveChannelMask != installedModule.ActiveChannelMask)
            {
                LogUpdate("ActiveChannelMask", moduleSettings.ActiveChannelMask, installedModule.ActiveChannelMask);

                _instCtrlr.SetWirelessActiveChannelMask(moduleSettings.ActiveChannelMask);
                installedModule.ActiveChannelMask = moduleSettings.ActiveChannelMask;
            }

            if (moduleSettings.WirelessFeatureBits != installedModule.WirelessFeatureBits)
            {
                LogUpdate("WirelessFeatureBits", moduleSettings.WirelessFeatureBits, installedModule.WirelessFeatureBits);

                _instCtrlr.SetWirelessFeatureBits(moduleSettings.WirelessFeatureBits);
                installedModule.WirelessFeatureBits = moduleSettings.WirelessFeatureBits;
            }


            if (_instCtrlr.Driver.Definition.HasWirelessBindingTimeoutConfigFeature)
            {
                if (moduleSettings.WirelessBindingTimeout != installedModule.WirelessBindingTimeout)
                {
                    LogUpdate("WirelessBindingTimeout", moduleSettings.WirelessBindingTimeout, installedModule.WirelessBindingTimeout);

                    _instCtrlr.SetWirelessBindingTimeout(moduleSettings.WirelessBindingTimeout);
                    installedModule.WirelessBindingTimeout = moduleSettings.WirelessBindingTimeout;
                }
            }

            if (_instCtrlr.Driver.Definition.HasWirelessListeningPostChannelMaskFeature)
            {
                if (moduleSettings.ListeningPostChannelMask != installedModule.ListeningPostChannelMask)
                {
                    LogUpdate("ListeningPostChannelMask", moduleSettings.ListeningPostChannelMask, installedModule.ListeningPostChannelMask);

                    _instCtrlr.SetWirelessListeningPostChannelMask(moduleSettings.ListeningPostChannelMask);
                    installedModule.ListeningPostChannelMask = moduleSettings.ListeningPostChannelMask;
                }
            }

            // wireless module options
            installedModule.Options = _instCtrlr.SetWirelessModuleOptions(moduleSettings.Options);
        }