OpenECHO
 All Classes Namespaces Files Functions Variables
ElectricallyOperatedShade.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 ElectricallyOperatedShade extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x0260;
29 
30  public static final byte EPC_OPEN_CLOSE_SETTING = (byte)0xE0;
31  public static final byte EPC_DEGREE_OF_OPENI_NG_LEVEL = (byte)0xE1;
32  public static final byte EPC_SET_VALUE_OF_SHADE_ANGLE = (byte)0xE2;
33  public static final byte EPC_SHADE_OPEN_CLOSE_SPEED = (byte)0xE3;
34 
35  @Override
36  protected void setupPropertyMaps() {
37  super.setupPropertyMaps();
38 
47  }
48 
49  @Override
50  public void onNew() {
51  super.onNew();
52  Echo.getEventListener().onNewElectricallyOperatedShade(this);
53  }
54 
55  @Override
56  public short getEchoClassCode() {
57  return ECHO_CLASS_CODE;
58  }
59 
84  protected boolean setOperationStatus(byte[] edt) {return false;}
109  protected abstract byte[] getOperationStatus();
134  protected abstract boolean setOpenCloseSetting(byte[] edt);
159  protected abstract byte[] getOpenCloseSetting();
184  protected boolean isValidOpenCloseSetting(byte[] edt) {
185  if(edt == null || !(edt.length == 1)) return false;
186  return true;
187  }
210  protected abstract boolean setDegreeOfOpeniNgLevel(byte[] edt);
233  protected abstract byte[] getDegreeOfOpeniNgLevel();
256  protected boolean isValidDegreeOfOpeniNgLevel(byte[] edt) {
257  if(edt == null || !(edt.length == 1)) return false;
258  return true;
259  }
282  protected boolean setSetValueOfShadeAngle(byte[] edt) {return false;}
305  protected byte[] getSetValueOfShadeAngle() {return null;}
328  protected boolean isValidSetValueOfShadeAngle(byte[] edt) {
329  if(edt == null || !(edt.length == 1)) return false;
330  return true;
331  }
354  protected boolean setShadeOpenCloseSpeed(byte[] edt) {return false;}
377  protected byte[] getShadeOpenCloseSpeed() {return null;}
400  protected boolean isValidShadeOpenCloseSpeed(byte[] edt) {
401  if(edt == null || !(edt.length == 1)) return false;
402  return true;
403  }
404 
405  @Override
406  protected synchronized boolean setProperty(EchoProperty property) {
407  boolean success = super.setProperty(property);
408  if(success) return success;
409 
410  switch(property.epc) {
411  case EPC_OPEN_CLOSE_SETTING : return setOpenCloseSetting(property.edt);
414  case EPC_SHADE_OPEN_CLOSE_SPEED : return setShadeOpenCloseSpeed(property.edt);
415  default : return false;
416  }
417  }
418 
419  @Override
420  protected synchronized byte[] getProperty(byte epc) {
421  byte[] edt = super.getProperty(epc);
422  if(edt != null) return edt;
423 
424  switch(epc) {
429  default : return null;
430  }
431  }
432 
433  @Override
434  protected synchronized boolean isValidProperty(EchoProperty property) {
435  boolean valid = super.isValidProperty(property);
436  if(valid) return valid;
437 
438  switch(property.epc) {
439  case EPC_OPEN_CLOSE_SETTING : return isValidOpenCloseSetting(property.edt);
443  default : return false;
444  }
445  }
446 
447  @Override
448  public Setter set() {
449  return set(true);
450  }
451 
452  @Override
453  public Setter set(boolean responseRequired) {
454  return new Setter(getEchoClassCode(), getInstanceCode()
455  , getNode().getAddressStr(), responseRequired);
456  }
457 
458  @Override
459  public Getter get() {
460  return new Getter(getEchoClassCode(), getInstanceCode()
461  , getNode().getAddressStr());
462  }
463 
464  @Override
465  public Informer inform() {
466  return inform(isSelfObject());
467  }
468 
469  @Override
470  protected Informer inform(boolean multicast) {
471  String address;
472  if(multicast) {
474  } else {
475  address = getNode().getAddressStr();
476  }
477  return new Informer(getEchoClassCode(), getInstanceCode()
478  , address, isSelfObject());
479  }
480 
481  public static class Receiver extends DeviceObject.Receiver {
482 
483  @Override
484  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
485  EchoProperty property, boolean success) {
486  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
487  if(ret) return true;
488 
489  switch(property.epc) {
490  case EPC_OPEN_CLOSE_SETTING :
491  onSetOpenCloseSetting(eoj, tid, esv, property, success);
492  return true;
494  onSetDegreeOfOpeniNgLevel(eoj, tid, esv, property, success);
495  return true;
497  onSetSetValueOfShadeAngle(eoj, tid, esv, property, success);
498  return true;
500  onSetShadeOpenCloseSpeed(eoj, tid, esv, property, success);
501  return true;
502  default :
503  return false;
504  }
505  }
506 
507  @Override
508  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
509  EchoProperty property, boolean success) {
510  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
511  if(ret) return true;
512 
513  switch(property.epc) {
514  case EPC_OPEN_CLOSE_SETTING :
515  onGetOpenCloseSetting(eoj, tid, esv, property, success);
516  return true;
518  onGetDegreeOfOpeniNgLevel(eoj, tid, esv, property, success);
519  return true;
521  onGetSetValueOfShadeAngle(eoj, tid, esv, property, success);
522  return true;
524  onGetShadeOpenCloseSpeed(eoj, tid, esv, property, success);
525  return true;
526  default :
527  return false;
528  }
529  }
530 
555  protected void onSetOpenCloseSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
580  protected void onGetOpenCloseSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
603  protected void onSetDegreeOfOpeniNgLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
626  protected void onGetDegreeOfOpeniNgLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
649  protected void onSetSetValueOfShadeAngle(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
672  protected void onGetSetValueOfShadeAngle(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
695  protected void onSetShadeOpenCloseSpeed(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
718  protected void onGetShadeOpenCloseSpeed(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
719  }
720 
721  public static class Setter extends DeviceObject.Setter {
722  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
723  , String dstEchoAddress, boolean responseRequired) {
724  super(dstEchoClassCode, dstEchoInstanceCode
725  , dstEchoAddress, responseRequired);
726  }
727 
728  @Override
729  public Setter reqSetProperty(byte epc, byte[] edt) {
730  return (Setter)super.reqSetProperty(epc, edt);
731  }
732 
733  @Override
734  public Setter reqSetOperationStatus(byte[] edt) {
735  return (Setter)super.reqSetOperationStatus(edt);
736  }
737  @Override
738  public Setter reqSetInstallationLocation(byte[] edt) {
739  return (Setter)super.reqSetInstallationLocation(edt);
740  }
741  @Override
742  public Setter reqSetCurrentLimitSetting(byte[] edt) {
743  return (Setter)super.reqSetCurrentLimitSetting(edt);
744  }
745  @Override
746  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
747  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
748  }
749  @Override
750  public Setter reqSetRemoteControlSetting(byte[] edt) {
751  return (Setter)super.reqSetRemoteControlSetting(edt);
752  }
753  @Override
754  public Setter reqSetCurrentTimeSetting(byte[] edt) {
755  return (Setter)super.reqSetCurrentTimeSetting(edt);
756  }
757  @Override
758  public Setter reqSetCurrentDateSetting(byte[] edt) {
759  return (Setter)super.reqSetCurrentDateSetting(edt);
760  }
761  @Override
762  public Setter reqSetPowerLimitSetting(byte[] edt) {
763  return (Setter)super.reqSetPowerLimitSetting(edt);
764  }
765 
790  public Setter reqSetOpenCloseSetting(byte[] edt) {
791  reqSetProperty(EPC_OPEN_CLOSE_SETTING, edt);
792  return this;
793  }
816  public Setter reqSetDegreeOfOpeniNgLevel(byte[] edt) {
817  reqSetProperty(EPC_DEGREE_OF_OPENI_NG_LEVEL, edt);
818  return this;
819  }
842  public Setter reqSetSetValueOfShadeAngle(byte[] edt) {
843  reqSetProperty(EPC_SET_VALUE_OF_SHADE_ANGLE, edt);
844  return this;
845  }
868  public Setter reqSetShadeOpenCloseSpeed(byte[] edt) {
869  reqSetProperty(EPC_SHADE_OPEN_CLOSE_SPEED, edt);
870  return this;
871  }
872  }
873 
874  public static class Getter extends DeviceObject.Getter {
875  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
876  , String dstEchoAddress) {
877  super(dstEchoClassCode, dstEchoInstanceCode
878  , dstEchoAddress);
879  }
880 
881  @Override
882  public Getter reqGetProperty(byte epc) {
883  return (Getter)super.reqGetProperty(epc);
884  }
885 
886  @Override
887  public Getter reqGetOperationStatus() {
888  return (Getter)super.reqGetOperationStatus();
889  }
890  @Override
891  public Getter reqGetInstallationLocation() {
892  return (Getter)super.reqGetInstallationLocation();
893  }
894  @Override
895  public Getter reqGetStandardVersionInformation() {
896  return (Getter)super.reqGetStandardVersionInformation();
897  }
898  @Override
899  public Getter reqGetIdentificationNumber() {
900  return (Getter)super.reqGetIdentificationNumber();
901  }
902  @Override
903  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
904  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
905  }
906  @Override
907  public Getter reqGetMeasuredCumulativePowerConsumption() {
908  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
909  }
910  @Override
911  public Getter reqGetManufacturersFaultCode() {
912  return (Getter)super.reqGetManufacturersFaultCode();
913  }
914  @Override
915  public Getter reqGetCurrentLimitSetting() {
916  return (Getter)super.reqGetCurrentLimitSetting();
917  }
918  @Override
919  public Getter reqGetFaultStatus() {
920  return (Getter)super.reqGetFaultStatus();
921  }
922  @Override
923  public Getter reqGetFaultDescription() {
924  return (Getter)super.reqGetFaultDescription();
925  }
926  @Override
927  public Getter reqGetManufacturerCode() {
928  return (Getter)super.reqGetManufacturerCode();
929  }
930  @Override
931  public Getter reqGetBusinessFacilityCode() {
932  return (Getter)super.reqGetBusinessFacilityCode();
933  }
934  @Override
935  public Getter reqGetProductCode() {
936  return (Getter)super.reqGetProductCode();
937  }
938  @Override
939  public Getter reqGetProductionNumber() {
940  return (Getter)super.reqGetProductionNumber();
941  }
942  @Override
943  public Getter reqGetProductionDate() {
944  return (Getter)super.reqGetProductionDate();
945  }
946  @Override
947  public Getter reqGetPowerSavingOperationSetting() {
948  return (Getter)super.reqGetPowerSavingOperationSetting();
949  }
950  @Override
951  public Getter reqGetRemoteControlSetting() {
952  return (Getter)super.reqGetRemoteControlSetting();
953  }
954  @Override
955  public Getter reqGetCurrentTimeSetting() {
956  return (Getter)super.reqGetCurrentTimeSetting();
957  }
958  @Override
959  public Getter reqGetCurrentDateSetting() {
960  return (Getter)super.reqGetCurrentDateSetting();
961  }
962  @Override
963  public Getter reqGetPowerLimitSetting() {
964  return (Getter)super.reqGetPowerLimitSetting();
965  }
966  @Override
967  public Getter reqGetCumulativeOperatingTime() {
968  return (Getter)super.reqGetCumulativeOperatingTime();
969  }
970  @Override
971  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
972  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
973  }
974  @Override
975  public Getter reqGetSetPropertyMap() {
976  return (Getter)super.reqGetSetPropertyMap();
977  }
978  @Override
979  public Getter reqGetGetPropertyMap() {
980  return (Getter)super.reqGetGetPropertyMap();
981  }
982 
1007  public Getter reqGetOpenCloseSetting() {
1008  reqGetProperty(EPC_OPEN_CLOSE_SETTING);
1009  return this;
1010  }
1033  public Getter reqGetDegreeOfOpeniNgLevel() {
1034  reqGetProperty(EPC_DEGREE_OF_OPENI_NG_LEVEL);
1035  return this;
1036  }
1059  public Getter reqGetSetValueOfShadeAngle() {
1060  reqGetProperty(EPC_SET_VALUE_OF_SHADE_ANGLE);
1061  return this;
1062  }
1085  public Getter reqGetShadeOpenCloseSpeed() {
1086  reqGetProperty(EPC_SHADE_OPEN_CLOSE_SPEED);
1087  return this;
1088  }
1089  }
1090 
1091  public static class Informer extends DeviceObject.Informer {
1092  public Informer(short echoClassCode, byte echoInstanceCode
1093  , String dstEchoAddress, boolean isSelfObject) {
1094  super(echoClassCode, echoInstanceCode
1095  , dstEchoAddress, isSelfObject);
1096  }
1097 
1098  @Override
1099  public Informer reqInformProperty(byte epc) {
1100  return (Informer)super.reqInformProperty(epc);
1101  }
1102  @Override
1103  public Informer reqInformOperationStatus() {
1104  return (Informer)super.reqInformOperationStatus();
1105  }
1106  @Override
1107  public Informer reqInformInstallationLocation() {
1108  return (Informer)super.reqInformInstallationLocation();
1109  }
1110  @Override
1111  public Informer reqInformStandardVersionInformation() {
1112  return (Informer)super.reqInformStandardVersionInformation();
1113  }
1114  @Override
1115  public Informer reqInformIdentificationNumber() {
1116  return (Informer)super.reqInformIdentificationNumber();
1117  }
1118  @Override
1119  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
1120  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
1121  }
1122  @Override
1123  public Informer reqInformMeasuredCumulativePowerConsumption() {
1124  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
1125  }
1126  @Override
1127  public Informer reqInformManufacturersFaultCode() {
1128  return (Informer)super.reqInformManufacturersFaultCode();
1129  }
1130  @Override
1131  public Informer reqInformCurrentLimitSetting() {
1132  return (Informer)super.reqInformCurrentLimitSetting();
1133  }
1134  @Override
1135  public Informer reqInformFaultStatus() {
1136  return (Informer)super.reqInformFaultStatus();
1137  }
1138  @Override
1139  public Informer reqInformFaultDescription() {
1140  return (Informer)super.reqInformFaultDescription();
1141  }
1142  @Override
1143  public Informer reqInformManufacturerCode() {
1144  return (Informer)super.reqInformManufacturerCode();
1145  }
1146  @Override
1147  public Informer reqInformBusinessFacilityCode() {
1148  return (Informer)super.reqInformBusinessFacilityCode();
1149  }
1150  @Override
1151  public Informer reqInformProductCode() {
1152  return (Informer)super.reqInformProductCode();
1153  }
1154  @Override
1155  public Informer reqInformProductionNumber() {
1156  return (Informer)super.reqInformProductionNumber();
1157  }
1158  @Override
1159  public Informer reqInformProductionDate() {
1160  return (Informer)super.reqInformProductionDate();
1161  }
1162  @Override
1163  public Informer reqInformPowerSavingOperationSetting() {
1164  return (Informer)super.reqInformPowerSavingOperationSetting();
1165  }
1166  @Override
1167  public Informer reqInformRemoteControlSetting() {
1168  return (Informer)super.reqInformRemoteControlSetting();
1169  }
1170  @Override
1171  public Informer reqInformCurrentTimeSetting() {
1172  return (Informer)super.reqInformCurrentTimeSetting();
1173  }
1174  @Override
1175  public Informer reqInformCurrentDateSetting() {
1176  return (Informer)super.reqInformCurrentDateSetting();
1177  }
1178  @Override
1179  public Informer reqInformPowerLimitSetting() {
1180  return (Informer)super.reqInformPowerLimitSetting();
1181  }
1182  @Override
1183  public Informer reqInformCumulativeOperatingTime() {
1184  return (Informer)super.reqInformCumulativeOperatingTime();
1185  }
1186  @Override
1187  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
1188  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
1189  }
1190  @Override
1191  public Informer reqInformSetPropertyMap() {
1192  return (Informer)super.reqInformSetPropertyMap();
1193  }
1194  @Override
1195  public Informer reqInformGetPropertyMap() {
1196  return (Informer)super.reqInformGetPropertyMap();
1197  }
1198 
1223  public Informer reqInformOpenCloseSetting() {
1224  reqInformProperty(EPC_OPEN_CLOSE_SETTING);
1225  return this;
1226  }
1249  public Informer reqInformDegreeOfOpeniNgLevel() {
1250  reqInformProperty(EPC_DEGREE_OF_OPENI_NG_LEVEL);
1251  return this;
1252  }
1275  public Informer reqInformSetValueOfShadeAngle() {
1276  reqInformProperty(EPC_SET_VALUE_OF_SHADE_ANGLE);
1277  return this;
1278  }
1301  public Informer reqInformShadeOpenCloseSpeed() {
1302  reqInformProperty(EPC_SHADE_OPEN_CLOSE_SPEED);
1303  return this;
1304  }
1305  }
1306 
1307  public static class Proxy extends ElectricallyOperatedShade {
1308  public Proxy(byte instanceCode) {
1309  super();
1310  mEchoInstanceCode = instanceCode;
1311  }
1312  @Override
1313  public byte getInstanceCode() {
1314  return mEchoInstanceCode;
1315  }
1316  @Override
1317  protected byte[] getOperationStatus() {return null;}
1318  @Override
1319  protected boolean setInstallationLocation(byte[] edt) {return false;}
1320  @Override
1321  protected byte[] getInstallationLocation() {return null;}
1322  @Override
1323  protected byte[] getStandardVersionInformation() {return null;}
1324  @Override
1325  protected byte[] getFaultStatus() {return null;}
1326  @Override
1327  protected byte[] getManufacturerCode() {return null;}
1328  @Override
1329  protected boolean setOpenCloseSetting(byte[] edt) {return false;}
1330  @Override
1331  protected byte[] getOpenCloseSetting() {return null;}
1332  @Override
1333  protected boolean setDegreeOfOpeniNgLevel(byte[] edt) {return false;}
1334  @Override
1335  protected byte[] getDegreeOfOpeniNgLevel() {return null;}
1336  }
1337 
1338  public static Setter setG() {
1339  return setG((byte)0);
1340  }
1341 
1342  public static Setter setG(byte instanceCode) {
1343  return setG(instanceCode, true);
1344  }
1345 
1346  public static Setter setG(boolean responseRequired) {
1347  return setG((byte)0, responseRequired);
1348  }
1349 
1350  public static Setter setG(byte instanceCode, boolean responseRequired) {
1351  return new Setter(ECHO_CLASS_CODE, instanceCode
1352  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1353  }
1354 
1355  public static Getter getG() {
1356  return getG((byte)0);
1357  }
1358 
1359  public static Getter getG(byte instanceCode) {
1360  return new Getter(ECHO_CLASS_CODE, instanceCode
1362  }
1363 
1364  public static Informer informG() {
1365  return informG((byte)0);
1366  }
1367 
1368  public static Informer informG(byte instanceCode) {
1369  return new Informer(ECHO_CLASS_CODE, instanceCode
1370  , EchoSocket.MULTICAST_ADDRESS, false);
1371  }
1372 
1373 }
final void removeSetProperty(byte epc)
Definition: EchoObject.java:98
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
final void addGetProperty(byte epc)
final void addSetProperty(byte epc)
Definition: EchoObject.java:93
static Setter setG(byte instanceCode, boolean responseRequired)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53