/* * * This file was generated by LLRP Code Generator * see http://llrp-toolkit.cvs.sourceforge.net/llrp-toolkit * for more information * Generated on: Mon Mar 10 14:26:47 KST 2014; * */ /* * Copyright 2007 ETH Zurich * * 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 kr.ac.kaist.resl.ltk.generated.parameters; import org.apache.log4j.Logger; import org.jdom.Content; import org.jdom.Document; import org.jdom.Element; import org.jdom.Namespace; import org.llrp.ltk.exceptions.InvalidLLRPMessageException; import org.llrp.ltk.exceptions.MissingParameterException; import kr.ac.kaist.resl.ltk.generated.LLRPConstants; import kr.ac.kaist.resl.ltk.generated.enumerations.GPIPortState; import org.llrp.ltk.types.Bit; import org.llrp.ltk.types.BitList; import org.llrp.ltk.types.LLRPBitList; import org.llrp.ltk.types.LLRPMessage; import org.llrp.ltk.types.SignedShort; import org.llrp.ltk.types.TLVParameter; import org.llrp.ltk.types.TVParameter; import org.llrp.ltk.types.UnsignedShort; import java.util.LinkedList; import java.util.List; /** * This Parameter carries the current configuration and state of a single GPI port. In a SET_READER_CONFIG message, this parameter is used to enable or disable the GPI port using the GPIConfig field; the GPIState field is ignored by the reader. In a GET_READER_CONFIG message, this parameter reports both the configuration and state of the GPI port.When a ROSpec or AISpec is configured on a GPI-capable reader with GPI start and/or stop triggers, those GPIs must be enabled by the client with a SET_READER_CONFIG message for the triggers to function.Readers that do not support GPIs SHALL set NumGPIs in the GPIOCapabilities to zero. If such a Reader receives a GET_READER_CONFIG with a GPIPortCurrentState Parameter, the Reader SHALL return an error message and not process any of the parameters in that message. See also {@link <a href="http://www.epcglobalinc.org/standards/llrp/llrp_1_0_1-standard-20070813.pdf#page=75&view=fit">LLRP Specification Section 12.2.6.3</a>} and {@link <a href="http://www.epcglobalinc.org/standards/llrp/llrp_1_0_1-standard-20070813.pdf#page=142&view=fit">LLRP Specification Section 16.2.6.9</a>} */ /** * This Parameter carries the current configuration and state of a single GPI port. In a SET_READER_CONFIG message, this parameter is used to enable or disable the GPI port using the GPIConfig field; the GPIState field is ignored by the reader. In a GET_READER_CONFIG message, this parameter reports both the configuration and state of the GPI port.When a ROSpec or AISpec is configured on a GPI-capable reader with GPI start and/or stop triggers, those GPIs must be enabled by the client with a SET_READER_CONFIG message for the triggers to function.Readers that do not support GPIs SHALL set NumGPIs in the GPIOCapabilities to zero. If such a Reader receives a GET_READER_CONFIG with a GPIPortCurrentState Parameter, the Reader SHALL return an error message and not process any of the parameters in that message. See also {@link <a href="http://www.epcglobalinc.org/standards/llrp/llrp_1_0_1-standard-20070813.pdf#page=75&view=fit">LLRP Specification Section 12.2.6.3</a>} and {@link <a href="http://www.epcglobalinc.org/standards/llrp/llrp_1_0_1-standard-20070813.pdf#page=142&view=fit">LLRP Specification Section 16.2.6.9</a>} . */ public class GPIPortCurrentState extends TLVParameter { public static final SignedShort TYPENUM = new SignedShort(225); private static final Logger LOGGER = Logger.getLogger(GPIPortCurrentState.class); protected UnsignedShort gPIPortNum; protected Bit config; protected BitList reserved0 = new BitList(7); protected GPIPortState state; /** * empty constructor to create new parameter. */ public GPIPortCurrentState() { } /** * Constructor to create parameter from binary encoded parameter * calls decodeBinary to decode parameter. * @param list to be decoded */ public GPIPortCurrentState(LLRPBitList list) { decodeBinary(list); } /** * Constructor to create parameter from xml encoded parameter * calls decodeXML to decode parameter. * @param element to be decoded */ public GPIPortCurrentState(Element element) throws InvalidLLRPMessageException { decodeXML(element); } /** * {@inheritDoc} */ public LLRPBitList encodeBinarySpecific() { LLRPBitList resultBits = new LLRPBitList(); if (gPIPortNum == null) { LOGGER.warn(" gPIPortNum not set"); throw new MissingParameterException( " gPIPortNum not set for Parameter of Type GPIPortCurrentState"); } resultBits.append(gPIPortNum.encodeBinary()); if (config == null) { LOGGER.warn(" config not set"); throw new MissingParameterException( " config not set for Parameter of Type GPIPortCurrentState"); } resultBits.append(config.encodeBinary()); resultBits.append(reserved0.encodeBinary()); if (state == null) { LOGGER.warn(" state not set"); throw new MissingParameterException( " state not set for Parameter of Type GPIPortCurrentState"); } resultBits.append(state.encodeBinary()); return resultBits; } /** * {@inheritDoc} */ public Content encodeXML(String name, Namespace ns) { // element in namespace defined by parent element Element element = new Element(name, ns); // child element are always in default LLRP namespace ns = Namespace.getNamespace("llrp", LLRPConstants.LLRPNAMESPACE); if (gPIPortNum == null) { LOGGER.warn(" gPIPortNum not set"); throw new MissingParameterException(" gPIPortNum not set"); } else { element.addContent(gPIPortNum.encodeXML("GPIPortNum", ns)); } if (config == null) { LOGGER.warn(" config not set"); throw new MissingParameterException(" config not set"); } else { element.addContent(config.encodeXML("Config", ns)); } //element.addContent(reserved0.encodeXML("reserved",ns)); if (state == null) { LOGGER.warn(" state not set"); throw new MissingParameterException(" state not set"); } else { element.addContent(state.encodeXML("State", ns)); } //parameters return element; } /** * {@inheritDoc} */ protected void decodeBinarySpecific(LLRPBitList binary) { int position = 0; int tempByteLength; int tempLength = 0; int count; SignedShort type; int fieldCount; Custom custom; gPIPortNum = new UnsignedShort(binary.subList(position, UnsignedShort.length())); position += UnsignedShort.length(); config = new Bit(binary.subList(position, Bit.length())); position += Bit.length(); position += reserved0.length(); state = new GPIPortState(binary.subList(position, GPIPortState.length())); position += GPIPortState.length(); } /** * {@inheritDoc} */ public void decodeXML(Element element) throws InvalidLLRPMessageException { List<Element> tempList = null; boolean atLeastOnce = false; Custom custom; Element temp = null; // child element are always in default LLRP namespace Namespace ns = Namespace.getNamespace(LLRPConstants.LLRPNAMESPACE); temp = element.getChild("GPIPortNum", ns); if (temp != null) { gPIPortNum = new UnsignedShort(temp); } element.removeChild("GPIPortNum", ns); temp = element.getChild("Config", ns); if (temp != null) { config = new Bit(temp); } element.removeChild("Config", ns); temp = element.getChild("State", ns); if (temp != null) { state = new GPIPortState(temp); } element.removeChild("State", ns); if (element.getChildren().size() > 0) { String message = "GPIPortCurrentState has unknown element " + ((Element) element.getChildren().get(0)).getName(); throw new InvalidLLRPMessageException(message); } } //setters /** * set gPIPortNum of type UnsignedShort . * @param gPIPortNum to be set */ public void setGPIPortNum(final UnsignedShort gPIPortNum) { this.gPIPortNum = gPIPortNum; } /** * set config of type Bit . * @param config to be set */ public void setConfig(final Bit config) { this.config = config; } /** * set state of type GPIPortState . * @param state to be set */ public void setState(final GPIPortState state) { this.state = state; } // end setter //getters /** * get gPIPortNum of type UnsignedShort. * @return type UnsignedShort to be set */ public UnsignedShort getGPIPortNum() { return this.gPIPortNum; } /** * get config of type Bit. * @return type Bit to be set */ public Bit getConfig() { return this.config; } /** * get state of type GPIPortState. * @return GPIPortState */ public GPIPortState getState() { return state; } // end getters //add methods // end add /** * For TLV Parameter length can not be determined at compile time. This method therefore always returns 0. * @return Integer always zero */ public static Integer length() { return 0; } /** * {@inheritDoc} */ public SignedShort getTypeNum() { return TYPENUM; } /** * {@inheritDoc} */ public String getName() { return "GPIPortCurrentState"; } /** * return string representation. All field values but no parameters are included * @return String */ public String toString() { String result = "GPIPortCurrentState: "; result += ", gPIPortNum: "; result += gPIPortNum; result += ", config: "; result += config; result += ", state: "; result += state; result = result.replaceFirst(", ", ""); return result; } }