OpenECHO
 All Classes Namespaces Files Functions Variables
WashingMachine.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 WashingMachine extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x03C5;
29 
30  public static final byte EPC_DOOR_COVER_OPEN_CLOSE_STATUS = (byte)0xB0;
31  public static final byte EPC_WASHING_MACHINE_SETTING = (byte)0xB2;
32  public static final byte EPC_CURRENT_STAGE_OF_WASHING_CYCLE = (byte)0xE1;
33  public static final byte EPC_TIME_REMAINING_TO_COMPLETE_WASHING_CYCLE = (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().onNewWashingMachine(this);
51  }
52 
53  @Override
54  public short getEchoClassCode() {
55  return ECHO_CLASS_CODE;
56  }
57 
82  protected boolean setOperationStatus(byte[] edt) {return false;}
107  protected abstract byte[] getOperationStatus();
130  protected byte[] getDoorCoverOpenCloseStatus() {return null;}
153  protected boolean isValidDoorCoverOpenCloseStatus(byte[] edt) {
154  if(edt == null || !(edt.length == 1)) return false;
155  return true;
156  }
181  protected boolean setWashingMachineSetting(byte[] edt) {return false;}
206  protected byte[] getWashingMachineSetting() {return null;}
231  protected boolean isValidWashingMachineSetting(byte[] edt) {
232  if(edt == null || !(edt.length == 1)) return false;
233  return true;
234  }
257  protected byte[] getCurrentStageOfWashingCycle() {return null;}
280  protected boolean isValidCurrentStageOfWashingCycle(byte[] edt) {
281  if(edt == null || !(edt.length == 1)) return false;
282  return true;
283  }
306  protected byte[] getTimeRemainingToCompleteWashingCycle() {return null;}
329  protected boolean isValidTimeRemainingToCompleteWashingCycle(byte[] edt) {
330  if(edt == null || !(edt.length == 3)) return false;
331  return true;
332  }
355  protected boolean setOnTimerReservationSetting(byte[] edt) {return false;}
378  protected byte[] getOnTimerReservationSetting() {return null;}
401  protected boolean isValidOnTimerReservationSetting(byte[] edt) {
402  if(edt == null || !(edt.length == 1)) return false;
403  return true;
404  }
427  protected boolean setOnTimerSetting(byte[] edt) {return false;}
450  protected byte[] getOnTimerSetting() {return null;}
473  protected boolean isValidOnTimerSetting(byte[] edt) {
474  if(edt == null || !(edt.length == 2)) return false;
475  return true;
476  }
500  protected boolean setRelativeTimeBasedOnTimerSetting(byte[] edt) {return false;}
524  protected byte[] getRelativeTimeBasedOnTimerSetting() {return null;}
548  protected boolean isValidRelativeTimeBasedOnTimerSetting(byte[] edt) {
549  if(edt == null || !(edt.length == 2)) return false;
550  return true;
551  }
552 
553  @Override
554  protected synchronized boolean setProperty(EchoProperty property) {
555  boolean success = super.setProperty(property);
556  if(success) return success;
557 
558  switch(property.epc) {
561  case EPC_ON_TIMER_SETTING : return setOnTimerSetting(property.edt);
563  default : return false;
564  }
565  }
566 
567  @Override
568  protected synchronized byte[] getProperty(byte epc) {
569  byte[] edt = super.getProperty(epc);
570  if(edt != null) return edt;
571 
572  switch(epc) {
578  case EPC_ON_TIMER_SETTING : return getOnTimerSetting();
580  default : return null;
581  }
582  }
583 
584  @Override
585  protected synchronized boolean isValidProperty(EchoProperty property) {
586  boolean valid = super.isValidProperty(property);
587  if(valid) return valid;
588 
589  switch(property.epc) {
595  case EPC_ON_TIMER_SETTING : return isValidOnTimerSetting(property.edt);
597  default : return false;
598  }
599  }
600 
601  @Override
602  public Setter set() {
603  return set(true);
604  }
605 
606  @Override
607  public Setter set(boolean responseRequired) {
608  return new Setter(getEchoClassCode(), getInstanceCode()
609  , getNode().getAddressStr(), responseRequired);
610  }
611 
612  @Override
613  public Getter get() {
614  return new Getter(getEchoClassCode(), getInstanceCode()
615  , getNode().getAddressStr());
616  }
617 
618  @Override
619  public Informer inform() {
620  return inform(isSelfObject());
621  }
622 
623  @Override
624  protected Informer inform(boolean multicast) {
625  String address;
626  if(multicast) {
628  } else {
629  address = getNode().getAddressStr();
630  }
631  return new Informer(getEchoClassCode(), getInstanceCode()
632  , address, isSelfObject());
633  }
634 
635  public static class Receiver extends DeviceObject.Receiver {
636 
637  @Override
638  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
639  EchoProperty property, boolean success) {
640  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
641  if(ret) return true;
642 
643  switch(property.epc) {
645  onSetWashingMachineSetting(eoj, tid, esv, property, success);
646  return true;
648  onSetOnTimerReservationSetting(eoj, tid, esv, property, success);
649  return true;
650  case EPC_ON_TIMER_SETTING :
651  onSetOnTimerSetting(eoj, tid, esv, property, success);
652  return true;
654  onSetRelativeTimeBasedOnTimerSetting(eoj, tid, esv, property, success);
655  return true;
656  default :
657  return false;
658  }
659  }
660 
661  @Override
662  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
663  EchoProperty property, boolean success) {
664  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
665  if(ret) return true;
666 
667  switch(property.epc) {
669  onGetDoorCoverOpenCloseStatus(eoj, tid, esv, property, success);
670  return true;
672  onGetWashingMachineSetting(eoj, tid, esv, property, success);
673  return true;
675  onGetCurrentStageOfWashingCycle(eoj, tid, esv, property, success);
676  return true;
678  onGetTimeRemainingToCompleteWashingCycle(eoj, tid, esv, property, success);
679  return true;
681  onGetOnTimerReservationSetting(eoj, tid, esv, property, success);
682  return true;
683  case EPC_ON_TIMER_SETTING :
684  onGetOnTimerSetting(eoj, tid, esv, property, success);
685  return true;
687  onGetRelativeTimeBasedOnTimerSetting(eoj, tid, esv, property, success);
688  return true;
689  default :
690  return false;
691  }
692  }
693 
716  protected void onGetDoorCoverOpenCloseStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
741  protected void onSetWashingMachineSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
766  protected void onGetWashingMachineSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
789  protected void onGetCurrentStageOfWashingCycle(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
812  protected void onGetTimeRemainingToCompleteWashingCycle(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
835  protected void onSetOnTimerReservationSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
858  protected void onGetOnTimerReservationSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
881  protected void onSetOnTimerSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
904  protected void onGetOnTimerSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
928  protected void onSetRelativeTimeBasedOnTimerSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
952  protected void onGetRelativeTimeBasedOnTimerSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
953  }
954 
955  public static class Setter extends DeviceObject.Setter {
956  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
957  , String dstEchoAddress, boolean responseRequired) {
958  super(dstEchoClassCode, dstEchoInstanceCode
959  , dstEchoAddress, responseRequired);
960  }
961 
962  @Override
963  public Setter reqSetProperty(byte epc, byte[] edt) {
964  return (Setter)super.reqSetProperty(epc, edt);
965  }
966 
967  @Override
968  public Setter reqSetOperationStatus(byte[] edt) {
969  return (Setter)super.reqSetOperationStatus(edt);
970  }
971  @Override
972  public Setter reqSetInstallationLocation(byte[] edt) {
973  return (Setter)super.reqSetInstallationLocation(edt);
974  }
975  @Override
976  public Setter reqSetCurrentLimitSetting(byte[] edt) {
977  return (Setter)super.reqSetCurrentLimitSetting(edt);
978  }
979  @Override
980  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
981  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
982  }
983  @Override
984  public Setter reqSetRemoteControlSetting(byte[] edt) {
985  return (Setter)super.reqSetRemoteControlSetting(edt);
986  }
987  @Override
988  public Setter reqSetCurrentTimeSetting(byte[] edt) {
989  return (Setter)super.reqSetCurrentTimeSetting(edt);
990  }
991  @Override
992  public Setter reqSetCurrentDateSetting(byte[] edt) {
993  return (Setter)super.reqSetCurrentDateSetting(edt);
994  }
995  @Override
996  public Setter reqSetPowerLimitSetting(byte[] edt) {
997  return (Setter)super.reqSetPowerLimitSetting(edt);
998  }
999 
1024  public Setter reqSetWashingMachineSetting(byte[] edt) {
1025  reqSetProperty(EPC_WASHING_MACHINE_SETTING, edt);
1026  return this;
1027  }
1050  public Setter reqSetOnTimerReservationSetting(byte[] edt) {
1051  reqSetProperty(EPC_ON_TIMER_RESERVATION_SETTING, edt);
1052  return this;
1053  }
1076  public Setter reqSetOnTimerSetting(byte[] edt) {
1077  reqSetProperty(EPC_ON_TIMER_SETTING, edt);
1078  return this;
1079  }
1103  public Setter reqSetRelativeTimeBasedOnTimerSetting(byte[] edt) {
1104  reqSetProperty(EPC_RELATIVE_TIME_BASED_ON_TIMER_SETTING, edt);
1105  return this;
1106  }
1107  }
1108 
1109  public static class Getter extends DeviceObject.Getter {
1110  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
1111  , String dstEchoAddress) {
1112  super(dstEchoClassCode, dstEchoInstanceCode
1113  , dstEchoAddress);
1114  }
1115 
1116  @Override
1117  public Getter reqGetProperty(byte epc) {
1118  return (Getter)super.reqGetProperty(epc);
1119  }
1120 
1121  @Override
1122  public Getter reqGetOperationStatus() {
1123  return (Getter)super.reqGetOperationStatus();
1124  }
1125  @Override
1126  public Getter reqGetInstallationLocation() {
1127  return (Getter)super.reqGetInstallationLocation();
1128  }
1129  @Override
1130  public Getter reqGetStandardVersionInformation() {
1131  return (Getter)super.reqGetStandardVersionInformation();
1132  }
1133  @Override
1134  public Getter reqGetIdentificationNumber() {
1135  return (Getter)super.reqGetIdentificationNumber();
1136  }
1137  @Override
1138  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
1139  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
1140  }
1141  @Override
1142  public Getter reqGetMeasuredCumulativePowerConsumption() {
1143  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
1144  }
1145  @Override
1146  public Getter reqGetManufacturersFaultCode() {
1147  return (Getter)super.reqGetManufacturersFaultCode();
1148  }
1149  @Override
1150  public Getter reqGetCurrentLimitSetting() {
1151  return (Getter)super.reqGetCurrentLimitSetting();
1152  }
1153  @Override
1154  public Getter reqGetFaultStatus() {
1155  return (Getter)super.reqGetFaultStatus();
1156  }
1157  @Override
1158  public Getter reqGetFaultDescription() {
1159  return (Getter)super.reqGetFaultDescription();
1160  }
1161  @Override
1162  public Getter reqGetManufacturerCode() {
1163  return (Getter)super.reqGetManufacturerCode();
1164  }
1165  @Override
1166  public Getter reqGetBusinessFacilityCode() {
1167  return (Getter)super.reqGetBusinessFacilityCode();
1168  }
1169  @Override
1170  public Getter reqGetProductCode() {
1171  return (Getter)super.reqGetProductCode();
1172  }
1173  @Override
1174  public Getter reqGetProductionNumber() {
1175  return (Getter)super.reqGetProductionNumber();
1176  }
1177  @Override
1178  public Getter reqGetProductionDate() {
1179  return (Getter)super.reqGetProductionDate();
1180  }
1181  @Override
1182  public Getter reqGetPowerSavingOperationSetting() {
1183  return (Getter)super.reqGetPowerSavingOperationSetting();
1184  }
1185  @Override
1186  public Getter reqGetRemoteControlSetting() {
1187  return (Getter)super.reqGetRemoteControlSetting();
1188  }
1189  @Override
1190  public Getter reqGetCurrentTimeSetting() {
1191  return (Getter)super.reqGetCurrentTimeSetting();
1192  }
1193  @Override
1194  public Getter reqGetCurrentDateSetting() {
1195  return (Getter)super.reqGetCurrentDateSetting();
1196  }
1197  @Override
1198  public Getter reqGetPowerLimitSetting() {
1199  return (Getter)super.reqGetPowerLimitSetting();
1200  }
1201  @Override
1202  public Getter reqGetCumulativeOperatingTime() {
1203  return (Getter)super.reqGetCumulativeOperatingTime();
1204  }
1205  @Override
1206  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
1207  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
1208  }
1209  @Override
1210  public Getter reqGetSetPropertyMap() {
1211  return (Getter)super.reqGetSetPropertyMap();
1212  }
1213  @Override
1214  public Getter reqGetGetPropertyMap() {
1215  return (Getter)super.reqGetGetPropertyMap();
1216  }
1217 
1240  public Getter reqGetDoorCoverOpenCloseStatus() {
1241  reqGetProperty(EPC_DOOR_COVER_OPEN_CLOSE_STATUS);
1242  return this;
1243  }
1268  public Getter reqGetWashingMachineSetting() {
1269  reqGetProperty(EPC_WASHING_MACHINE_SETTING);
1270  return this;
1271  }
1294  public Getter reqGetCurrentStageOfWashingCycle() {
1295  reqGetProperty(EPC_CURRENT_STAGE_OF_WASHING_CYCLE);
1296  return this;
1297  }
1320  public Getter reqGetTimeRemainingToCompleteWashingCycle() {
1322  return this;
1323  }
1346  public Getter reqGetOnTimerReservationSetting() {
1347  reqGetProperty(EPC_ON_TIMER_RESERVATION_SETTING);
1348  return this;
1349  }
1372  public Getter reqGetOnTimerSetting() {
1373  reqGetProperty(EPC_ON_TIMER_SETTING);
1374  return this;
1375  }
1399  public Getter reqGetRelativeTimeBasedOnTimerSetting() {
1401  return this;
1402  }
1403  }
1404 
1405  public static class Informer extends DeviceObject.Informer {
1406  public Informer(short echoClassCode, byte echoInstanceCode
1407  , String dstEchoAddress, boolean isSelfObject) {
1408  super(echoClassCode, echoInstanceCode
1409  , dstEchoAddress, isSelfObject);
1410  }
1411 
1412  @Override
1413  public Informer reqInformProperty(byte epc) {
1414  return (Informer)super.reqInformProperty(epc);
1415  }
1416  @Override
1417  public Informer reqInformOperationStatus() {
1418  return (Informer)super.reqInformOperationStatus();
1419  }
1420  @Override
1421  public Informer reqInformInstallationLocation() {
1422  return (Informer)super.reqInformInstallationLocation();
1423  }
1424  @Override
1425  public Informer reqInformStandardVersionInformation() {
1426  return (Informer)super.reqInformStandardVersionInformation();
1427  }
1428  @Override
1429  public Informer reqInformIdentificationNumber() {
1430  return (Informer)super.reqInformIdentificationNumber();
1431  }
1432  @Override
1433  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
1434  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
1435  }
1436  @Override
1437  public Informer reqInformMeasuredCumulativePowerConsumption() {
1438  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
1439  }
1440  @Override
1441  public Informer reqInformManufacturersFaultCode() {
1442  return (Informer)super.reqInformManufacturersFaultCode();
1443  }
1444  @Override
1445  public Informer reqInformCurrentLimitSetting() {
1446  return (Informer)super.reqInformCurrentLimitSetting();
1447  }
1448  @Override
1449  public Informer reqInformFaultStatus() {
1450  return (Informer)super.reqInformFaultStatus();
1451  }
1452  @Override
1453  public Informer reqInformFaultDescription() {
1454  return (Informer)super.reqInformFaultDescription();
1455  }
1456  @Override
1457  public Informer reqInformManufacturerCode() {
1458  return (Informer)super.reqInformManufacturerCode();
1459  }
1460  @Override
1461  public Informer reqInformBusinessFacilityCode() {
1462  return (Informer)super.reqInformBusinessFacilityCode();
1463  }
1464  @Override
1465  public Informer reqInformProductCode() {
1466  return (Informer)super.reqInformProductCode();
1467  }
1468  @Override
1469  public Informer reqInformProductionNumber() {
1470  return (Informer)super.reqInformProductionNumber();
1471  }
1472  @Override
1473  public Informer reqInformProductionDate() {
1474  return (Informer)super.reqInformProductionDate();
1475  }
1476  @Override
1477  public Informer reqInformPowerSavingOperationSetting() {
1478  return (Informer)super.reqInformPowerSavingOperationSetting();
1479  }
1480  @Override
1481  public Informer reqInformRemoteControlSetting() {
1482  return (Informer)super.reqInformRemoteControlSetting();
1483  }
1484  @Override
1485  public Informer reqInformCurrentTimeSetting() {
1486  return (Informer)super.reqInformCurrentTimeSetting();
1487  }
1488  @Override
1489  public Informer reqInformCurrentDateSetting() {
1490  return (Informer)super.reqInformCurrentDateSetting();
1491  }
1492  @Override
1493  public Informer reqInformPowerLimitSetting() {
1494  return (Informer)super.reqInformPowerLimitSetting();
1495  }
1496  @Override
1497  public Informer reqInformCumulativeOperatingTime() {
1498  return (Informer)super.reqInformCumulativeOperatingTime();
1499  }
1500  @Override
1501  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
1502  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
1503  }
1504  @Override
1505  public Informer reqInformSetPropertyMap() {
1506  return (Informer)super.reqInformSetPropertyMap();
1507  }
1508  @Override
1509  public Informer reqInformGetPropertyMap() {
1510  return (Informer)super.reqInformGetPropertyMap();
1511  }
1512 
1535  public Informer reqInformDoorCoverOpenCloseStatus() {
1536  reqInformProperty(EPC_DOOR_COVER_OPEN_CLOSE_STATUS);
1537  return this;
1538  }
1563  public Informer reqInformWashingMachineSetting() {
1564  reqInformProperty(EPC_WASHING_MACHINE_SETTING);
1565  return this;
1566  }
1589  public Informer reqInformCurrentStageOfWashingCycle() {
1590  reqInformProperty(EPC_CURRENT_STAGE_OF_WASHING_CYCLE);
1591  return this;
1592  }
1615  public Informer reqInformTimeRemainingToCompleteWashingCycle() {
1617  return this;
1618  }
1641  public Informer reqInformOnTimerReservationSetting() {
1642  reqInformProperty(EPC_ON_TIMER_RESERVATION_SETTING);
1643  return this;
1644  }
1667  public Informer reqInformOnTimerSetting() {
1668  reqInformProperty(EPC_ON_TIMER_SETTING);
1669  return this;
1670  }
1694  public Informer reqInformRelativeTimeBasedOnTimerSetting() {
1695  reqInformProperty(EPC_RELATIVE_TIME_BASED_ON_TIMER_SETTING);
1696  return this;
1697  }
1698  }
1699 
1700  public static class Proxy extends WashingMachine {
1701  public Proxy(byte instanceCode) {
1702  super();
1703  mEchoInstanceCode = instanceCode;
1704  }
1705  @Override
1706  public byte getInstanceCode() {
1707  return mEchoInstanceCode;
1708  }
1709  @Override
1710  protected byte[] getOperationStatus() {return null;}
1711  @Override
1712  protected boolean setInstallationLocation(byte[] edt) {return false;}
1713  @Override
1714  protected byte[] getInstallationLocation() {return null;}
1715  @Override
1716  protected byte[] getStandardVersionInformation() {return null;}
1717  @Override
1718  protected byte[] getFaultStatus() {return null;}
1719  @Override
1720  protected byte[] getManufacturerCode() {return null;}
1721  }
1722 
1723  public static Setter setG() {
1724  return setG((byte)0);
1725  }
1726 
1727  public static Setter setG(byte instanceCode) {
1728  return setG(instanceCode, true);
1729  }
1730 
1731  public static Setter setG(boolean responseRequired) {
1732  return setG((byte)0, responseRequired);
1733  }
1734 
1735  public static Setter setG(byte instanceCode, boolean responseRequired) {
1736  return new Setter(ECHO_CLASS_CODE, instanceCode
1737  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1738  }
1739 
1740  public static Getter getG() {
1741  return getG((byte)0);
1742  }
1743 
1744  public static Getter getG(byte instanceCode) {
1745  return new Getter(ECHO_CLASS_CODE, instanceCode
1747  }
1748 
1749  public static Informer informG() {
1750  return informG((byte)0);
1751  }
1752 
1753  public static Informer informG(byte instanceCode) {
1754  return new Informer(ECHO_CLASS_CODE, instanceCode
1755  , EchoSocket.MULTICAST_ADDRESS, false);
1756  }
1757 
1758 }
synchronized boolean isValidProperty(EchoProperty property)
final void removeSetProperty(byte epc)
Definition: EchoObject.java:98
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
final void addGetProperty(byte epc)
static Setter setG(byte instanceCode, boolean responseRequired)
synchronized boolean setProperty(EchoProperty property)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53