public static int Encode_Property_State(ref Byte[] apdu, ref BACNET_PROPERTY_STATE value, int pos)
        {
            int len = 0;

            switch (value.tag)
            {
            case BACNET_PROPERTY_STATE_TYPE.UNSIGNED_VALUE:
                len =
                    Encode_Context_Unsigned(ref apdu, 11,
                                            value.value, pos);
                break;
            }
            return(len);
        }
        public static int Decode_Property_State(ref Byte[] apdu, ref BACNET_PROPERTY_STATE value, int pos)
        {
            int    len            = 0;
            UInt32 len_value_type = 0;
            int    section_length;
            // UInt32 enumValue;
            Byte tagnum = 0;

            section_length = Decode_Tag_number_and_Value(ref apdu, ref tagnum, ref len_value_type, pos + len);
            len           += section_length;
            value.tag      = (BACNET_PROPERTY_STATE_TYPE)tagnum;
            switch (value.tag)
            {
            case BACNET_PROPERTY_STATE_TYPE.UNSIGNED_VALUE:
                section_length = Decode_Unsigned(ref apdu, len_value_type, ref value.value, len + pos);
                len           += section_length;
                break;
            }
            return(len);
        }
        public static int Decode_Context_Poroperty_State(ref Byte[] apdu, Byte tag_number, ref BACNET_PROPERTY_STATE value, int pos)
        {
            int len = 0;
            int section_length;

            if (Decode_Is_Opening_Tag_Number(ref apdu, tag_number, pos + len))
            {
                len++;
            }
            section_length = Decode_Property_State(ref apdu, ref value, pos + len);
            len           += section_length;


            if (Decode_Is_Closing_Tag_Number(ref apdu, tag_number, pos + len))
            {
                len++;
            }
            return(len);
        }