private void FPE_ReceivedSigCapDataEvent(object signatureData)
            {
                string signature           = string.Empty;
                HydraSignatureEnhanced sig = new HydraSignatureEnhanced((byte[])signatureData);

                signature = Convert.ToBase64String(sig.ToByteArray());

                SignatureEventArgs args = new SignatureEventArgs()
                {
                    SignatureData = signature
                };

                this.SignatureEvent(this, args);
            }
            private void FPE_ReceivedVariableValue(string strVariableName, string strVariableValue)
            {
                // NOTE: Can not read or set variables in this event handler.  Device API does not support
                switch (strVariableName)
                {
                case "cnum":
                    // This is for Credit Card Number - as we don't need value disregard result.
                    break;

                case "Track1Data":
                    this.track1 = strVariableValue;
                    break;

                case "Track2Data":
                    // Get previous event data sent and then clear them out
                    var swipeArgs = new CardSwipeEventArgs {
                        Track1 = this.track1, Track2 = strVariableValue, Track3 = string.Empty
                    };
                    this.CardSwipeEvent(this, swipeArgs);
                    break;

                case "RetailCardType":
                    var typeArgs = new ButtonPressEventArgs();
                    typeArgs.ButtonName = strVariableValue;
                    typeArgs.IsCanceled = false;
                    this.ButtonPressEvent(this, typeArgs);
                    break;

                case "CashBackAmt":
                case "AmountOk":
                    var cashBackArgs = new ButtonPressEventArgs();
                    cashBackArgs.ButtonName = strVariableValue;
                    cashBackArgs.IsCanceled = false;
                    this.ButtonPressEvent(this, cashBackArgs);
                    break;

                case "AdditionalSecurityInformation":
                    this.additionalSecInfo = strVariableValue;
                    break;

                case "EncryptedPIN":
                    PinDataEventArgs pinArg = new PinDataEventArgs();
                    pinArg.IsCanceled         = false;
                    pinArg.EncryptedPin       = strVariableValue;
                    pinArg.AdditionalSecurity = this.additionalSecInfo;
                    this.PinDataEvent(this, pinArg);
                    this.additionalSecInfo = string.Empty;
                    break;

                case "PinPadEntry":
                    // PIN entry "Cancel" or "TMO"
                    // PIN entry "Request" is set upon form entry (but no fire event)
                    PinDataEventArgs pinPadArg = new PinDataEventArgs();
                    pinPadArg.IsCanceled         = true;
                    pinPadArg.EncryptedPin       = string.Empty;
                    pinPadArg.AdditionalSecurity = string.Empty;
                    this.PinDataEvent(this, pinPadArg);
                    break;

                case "sig":
                    string signature           = string.Empty;
                    HydraSignatureEnhanced sig = new HydraSignatureEnhanced(Convert.FromBase64String(strVariableValue));
                    signature = Convert.ToBase64String(sig.ToByteArray());

                    SignatureEventArgs sigArgs = new SignatureEventArgs()
                    {
                        SignatureData = signature
                    };
                    this.SignatureEvent(this, sigArgs);
                    break;

                default:
                    NetTracer.Information("L5300Terminal variable {0} not set to {1}", strVariableName, strVariableValue);
                    break;
                }
            }