OpenECHO
 All Classes Namespaces Files Functions Variables
OpenCloseSensor.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.sensor;
17 
25 
26 public abstract class OpenCloseSensor extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x0029;
29 
30  public static final byte EPC_DEGREE_OF_OPENI_NG_DETECTION_STATUS1 = (byte)0xE0;
31  public static final byte EPC_DETECTION_THRESHOLD_LEVEL = (byte)0xB0;
32  public static final byte EPC_DEGREE_OF_OPENI_NG_DETECTION_STATUS2 = (byte)0xB1;
33 
34  @Override
35  protected void setupPropertyMaps() {
36  super.setupPropertyMaps();
37 
44  }
45 
46  @Override
47  public void onNew() {
48  super.onNew();
49  Echo.getEventListener().onNewOpenCloseSensor(this);
50  }
51 
52  @Override
53  public short getEchoClassCode() {
54  return ECHO_CLASS_CODE;
55  }
56 
81  protected boolean setOperationStatus(byte[] edt) {return false;}
106  protected abstract byte[] getOperationStatus();
131  protected abstract byte[] getDegreeOfOpeniNgDetectionStatus1();
156  protected boolean isValidDegreeOfOpeniNgDetectionStatus1(byte[] edt) {
157  if(edt == null || !(edt.length == 1)) return false;
158  return true;
159  }
182  protected boolean setDetectionThresholdLevel(byte[] edt) {return false;}
205  protected byte[] getDetectionThresholdLevel() {return null;}
228  protected boolean isValidDetectionThresholdLevel(byte[] edt) {
229  if(edt == null || !(edt.length == 1)) return false;
230  return true;
231  }
257  protected abstract byte[] getDegreeOfOpeniNgDetectionStatus2();
283  protected boolean isValidDegreeOfOpeniNgDetectionStatus2(byte[] edt) {
284  if(edt == null || !(edt.length == 1)) return false;
285  return true;
286  }
287 
288  @Override
289  protected synchronized boolean setProperty(EchoProperty property) {
290  boolean success = super.setProperty(property);
291  if(success) return success;
292 
293  switch(property.epc) {
295  default : return false;
296  }
297  }
298 
299  @Override
300  protected synchronized byte[] getProperty(byte epc) {
301  byte[] edt = super.getProperty(epc);
302  if(edt != null) return edt;
303 
304  switch(epc) {
308  default : return null;
309  }
310  }
311 
312  @Override
313  protected synchronized boolean isValidProperty(EchoProperty property) {
314  boolean valid = super.isValidProperty(property);
315  if(valid) return valid;
316 
317  switch(property.epc) {
321  default : return false;
322  }
323  }
324 
325  @Override
326  public Setter set() {
327  return set(true);
328  }
329 
330  @Override
331  public Setter set(boolean responseRequired) {
332  return new Setter(getEchoClassCode(), getInstanceCode()
333  , getNode().getAddressStr(), responseRequired);
334  }
335 
336  @Override
337  public Getter get() {
338  return new Getter(getEchoClassCode(), getInstanceCode()
339  , getNode().getAddressStr());
340  }
341 
342  @Override
343  public Informer inform() {
344  return inform(isSelfObject());
345  }
346 
347  @Override
348  protected Informer inform(boolean multicast) {
349  String address;
350  if(multicast) {
352  } else {
353  address = getNode().getAddressStr();
354  }
355  return new Informer(getEchoClassCode(), getInstanceCode()
356  , address, isSelfObject());
357  }
358 
359  public static class Receiver extends DeviceObject.Receiver {
360 
361  @Override
362  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
363  EchoProperty property, boolean success) {
364  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
365  if(ret) return true;
366 
367  switch(property.epc) {
369  onSetDetectionThresholdLevel(eoj, tid, esv, property, success);
370  return true;
371  default :
372  return false;
373  }
374  }
375 
376  @Override
377  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
378  EchoProperty property, boolean success) {
379  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
380  if(ret) return true;
381 
382  switch(property.epc) {
384  onGetDegreeOfOpeniNgDetectionStatus1(eoj, tid, esv, property, success);
385  return true;
387  onGetDetectionThresholdLevel(eoj, tid, esv, property, success);
388  return true;
390  onGetDegreeOfOpeniNgDetectionStatus2(eoj, tid, esv, property, success);
391  return true;
392  default :
393  return false;
394  }
395  }
396 
421  protected void onGetDegreeOfOpeniNgDetectionStatus1(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
444  protected void onSetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
467  protected void onGetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
493  protected void onGetDegreeOfOpeniNgDetectionStatus2(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
494  }
495 
496  public static class Setter extends DeviceObject.Setter {
497  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
498  , String dstEchoAddress, boolean responseRequired) {
499  super(dstEchoClassCode, dstEchoInstanceCode
500  , dstEchoAddress, responseRequired);
501  }
502 
503  @Override
504  public Setter reqSetProperty(byte epc, byte[] edt) {
505  return (Setter)super.reqSetProperty(epc, edt);
506  }
507 
508  @Override
509  public Setter reqSetOperationStatus(byte[] edt) {
510  return (Setter)super.reqSetOperationStatus(edt);
511  }
512  @Override
513  public Setter reqSetInstallationLocation(byte[] edt) {
514  return (Setter)super.reqSetInstallationLocation(edt);
515  }
516  @Override
517  public Setter reqSetCurrentLimitSetting(byte[] edt) {
518  return (Setter)super.reqSetCurrentLimitSetting(edt);
519  }
520  @Override
521  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
522  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
523  }
524  @Override
525  public Setter reqSetRemoteControlSetting(byte[] edt) {
526  return (Setter)super.reqSetRemoteControlSetting(edt);
527  }
528  @Override
529  public Setter reqSetCurrentTimeSetting(byte[] edt) {
530  return (Setter)super.reqSetCurrentTimeSetting(edt);
531  }
532  @Override
533  public Setter reqSetCurrentDateSetting(byte[] edt) {
534  return (Setter)super.reqSetCurrentDateSetting(edt);
535  }
536  @Override
537  public Setter reqSetPowerLimitSetting(byte[] edt) {
538  return (Setter)super.reqSetPowerLimitSetting(edt);
539  }
540 
563  public Setter reqSetDetectionThresholdLevel(byte[] edt) {
564  reqSetProperty(EPC_DETECTION_THRESHOLD_LEVEL, edt);
565  return this;
566  }
567  }
568 
569  public static class Getter extends DeviceObject.Getter {
570  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
571  , String dstEchoAddress) {
572  super(dstEchoClassCode, dstEchoInstanceCode
573  , dstEchoAddress);
574  }
575 
576  @Override
577  public Getter reqGetProperty(byte epc) {
578  return (Getter)super.reqGetProperty(epc);
579  }
580 
581  @Override
582  public Getter reqGetOperationStatus() {
583  return (Getter)super.reqGetOperationStatus();
584  }
585  @Override
586  public Getter reqGetInstallationLocation() {
587  return (Getter)super.reqGetInstallationLocation();
588  }
589  @Override
590  public Getter reqGetStandardVersionInformation() {
591  return (Getter)super.reqGetStandardVersionInformation();
592  }
593  @Override
594  public Getter reqGetIdentificationNumber() {
595  return (Getter)super.reqGetIdentificationNumber();
596  }
597  @Override
598  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
599  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
600  }
601  @Override
602  public Getter reqGetMeasuredCumulativePowerConsumption() {
603  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
604  }
605  @Override
606  public Getter reqGetManufacturersFaultCode() {
607  return (Getter)super.reqGetManufacturersFaultCode();
608  }
609  @Override
610  public Getter reqGetCurrentLimitSetting() {
611  return (Getter)super.reqGetCurrentLimitSetting();
612  }
613  @Override
614  public Getter reqGetFaultStatus() {
615  return (Getter)super.reqGetFaultStatus();
616  }
617  @Override
618  public Getter reqGetFaultDescription() {
619  return (Getter)super.reqGetFaultDescription();
620  }
621  @Override
622  public Getter reqGetManufacturerCode() {
623  return (Getter)super.reqGetManufacturerCode();
624  }
625  @Override
626  public Getter reqGetBusinessFacilityCode() {
627  return (Getter)super.reqGetBusinessFacilityCode();
628  }
629  @Override
630  public Getter reqGetProductCode() {
631  return (Getter)super.reqGetProductCode();
632  }
633  @Override
634  public Getter reqGetProductionNumber() {
635  return (Getter)super.reqGetProductionNumber();
636  }
637  @Override
638  public Getter reqGetProductionDate() {
639  return (Getter)super.reqGetProductionDate();
640  }
641  @Override
642  public Getter reqGetPowerSavingOperationSetting() {
643  return (Getter)super.reqGetPowerSavingOperationSetting();
644  }
645  @Override
646  public Getter reqGetRemoteControlSetting() {
647  return (Getter)super.reqGetRemoteControlSetting();
648  }
649  @Override
650  public Getter reqGetCurrentTimeSetting() {
651  return (Getter)super.reqGetCurrentTimeSetting();
652  }
653  @Override
654  public Getter reqGetCurrentDateSetting() {
655  return (Getter)super.reqGetCurrentDateSetting();
656  }
657  @Override
658  public Getter reqGetPowerLimitSetting() {
659  return (Getter)super.reqGetPowerLimitSetting();
660  }
661  @Override
662  public Getter reqGetCumulativeOperatingTime() {
663  return (Getter)super.reqGetCumulativeOperatingTime();
664  }
665  @Override
666  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
667  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
668  }
669  @Override
670  public Getter reqGetSetPropertyMap() {
671  return (Getter)super.reqGetSetPropertyMap();
672  }
673  @Override
674  public Getter reqGetGetPropertyMap() {
675  return (Getter)super.reqGetGetPropertyMap();
676  }
677 
702  public Getter reqGetDegreeOfOpeniNgDetectionStatus1() {
704  return this;
705  }
728  public Getter reqGetDetectionThresholdLevel() {
729  reqGetProperty(EPC_DETECTION_THRESHOLD_LEVEL);
730  return this;
731  }
757  public Getter reqGetDegreeOfOpeniNgDetectionStatus2() {
759  return this;
760  }
761  }
762 
763  public static class Informer extends DeviceObject.Informer {
764  public Informer(short echoClassCode, byte echoInstanceCode
765  , String dstEchoAddress, boolean isSelfObject) {
766  super(echoClassCode, echoInstanceCode
767  , dstEchoAddress, isSelfObject);
768  }
769 
770  @Override
771  public Informer reqInformProperty(byte epc) {
772  return (Informer)super.reqInformProperty(epc);
773  }
774  @Override
775  public Informer reqInformOperationStatus() {
776  return (Informer)super.reqInformOperationStatus();
777  }
778  @Override
779  public Informer reqInformInstallationLocation() {
780  return (Informer)super.reqInformInstallationLocation();
781  }
782  @Override
783  public Informer reqInformStandardVersionInformation() {
784  return (Informer)super.reqInformStandardVersionInformation();
785  }
786  @Override
787  public Informer reqInformIdentificationNumber() {
788  return (Informer)super.reqInformIdentificationNumber();
789  }
790  @Override
791  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
792  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
793  }
794  @Override
795  public Informer reqInformMeasuredCumulativePowerConsumption() {
796  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
797  }
798  @Override
799  public Informer reqInformManufacturersFaultCode() {
800  return (Informer)super.reqInformManufacturersFaultCode();
801  }
802  @Override
803  public Informer reqInformCurrentLimitSetting() {
804  return (Informer)super.reqInformCurrentLimitSetting();
805  }
806  @Override
807  public Informer reqInformFaultStatus() {
808  return (Informer)super.reqInformFaultStatus();
809  }
810  @Override
811  public Informer reqInformFaultDescription() {
812  return (Informer)super.reqInformFaultDescription();
813  }
814  @Override
815  public Informer reqInformManufacturerCode() {
816  return (Informer)super.reqInformManufacturerCode();
817  }
818  @Override
819  public Informer reqInformBusinessFacilityCode() {
820  return (Informer)super.reqInformBusinessFacilityCode();
821  }
822  @Override
823  public Informer reqInformProductCode() {
824  return (Informer)super.reqInformProductCode();
825  }
826  @Override
827  public Informer reqInformProductionNumber() {
828  return (Informer)super.reqInformProductionNumber();
829  }
830  @Override
831  public Informer reqInformProductionDate() {
832  return (Informer)super.reqInformProductionDate();
833  }
834  @Override
835  public Informer reqInformPowerSavingOperationSetting() {
836  return (Informer)super.reqInformPowerSavingOperationSetting();
837  }
838  @Override
839  public Informer reqInformRemoteControlSetting() {
840  return (Informer)super.reqInformRemoteControlSetting();
841  }
842  @Override
843  public Informer reqInformCurrentTimeSetting() {
844  return (Informer)super.reqInformCurrentTimeSetting();
845  }
846  @Override
847  public Informer reqInformCurrentDateSetting() {
848  return (Informer)super.reqInformCurrentDateSetting();
849  }
850  @Override
851  public Informer reqInformPowerLimitSetting() {
852  return (Informer)super.reqInformPowerLimitSetting();
853  }
854  @Override
855  public Informer reqInformCumulativeOperatingTime() {
856  return (Informer)super.reqInformCumulativeOperatingTime();
857  }
858  @Override
859  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
860  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
861  }
862  @Override
863  public Informer reqInformSetPropertyMap() {
864  return (Informer)super.reqInformSetPropertyMap();
865  }
866  @Override
867  public Informer reqInformGetPropertyMap() {
868  return (Informer)super.reqInformGetPropertyMap();
869  }
870 
895  public Informer reqInformDegreeOfOpeniNgDetectionStatus1() {
896  reqInformProperty(EPC_DEGREE_OF_OPENI_NG_DETECTION_STATUS1);
897  return this;
898  }
921  public Informer reqInformDetectionThresholdLevel() {
922  reqInformProperty(EPC_DETECTION_THRESHOLD_LEVEL);
923  return this;
924  }
950  public Informer reqInformDegreeOfOpeniNgDetectionStatus2() {
951  reqInformProperty(EPC_DEGREE_OF_OPENI_NG_DETECTION_STATUS2);
952  return this;
953  }
954  }
955 
956  public static class Proxy extends OpenCloseSensor {
957  public Proxy(byte instanceCode) {
958  super();
959  mEchoInstanceCode = instanceCode;
960  }
961  @Override
962  public byte getInstanceCode() {
963  return mEchoInstanceCode;
964  }
965  @Override
966  protected byte[] getOperationStatus() {return null;}
967  @Override
968  protected boolean setInstallationLocation(byte[] edt) {return false;}
969  @Override
970  protected byte[] getInstallationLocation() {return null;}
971  @Override
972  protected byte[] getStandardVersionInformation() {return null;}
973  @Override
974  protected byte[] getFaultStatus() {return null;}
975  @Override
976  protected byte[] getManufacturerCode() {return null;}
977  @Override
978  protected byte[] getDegreeOfOpeniNgDetectionStatus1() {return null;}
979  @Override
980  protected byte[] getDegreeOfOpeniNgDetectionStatus2() {return null;}
981  }
982 
983  public static Setter setG() {
984  return setG((byte)0);
985  }
986 
987  public static Setter setG(byte instanceCode) {
988  return setG(instanceCode, true);
989  }
990 
991  public static Setter setG(boolean responseRequired) {
992  return setG((byte)0, responseRequired);
993  }
994 
995  public static Setter setG(byte instanceCode, boolean responseRequired) {
996  return new Setter(ECHO_CLASS_CODE, instanceCode
997  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
998  }
999 
1000  public static Getter getG() {
1001  return getG((byte)0);
1002  }
1003 
1004  public static Getter getG(byte instanceCode) {
1005  return new Getter(ECHO_CLASS_CODE, instanceCode
1007  }
1008 
1009  public static Informer informG() {
1010  return informG((byte)0);
1011  }
1012 
1013  public static Informer informG(byte instanceCode) {
1014  return new Informer(ECHO_CLASS_CODE, instanceCode
1015  , EchoSocket.MULTICAST_ADDRESS, false);
1016  }
1017 
1018 }
final void removeSetProperty(byte epc)
Definition: EchoObject.java:98
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
static Setter setG(byte instanceCode, boolean responseRequired)
final void addGetProperty(byte epc)
static Setter setG(boolean responseRequired)
synchronized boolean setProperty(EchoProperty property)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53
synchronized boolean isValidProperty(EchoProperty property)