/*
|
* Copyright 2011-17 Fraunhofer ISE, energy & meteo Systems GmbH and other contributors
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*
|
*/
|
package org.openmuc.openiec61850;
|
|
public final class BdaOptFlds extends BdaBitString {
|
|
public BdaOptFlds(ObjectReference objectReference, Fc fc) {
|
super(objectReference, fc, null, 10, false, false);
|
basicType = BdaType.OPTFLDS;
|
setDefault();
|
}
|
|
@Override
|
public void setDefault() {
|
/* default of buffer overflow is true by default in IEC 61850-6 sec. 9.3.8 */
|
value = new byte[] { 0x02, 0x00 };
|
}
|
|
@Override
|
public BdaOptFlds copy() {
|
BdaOptFlds copy = new BdaOptFlds(objectReference, fc);
|
byte[] valueCopy = new byte[value.length];
|
System.arraycopy(value, 0, valueCopy, 0, value.length);
|
copy.setValue(valueCopy);
|
if (mirror == null) {
|
copy.mirror = this;
|
}
|
else {
|
copy.mirror = mirror;
|
}
|
return copy;
|
}
|
|
public boolean isSequenceNumber() {
|
return (value[0] & 0x40) == 0x40;
|
}
|
|
public boolean isReportTimestamp() {
|
return (value[0] & 0x20) == 0x20;
|
}
|
|
public boolean isReasonForInclusion() {
|
return (value[0] & 0x10) == 0x10;
|
}
|
|
/**
|
* Will the data set reference (not just the name) be included in the report.
|
*
|
* @return true if the data set reference (not just the name) will be included in the report
|
*/
|
public boolean isDataSetName() {
|
return (value[0] & 0x08) == 0x08;
|
}
|
|
public boolean isDataReference() {
|
return (value[0] & 0x04) == 0x04;
|
}
|
|
public boolean isBufferOverflow() {
|
return (value[0] & 0x02) == 0x02;
|
}
|
|
public boolean isEntryId() {
|
return (value[0] & 0x01) == 0x01;
|
}
|
|
public boolean isConfigRevision() {
|
return (value[1] & 0x80) == 0x80;
|
}
|
|
public boolean isSegmentation() {
|
return (value[1] & 0x40) == 0x40;
|
}
|
|
public void setSequenceNumber(boolean sequenceNumber) {
|
if (sequenceNumber) {
|
value[0] = (byte) (value[0] | 0x40);
|
}
|
else {
|
value[0] = (byte) (value[0] & 0xbf);
|
}
|
}
|
|
public void setReportTimestamp(boolean reportTimestamp) {
|
if (reportTimestamp) {
|
value[0] = (byte) (value[0] | 0x20);
|
}
|
else {
|
value[0] = (byte) (value[0] & 0x2f);
|
}
|
}
|
|
public void setReasonForInclusion(boolean reasonForInclusion) {
|
if (reasonForInclusion) {
|
value[0] = (byte) (value[0] | 0x10);
|
}
|
else {
|
value[0] = (byte) (value[0] & 0xef);
|
}
|
}
|
|
public void setDataSetName(boolean dataSetName) {
|
if (dataSetName) {
|
value[0] = (byte) (value[0] | 0x08);
|
}
|
else {
|
value[0] = (byte) (value[0] & 0xf7);
|
}
|
}
|
|
public void setDataReference(boolean dataReference) {
|
if (dataReference) {
|
value[0] = (byte) (value[0] | 0x04);
|
}
|
else {
|
value[0] = (byte) (value[0] & 0xfb);
|
}
|
}
|
|
public void setBufferOverflow(boolean bufferOverflow) {
|
if (bufferOverflow) {
|
value[0] = (byte) (value[0] | 0x02);
|
}
|
else {
|
value[0] = (byte) (value[0] & 0xfd);
|
}
|
}
|
|
public void setEntryId(boolean entryId) {
|
if (entryId) {
|
value[0] = (byte) (value[0] | 0x01);
|
}
|
else {
|
value[0] = (byte) (value[0] & 0xfe);
|
}
|
}
|
|
public void setConfigRevision(boolean configRevision) {
|
if (configRevision) {
|
value[1] = (byte) (value[1] | 0x80);
|
}
|
else {
|
value[1] = (byte) (value[1] & 0x7f);
|
}
|
}
|
|
public void setSegmentation(boolean segmentation) {
|
if (segmentation) {
|
value[1] = (byte) (value[1] | 0x40);
|
}
|
else {
|
value[1] = (byte) (value[1] & 0xbf);
|
}
|
}
|
|
}
|