Ejemplo n.º 1
0
 public override void RevertChanges()
 {
     Track1.RevertChanges();
     Track2.RevertChanges();
     Track3.RevertChanges();
     Track4.RevertChanges();
     Track5.RevertChanges();
 }
Ejemplo n.º 2
0
        public override void ApplyPropertyValues()
        {
            Setup.ApplyPropertyValues();
            InputOutput.ApplyPropertyValues();
            USB.ApplyPropertyValues();
            MIDI.ApplyPropertyValues();

            #region DefaultMemory
            Track1.ApplyPropertyValues();
            Track2.ApplyPropertyValues();
            Track3.ApplyPropertyValues();
            Track4.ApplyPropertyValues();
            Track5.ApplyPropertyValues();

            Rhythm.ApplyPropertyValues();
            //Name.ApplyPropertyValues();
            Master.ApplyPropertyValues();
            RecOption.ApplyPropertyValues();
            PlayOption.ApplyPropertyValues();

            Assign1.ApplyPropertyValues();
            Assign2.ApplyPropertyValues();
            Assign3.ApplyPropertyValues();
            Assign4.ApplyPropertyValues();
            Assign5.ApplyPropertyValues();
            Assign6.ApplyPropertyValues();
            Assign7.ApplyPropertyValues();
            Assign8.ApplyPropertyValues();
            Assign9.ApplyPropertyValues();
            Assign10.ApplyPropertyValues();
            Assign11.ApplyPropertyValues();
            Assign12.ApplyPropertyValues();
            Assign13.ApplyPropertyValues();
            Assign14.ApplyPropertyValues();
            Assign15.ApplyPropertyValues();
            Assign16.ApplyPropertyValues();

            InputFx.ApplyPropertyValues();
            TrackFx.ApplyPropertyValues();

            BeatFxA.ApplyPropertyValues();
            BeatFxB.ApplyPropertyValues();
            BeatFxC.ApplyPropertyValues();

            InputFxA.ApplyPropertyValues();
            InputFxB.ApplyPropertyValues();
            InputFxC.ApplyPropertyValues();

            TrackFxA.ApplyPropertyValues();
            TrackFxB.ApplyPropertyValues();
            TrackFxC.ApplyPropertyValues();
            #endregion DefaultMemory
        }
Ejemplo n.º 3
0
 public override void ApplyChanges <T>(T model)
 {
     if (model is MemoryModel memory)
     {
         Track1.ApplyChanges(memory.Track1);
         Track2.ApplyChanges(memory.Track2);
         Track3.ApplyChanges(memory.Track3);
         Track4.ApplyChanges(memory.Track4);
         Track5.ApplyChanges(memory.Track5);
     }
     else
     {
         throw new ArgumentException("Model must be of type MemoryModel.");
     }
 }
Ejemplo n.º 4
0
        public override void ApplyPropertyValues()
        {
            Track1.ApplyPropertyValues();
            Track2.ApplyPropertyValues();
            Track3.ApplyPropertyValues();
            Track4.ApplyPropertyValues();
            Track5.ApplyPropertyValues();

            Rhythm.ApplyPropertyValues();
            //Name.ApplyPropertyValues();
            Master.ApplyPropertyValues();
            RecOption.ApplyPropertyValues();
            PlayOption.ApplyPropertyValues();

            Assign1.ApplyPropertyValues();
            Assign2.ApplyPropertyValues();
            Assign3.ApplyPropertyValues();
            Assign4.ApplyPropertyValues();
            Assign5.ApplyPropertyValues();
            Assign6.ApplyPropertyValues();
            Assign7.ApplyPropertyValues();
            Assign8.ApplyPropertyValues();
            Assign9.ApplyPropertyValues();
            Assign10.ApplyPropertyValues();
            Assign11.ApplyPropertyValues();
            Assign12.ApplyPropertyValues();
            Assign13.ApplyPropertyValues();
            Assign14.ApplyPropertyValues();
            Assign15.ApplyPropertyValues();
            Assign16.ApplyPropertyValues();

            InputFx.ApplyPropertyValues();
            TrackFx.ApplyPropertyValues();

            BeatFxA.ApplyPropertyValues();
            BeatFxB.ApplyPropertyValues();
            BeatFxC.ApplyPropertyValues();

            InputFxA.ApplyPropertyValues();
            InputFxB.ApplyPropertyValues();
            InputFxC.ApplyPropertyValues();

            TrackFxA.ApplyPropertyValues();
            TrackFxB.ApplyPropertyValues();
            TrackFxC.ApplyPropertyValues();
        }
Ejemplo n.º 5
0
        public ISOMessage Send(ISOMessage message)
        {
            string        deviceId   = "Unknown";
            StringBuilder fieldDebug = new StringBuilder();

            ISOMessage response = new ISOMessage();

            response.Fields = new List <Field>();

            if (message == null || message.Fields == null)
            {
                log.Warn("Empty message received.");
                response.Fields.Add(new Field(39, null, "99"));
                return(response);
            }

            try
            {
                deviceId = message.Fields.Single(s => s.Fieldid == 41).Value;
                log.Trace(t => t("{0} : ISO Message recieved, MTI={1}{2}", deviceId, message.MessageClass, message.MessageFunction));
                if (log.IsDebugEnabled)
                {
                    foreach (var field in message.Fields.OrderBy(o => o.Fieldid))
                    {
                        fieldDebug.AppendLine("Field " + field.Fieldid.ToString("000") + "=" + field.Value);
                    }

                    log.Debug(d => d("{0} : ISO Message{1}{2}", deviceId, Environment.NewLine, fieldDebug.ToString().Trim()));
                }

                //Handshake - TPK
                if (message.MessageClass + message.MessageFunction == "0800")
                {
                    response.MessageClass    = "08";
                    response.MessageFunction = "10";

                    log.Trace(t => t("{0} : Generate session key for device.", deviceId));
                    var resp = _terminalController.GetTerminalSessionKeyClear(deviceId, 0, -2, deviceId);

                    if (resp.ResponseType == ResponseType.SUCCESSFUL)
                    {
                        log.Trace(t => t("{0} : Session key generated for device.", deviceId));
                        log.Debug(d => d("{0} : Session key for device {1}.", deviceId, resp.Value.RandomKey));

                        response.Fields.Add(new Field(39, null, resp.ResponseException));
                        response.Fields.Add(new Field(62, null, resp.Value.RandomKey.Substring(resp.Value.RandomKey.Length % 16)));
                    }
                    else
                    {
                        log.Trace(t => t("{0} : Session key failed to generate for device.", deviceId));
                        log.WarnFormat("{0} : Failed to generate session key for device, error = {1}-{2}", deviceId, resp.ResponseException, resp.ResponseMessage);
                        response.Fields.Add(new Field(39, null, resp.ResponseException));
                    }
                }
                //PIN
                else if (message.MessageClass + message.MessageFunction == "0200")
                {
                    response.MessageClass    = "02";
                    response.MessageFunction = "10";

                    log.Trace(t => t("{0} : Update PIN message from device ", deviceId));

                    var    trackData = message.Fields.Single(s => s.Fieldid == 35).Value;
                    Track2 track2    = new Track2(trackData);

                    TerminalCardData cardData = new TerminalCardData
                    {
                        PINBlockFormat    = 0,
                        PINBlock          = message.Fields.Single(s => s.Fieldid == 57).Value,
                        IsTrack2Encrypted = false,
                        Track2            = trackData,
                        IsPANEncrypted    = false,
                        PAN = track2.PAN
                    };

                    //PINResetISO8583(string deviceId, string operatorCode, string pinBlock, string trackData, long auditUserId, string auditWorkstation)
                    var resp = _terminalController.PINResetISO8583(
                        deviceId,
                        message.Fields.Single(s => s.Fieldid == 52).Value,
                        cardData,
                        //message.Fields.Single(s => s.Fieldid == 57).Value,
                        //message.Fields.Single(s => s.Fieldid == 35).Value,
                        -2, deviceId);

                    if (resp.ResponseType == ResponseType.SUCCESSFUL)
                    {
                        log.Trace(t => t("{0} : PIN updated successfully form device.", deviceId));
                        response.Fields.Add(new Field(39, null, resp.ResponseException));
                    }
                    else
                    {
                        log.Trace(t => t("{0} : Update PIN failed for device.", deviceId));
                        log.WarnFormat("{0} : Failed to update PIN for device, error = {1}-{2}", deviceId, resp.ResponseException, resp.ResponseMessage);

                        response.Fields.Add(new Field(39, null, resp.ResponseException));
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(deviceId + " : Unexpected error.", ex);
                response.Fields.Add(new Field(39, null, "99"));
            }
            finally
            {
                //echo back fields:
                foreach (var field in message.Fields)
                {
                    switch (field.Fieldid)
                    {
                    case 3:
                    case 11:
                    case 41:
                    case 42: response.Fields.Add(field); break;

                    default:
                        break;
                    }
                }

                if (log.IsDebugEnabled)
                {
                    fieldDebug.Clear();

                    foreach (var field in response.Fields.OrderBy(o => o.Fieldid))
                    {
                        fieldDebug.AppendLine("Field " + field.Fieldid.ToString("000") + "=" + field.Value);
                    }
                }
            }

            log.Trace(t => t(deviceId + " : Responding with MTI=" + response.MessageClass + response.MessageFunction + ", code=" + response.Fields.Single(s => s.Fieldid == 39).Value));
            log.Debug(d => d(deviceId + " : ISO Response " + Environment.NewLine + fieldDebug.ToString().Trim()));

            return(response);
        }