public override void LinkToApi(BasicTriList trilist, uint joinStart, string joinMapKey, EiscApiAdvanced bridge)
        {
            var joinMap = new IDigitalInputJoinMap(joinStart);

            var joinMapSerialized = JoinMapHelper.GetSerializedJoinMapForDevice(joinMapKey);

            if (!string.IsNullOrEmpty(joinMapSerialized))
            {
                joinMap = JsonConvert.DeserializeObject <IDigitalInputJoinMap>(joinMapSerialized);
            }

            bridge.AddJoinMap(Key, joinMap);

            try
            {
                Debug.Console(1, this, "Linking to Trilist '{0}'", trilist.ID.ToString("X"));

                // Link feedback for input state
                InputStateFeedback.LinkInputSig(trilist.BooleanInput[joinMap.InputState.JoinNumber]);
            }
            catch (Exception e)
            {
                Debug.Console(1, this, "Unable to link device '{0}'.  Input is null", Key);
                Debug.Console(1, this, "Error: {0}", e);
            }
        }
        void InputPort_VersiportChange(Versiport port, VersiportEventArgs args)
        {
            Debug.Console(1, this, "Versiport change: {0}", args.Event);

            if (args.Event == eVersiportEvent.DigitalInChange)
            {
                InputStateFeedback.FireUpdate();
            }
        }
 void InputPort_StateChange(DigitalInput digitalInput, DigitalInputEventArgs args)
 {
     InputStateFeedback.FireUpdate();
 }