/* DeviceCommunicationControl-Request ::= SEQUENCE { timeDuration  Unsigned16 OPTIONAL, enable-disable  ENUMERATED { enable (0), disable (1) }, password  CharacterString (SIZE(1..20)) OPTIONAL }  */
static guint fDeviceCommunicationControlRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
/* DeviceCommunicationControl-Request ::= SEQUENCE { timeDuration  Unsigned16 OPTIONAL, enable-disable  ENUMERATED { enable (0), disable (1) }, password  CharacterString (SIZE(1..20)) OPTIONAL }  */
static guint fDeviceCommunicationControlRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
    guint lastoffset = 0;
    while (tvb_reported_length_remaining(tvb, offset) > 0) {
        lastoffset = offset;
        switch (fTagNo(tvb, offset)) {
        case 0:
            offset = fUnsignedTag(tvb, pinfo, tree, offset, "time Duration: ");
            break;
        case 1:
            offset = fEnumeratedTag(tvb, pinfo, tree, offset, "enable-disable: ",
                BACnetEnableDisable);
            break;
        case 2:
            offset = fCharacterString(tvb, pinfo, tree, offset, "Password: ");
            break;
        default:
            return offset;
        }
        if (offset == lastoffset) break;
    }
    return offset;
}