OpenECHO
 All Classes Namespaces Files Functions Variables
NodeProfile.java
Go to the documentation of this file.
1 /*
2  * Copyright 2012 Sony Computer Science Laboratories, Inc. <info@kadecot.net>
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.sonycsl.echo.eoj.profile;
17 
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;
23 
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;
35 
36 public abstract class NodeProfile extends ProfileObject {
37  @SuppressWarnings("unused")
38  private static final String TAG = NodeProfile.class.getSimpleName();
39 
40 
41  public static final short ECHO_CLASS_CODE = 0x0EF0;
42  //public static final byte CLASS_GROUP_CODE = (byte)0x0E;
43  //public static final byte CLASS_CODE = (byte)0xF0;
44  public static final byte INSTANCE_CODE = (byte)0x01;
45  public static final byte INSTANCE_CODE_TRANSMISSION_ONLY= 0x02;
46 
47 
48  public static final byte EPC_OPERATING_STATUS = (byte)0x80;
49  public static final byte EPC_VERSION_INFORMATION = (byte)0x82;
50  public static final byte EPC_IDENTIFICATION_NUMBER = (byte)0x83;
51  public static final byte EPC_FAULT_CONTENT = (byte)0x89;
52  public static final byte EPC_UNIQUE_IDENTIFIER_DATA = (byte)0xBF;
53  public static final byte EPC_NUMBER_OF_SELF_NODE_INSTANCES = (byte)0xD3;
54  public static final byte EPC_NUMBER_OF_SELF_NODE_CLASSES = (byte)0xD4;
55  public static final byte EPC_INSTANCE_LIST_NOTIFICATION = (byte)0xD5;
56  public static final byte EPC_SELF_NODE_INSTANCE_LIST_S = (byte)0xD6;
57  public static final byte EPC_SELF_NODE_CLASS_LIST = (byte)0xD7;
58 
59  public static final byte[] EDT_VERSION_INFORMATION = {(byte)0x01, (byte)0x01, (byte)0x01, (byte) 0x00};
60 
61  @Override
62  public byte getInstanceCode() {
63  return INSTANCE_CODE;
64  }
65 
66  @Override
67  public short getEchoClassCode() {
68  return ECHO_CLASS_CODE;
69  }
70 
71 
72  @Override
73  public void onNew() {
74  super.onNew();
75  Echo.getEventListener().onNewNodeProfile(this);
76  }
77 
78  @Override
79  protected void setupPropertyMaps() {
80  super.setupPropertyMaps();
81 
84 
86 
93  //addGetProperty(EPC_INSTANCE_LIST_NOTIFICATION);
96  }
97 
98  @Override
99  protected synchronized boolean setProperty(EchoProperty property) {
100  boolean success = super.setProperty(property);
101  if(success) return success;
102 
103  switch(property.epc) {
104  case EPC_OPERATING_STATUS : return setOperatingStatus(property.edt);
106  default : return false;
107  }
108  }
109 
110  @Override
111  protected synchronized byte[] getProperty(byte epc) {
112  byte[] edt = super.getProperty(epc);
113  if(edt != null) return edt;
114 
115  switch(epc) {
119  case EPC_FAULT_CONTENT : return getFaultContent();
126  default : return null;
127  }
128  }
129 
130  @Override
131  protected synchronized boolean isValidProperty(EchoProperty property) {
132  boolean valid = super.isValidProperty(property);
133  if(valid) return valid;
134 
135  switch(property.epc) {
136  case EPC_OPERATING_STATUS : return isValidOperatingStatus(property.edt);
137  case EPC_VERSION_INFORMATION : return isValidVersionInformation(property.edt);
139  case EPC_FAULT_CONTENT : return isValidFaultContent(property.edt);
145  case EPC_SELF_NODE_CLASS_LIST : return isValidSelfNodeClassList(property.edt);
146  default : return false;
147  }
148  }
149 
167  protected boolean setOperatingStatus(byte[] edt) {
168  return false;
169  }
187  protected abstract byte[] getOperatingStatus();
188 
189  protected boolean isValidOperatingStatus(byte[] edt) {
190  if(edt == null || !(edt.length == 1)) return false;
191  return true;
192  }
193 
212  protected byte[] getVersionInformation(){return EDT_VERSION_INFORMATION;}
213 
214  protected boolean isValidVersionInformation(byte[] edt) {
215  if(edt == null || !(edt.length == 4)) return false;
216  return true;
217  }
218 
243  protected abstract byte[] getIdentificationNumber();
244 
245  protected boolean isValidIdentificationNumber(byte[] edt) {
246  if(edt == null || !(edt.length == 9 || edt.length == 17)) return false;
247  return true;
248  }
249 
265  protected byte[] getFaultContent() {
266  return null;
267  }
268 
269  protected boolean isValidFaultContent(byte[] edt) {
270  if(edt == null || !(edt.length == 2)) return false;
271  return true;
272  }
273 
289  protected abstract boolean setUniqueIdentifierData(byte[] edt);
290 
291 
307  protected abstract byte[] getUniqueIdentifierData();
308 
309  protected boolean isValidUniqueIdentifierData(byte[] edt) {
310  if(edt == null || !(edt.length == 2)) return false;
311  return true;
312  }
313 
329  protected byte[] getNumberOfSelfNodeInstances() {
330  byte[] ret = new byte[3];
331  int num = getNode().getDevices().length;
332 
333  ret[2] = (byte)(num & 0xFF);
334  ret[1] = (byte)((num >> 8) & 0xFF);
335  ret[0] = (byte)((num >> 16) & 0xFF);
336  return ret;
337  }
338 
339  protected boolean isValidNumberOfSelfNodeInstances(byte[] edt) {
340  if(edt == null || !(edt.length == 3)) return false;
341  return true;
342  }
343 
359  protected byte[] getNumberOfSelfNodeClasses() {
360  HashSet<Short> hashSet = new HashSet<Short>();
361  DeviceObject[] devices = getNode().getDevices();
362  for(DeviceObject d : devices) {
363  hashSet.add(d.getEchoClassCode());
364  }
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);
369  return edt;
370  }
371 
372  protected boolean isValidNumberOfSelfNodeClasses(byte[] edt) {
373  if(edt == null || !(edt.length == 2)) return false;
374  return true;
375  }
376 
395  protected byte[] getInstanceListNotification() {
396  // deviceの数がが85以上の場合電文を分ける.
397  return EchoUtils.devicesToByteArray(getNode().getDevices(), 0);
398  }
399 
400  protected boolean isValidInstanceListNotification(byte[] edt) {
401  if(edt == null || !(edt.length <= 253)) return false;
402  return true;
403  }
404 
405  //public void InstanceListNotification() {
406 
407  //}
408 
425  protected byte[] getSelfNodeInstanceListS() {
426  // deviceの数は85以上の場合,85番目以降は電文に載せない.
427  //EchoUtils.devicesToByteArray(getNode().getDevices());
428  return EchoUtils.devicesToByteArray(getNode().getDevices(), 0);
429  }
430 
431  protected boolean isValidSelfNodeInstanceListS(byte[] edt) {
432  if(edt == null || !(edt.length <= 253)) return false;
433  return true;
434  }
435 
452  protected byte[] getSelfNodeClassList() {
453 
454  HashSet<Short> hashSet = new HashSet<Short>();
455  DeviceObject[] devices = getNode().getDevices();
456  for(DeviceObject d : devices) {
457  hashSet.add(d.getEchoClassCode());
458  }
459  int size = hashSet.size();
460  int s = (size >= 9) ? 8 : size;
461  byte[] edt = new byte[1+(s*2)];
462  edt[0] = (byte)size;
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);
468  }
469  return edt;
470  }
471 
472  protected boolean isValidSelfNodeClassList(byte[] edt) {
473  if(edt == null || !(edt.length <= 253)) return false;
474  return true;
475  }
476  @Override
477  public Setter set() {
478  return set(true);
479  }
480 
481  @Override
482  public Setter set(boolean responseRequired) {
483  return new Setter(getEchoClassCode(), getInstanceCode()
484  , getNode().getAddressStr(), responseRequired);
485  }
486 
487  @Override
488  public Getter get() {
489  return new Getter(getEchoClassCode(), getInstanceCode()
490  , getNode().getAddressStr());
491  }
492 
493  @Override
494  public Informer inform() {
495  return inform(isSelfObject());
496  }
497 
498  @Override
499  protected Informer inform(boolean multicast) {
500  String address;
501  if(multicast) {
503  } else {
504  address = getNode().getAddressStr();
505  }
506  return new Informer(getEchoClassCode(), getInstanceCode()
507  , address, isSelfObject());
508  }
509 
510 
511  @Override
512  protected InformerC informC(String address) {
513  return new InformerC(getEchoClassCode(), getInstanceCode()
514  , address);
515  }
516 
517 
518  public static class Receiver extends ProfileObject.Receiver {
519 
520 
521  @Override
522  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
523  EchoProperty property, boolean success) {
524  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
525  if(ret) return true;
526 
527  switch(property.epc) {
529  onSetOperatingStatus(eoj, tid, esv, property, success);
530  return true;
532  onSetUniqueIdentifierData(eoj, tid, esv, property, success);
533  return true;
534  default :
535  return false;
536  }
537  }
538 
539  @Override
540  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
541  EchoProperty property, boolean success) {
542  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
543  if(ret) return true;
544 
545  switch(property.epc) {
547  onGetOperatingStatus(eoj, tid, esv, property, success);
548  return true;
550  onGetVersionInformation(eoj, tid, esv, property, success);
551  return true;
553  onGetIdentificationNumber(eoj, tid, esv, property, success);
554  return true;
555  case EPC_FAULT_CONTENT:
556  onGetFaultContent(eoj, tid, esv, property, success);
557  return true;
559  onGetUniqueIdentifierData(eoj, tid, esv, property, success);
560  return true;
562  onGetNumberOfSelfNodeInstances(eoj, tid, esv, property, success);
563  return true;
565  onGetNumberOfSelfNodeClasses(eoj, tid, esv, property, success);
566  return true;
568  onGetInstanceListNotification(eoj, tid, esv, property, success);
569  return true;
571  onGetSelfNodeInstanceListS(eoj, tid, esv, property, success);
572  return true;
574  onGetSelfNodeClassList(eoj, tid, esv, property, success);
575  return true;
576  default :
577  return false;
578  }
579  }
580 
581  @Override
582  protected boolean onInformProperty(EchoObject eoj, short tid, byte esv,
583  EchoProperty property) {
584  boolean ret = super.onInformProperty(eoj, tid, esv, property);
585  if(ret) return true;
586 
587  switch(property.epc) {
589  onInformInstanceListNotification(eoj, tid, esv, property);
590  return true;
591  default :
592  return false;
593  }
594  }
595 
613  protected void onSetOperatingStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
614 
632  protected void onGetOperatingStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
633 
652  protected void onGetVersionInformation(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
653 
678  protected void onGetIdentificationNumber(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
679 
695  protected void onGetFaultContent(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
696 
712  protected void onSetUniqueIdentifierData(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
713 
729  protected void onGetUniqueIdentifierData(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
730 
746  protected void onGetNumberOfSelfNodeInstances(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
747 
763  protected void onGetNumberOfSelfNodeClasses(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
764 
783  protected void onGetInstanceListNotification(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {
784  }
785 
804  protected void onInformInstanceListNotification(EchoObject eoj, short tid, byte esv, EchoProperty property) {}
805 
822  protected void onGetSelfNodeInstanceListS(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {
823  }
824 
841  protected void onGetSelfNodeClassList(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
842  }
843 
844  public static class Setter extends ProfileObject.Setter {
845 
846  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
847  , String dstEchoAddress, boolean responseRequired) {
848  super(dstEchoClassCode, dstEchoInstanceCode
849  , dstEchoAddress, responseRequired);
850  }
851 
852  @Override
853  public Setter reqSetProperty(byte epc, byte[] edt) {
854  return (Setter)super.reqSetProperty(epc, edt);
855  }
873  public Setter reqSetOperatingStatus(byte[] edt) {
874  reqSetProperty(EPC_OPERATING_STATUS, edt);
875  return this;
876  }
892  public Setter reqSetUniqueIdentifierData(byte[] edt) {
893  reqSetProperty(EPC_UNIQUE_IDENTIFIER_DATA, edt);
894  return this;
895  }
896  }
897 
898  public static class Getter extends ProfileObject.Getter {
899  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
900  , String dstEchoAddress) {
901  super(dstEchoClassCode, dstEchoInstanceCode
902  , dstEchoAddress);
903  }
904  @Override
905  public Getter reqGetProperty(byte epc) {
906  return (Getter)super.reqGetProperty(epc);
907  }
908  @Override
909  public Getter reqGetFaultStatus() {
910  return (Getter)super.reqGetFaultStatus();
911  }
912  @Override
913  public Getter reqGetManufacturerCode() {
914  return (Getter)super.reqGetManufacturerCode();
915  }
916  @Override
917  public Getter reqGetPlaceOfBusinessCode() {
918  return (Getter)super.reqGetPlaceOfBusinessCode();
919  }
920  @Override
921  public Getter reqGetProductCode() {
922  return (Getter)super.reqGetProductCode();
923  }
924  @Override
925  public Getter reqGetSerialNumber() {
926  return (Getter)super.reqGetSerialNumber();
927  }
928  @Override
929  public Getter reqGetDateOfManufacture() {
930  return (Getter)super.reqGetDateOfManufacture();
931  }
932  @Override
933  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
934  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
935  }
936  @Override
937  public Getter reqGetSetPropertyMap() {
938  return (Getter)super.reqGetSetPropertyMap();
939  }
940  @Override
941  public Getter reqGetGetPropertyMap() {
942  return (Getter)super.reqGetGetPropertyMap();
943  }
944 
962  public Getter reqGetOperatingStatus() {
963  reqGetProperty(EPC_OPERATING_STATUS);
964  return this;
965  }
984  public Getter reqGetVersionInformation() {
985  reqGetProperty(EPC_VERSION_INFORMATION);
986  return this;
987  }
1012  public Getter reqGetIdentificationNumber() {
1013  reqGetProperty(EPC_IDENTIFICATION_NUMBER);
1014  return this;
1015  }
1031  public Getter reqGetFaultContent() {
1032  reqGetProperty(EPC_FAULT_CONTENT);
1033  return this;
1034  }
1050  public Getter reqGetUniqueIdentifierData() {
1051  reqGetProperty(EPC_UNIQUE_IDENTIFIER_DATA);
1052  return this;
1053  }
1069  public Getter reqGetNumberOfSelfNodeInstances() {
1070  reqGetProperty(EPC_NUMBER_OF_SELF_NODE_INSTANCES);
1071  return this;
1072  }
1088  public Getter reqGetNumberOfSelfNodeClasses() {
1089  reqGetProperty(EPC_NUMBER_OF_SELF_NODE_CLASSES);
1090  return this;
1091  }
1108  public Getter reqGetSelfNodeInstanceListS() {
1109  reqGetProperty(EPC_SELF_NODE_INSTANCE_LIST_S);
1110  return this;
1111  }
1128  public Getter reqGetSelfNodeClassList() {
1129  reqGetProperty(EPC_SELF_NODE_CLASS_LIST);
1130  return this;
1131  }
1132  }
1133 
1134  public static class Informer extends ProfileObject.Informer {
1135 
1136  //List<EchoFrame> mNotificationFrameList = null;
1137  //EchoObject mEoj;
1138 
1139  public Informer(short echoClassCode, byte echoInstanceCode
1140  , String dstEchoAddress, boolean isSelfObject) {
1141  super(echoClassCode, echoInstanceCode
1142  , dstEchoAddress, isSelfObject);
1143  }
1144 
1145  @Override
1146  public Informer reqInformProperty(byte epc) {
1147  return (Informer)super.reqInformProperty(epc);
1148  }
1149 
1150  @Override
1151  public Informer reqInformFaultStatus() {
1152  return (Informer)super.reqInformFaultStatus();
1153  }
1154  @Override
1155  public Informer reqInformManufacturerCode() {
1156  return (Informer)super.reqInformManufacturerCode();
1157  }
1158  @Override
1159  public Informer reqInformPlaceOfBusinessCode() {
1160  return (Informer)super.reqInformPlaceOfBusinessCode();
1161  }
1162  @Override
1163  public Informer reqInformProductCode() {
1164  return (Informer)super.reqInformProductCode();
1165  }
1166  @Override
1167  public Informer reqInformSerialNumber() {
1168  return (Informer)super.reqInformSerialNumber();
1169  }
1170  @Override
1171  public Informer reqInformDateOfManufacture() {
1172  return (Informer)super.reqInformDateOfManufacture();
1173  }
1174  @Override
1175  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
1176  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
1177  }
1178  @Override
1179  public Informer reqInformSetPropertyMap() {
1180  return (Informer)super.reqInformSetPropertyMap();
1181  }
1182  @Override
1183  public Informer reqInformGetPropertyMap() {
1184  return (Informer)super.reqInformGetPropertyMap();
1185  }
1186 
1204  public Informer reqInformOperatingStatus() {
1205  reqInformProperty(EPC_OPERATING_STATUS);
1206  return this;
1207  }
1226  public Informer reqInformVersionInformation() {
1227  reqInformProperty(EPC_VERSION_INFORMATION);
1228  return this;
1229  }
1254  public Informer reqInformIdentificationNumber() {
1255  reqInformProperty(EPC_IDENTIFICATION_NUMBER);
1256  return this;
1257  }
1273  public Informer reqInformFaultContent() {
1274  reqInformProperty(EPC_FAULT_CONTENT);
1275  return this;
1276  }
1292  public Informer reqInformUniqueIdentifierData() {
1293  reqInformProperty(EPC_UNIQUE_IDENTIFIER_DATA);
1294  return this;
1295  }
1311  public Informer reqInformNumberOfSelfNodeInstances() {
1312  reqInformProperty(EPC_NUMBER_OF_SELF_NODE_INSTANCES);
1313  return this;
1314  }
1330  public Informer reqInformNumberOfSelfNodeClasses() {
1331  reqInformProperty(EPC_NUMBER_OF_SELF_NODE_CLASSES);
1332  return this;
1333  }
1352  public Informer reqInformInstanceListNotification() {
1353  reqInformProperty(EPC_INSTANCE_LIST_NOTIFICATION);
1354  return this;
1355  }
1372  public Informer reqInformSelfNodeInstanceListS() {
1373  reqInformProperty(EPC_SELF_NODE_INSTANCE_LIST_S);
1374  return this;
1375  }
1392  public Informer reqInformSelfNodeClassList() {
1393  reqInformProperty(EPC_SELF_NODE_CLASS_LIST);
1394  return this;
1395  }
1396  }
1397 
1398  public static class InformerC extends EchoObject.InformerC {
1399  public InformerC(short srcEchoClassCode, byte srcEchoInstanceCode
1400  , String dstEchoAddress) {
1401  super(srcEchoClassCode, srcEchoInstanceCode
1402  , dstEchoAddress);
1403  }
1404 
1423  public InformerC informInstanceListNotification() {
1424  reqInformProperty(EPC_INSTANCE_LIST_NOTIFICATION);
1425  return this;
1426  }
1427 
1428  }
1429 
1430  public static class Proxy extends NodeProfile {
1431 
1432  private byte mEchoInstanceCode = INSTANCE_CODE;
1433 
1434  public void setInstanceCode(byte echoInstanceCode) {
1435  mEchoInstanceCode = echoInstanceCode;
1436  }
1437 
1438  @Override
1439  public byte getInstanceCode() {
1440  return mEchoInstanceCode;
1441  }
1442 
1443  @Override
1444  protected byte[] getOperatingStatus() {
1445  // TODO Auto-generated method stub
1446  return null;
1447  }
1448 
1449  @Override
1450  protected byte[] getVersionInformation() {
1451  // TODO Auto-generated method stub
1452  return null;
1453  }
1454 
1455  @Override
1456  protected byte[] getIdentificationNumber() {
1457  // TODO Auto-generated method stub
1458  return null;
1459  }
1460 
1461  @Override
1462  protected boolean setUniqueIdentifierData(byte[] edt) {
1463  // TODO Auto-generated method stub
1464  return false;
1465  }
1466 
1467  @Override
1468  protected byte[] getUniqueIdentifierData() {
1469  // TODO Auto-generated method stub
1470  return null;
1471  }
1472 
1473  @Override
1474  protected byte[] getManufacturerCode() {
1475  // TODO Auto-generated method stub
1476  return null;
1477  }
1478 
1479  }
1480 
1481  public static Setter setG() {
1482  return setG(true);
1483  }
1484 
1485  public static Setter setG(boolean responseRequired) {
1486  return new Setter(ECHO_CLASS_CODE, INSTANCE_CODE
1487  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1488  }
1489 
1490  public static Getter getG() {
1491  return new Getter(ECHO_CLASS_CODE, INSTANCE_CODE
1493  }
1494 
1495  public static Informer informG() {
1496  return new Informer(ECHO_CLASS_CODE, INSTANCE_CODE
1497  , EchoSocket.MULTICAST_ADDRESS, false);
1498  }
1499 }
boolean isValidInstanceListNotification(byte[] edt)
boolean isValidIdentificationNumber(byte[] edt)
static final byte EPC_NUMBER_OF_SELF_NODE_INSTANCES
static final byte EPC_NUMBER_OF_SELF_NODE_CLASSES
static Setter setG(boolean responseRequired)
boolean isValidNumberOfSelfNodeInstances(byte[] edt)
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
static final byte EPC_INSTANCE_LIST_NOTIFICATION
final void addGetProperty(byte epc)
boolean isValidUniqueIdentifierData(byte[] edt)
abstract boolean setUniqueIdentifierData(byte[] edt)
final void addSetProperty(byte epc)
Definition: EchoObject.java:93
boolean isValidNumberOfSelfNodeClasses(byte[] edt)
synchronized boolean setProperty(EchoProperty property)
synchronized boolean isValidProperty(EchoProperty property)
boolean isValidSelfNodeInstanceListS(byte[] edt)
static final byte INSTANCE_CODE_TRANSMISSION_ONLY
Informer inform(boolean multicast)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53
Setter set(boolean responseRequired)
synchronized byte[] getProperty(byte epc)