//
// This file was generated by the BinaryNotes compiler.
// See http://bnotes.sourceforge.net 
// Any modifications to this file will be lost upon recompilation of the source ASN.1. 
//

using GSF.ASN1;
using GSF.ASN1.Attributes;
using GSF.ASN1.Coders;

namespace GSF.MMS.Model
{
    
    [ASN1PreparedElement]
    [ASN1Sequence(Name = "ReportEventConditionStatus_Response", IsSet = false)]
    public class ReportEventConditionStatus_Response : IASN1PreparedElement
    {
        private static readonly IASN1PreparedElementData preparedData = CoderFactory.getInstance().newPreparedElementData(typeof(ReportEventConditionStatus_Response));
        private EC_State currentState_;


        private bool enabled_;

        private bool enabled_present;
        private Unsigned32 numberOfEventEnrollments_;


        private EventTime timeOfLastTransitionToActive_;

        private bool timeOfLastTransitionToActive_present;


        private EventTime timeOfLastTransitionToIdle_;

        private bool timeOfLastTransitionToIdle_present;

        [ASN1Element(Name = "currentState", IsOptional = false, HasTag = true, Tag = 0, HasDefaultValue = false)]
        public EC_State CurrentState
        {
            get
            {
                return currentState_;
            }
            set
            {
                currentState_ = value;
            }
        }

        [ASN1Element(Name = "numberOfEventEnrollments", IsOptional = false, HasTag = true, Tag = 1, HasDefaultValue = false)]
        public Unsigned32 NumberOfEventEnrollments
        {
            get
            {
                return numberOfEventEnrollments_;
            }
            set
            {
                numberOfEventEnrollments_ = value;
            }
        }

        [ASN1Boolean(Name = "")]
        [ASN1Element(Name = "enabled", IsOptional = true, HasTag = true, Tag = 2, HasDefaultValue = false)]
        public bool Enabled
        {
            get
            {
                return enabled_;
            }
            set
            {
                enabled_ = value;
                enabled_present = true;
            }
        }

        [ASN1Element(Name = "timeOfLastTransitionToActive", IsOptional = true, HasTag = true, Tag = 3, HasDefaultValue = false)]
        public EventTime TimeOfLastTransitionToActive
        {
            get
            {
                return timeOfLastTransitionToActive_;
            }
            set
            {
                timeOfLastTransitionToActive_ = value;
                timeOfLastTransitionToActive_present = true;
            }
        }

        [ASN1Element(Name = "timeOfLastTransitionToIdle", IsOptional = true, HasTag = true, Tag = 4, HasDefaultValue = false)]
        public EventTime TimeOfLastTransitionToIdle
        {
            get
            {
                return timeOfLastTransitionToIdle_;
            }
            set
            {
                timeOfLastTransitionToIdle_ = value;
                timeOfLastTransitionToIdle_present = true;
            }
        }

        public void initWithDefaults()
        {
        }

        public IASN1PreparedElementData PreparedData
        {
            get
            {
                return preparedData;
            }
        }


        public bool isEnabledPresent()
        {
            return enabled_present;
        }

        public bool isTimeOfLastTransitionToActivePresent()
        {
            return timeOfLastTransitionToActive_present;
        }

        public bool isTimeOfLastTransitionToIdlePresent()
        {
            return timeOfLastTransitionToIdle_present;
        }
    }
}