OpenECHO
 All Classes Namespaces Files Functions Variables
ClothesDryer.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.device.cookinghousehold;
17 
25 
26 public abstract class ClothesDryer extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x03C6;
29 
30  public static final byte EPC_DOOR_COVER_OPEN_CLOSE_STATUS = (byte)0xB0;
31  public static final byte EPC_DRYING_SETTING = (byte)0xB2;
32  public static final byte EPC_DRYING_STATUS = (byte)0xE1;
33  public static final byte EPC_REMAINING_DRYING_TIME = (byte)0xE6;
34  public static final byte EPC_ON_TIMER_RESERVATION_SETTING = (byte)0x90;
35  public static final byte EPC_ON_TIMER_SETTING = (byte)0x91;
36  public static final byte EPC_RELATIVE_TIME_BASED_ON_TIMER_SETTING = (byte)0x92;
37 
38  @Override
39  protected void setupPropertyMaps() {
40  super.setupPropertyMaps();
41 
45  }
46 
47  @Override
48  public void onNew() {
49  super.onNew();
50  Echo.getEventListener().onNewClothesDryer(this);
51  }
52 
53  @Override
54  public short getEchoClassCode() {
55  return ECHO_CLASS_CODE;
56  }
57 
83  protected boolean setOperationStatus(byte[] edt) {return false;}
109  protected abstract byte[] getOperationStatus();
133  protected byte[] getDoorCoverOpenCloseStatus() {return null;}
157  protected boolean isValidDoorCoverOpenCloseStatus(byte[] edt) {
158  if(edt == null || !(edt.length == 1)) return false;
159  return true;
160  }
184  protected boolean setDryingSetting(byte[] edt) {return false;}
208  protected byte[] getDryingSetting() {return null;}
232  protected boolean isValidDryingSetting(byte[] edt) {
233  if(edt == null || !(edt.length == 1)) return false;
234  return true;
235  }
260  protected byte[] getDryingStatus() {return null;}
285  protected boolean isValidDryingStatus(byte[] edt) {
286  if(edt == null || !(edt.length == 1)) return false;
287  return true;
288  }
313  protected byte[] getRemainingDryingTime() {return null;}
338  protected boolean isValidRemainingDryingTime(byte[] edt) {
339  if(edt == null || !(edt.length == 3)) return false;
340  return true;
341  }
365  protected boolean setOnTimerReservationSetting(byte[] edt) {return false;}
389  protected byte[] getOnTimerReservationSetting() {return null;}
413  protected boolean isValidOnTimerReservationSetting(byte[] edt) {
414  if(edt == null || !(edt.length == 1)) return false;
415  return true;
416  }
441  protected boolean setOnTimerSetting(byte[] edt) {return false;}
466  protected byte[] getOnTimerSetting() {return null;}
491  protected boolean isValidOnTimerSetting(byte[] edt) {
492  if(edt == null || !(edt.length == 2)) return false;
493  return true;
494  }
520  protected boolean setRelativeTimeBasedOnTimerSetting(byte[] edt) {return false;}
546  protected byte[] getRelativeTimeBasedOnTimerSetting() {return null;}
572  protected boolean isValidRelativeTimeBasedOnTimerSetting(byte[] edt) {
573  if(edt == null || !(edt.length == 2)) return false;
574  return true;
575  }
576 
577  @Override
578  protected synchronized boolean setProperty(EchoProperty property) {
579  boolean success = super.setProperty(property);
580  if(success) return success;
581 
582  switch(property.epc) {
583  case EPC_DRYING_SETTING : return setDryingSetting(property.edt);
585  case EPC_ON_TIMER_SETTING : return setOnTimerSetting(property.edt);
587  default : return false;
588  }
589  }
590 
591  @Override
592  protected synchronized byte[] getProperty(byte epc) {
593  byte[] edt = super.getProperty(epc);
594  if(edt != null) return edt;
595 
596  switch(epc) {
598  case EPC_DRYING_SETTING : return getDryingSetting();
599  case EPC_DRYING_STATUS : return getDryingStatus();
602  case EPC_ON_TIMER_SETTING : return getOnTimerSetting();
604  default : return null;
605  }
606  }
607 
608  @Override
609  protected synchronized boolean isValidProperty(EchoProperty property) {
610  boolean valid = super.isValidProperty(property);
611  if(valid) return valid;
612 
613  switch(property.epc) {
615  case EPC_DRYING_SETTING : return isValidDryingSetting(property.edt);
616  case EPC_DRYING_STATUS : return isValidDryingStatus(property.edt);
619  case EPC_ON_TIMER_SETTING : return isValidOnTimerSetting(property.edt);
621  default : return false;
622  }
623  }
624 
625  @Override
626  public Setter set() {
627  return set(true);
628  }
629 
630  @Override
631  public Setter set(boolean responseRequired) {
632  return new Setter(getEchoClassCode(), getInstanceCode()
633  , getNode().getAddressStr(), responseRequired);
634  }
635 
636  @Override
637  public Getter get() {
638  return new Getter(getEchoClassCode(), getInstanceCode()
639  , getNode().getAddressStr());
640  }
641 
642  @Override
643  public Informer inform() {
644  return inform(isSelfObject());
645  }
646 
647  @Override
648  protected Informer inform(boolean multicast) {
649  String address;
650  if(multicast) {
652  } else {
653  address = getNode().getAddressStr();
654  }
655  return new Informer(getEchoClassCode(), getInstanceCode()
656  , address, isSelfObject());
657  }
658 
659  public static class Receiver extends DeviceObject.Receiver {
660 
661  @Override
662  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
663  EchoProperty property, boolean success) {
664  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
665  if(ret) return true;
666 
667  switch(property.epc) {
668  case EPC_DRYING_SETTING :
669  onSetDryingSetting(eoj, tid, esv, property, success);
670  return true;
672  onSetOnTimerReservationSetting(eoj, tid, esv, property, success);
673  return true;
674  case EPC_ON_TIMER_SETTING :
675  onSetOnTimerSetting(eoj, tid, esv, property, success);
676  return true;
678  onSetRelativeTimeBasedOnTimerSetting(eoj, tid, esv, property, success);
679  return true;
680  default :
681  return false;
682  }
683  }
684 
685  @Override
686  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
687  EchoProperty property, boolean success) {
688  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
689  if(ret) return true;
690 
691  switch(property.epc) {
693  onGetDoorCoverOpenCloseStatus(eoj, tid, esv, property, success);
694  return true;
695  case EPC_DRYING_SETTING :
696  onGetDryingSetting(eoj, tid, esv, property, success);
697  return true;
698  case EPC_DRYING_STATUS :
699  onGetDryingStatus(eoj, tid, esv, property, success);
700  return true;
702  onGetRemainingDryingTime(eoj, tid, esv, property, success);
703  return true;
705  onGetOnTimerReservationSetting(eoj, tid, esv, property, success);
706  return true;
707  case EPC_ON_TIMER_SETTING :
708  onGetOnTimerSetting(eoj, tid, esv, property, success);
709  return true;
711  onGetRelativeTimeBasedOnTimerSetting(eoj, tid, esv, property, success);
712  return true;
713  default :
714  return false;
715  }
716  }
717 
741  protected void onGetDoorCoverOpenCloseStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
765  protected void onSetDryingSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
789  protected void onGetDryingSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
814  protected void onGetDryingStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
839  protected void onGetRemainingDryingTime(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
863  protected void onSetOnTimerReservationSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
887  protected void onGetOnTimerReservationSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
912  protected void onSetOnTimerSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
937  protected void onGetOnTimerSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
963  protected void onSetRelativeTimeBasedOnTimerSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
989  protected void onGetRelativeTimeBasedOnTimerSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
990  }
991 
992  public static class Setter extends DeviceObject.Setter {
993  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
994  , String dstEchoAddress, boolean responseRequired) {
995  super(dstEchoClassCode, dstEchoInstanceCode
996  , dstEchoAddress, responseRequired);
997  }
998 
999  @Override
1000  public Setter reqSetProperty(byte epc, byte[] edt) {
1001  return (Setter)super.reqSetProperty(epc, edt);
1002  }
1003 
1004  @Override
1005  public Setter reqSetOperationStatus(byte[] edt) {
1006  return (Setter)super.reqSetOperationStatus(edt);
1007  }
1008  @Override
1009  public Setter reqSetInstallationLocation(byte[] edt) {
1010  return (Setter)super.reqSetInstallationLocation(edt);
1011  }
1012  @Override
1013  public Setter reqSetCurrentLimitSetting(byte[] edt) {
1014  return (Setter)super.reqSetCurrentLimitSetting(edt);
1015  }
1016  @Override
1017  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
1018  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
1019  }
1020  @Override
1021  public Setter reqSetRemoteControlSetting(byte[] edt) {
1022  return (Setter)super.reqSetRemoteControlSetting(edt);
1023  }
1024  @Override
1025  public Setter reqSetCurrentTimeSetting(byte[] edt) {
1026  return (Setter)super.reqSetCurrentTimeSetting(edt);
1027  }
1028  @Override
1029  public Setter reqSetCurrentDateSetting(byte[] edt) {
1030  return (Setter)super.reqSetCurrentDateSetting(edt);
1031  }
1032  @Override
1033  public Setter reqSetPowerLimitSetting(byte[] edt) {
1034  return (Setter)super.reqSetPowerLimitSetting(edt);
1035  }
1036 
1060  public Setter reqSetDryingSetting(byte[] edt) {
1061  reqSetProperty(EPC_DRYING_SETTING, edt);
1062  return this;
1063  }
1087  public Setter reqSetOnTimerReservationSetting(byte[] edt) {
1088  reqSetProperty(EPC_ON_TIMER_RESERVATION_SETTING, edt);
1089  return this;
1090  }
1115  public Setter reqSetOnTimerSetting(byte[] edt) {
1116  reqSetProperty(EPC_ON_TIMER_SETTING, edt);
1117  return this;
1118  }
1144  public Setter reqSetRelativeTimeBasedOnTimerSetting(byte[] edt) {
1145  reqSetProperty(EPC_RELATIVE_TIME_BASED_ON_TIMER_SETTING, edt);
1146  return this;
1147  }
1148  }
1149 
1150  public static class Getter extends DeviceObject.Getter {
1151  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
1152  , String dstEchoAddress) {
1153  super(dstEchoClassCode, dstEchoInstanceCode
1154  , dstEchoAddress);
1155  }
1156 
1157  @Override
1158  public Getter reqGetProperty(byte epc) {
1159  return (Getter)super.reqGetProperty(epc);
1160  }
1161 
1162  @Override
1163  public Getter reqGetOperationStatus() {
1164  return (Getter)super.reqGetOperationStatus();
1165  }
1166  @Override
1167  public Getter reqGetInstallationLocation() {
1168  return (Getter)super.reqGetInstallationLocation();
1169  }
1170  @Override
1171  public Getter reqGetStandardVersionInformation() {
1172  return (Getter)super.reqGetStandardVersionInformation();
1173  }
1174  @Override
1175  public Getter reqGetIdentificationNumber() {
1176  return (Getter)super.reqGetIdentificationNumber();
1177  }
1178  @Override
1179  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
1180  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
1181  }
1182  @Override
1183  public Getter reqGetMeasuredCumulativePowerConsumption() {
1184  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
1185  }
1186  @Override
1187  public Getter reqGetManufacturersFaultCode() {
1188  return (Getter)super.reqGetManufacturersFaultCode();
1189  }
1190  @Override
1191  public Getter reqGetCurrentLimitSetting() {
1192  return (Getter)super.reqGetCurrentLimitSetting();
1193  }
1194  @Override
1195  public Getter reqGetFaultStatus() {
1196  return (Getter)super.reqGetFaultStatus();
1197  }
1198  @Override
1199  public Getter reqGetFaultDescription() {
1200  return (Getter)super.reqGetFaultDescription();
1201  }
1202  @Override
1203  public Getter reqGetManufacturerCode() {
1204  return (Getter)super.reqGetManufacturerCode();
1205  }
1206  @Override
1207  public Getter reqGetBusinessFacilityCode() {
1208  return (Getter)super.reqGetBusinessFacilityCode();
1209  }
1210  @Override
1211  public Getter reqGetProductCode() {
1212  return (Getter)super.reqGetProductCode();
1213  }
1214  @Override
1215  public Getter reqGetProductionNumber() {
1216  return (Getter)super.reqGetProductionNumber();
1217  }
1218  @Override
1219  public Getter reqGetProductionDate() {
1220  return (Getter)super.reqGetProductionDate();
1221  }
1222  @Override
1223  public Getter reqGetPowerSavingOperationSetting() {
1224  return (Getter)super.reqGetPowerSavingOperationSetting();
1225  }
1226  @Override
1227  public Getter reqGetRemoteControlSetting() {
1228  return (Getter)super.reqGetRemoteControlSetting();
1229  }
1230  @Override
1231  public Getter reqGetCurrentTimeSetting() {
1232  return (Getter)super.reqGetCurrentTimeSetting();
1233  }
1234  @Override
1235  public Getter reqGetCurrentDateSetting() {
1236  return (Getter)super.reqGetCurrentDateSetting();
1237  }
1238  @Override
1239  public Getter reqGetPowerLimitSetting() {
1240  return (Getter)super.reqGetPowerLimitSetting();
1241  }
1242  @Override
1243  public Getter reqGetCumulativeOperatingTime() {
1244  return (Getter)super.reqGetCumulativeOperatingTime();
1245  }
1246  @Override
1247  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
1248  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
1249  }
1250  @Override
1251  public Getter reqGetSetPropertyMap() {
1252  return (Getter)super.reqGetSetPropertyMap();
1253  }
1254  @Override
1255  public Getter reqGetGetPropertyMap() {
1256  return (Getter)super.reqGetGetPropertyMap();
1257  }
1258 
1282  public Getter reqGetDoorCoverOpenCloseStatus() {
1283  reqGetProperty(EPC_DOOR_COVER_OPEN_CLOSE_STATUS);
1284  return this;
1285  }
1309  public Getter reqGetDryingSetting() {
1310  reqGetProperty(EPC_DRYING_SETTING);
1311  return this;
1312  }
1337  public Getter reqGetDryingStatus() {
1338  reqGetProperty(EPC_DRYING_STATUS);
1339  return this;
1340  }
1365  public Getter reqGetRemainingDryingTime() {
1366  reqGetProperty(EPC_REMAINING_DRYING_TIME);
1367  return this;
1368  }
1392  public Getter reqGetOnTimerReservationSetting() {
1393  reqGetProperty(EPC_ON_TIMER_RESERVATION_SETTING);
1394  return this;
1395  }
1420  public Getter reqGetOnTimerSetting() {
1421  reqGetProperty(EPC_ON_TIMER_SETTING);
1422  return this;
1423  }
1449  public Getter reqGetRelativeTimeBasedOnTimerSetting() {
1451  return this;
1452  }
1453  }
1454 
1455  public static class Informer extends DeviceObject.Informer {
1456  public Informer(short echoClassCode, byte echoInstanceCode
1457  , String dstEchoAddress, boolean isSelfObject) {
1458  super(echoClassCode, echoInstanceCode
1459  , dstEchoAddress, isSelfObject);
1460  }
1461 
1462  @Override
1463  public Informer reqInformProperty(byte epc) {
1464  return (Informer)super.reqInformProperty(epc);
1465  }
1466  @Override
1467  public Informer reqInformOperationStatus() {
1468  return (Informer)super.reqInformOperationStatus();
1469  }
1470  @Override
1471  public Informer reqInformInstallationLocation() {
1472  return (Informer)super.reqInformInstallationLocation();
1473  }
1474  @Override
1475  public Informer reqInformStandardVersionInformation() {
1476  return (Informer)super.reqInformStandardVersionInformation();
1477  }
1478  @Override
1479  public Informer reqInformIdentificationNumber() {
1480  return (Informer)super.reqInformIdentificationNumber();
1481  }
1482  @Override
1483  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
1484  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
1485  }
1486  @Override
1487  public Informer reqInformMeasuredCumulativePowerConsumption() {
1488  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
1489  }
1490  @Override
1491  public Informer reqInformManufacturersFaultCode() {
1492  return (Informer)super.reqInformManufacturersFaultCode();
1493  }
1494  @Override
1495  public Informer reqInformCurrentLimitSetting() {
1496  return (Informer)super.reqInformCurrentLimitSetting();
1497  }
1498  @Override
1499  public Informer reqInformFaultStatus() {
1500  return (Informer)super.reqInformFaultStatus();
1501  }
1502  @Override
1503  public Informer reqInformFaultDescription() {
1504  return (Informer)super.reqInformFaultDescription();
1505  }
1506  @Override
1507  public Informer reqInformManufacturerCode() {
1508  return (Informer)super.reqInformManufacturerCode();
1509  }
1510  @Override
1511  public Informer reqInformBusinessFacilityCode() {
1512  return (Informer)super.reqInformBusinessFacilityCode();
1513  }
1514  @Override
1515  public Informer reqInformProductCode() {
1516  return (Informer)super.reqInformProductCode();
1517  }
1518  @Override
1519  public Informer reqInformProductionNumber() {
1520  return (Informer)super.reqInformProductionNumber();
1521  }
1522  @Override
1523  public Informer reqInformProductionDate() {
1524  return (Informer)super.reqInformProductionDate();
1525  }
1526  @Override
1527  public Informer reqInformPowerSavingOperationSetting() {
1528  return (Informer)super.reqInformPowerSavingOperationSetting();
1529  }
1530  @Override
1531  public Informer reqInformRemoteControlSetting() {
1532  return (Informer)super.reqInformRemoteControlSetting();
1533  }
1534  @Override
1535  public Informer reqInformCurrentTimeSetting() {
1536  return (Informer)super.reqInformCurrentTimeSetting();
1537  }
1538  @Override
1539  public Informer reqInformCurrentDateSetting() {
1540  return (Informer)super.reqInformCurrentDateSetting();
1541  }
1542  @Override
1543  public Informer reqInformPowerLimitSetting() {
1544  return (Informer)super.reqInformPowerLimitSetting();
1545  }
1546  @Override
1547  public Informer reqInformCumulativeOperatingTime() {
1548  return (Informer)super.reqInformCumulativeOperatingTime();
1549  }
1550  @Override
1551  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
1552  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
1553  }
1554  @Override
1555  public Informer reqInformSetPropertyMap() {
1556  return (Informer)super.reqInformSetPropertyMap();
1557  }
1558  @Override
1559  public Informer reqInformGetPropertyMap() {
1560  return (Informer)super.reqInformGetPropertyMap();
1561  }
1562 
1586  public Informer reqInformDoorCoverOpenCloseStatus() {
1587  reqInformProperty(EPC_DOOR_COVER_OPEN_CLOSE_STATUS);
1588  return this;
1589  }
1613  public Informer reqInformDryingSetting() {
1614  reqInformProperty(EPC_DRYING_SETTING);
1615  return this;
1616  }
1641  public Informer reqInformDryingStatus() {
1642  reqInformProperty(EPC_DRYING_STATUS);
1643  return this;
1644  }
1669  public Informer reqInformRemainingDryingTime() {
1670  reqInformProperty(EPC_REMAINING_DRYING_TIME);
1671  return this;
1672  }
1696  public Informer reqInformOnTimerReservationSetting() {
1697  reqInformProperty(EPC_ON_TIMER_RESERVATION_SETTING);
1698  return this;
1699  }
1724  public Informer reqInformOnTimerSetting() {
1725  reqInformProperty(EPC_ON_TIMER_SETTING);
1726  return this;
1727  }
1753  public Informer reqInformRelativeTimeBasedOnTimerSetting() {
1754  reqInformProperty(EPC_RELATIVE_TIME_BASED_ON_TIMER_SETTING);
1755  return this;
1756  }
1757  }
1758 
1759  public static class Proxy extends ClothesDryer {
1760  public Proxy(byte instanceCode) {
1761  super();
1762  mEchoInstanceCode = instanceCode;
1763  }
1764  @Override
1765  public byte getInstanceCode() {
1766  return mEchoInstanceCode;
1767  }
1768  @Override
1769  protected byte[] getOperationStatus() {return null;}
1770  @Override
1771  protected boolean setInstallationLocation(byte[] edt) {return false;}
1772  @Override
1773  protected byte[] getInstallationLocation() {return null;}
1774  @Override
1775  protected byte[] getStandardVersionInformation() {return null;}
1776  @Override
1777  protected byte[] getFaultStatus() {return null;}
1778  @Override
1779  protected byte[] getManufacturerCode() {return null;}
1780  }
1781 
1782  public static Setter setG() {
1783  return setG((byte)0);
1784  }
1785 
1786  public static Setter setG(byte instanceCode) {
1787  return setG(instanceCode, true);
1788  }
1789 
1790  public static Setter setG(boolean responseRequired) {
1791  return setG((byte)0, responseRequired);
1792  }
1793 
1794  public static Setter setG(byte instanceCode, boolean responseRequired) {
1795  return new Setter(ECHO_CLASS_CODE, instanceCode
1796  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1797  }
1798 
1799  public static Getter getG() {
1800  return getG((byte)0);
1801  }
1802 
1803  public static Getter getG(byte instanceCode) {
1804  return new Getter(ECHO_CLASS_CODE, instanceCode
1806  }
1807 
1808  public static Informer informG() {
1809  return informG((byte)0);
1810  }
1811 
1812  public static Informer informG(byte instanceCode) {
1813  return new Informer(ECHO_CLASS_CODE, instanceCode
1814  , EchoSocket.MULTICAST_ADDRESS, false);
1815  }
1816 
1817 }
static Setter setG(boolean responseRequired)
static Setter setG(byte instanceCode, boolean responseRequired)
final void removeSetProperty(byte epc)
Definition: EchoObject.java:98
synchronized boolean setProperty(EchoProperty property)
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
final void addGetProperty(byte epc)
synchronized boolean isValidProperty(EchoProperty property)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53