16 package com.sonycsl.echo.eoj.profile;
18 import java.io.IOException;
19 import java.util.ArrayList;
20 import java.util.HashSet;
21 import java.util.Iterator;
22 import java.util.List;
31 import com.sonycsl.echo.eoj.profile.ProfileObject.Getter;
32 import com.sonycsl.echo.eoj.profile.ProfileObject.Informer;
33 import com.sonycsl.echo.eoj.profile.ProfileObject.Setter;
37 @SuppressWarnings(
"unused")
38 private static final String TAG = NodeProfile.class.getSimpleName();
75 Echo.getEventListener().onNewNodeProfile(
this);
80 super.setupPropertyMaps();
100 boolean success = super.setProperty(property);
101 if(success)
return success;
103 switch(property.
epc) {
106 default :
return false;
112 byte[] edt = super.getProperty(epc);
113 if(edt != null)
return edt;
126 default :
return null;
132 boolean valid = super.isValidProperty(property);
133 if(valid)
return valid;
135 switch(property.
epc) {
146 default :
return false;
190 if(edt == null || !(edt.length == 1))
return false;
215 if(edt == null || !(edt.length == 4))
return false;
246 if(edt == null || !(edt.length == 9 || edt.length == 17))
return false;
270 if(edt == null || !(edt.length == 2))
return false;
310 if(edt == null || !(edt.length == 2))
return false;
330 byte[] ret =
new byte[3];
331 int num =
getNode().getDevices().length;
333 ret[2] = (byte)(num & 0xFF);
334 ret[1] = (byte)((num >> 8) & 0xFF);
335 ret[0] = (byte)((num >> 16) & 0xFF);
340 if(edt == null || !(edt.length == 3))
return false;
360 HashSet<Short> hashSet =
new HashSet<Short>();
363 hashSet.add(d.getEchoClassCode());
365 int size = hashSet.size() + 1;
366 byte[] edt =
new byte[2];
367 edt[0] = (byte)((size >> 8) & 0xFF);
368 edt[1] = (byte)(size & 0xFF);
373 if(edt == null || !(edt.length == 2))
return false;
397 return EchoUtils.devicesToByteArray(
getNode().getDevices(), 0);
401 if(edt == null || !(edt.length <= 253))
return false;
428 return EchoUtils.devicesToByteArray(
getNode().getDevices(), 0);
432 if(edt == null || !(edt.length <= 253))
return false;
454 HashSet<Short> hashSet =
new HashSet<Short>();
457 hashSet.add(d.getEchoClassCode());
459 int size = hashSet.size();
460 int s = (size >= 9) ? 8 : size;
461 byte[] edt =
new byte[1+(s*2)];
463 Iterator<Short> itr = hashSet.iterator();
464 for(
int i = 0; i < s; i++) {
465 short echoClassCode = itr.next();
466 edt[1+(i*2)] = (byte)((echoClassCode >> 8) & 0xFF);
467 edt[2+(i*2)] = (byte)(echoClassCode & 0xFF);
473 if(edt == null || !(edt.length <= 253))
return false;
482 public Setter
set(
boolean responseRequired) {
484 ,
getNode().getAddressStr(), responseRequired);
488 public Getter
get() {
499 protected Informer
inform(
boolean multicast) {
504 address =
getNode().getAddressStr();
518 public static class Receiver
extends ProfileObject.Receiver {
522 protected boolean onSetProperty(
EchoObject eoj,
short tid, byte esv,
524 boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
527 switch(property.epc) {
529 onSetOperatingStatus(eoj, tid, esv, property, success);
532 onSetUniqueIdentifierData(eoj, tid, esv, property, success);
540 protected boolean onGetProperty(
EchoObject eoj,
short tid, byte esv,
542 boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
545 switch(property.epc) {
547 onGetOperatingStatus(eoj, tid, esv, property, success);
550 onGetVersionInformation(eoj, tid, esv, property, success);
553 onGetIdentificationNumber(eoj, tid, esv, property, success);
556 onGetFaultContent(eoj, tid, esv, property, success);
559 onGetUniqueIdentifierData(eoj, tid, esv, property, success);
562 onGetNumberOfSelfNodeInstances(eoj, tid, esv, property, success);
565 onGetNumberOfSelfNodeClasses(eoj, tid, esv, property, success);
568 onGetInstanceListNotification(eoj, tid, esv, property, success);
571 onGetSelfNodeInstanceListS(eoj, tid, esv, property, success);
574 onGetSelfNodeClassList(eoj, tid, esv, property, success);
582 protected boolean onInformProperty(
EchoObject eoj,
short tid, byte esv,
583 EchoProperty property) {
584 boolean ret = super.onInformProperty(eoj, tid, esv, property);
587 switch(property.epc) {
589 onInformInstanceListNotification(eoj, tid, esv, property);
613 protected void onSetOperatingStatus(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {}
632 protected void onGetOperatingStatus(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {}
652 protected void onGetVersionInformation(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {}
678 protected void onGetIdentificationNumber(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {}
695 protected void onGetFaultContent(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {}
712 protected void onSetUniqueIdentifierData(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {}
729 protected void onGetUniqueIdentifierData(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {}
746 protected void onGetNumberOfSelfNodeInstances(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {}
763 protected void onGetNumberOfSelfNodeClasses(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {}
783 protected void onGetInstanceListNotification(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {
804 protected void onInformInstanceListNotification(
EchoObject eoj,
short tid, byte esv, EchoProperty property) {}
822 protected void onGetSelfNodeInstanceListS(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {
841 protected void onGetSelfNodeClassList(
EchoObject eoj,
short tid, byte esv, EchoProperty property,
boolean success) {}
844 public static class Setter
extends ProfileObject.Setter {
846 public Setter(
short dstEchoClassCode, byte dstEchoInstanceCode
847 , String dstEchoAddress,
boolean responseRequired) {
848 super(dstEchoClassCode, dstEchoInstanceCode
849 , dstEchoAddress, responseRequired);
853 public Setter reqSetProperty(byte epc, byte[] edt) {
854 return (Setter)super.reqSetProperty(epc, edt);
873 public Setter reqSetOperatingStatus(byte[] edt) {
892 public Setter reqSetUniqueIdentifierData(byte[] edt) {
898 public static class Getter
extends ProfileObject.Getter {
899 public Getter(
short dstEchoClassCode, byte dstEchoInstanceCode
900 , String dstEchoAddress) {
901 super(dstEchoClassCode, dstEchoInstanceCode
905 public Getter reqGetProperty(byte epc) {
906 return (Getter)super.reqGetProperty(epc);
909 public Getter reqGetFaultStatus() {
910 return (Getter)super.reqGetFaultStatus();
913 public Getter reqGetManufacturerCode() {
914 return (Getter)super.reqGetManufacturerCode();
917 public Getter reqGetPlaceOfBusinessCode() {
918 return (Getter)super.reqGetPlaceOfBusinessCode();
921 public Getter reqGetProductCode() {
922 return (Getter)super.reqGetProductCode();
925 public Getter reqGetSerialNumber() {
926 return (Getter)super.reqGetSerialNumber();
929 public Getter reqGetDateOfManufacture() {
930 return (Getter)super.reqGetDateOfManufacture();
933 public Getter reqGetStatusChangeAnnouncementPropertyMap() {
934 return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
937 public Getter reqGetSetPropertyMap() {
938 return (Getter)super.reqGetSetPropertyMap();
941 public Getter reqGetGetPropertyMap() {
942 return (Getter)super.reqGetGetPropertyMap();
962 public Getter reqGetOperatingStatus() {
984 public Getter reqGetVersionInformation() {
1012 public Getter reqGetIdentificationNumber() {
1031 public Getter reqGetFaultContent() {
1050 public Getter reqGetUniqueIdentifierData() {
1069 public Getter reqGetNumberOfSelfNodeInstances() {
1088 public Getter reqGetNumberOfSelfNodeClasses() {
1108 public Getter reqGetSelfNodeInstanceListS() {
1128 public Getter reqGetSelfNodeClassList() {
1134 public static class Informer
extends ProfileObject.Informer {
1139 public Informer(
short echoClassCode, byte echoInstanceCode
1141 super(echoClassCode, echoInstanceCode
1142 , dstEchoAddress, isSelfObject);
1146 public Informer reqInformProperty(byte epc) {
1147 return (Informer)super.reqInformProperty(epc);
1151 public Informer reqInformFaultStatus() {
1152 return (Informer)super.reqInformFaultStatus();
1155 public Informer reqInformManufacturerCode() {
1156 return (Informer)super.reqInformManufacturerCode();
1159 public Informer reqInformPlaceOfBusinessCode() {
1160 return (Informer)super.reqInformPlaceOfBusinessCode();
1163 public Informer reqInformProductCode() {
1164 return (Informer)super.reqInformProductCode();
1167 public Informer reqInformSerialNumber() {
1168 return (Informer)super.reqInformSerialNumber();
1171 public Informer reqInformDateOfManufacture() {
1172 return (Informer)super.reqInformDateOfManufacture();
1175 public Informer reqInformStatusChangeAnnouncementPropertyMap() {
1176 return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
1179 public Informer reqInformSetPropertyMap() {
1180 return (Informer)super.reqInformSetPropertyMap();
1183 public Informer reqInformGetPropertyMap() {
1184 return (Informer)super.reqInformGetPropertyMap();
1204 public Informer reqInformOperatingStatus() {
1226 public Informer reqInformVersionInformation() {
1254 public Informer reqInformIdentificationNumber() {
1273 public Informer reqInformFaultContent() {
1292 public Informer reqInformUniqueIdentifierData() {
1311 public Informer reqInformNumberOfSelfNodeInstances() {
1330 public Informer reqInformNumberOfSelfNodeClasses() {
1352 public Informer reqInformInstanceListNotification() {
1372 public Informer reqInformSelfNodeInstanceListS() {
1392 public Informer reqInformSelfNodeClassList() {
1398 public static class InformerC
extends EchoObject.InformerC {
1399 public InformerC(
short srcEchoClassCode, byte srcEchoInstanceCode
1400 , String dstEchoAddress) {
1401 super(srcEchoClassCode, srcEchoInstanceCode
1423 public InformerC informInstanceListNotification() {
1430 public static class Proxy
extends NodeProfile {
1434 public void setInstanceCode(byte echoInstanceCode) {
1435 mEchoInstanceCode = echoInstanceCode;
1440 return mEchoInstanceCode;
1485 public static Setter
setG(
boolean responseRequired) {
InformerC informC(String address)
boolean isValidInstanceListNotification(byte[] edt)
static final byte EPC_IDENTIFICATION_NUMBER
byte[] getInstanceListNotification()
boolean isValidIdentificationNumber(byte[] edt)
static final short ECHO_CLASS_CODE
static final byte EPC_NUMBER_OF_SELF_NODE_INSTANCES
static final byte INSTANCE_CODE
static final byte EPC_NUMBER_OF_SELF_NODE_CLASSES
static Setter setG(boolean responseRequired)
boolean isValidNumberOfSelfNodeInstances(byte[] edt)
final void addStatusChangeAnnouncementProperty(byte epc)
static final byte EPC_INSTANCE_LIST_NOTIFICATION
static final byte EPC_UNIQUE_IDENTIFIER_DATA
final void addGetProperty(byte epc)
byte[] getSelfNodeInstanceListS()
boolean isValidUniqueIdentifierData(byte[] edt)
abstract byte[] getOperatingStatus()
static final byte EPC_OPERATING_STATUS
abstract byte[] getUniqueIdentifierData()
static final byte EPC_SELF_NODE_INSTANCE_LIST_S
abstract byte[] getManufacturerCode()
abstract boolean setUniqueIdentifierData(byte[] edt)
final void addSetProperty(byte epc)
static Informer informG()
boolean isValidOperatingStatus(byte[] edt)
static final byte EPC_FAULT_CONTENT
abstract byte[] getIdentificationNumber()
boolean setOperatingStatus(byte[] edt)
byte[] getNumberOfSelfNodeClasses()
boolean isValidSelfNodeClassList(byte[] edt)
boolean isValidNumberOfSelfNodeClasses(byte[] edt)
byte[] getNumberOfSelfNodeInstances()
boolean isValidVersionInformation(byte[] edt)
boolean isValidFaultContent(byte[] edt)
static final byte EPC_SELF_NODE_CLASS_LIST
synchronized boolean setProperty(EchoProperty property)
synchronized boolean isValidProperty(EchoProperty property)
static final byte EPC_VERSION_INFORMATION
byte[] getVersionInformation()
boolean isValidSelfNodeInstanceListS(byte[] edt)
static final byte INSTANCE_CODE_TRANSMISSION_ONLY
Informer inform(boolean multicast)
static final String MULTICAST_ADDRESS
Setter set(boolean responseRequired)
static final byte[] EDT_VERSION_INFORMATION
synchronized byte[] getProperty(byte epc)
final boolean isSelfObject()
byte[] getSelfNodeClassList()