OpenECHO
 All Classes Namespaces Files Functions Variables
ElectricLock.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.housingfacilities;
17 
25 
26 public abstract class ElectricLock extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x026F;
29 
30  public static final byte EPC_LOCK_SETTING1 = (byte)0xE0;
31  public static final byte EPC_LOCK_SETTING2 = (byte)0xE1;
32  public static final byte EPC_LOCK_STATUS_OF_DOOR_GUARD = (byte)0xE2;
33  public static final byte EPC_DOOR_OPEN_CLOSE_STATUS = (byte)0xE3;
34  public static final byte EPC_OCCUPANT_NON_OCCUPANT_STATUS = (byte)0xE4;
35  public static final byte EPC_ALARM_STATUS = (byte)0xE5;
36  public static final byte EPC_AUTO_LOCK_MODE_SETTING = (byte)0xE6;
37 
38  @Override
39  protected void setupPropertyMaps() {
40  super.setupPropertyMaps();
41 
49  }
50 
51  @Override
52  public void onNew() {
53  super.onNew();
54  Echo.getEventListener().onNewElectricLock(this);
55  }
56 
57  @Override
58  public short getEchoClassCode() {
59  return ECHO_CLASS_CODE;
60  }
61 
86  protected boolean setOperationStatus(byte[] edt) {return false;}
111  protected abstract byte[] getOperationStatus();
136  protected abstract boolean setLockSetting1(byte[] edt);
161  protected abstract byte[] getLockSetting1();
186  protected boolean isValidLockSetting1(byte[] edt) {
187  if(edt == null || !(edt.length == 1)) return false;
188  return true;
189  }
212  protected boolean setLockSetting2(byte[] edt) {return false;}
235  protected byte[] getLockSetting2() {return null;}
258  protected boolean isValidLockSetting2(byte[] edt) {
259  if(edt == null || !(edt.length == 1)) return false;
260  return true;
261  }
284  protected byte[] getLockStatusOfDoorGuard() {return null;}
307  protected boolean isValidLockStatusOfDoorGuard(byte[] edt) {
308  if(edt == null || !(edt.length == 1)) return false;
309  return true;
310  }
333  protected byte[] getDoorOpenCloseStatus() {return null;}
356  protected boolean isValidDoorOpenCloseStatus(byte[] edt) {
357  if(edt == null || !(edt.length == 1)) return false;
358  return true;
359  }
382  protected byte[] getOccupantNonOccupantStatus() {return null;}
405  protected boolean isValidOccupantNonOccupantStatus(byte[] edt) {
406  if(edt == null || !(edt.length == 1)) return false;
407  return true;
408  }
433  protected byte[] getAlarmStatus() {return null;}
458  protected boolean isValidAlarmStatus(byte[] edt) {
459  if(edt == null || !(edt.length == 1)) return false;
460  return true;
461  }
484  protected boolean setAutoLockModeSetting(byte[] edt) {return false;}
507  protected byte[] getAutoLockModeSetting() {return null;}
530  protected boolean isValidAutoLockModeSetting(byte[] edt) {
531  if(edt == null || !(edt.length == 1)) return false;
532  return true;
533  }
534 
535  @Override
536  protected synchronized boolean setProperty(EchoProperty property) {
537  boolean success = super.setProperty(property);
538  if(success) return success;
539 
540  switch(property.epc) {
541  case EPC_LOCK_SETTING1 : return setLockSetting1(property.edt);
542  case EPC_LOCK_SETTING2 : return setLockSetting2(property.edt);
543  case EPC_AUTO_LOCK_MODE_SETTING : return setAutoLockModeSetting(property.edt);
544  default : return false;
545  }
546  }
547 
548  @Override
549  protected synchronized byte[] getProperty(byte epc) {
550  byte[] edt = super.getProperty(epc);
551  if(edt != null) return edt;
552 
553  switch(epc) {
554  case EPC_LOCK_SETTING1 : return getLockSetting1();
555  case EPC_LOCK_SETTING2 : return getLockSetting2();
559  case EPC_ALARM_STATUS : return getAlarmStatus();
561  default : return null;
562  }
563  }
564 
565  @Override
566  protected synchronized boolean isValidProperty(EchoProperty property) {
567  boolean valid = super.isValidProperty(property);
568  if(valid) return valid;
569 
570  switch(property.epc) {
571  case EPC_LOCK_SETTING1 : return isValidLockSetting1(property.edt);
572  case EPC_LOCK_SETTING2 : return isValidLockSetting2(property.edt);
576  case EPC_ALARM_STATUS : return isValidAlarmStatus(property.edt);
578  default : return false;
579  }
580  }
581 
582  @Override
583  public Setter set() {
584  return set(true);
585  }
586 
587  @Override
588  public Setter set(boolean responseRequired) {
589  return new Setter(getEchoClassCode(), getInstanceCode()
590  , getNode().getAddressStr(), responseRequired);
591  }
592 
593  @Override
594  public Getter get() {
595  return new Getter(getEchoClassCode(), getInstanceCode()
596  , getNode().getAddressStr());
597  }
598 
599  @Override
600  public Informer inform() {
601  return inform(isSelfObject());
602  }
603 
604  @Override
605  protected Informer inform(boolean multicast) {
606  String address;
607  if(multicast) {
609  } else {
610  address = getNode().getAddressStr();
611  }
612  return new Informer(getEchoClassCode(), getInstanceCode()
613  , address, isSelfObject());
614  }
615 
616  public static class Receiver extends DeviceObject.Receiver {
617 
618  @Override
619  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
620  EchoProperty property, boolean success) {
621  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
622  if(ret) return true;
623 
624  switch(property.epc) {
625  case EPC_LOCK_SETTING1 :
626  onSetLockSetting1(eoj, tid, esv, property, success);
627  return true;
628  case EPC_LOCK_SETTING2 :
629  onSetLockSetting2(eoj, tid, esv, property, success);
630  return true;
632  onSetAutoLockModeSetting(eoj, tid, esv, property, success);
633  return true;
634  default :
635  return false;
636  }
637  }
638 
639  @Override
640  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
641  EchoProperty property, boolean success) {
642  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
643  if(ret) return true;
644 
645  switch(property.epc) {
646  case EPC_LOCK_SETTING1 :
647  onGetLockSetting1(eoj, tid, esv, property, success);
648  return true;
649  case EPC_LOCK_SETTING2 :
650  onGetLockSetting2(eoj, tid, esv, property, success);
651  return true;
653  onGetLockStatusOfDoorGuard(eoj, tid, esv, property, success);
654  return true;
656  onGetDoorOpenCloseStatus(eoj, tid, esv, property, success);
657  return true;
659  onGetOccupantNonOccupantStatus(eoj, tid, esv, property, success);
660  return true;
661  case EPC_ALARM_STATUS :
662  onGetAlarmStatus(eoj, tid, esv, property, success);
663  return true;
665  onGetAutoLockModeSetting(eoj, tid, esv, property, success);
666  return true;
667  default :
668  return false;
669  }
670  }
671 
696  protected void onSetLockSetting1(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
721  protected void onGetLockSetting1(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
744  protected void onSetLockSetting2(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
767  protected void onGetLockSetting2(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
790  protected void onGetLockStatusOfDoorGuard(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
813  protected void onGetDoorOpenCloseStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
836  protected void onGetOccupantNonOccupantStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
861  protected void onGetAlarmStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
884  protected void onSetAutoLockModeSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
907  protected void onGetAutoLockModeSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
908  }
909 
910  public static class Setter extends DeviceObject.Setter {
911  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
912  , String dstEchoAddress, boolean responseRequired) {
913  super(dstEchoClassCode, dstEchoInstanceCode
914  , dstEchoAddress, responseRequired);
915  }
916 
917  @Override
918  public Setter reqSetProperty(byte epc, byte[] edt) {
919  return (Setter)super.reqSetProperty(epc, edt);
920  }
921 
922  @Override
923  public Setter reqSetOperationStatus(byte[] edt) {
924  return (Setter)super.reqSetOperationStatus(edt);
925  }
926  @Override
927  public Setter reqSetInstallationLocation(byte[] edt) {
928  return (Setter)super.reqSetInstallationLocation(edt);
929  }
930  @Override
931  public Setter reqSetCurrentLimitSetting(byte[] edt) {
932  return (Setter)super.reqSetCurrentLimitSetting(edt);
933  }
934  @Override
935  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
936  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
937  }
938  @Override
939  public Setter reqSetRemoteControlSetting(byte[] edt) {
940  return (Setter)super.reqSetRemoteControlSetting(edt);
941  }
942  @Override
943  public Setter reqSetCurrentTimeSetting(byte[] edt) {
944  return (Setter)super.reqSetCurrentTimeSetting(edt);
945  }
946  @Override
947  public Setter reqSetCurrentDateSetting(byte[] edt) {
948  return (Setter)super.reqSetCurrentDateSetting(edt);
949  }
950  @Override
951  public Setter reqSetPowerLimitSetting(byte[] edt) {
952  return (Setter)super.reqSetPowerLimitSetting(edt);
953  }
954 
979  public Setter reqSetLockSetting1(byte[] edt) {
980  reqSetProperty(EPC_LOCK_SETTING1, edt);
981  return this;
982  }
1005  public Setter reqSetLockSetting2(byte[] edt) {
1006  reqSetProperty(EPC_LOCK_SETTING2, edt);
1007  return this;
1008  }
1031  public Setter reqSetAutoLockModeSetting(byte[] edt) {
1032  reqSetProperty(EPC_AUTO_LOCK_MODE_SETTING, edt);
1033  return this;
1034  }
1035  }
1036 
1037  public static class Getter extends DeviceObject.Getter {
1038  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
1039  , String dstEchoAddress) {
1040  super(dstEchoClassCode, dstEchoInstanceCode
1041  , dstEchoAddress);
1042  }
1043 
1044  @Override
1045  public Getter reqGetProperty(byte epc) {
1046  return (Getter)super.reqGetProperty(epc);
1047  }
1048 
1049  @Override
1050  public Getter reqGetOperationStatus() {
1051  return (Getter)super.reqGetOperationStatus();
1052  }
1053  @Override
1054  public Getter reqGetInstallationLocation() {
1055  return (Getter)super.reqGetInstallationLocation();
1056  }
1057  @Override
1058  public Getter reqGetStandardVersionInformation() {
1059  return (Getter)super.reqGetStandardVersionInformation();
1060  }
1061  @Override
1062  public Getter reqGetIdentificationNumber() {
1063  return (Getter)super.reqGetIdentificationNumber();
1064  }
1065  @Override
1066  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
1067  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
1068  }
1069  @Override
1070  public Getter reqGetMeasuredCumulativePowerConsumption() {
1071  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
1072  }
1073  @Override
1074  public Getter reqGetManufacturersFaultCode() {
1075  return (Getter)super.reqGetManufacturersFaultCode();
1076  }
1077  @Override
1078  public Getter reqGetCurrentLimitSetting() {
1079  return (Getter)super.reqGetCurrentLimitSetting();
1080  }
1081  @Override
1082  public Getter reqGetFaultStatus() {
1083  return (Getter)super.reqGetFaultStatus();
1084  }
1085  @Override
1086  public Getter reqGetFaultDescription() {
1087  return (Getter)super.reqGetFaultDescription();
1088  }
1089  @Override
1090  public Getter reqGetManufacturerCode() {
1091  return (Getter)super.reqGetManufacturerCode();
1092  }
1093  @Override
1094  public Getter reqGetBusinessFacilityCode() {
1095  return (Getter)super.reqGetBusinessFacilityCode();
1096  }
1097  @Override
1098  public Getter reqGetProductCode() {
1099  return (Getter)super.reqGetProductCode();
1100  }
1101  @Override
1102  public Getter reqGetProductionNumber() {
1103  return (Getter)super.reqGetProductionNumber();
1104  }
1105  @Override
1106  public Getter reqGetProductionDate() {
1107  return (Getter)super.reqGetProductionDate();
1108  }
1109  @Override
1110  public Getter reqGetPowerSavingOperationSetting() {
1111  return (Getter)super.reqGetPowerSavingOperationSetting();
1112  }
1113  @Override
1114  public Getter reqGetRemoteControlSetting() {
1115  return (Getter)super.reqGetRemoteControlSetting();
1116  }
1117  @Override
1118  public Getter reqGetCurrentTimeSetting() {
1119  return (Getter)super.reqGetCurrentTimeSetting();
1120  }
1121  @Override
1122  public Getter reqGetCurrentDateSetting() {
1123  return (Getter)super.reqGetCurrentDateSetting();
1124  }
1125  @Override
1126  public Getter reqGetPowerLimitSetting() {
1127  return (Getter)super.reqGetPowerLimitSetting();
1128  }
1129  @Override
1130  public Getter reqGetCumulativeOperatingTime() {
1131  return (Getter)super.reqGetCumulativeOperatingTime();
1132  }
1133  @Override
1134  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
1135  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
1136  }
1137  @Override
1138  public Getter reqGetSetPropertyMap() {
1139  return (Getter)super.reqGetSetPropertyMap();
1140  }
1141  @Override
1142  public Getter reqGetGetPropertyMap() {
1143  return (Getter)super.reqGetGetPropertyMap();
1144  }
1145 
1170  public Getter reqGetLockSetting1() {
1171  reqGetProperty(EPC_LOCK_SETTING1);
1172  return this;
1173  }
1196  public Getter reqGetLockSetting2() {
1197  reqGetProperty(EPC_LOCK_SETTING2);
1198  return this;
1199  }
1222  public Getter reqGetLockStatusOfDoorGuard() {
1223  reqGetProperty(EPC_LOCK_STATUS_OF_DOOR_GUARD);
1224  return this;
1225  }
1248  public Getter reqGetDoorOpenCloseStatus() {
1249  reqGetProperty(EPC_DOOR_OPEN_CLOSE_STATUS);
1250  return this;
1251  }
1274  public Getter reqGetOccupantNonOccupantStatus() {
1275  reqGetProperty(EPC_OCCUPANT_NON_OCCUPANT_STATUS);
1276  return this;
1277  }
1302  public Getter reqGetAlarmStatus() {
1303  reqGetProperty(EPC_ALARM_STATUS);
1304  return this;
1305  }
1328  public Getter reqGetAutoLockModeSetting() {
1329  reqGetProperty(EPC_AUTO_LOCK_MODE_SETTING);
1330  return this;
1331  }
1332  }
1333 
1334  public static class Informer extends DeviceObject.Informer {
1335  public Informer(short echoClassCode, byte echoInstanceCode
1336  , String dstEchoAddress, boolean isSelfObject) {
1337  super(echoClassCode, echoInstanceCode
1338  , dstEchoAddress, isSelfObject);
1339  }
1340 
1341  @Override
1342  public Informer reqInformProperty(byte epc) {
1343  return (Informer)super.reqInformProperty(epc);
1344  }
1345  @Override
1346  public Informer reqInformOperationStatus() {
1347  return (Informer)super.reqInformOperationStatus();
1348  }
1349  @Override
1350  public Informer reqInformInstallationLocation() {
1351  return (Informer)super.reqInformInstallationLocation();
1352  }
1353  @Override
1354  public Informer reqInformStandardVersionInformation() {
1355  return (Informer)super.reqInformStandardVersionInformation();
1356  }
1357  @Override
1358  public Informer reqInformIdentificationNumber() {
1359  return (Informer)super.reqInformIdentificationNumber();
1360  }
1361  @Override
1362  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
1363  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
1364  }
1365  @Override
1366  public Informer reqInformMeasuredCumulativePowerConsumption() {
1367  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
1368  }
1369  @Override
1370  public Informer reqInformManufacturersFaultCode() {
1371  return (Informer)super.reqInformManufacturersFaultCode();
1372  }
1373  @Override
1374  public Informer reqInformCurrentLimitSetting() {
1375  return (Informer)super.reqInformCurrentLimitSetting();
1376  }
1377  @Override
1378  public Informer reqInformFaultStatus() {
1379  return (Informer)super.reqInformFaultStatus();
1380  }
1381  @Override
1382  public Informer reqInformFaultDescription() {
1383  return (Informer)super.reqInformFaultDescription();
1384  }
1385  @Override
1386  public Informer reqInformManufacturerCode() {
1387  return (Informer)super.reqInformManufacturerCode();
1388  }
1389  @Override
1390  public Informer reqInformBusinessFacilityCode() {
1391  return (Informer)super.reqInformBusinessFacilityCode();
1392  }
1393  @Override
1394  public Informer reqInformProductCode() {
1395  return (Informer)super.reqInformProductCode();
1396  }
1397  @Override
1398  public Informer reqInformProductionNumber() {
1399  return (Informer)super.reqInformProductionNumber();
1400  }
1401  @Override
1402  public Informer reqInformProductionDate() {
1403  return (Informer)super.reqInformProductionDate();
1404  }
1405  @Override
1406  public Informer reqInformPowerSavingOperationSetting() {
1407  return (Informer)super.reqInformPowerSavingOperationSetting();
1408  }
1409  @Override
1410  public Informer reqInformRemoteControlSetting() {
1411  return (Informer)super.reqInformRemoteControlSetting();
1412  }
1413  @Override
1414  public Informer reqInformCurrentTimeSetting() {
1415  return (Informer)super.reqInformCurrentTimeSetting();
1416  }
1417  @Override
1418  public Informer reqInformCurrentDateSetting() {
1419  return (Informer)super.reqInformCurrentDateSetting();
1420  }
1421  @Override
1422  public Informer reqInformPowerLimitSetting() {
1423  return (Informer)super.reqInformPowerLimitSetting();
1424  }
1425  @Override
1426  public Informer reqInformCumulativeOperatingTime() {
1427  return (Informer)super.reqInformCumulativeOperatingTime();
1428  }
1429  @Override
1430  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
1431  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
1432  }
1433  @Override
1434  public Informer reqInformSetPropertyMap() {
1435  return (Informer)super.reqInformSetPropertyMap();
1436  }
1437  @Override
1438  public Informer reqInformGetPropertyMap() {
1439  return (Informer)super.reqInformGetPropertyMap();
1440  }
1441 
1466  public Informer reqInformLockSetting1() {
1467  reqInformProperty(EPC_LOCK_SETTING1);
1468  return this;
1469  }
1492  public Informer reqInformLockSetting2() {
1493  reqInformProperty(EPC_LOCK_SETTING2);
1494  return this;
1495  }
1518  public Informer reqInformLockStatusOfDoorGuard() {
1519  reqInformProperty(EPC_LOCK_STATUS_OF_DOOR_GUARD);
1520  return this;
1521  }
1544  public Informer reqInformDoorOpenCloseStatus() {
1545  reqInformProperty(EPC_DOOR_OPEN_CLOSE_STATUS);
1546  return this;
1547  }
1570  public Informer reqInformOccupantNonOccupantStatus() {
1571  reqInformProperty(EPC_OCCUPANT_NON_OCCUPANT_STATUS);
1572  return this;
1573  }
1598  public Informer reqInformAlarmStatus() {
1599  reqInformProperty(EPC_ALARM_STATUS);
1600  return this;
1601  }
1624  public Informer reqInformAutoLockModeSetting() {
1625  reqInformProperty(EPC_AUTO_LOCK_MODE_SETTING);
1626  return this;
1627  }
1628  }
1629 
1630  public static class Proxy extends ElectricLock {
1631  public Proxy(byte instanceCode) {
1632  super();
1633  mEchoInstanceCode = instanceCode;
1634  }
1635  @Override
1636  public byte getInstanceCode() {
1637  return mEchoInstanceCode;
1638  }
1639  @Override
1640  protected byte[] getOperationStatus() {return null;}
1641  @Override
1642  protected boolean setInstallationLocation(byte[] edt) {return false;}
1643  @Override
1644  protected byte[] getInstallationLocation() {return null;}
1645  @Override
1646  protected byte[] getStandardVersionInformation() {return null;}
1647  @Override
1648  protected byte[] getFaultStatus() {return null;}
1649  @Override
1650  protected byte[] getManufacturerCode() {return null;}
1651  @Override
1652  protected boolean setLockSetting1(byte[] edt) {return false;}
1653  @Override
1654  protected byte[] getLockSetting1() {return null;}
1655  }
1656 
1657  public static Setter setG() {
1658  return setG((byte)0);
1659  }
1660 
1661  public static Setter setG(byte instanceCode) {
1662  return setG(instanceCode, true);
1663  }
1664 
1665  public static Setter setG(boolean responseRequired) {
1666  return setG((byte)0, responseRequired);
1667  }
1668 
1669  public static Setter setG(byte instanceCode, boolean responseRequired) {
1670  return new Setter(ECHO_CLASS_CODE, instanceCode
1671  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1672  }
1673 
1674  public static Getter getG() {
1675  return getG((byte)0);
1676  }
1677 
1678  public static Getter getG(byte instanceCode) {
1679  return new Getter(ECHO_CLASS_CODE, instanceCode
1681  }
1682 
1683  public static Informer informG() {
1684  return informG((byte)0);
1685  }
1686 
1687  public static Informer informG(byte instanceCode) {
1688  return new Informer(ECHO_CLASS_CODE, instanceCode
1689  , EchoSocket.MULTICAST_ADDRESS, false);
1690  }
1691 
1692 }
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)
final void addSetProperty(byte epc)
Definition: EchoObject.java:93
synchronized boolean isValidProperty(EchoProperty property)
static Setter setG(byte instanceCode, boolean responseRequired)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53