/*
*
* 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.messages;
import org.apache.log4j.Logger;
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.parameters.Custom;
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.UnsignedInteger;
import org.llrp.ltk.types.UnsignedShort;
import java.util.LinkedList;
import java.util.List;
/**
* This message is issued by the Reader to the Client. This message can be used by the Client to monitor the LLRP-layer connectivity with the Reader. The Client configures the trigger at the Reader to send the Keepalive message. The configuration is done using the KeepaliveSpec parameter (section 12.2.4).
See also {@link <a href="http://www.epcglobalinc.org/standards/llrp/llrp_1_0_1-standard-20070813.pdf#page=77&view=fit">LLRP Specification Section 13.1.3</a>}
and {@link <a href="http://www.epcglobalinc.org/standards/llrp/llrp_1_0_1-standard-20070813.pdf#page=125&view=fit">LLRP Specification Section 16.1.31</a>}
*/
public class KEEPALIVE extends LLRPMessage {
public static final SignedShort TYPENUM = new SignedShort(62);
private static final Logger LOGGER = Logger.getLogger(KEEPALIVE.class);
public static final String RESPONSETYPE = "";
/**
* empty constructor to create new message
* with LLRP version set to 1.0 (0x1).
*/
public KEEPALIVE() {
setVersion(new BitList(0, 0, 1));
}
/**
* Constructor to create message from binary encoded message
* calls decodeBinary to decode message.
* @param list to be decoded
*/
public KEEPALIVE(final LLRPBitList list) throws InvalidLLRPMessageException {
decodeBinary(list.toByteArray());
}
/**
* Constructor to create message from binary encoded message
* calls decodeBinary to decode message.
* @param byteArray representing message
*/
public KEEPALIVE(final byte[] byteArray) throws InvalidLLRPMessageException {
decodeBinary(byteArray);
}
/**
* Constructor to create message from xml encoded message
* calls decodeXML to decode message.
* @param document to be decoded
*/
public KEEPALIVE(final Document document)
throws InvalidLLRPMessageException {
decodeXML(document);
}
/**
* {@inheritDoc}
*/
protected LLRPBitList encodeBinarySpecific()
throws InvalidLLRPMessageException {
LLRPBitList resultBits = new LLRPBitList();
return resultBits;
}
/**
* {@inheritDoc}
*/
public Document encodeXML() throws InvalidLLRPMessageException {
try {
Namespace ns = Namespace.getNamespace("llrp",
LLRPConstants.LLRPNAMESPACE);
Element root = new Element("KEEPALIVE", ns);
// Element root = new Element("KEEPALIVE");
root.addNamespaceDeclaration(Namespace.getNamespace("llrp",
LLRPConstants.LLRPNAMESPACE));
if (version == null) {
throw new InvalidLLRPMessageException("Version not set");
} else {
root.setAttribute("Version", version.toInteger().toString());
}
if (messageID == null) {
throw new InvalidLLRPMessageException("MessageID not set");
} else {
root.setAttribute("MessageID", messageID.toString(10));
}
//parameters
Document doc = new Document(root);
if (isValidXMLMessage(doc, LLRPConstants.LLRPMESSAGESCHEMAPATH)) {
return doc;
} else {
return null;
}
} catch (IllegalArgumentException e) {
throw new InvalidLLRPMessageException(e.getMessage());
} catch (MissingParameterException e) {
throw new InvalidLLRPMessageException(e.getMessage());
}
}
/**
* {@inheritDoc}
*/
protected void decodeBinarySpecific(LLRPBitList binary)
throws InvalidLLRPMessageException {
int position = 0;
int tempByteLength;
int tempLength = 0;
int count;
SignedShort type;
int fieldCount;
Custom custom;
}
/**
* {@inheritDoc}
*/
public void decodeXML(final Document document)
throws InvalidLLRPMessageException {
Element temp = null;
Custom custom;
// child element are always in default LLRP namespace
Namespace ns = Namespace.getNamespace(LLRPConstants.LLRPNAMESPACE);
try {
isValidXMLMessage(document, LLRPConstants.LLRPMESSAGESCHEMAPATH);
Element root = (Element) document.getRootElement().clone();
List<Element> tempList = null;
// the version field is always 3 bit long
// if the version attribute is not set in the LTK-XML message,
// it is set to version 001
String versionAttribute = root.getAttributeValue("Version");
if (versionAttribute != null) {
version = new BitList(3);
version.setValue(new Integer(versionAttribute));
} else {
version = new BitList(0, 0, 1);
}
messageID = new UnsignedInteger(root.getAttributeValue("MessageID"));
if (root.getChildren().size() > 0) {
String message = "KEEPALIVE has unknown element " +
((Element) root.getChildren().get(0)).getName();
throw new InvalidLLRPMessageException(message);
}
} catch (IllegalArgumentException e) {
throw new InvalidLLRPMessageException(e.getMessage());
} catch (MissingParameterException e) {
throw new InvalidLLRPMessageException(e.getMessage());
}
}
//setters
// end setter
//getters
// end getters
//add methods
// end add
@Override
public String getResponseType() {
return RESPONSETYPE;
}
@Override
public String getName() {
return "KEEPALIVE";
}
/**
* return uniuque type number.
* @return SignedShort holding unique type number
*/
public SignedShort getTypeNum() {
return TYPENUM;
}
}