OpenECHO
 All Classes Namespaces Files Functions Variables
PassageSensor.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 PassageSensor extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x0027;
29 
30  public static final byte EPC_DETECTION_THRESHOLD_LEVEL = (byte)0xB0;
31  public static final byte EPC_PASSAGE_DETECTION_HOLD_TIME = (byte)0xBE;
32  public static final byte EPC_PASSAGE_DETECTION_DIRECTION = (byte)0xE0;
33 
34  @Override
35  protected void setupPropertyMaps() {
36  super.setupPropertyMaps();
37 
43  }
44 
45  @Override
46  public void onNew() {
47  super.onNew();
48  Echo.getEventListener().onNewPassageSensor(this);
49  }
50 
51  @Override
52  public short getEchoClassCode() {
53  return ECHO_CLASS_CODE;
54  }
55 
80  protected boolean setOperationStatus(byte[] edt) {return false;}
105  protected abstract byte[] getOperationStatus();
128  protected boolean setDetectionThresholdLevel(byte[] edt) {return false;}
151  protected byte[] getDetectionThresholdLevel() {return null;}
174  protected boolean isValidDetectionThresholdLevel(byte[] edt) {
175  if(edt == null || !(edt.length == 1)) return false;
176  return true;
177  }
200  protected boolean setPassageDetectionHoldTime(byte[] edt) {return false;}
223  protected byte[] getPassageDetectionHoldTime() {return null;}
246  protected boolean isValidPassageDetectionHoldTime(byte[] edt) {
247  if(edt == null || !(edt.length == 2)) return false;
248  return true;
249  }
276  protected abstract byte[] getPassageDetectionDirection();
303  protected boolean isValidPassageDetectionDirection(byte[] edt) {
304  if(edt == null || !(edt.length == 1)) return false;
305  return true;
306  }
307 
308  @Override
309  protected synchronized boolean setProperty(EchoProperty property) {
310  boolean success = super.setProperty(property);
311  if(success) return success;
312 
313  switch(property.epc) {
316  default : return false;
317  }
318  }
319 
320  @Override
321  protected synchronized byte[] getProperty(byte epc) {
322  byte[] edt = super.getProperty(epc);
323  if(edt != null) return edt;
324 
325  switch(epc) {
329  default : return null;
330  }
331  }
332 
333  @Override
334  protected synchronized boolean isValidProperty(EchoProperty property) {
335  boolean valid = super.isValidProperty(property);
336  if(valid) return valid;
337 
338  switch(property.epc) {
342  default : return false;
343  }
344  }
345 
346  @Override
347  public Setter set() {
348  return set(true);
349  }
350 
351  @Override
352  public Setter set(boolean responseRequired) {
353  return new Setter(getEchoClassCode(), getInstanceCode()
354  , getNode().getAddressStr(), responseRequired);
355  }
356 
357  @Override
358  public Getter get() {
359  return new Getter(getEchoClassCode(), getInstanceCode()
360  , getNode().getAddressStr());
361  }
362 
363  @Override
364  public Informer inform() {
365  return inform(isSelfObject());
366  }
367 
368  @Override
369  protected Informer inform(boolean multicast) {
370  String address;
371  if(multicast) {
373  } else {
374  address = getNode().getAddressStr();
375  }
376  return new Informer(getEchoClassCode(), getInstanceCode()
377  , address, isSelfObject());
378  }
379 
380  public static class Receiver extends DeviceObject.Receiver {
381 
382  @Override
383  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
384  EchoProperty property, boolean success) {
385  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
386  if(ret) return true;
387 
388  switch(property.epc) {
390  onSetDetectionThresholdLevel(eoj, tid, esv, property, success);
391  return true;
393  onSetPassageDetectionHoldTime(eoj, tid, esv, property, success);
394  return true;
395  default :
396  return false;
397  }
398  }
399 
400  @Override
401  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
402  EchoProperty property, boolean success) {
403  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
404  if(ret) return true;
405 
406  switch(property.epc) {
408  onGetDetectionThresholdLevel(eoj, tid, esv, property, success);
409  return true;
411  onGetPassageDetectionHoldTime(eoj, tid, esv, property, success);
412  return true;
414  onGetPassageDetectionDirection(eoj, tid, esv, property, success);
415  return true;
416  default :
417  return false;
418  }
419  }
420 
443  protected void onSetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
466  protected void onGetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
489  protected void onSetPassageDetectionHoldTime(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
512  protected void onGetPassageDetectionHoldTime(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
539  protected void onGetPassageDetectionDirection(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
540  }
541 
542  public static class Setter extends DeviceObject.Setter {
543  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
544  , String dstEchoAddress, boolean responseRequired) {
545  super(dstEchoClassCode, dstEchoInstanceCode
546  , dstEchoAddress, responseRequired);
547  }
548 
549  @Override
550  public Setter reqSetProperty(byte epc, byte[] edt) {
551  return (Setter)super.reqSetProperty(epc, edt);
552  }
553 
554  @Override
555  public Setter reqSetOperationStatus(byte[] edt) {
556  return (Setter)super.reqSetOperationStatus(edt);
557  }
558  @Override
559  public Setter reqSetInstallationLocation(byte[] edt) {
560  return (Setter)super.reqSetInstallationLocation(edt);
561  }
562  @Override
563  public Setter reqSetCurrentLimitSetting(byte[] edt) {
564  return (Setter)super.reqSetCurrentLimitSetting(edt);
565  }
566  @Override
567  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
568  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
569  }
570  @Override
571  public Setter reqSetRemoteControlSetting(byte[] edt) {
572  return (Setter)super.reqSetRemoteControlSetting(edt);
573  }
574  @Override
575  public Setter reqSetCurrentTimeSetting(byte[] edt) {
576  return (Setter)super.reqSetCurrentTimeSetting(edt);
577  }
578  @Override
579  public Setter reqSetCurrentDateSetting(byte[] edt) {
580  return (Setter)super.reqSetCurrentDateSetting(edt);
581  }
582  @Override
583  public Setter reqSetPowerLimitSetting(byte[] edt) {
584  return (Setter)super.reqSetPowerLimitSetting(edt);
585  }
586 
609  public Setter reqSetDetectionThresholdLevel(byte[] edt) {
610  reqSetProperty(EPC_DETECTION_THRESHOLD_LEVEL, edt);
611  return this;
612  }
635  public Setter reqSetPassageDetectionHoldTime(byte[] edt) {
636  reqSetProperty(EPC_PASSAGE_DETECTION_HOLD_TIME, edt);
637  return this;
638  }
639  }
640 
641  public static class Getter extends DeviceObject.Getter {
642  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
643  , String dstEchoAddress) {
644  super(dstEchoClassCode, dstEchoInstanceCode
645  , dstEchoAddress);
646  }
647 
648  @Override
649  public Getter reqGetProperty(byte epc) {
650  return (Getter)super.reqGetProperty(epc);
651  }
652 
653  @Override
654  public Getter reqGetOperationStatus() {
655  return (Getter)super.reqGetOperationStatus();
656  }
657  @Override
658  public Getter reqGetInstallationLocation() {
659  return (Getter)super.reqGetInstallationLocation();
660  }
661  @Override
662  public Getter reqGetStandardVersionInformation() {
663  return (Getter)super.reqGetStandardVersionInformation();
664  }
665  @Override
666  public Getter reqGetIdentificationNumber() {
667  return (Getter)super.reqGetIdentificationNumber();
668  }
669  @Override
670  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
671  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
672  }
673  @Override
674  public Getter reqGetMeasuredCumulativePowerConsumption() {
675  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
676  }
677  @Override
678  public Getter reqGetManufacturersFaultCode() {
679  return (Getter)super.reqGetManufacturersFaultCode();
680  }
681  @Override
682  public Getter reqGetCurrentLimitSetting() {
683  return (Getter)super.reqGetCurrentLimitSetting();
684  }
685  @Override
686  public Getter reqGetFaultStatus() {
687  return (Getter)super.reqGetFaultStatus();
688  }
689  @Override
690  public Getter reqGetFaultDescription() {
691  return (Getter)super.reqGetFaultDescription();
692  }
693  @Override
694  public Getter reqGetManufacturerCode() {
695  return (Getter)super.reqGetManufacturerCode();
696  }
697  @Override
698  public Getter reqGetBusinessFacilityCode() {
699  return (Getter)super.reqGetBusinessFacilityCode();
700  }
701  @Override
702  public Getter reqGetProductCode() {
703  return (Getter)super.reqGetProductCode();
704  }
705  @Override
706  public Getter reqGetProductionNumber() {
707  return (Getter)super.reqGetProductionNumber();
708  }
709  @Override
710  public Getter reqGetProductionDate() {
711  return (Getter)super.reqGetProductionDate();
712  }
713  @Override
714  public Getter reqGetPowerSavingOperationSetting() {
715  return (Getter)super.reqGetPowerSavingOperationSetting();
716  }
717  @Override
718  public Getter reqGetRemoteControlSetting() {
719  return (Getter)super.reqGetRemoteControlSetting();
720  }
721  @Override
722  public Getter reqGetCurrentTimeSetting() {
723  return (Getter)super.reqGetCurrentTimeSetting();
724  }
725  @Override
726  public Getter reqGetCurrentDateSetting() {
727  return (Getter)super.reqGetCurrentDateSetting();
728  }
729  @Override
730  public Getter reqGetPowerLimitSetting() {
731  return (Getter)super.reqGetPowerLimitSetting();
732  }
733  @Override
734  public Getter reqGetCumulativeOperatingTime() {
735  return (Getter)super.reqGetCumulativeOperatingTime();
736  }
737  @Override
738  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
739  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
740  }
741  @Override
742  public Getter reqGetSetPropertyMap() {
743  return (Getter)super.reqGetSetPropertyMap();
744  }
745  @Override
746  public Getter reqGetGetPropertyMap() {
747  return (Getter)super.reqGetGetPropertyMap();
748  }
749 
772  public Getter reqGetDetectionThresholdLevel() {
773  reqGetProperty(EPC_DETECTION_THRESHOLD_LEVEL);
774  return this;
775  }
798  public Getter reqGetPassageDetectionHoldTime() {
799  reqGetProperty(EPC_PASSAGE_DETECTION_HOLD_TIME);
800  return this;
801  }
828  public Getter reqGetPassageDetectionDirection() {
829  reqGetProperty(EPC_PASSAGE_DETECTION_DIRECTION);
830  return this;
831  }
832  }
833 
834  public static class Informer extends DeviceObject.Informer {
835  public Informer(short echoClassCode, byte echoInstanceCode
836  , String dstEchoAddress, boolean isSelfObject) {
837  super(echoClassCode, echoInstanceCode
838  , dstEchoAddress, isSelfObject);
839  }
840 
841  @Override
842  public Informer reqInformProperty(byte epc) {
843  return (Informer)super.reqInformProperty(epc);
844  }
845  @Override
846  public Informer reqInformOperationStatus() {
847  return (Informer)super.reqInformOperationStatus();
848  }
849  @Override
850  public Informer reqInformInstallationLocation() {
851  return (Informer)super.reqInformInstallationLocation();
852  }
853  @Override
854  public Informer reqInformStandardVersionInformation() {
855  return (Informer)super.reqInformStandardVersionInformation();
856  }
857  @Override
858  public Informer reqInformIdentificationNumber() {
859  return (Informer)super.reqInformIdentificationNumber();
860  }
861  @Override
862  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
863  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
864  }
865  @Override
866  public Informer reqInformMeasuredCumulativePowerConsumption() {
867  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
868  }
869  @Override
870  public Informer reqInformManufacturersFaultCode() {
871  return (Informer)super.reqInformManufacturersFaultCode();
872  }
873  @Override
874  public Informer reqInformCurrentLimitSetting() {
875  return (Informer)super.reqInformCurrentLimitSetting();
876  }
877  @Override
878  public Informer reqInformFaultStatus() {
879  return (Informer)super.reqInformFaultStatus();
880  }
881  @Override
882  public Informer reqInformFaultDescription() {
883  return (Informer)super.reqInformFaultDescription();
884  }
885  @Override
886  public Informer reqInformManufacturerCode() {
887  return (Informer)super.reqInformManufacturerCode();
888  }
889  @Override
890  public Informer reqInformBusinessFacilityCode() {
891  return (Informer)super.reqInformBusinessFacilityCode();
892  }
893  @Override
894  public Informer reqInformProductCode() {
895  return (Informer)super.reqInformProductCode();
896  }
897  @Override
898  public Informer reqInformProductionNumber() {
899  return (Informer)super.reqInformProductionNumber();
900  }
901  @Override
902  public Informer reqInformProductionDate() {
903  return (Informer)super.reqInformProductionDate();
904  }
905  @Override
906  public Informer reqInformPowerSavingOperationSetting() {
907  return (Informer)super.reqInformPowerSavingOperationSetting();
908  }
909  @Override
910  public Informer reqInformRemoteControlSetting() {
911  return (Informer)super.reqInformRemoteControlSetting();
912  }
913  @Override
914  public Informer reqInformCurrentTimeSetting() {
915  return (Informer)super.reqInformCurrentTimeSetting();
916  }
917  @Override
918  public Informer reqInformCurrentDateSetting() {
919  return (Informer)super.reqInformCurrentDateSetting();
920  }
921  @Override
922  public Informer reqInformPowerLimitSetting() {
923  return (Informer)super.reqInformPowerLimitSetting();
924  }
925  @Override
926  public Informer reqInformCumulativeOperatingTime() {
927  return (Informer)super.reqInformCumulativeOperatingTime();
928  }
929  @Override
930  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
931  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
932  }
933  @Override
934  public Informer reqInformSetPropertyMap() {
935  return (Informer)super.reqInformSetPropertyMap();
936  }
937  @Override
938  public Informer reqInformGetPropertyMap() {
939  return (Informer)super.reqInformGetPropertyMap();
940  }
941 
964  public Informer reqInformDetectionThresholdLevel() {
965  reqInformProperty(EPC_DETECTION_THRESHOLD_LEVEL);
966  return this;
967  }
990  public Informer reqInformPassageDetectionHoldTime() {
991  reqInformProperty(EPC_PASSAGE_DETECTION_HOLD_TIME);
992  return this;
993  }
1020  public Informer reqInformPassageDetectionDirection() {
1021  reqInformProperty(EPC_PASSAGE_DETECTION_DIRECTION);
1022  return this;
1023  }
1024  }
1025 
1026  public static class Proxy extends PassageSensor {
1027  public Proxy(byte instanceCode) {
1028  super();
1029  mEchoInstanceCode = instanceCode;
1030  }
1031  @Override
1032  public byte getInstanceCode() {
1033  return mEchoInstanceCode;
1034  }
1035  @Override
1036  protected byte[] getOperationStatus() {return null;}
1037  @Override
1038  protected boolean setInstallationLocation(byte[] edt) {return false;}
1039  @Override
1040  protected byte[] getInstallationLocation() {return null;}
1041  @Override
1042  protected byte[] getStandardVersionInformation() {return null;}
1043  @Override
1044  protected byte[] getFaultStatus() {return null;}
1045  @Override
1046  protected byte[] getManufacturerCode() {return null;}
1047  @Override
1048  protected byte[] getPassageDetectionDirection() {return null;}
1049  }
1050 
1051  public static Setter setG() {
1052  return setG((byte)0);
1053  }
1054 
1055  public static Setter setG(byte instanceCode) {
1056  return setG(instanceCode, true);
1057  }
1058 
1059  public static Setter setG(boolean responseRequired) {
1060  return setG((byte)0, responseRequired);
1061  }
1062 
1063  public static Setter setG(byte instanceCode, boolean responseRequired) {
1064  return new Setter(ECHO_CLASS_CODE, instanceCode
1065  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1066  }
1067 
1068  public static Getter getG() {
1069  return getG((byte)0);
1070  }
1071 
1072  public static Getter getG(byte instanceCode) {
1073  return new Getter(ECHO_CLASS_CODE, instanceCode
1075  }
1076 
1077  public static Informer informG() {
1078  return informG((byte)0);
1079  }
1080 
1081  public static Informer informG(byte instanceCode) {
1082  return new Informer(ECHO_CLASS_CODE, instanceCode
1083  , EchoSocket.MULTICAST_ADDRESS, false);
1084  }
1085 
1086 }
static Setter setG(boolean responseRequired)
final void removeSetProperty(byte epc)
Definition: EchoObject.java:98
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
final void addGetProperty(byte epc)
synchronized boolean isValidProperty(EchoProperty property)
synchronized boolean setProperty(EchoProperty property)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53
static Informer informG(byte instanceCode)
static Setter setG(byte instanceCode, boolean responseRequired)