OpenECHO
 All Classes Namespaces Files Functions Variables
VisitorSensor.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 VisitorSensor extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x0008;
29 
30  public static final byte EPC_DETECTION_THRESHOLD_LEVEL = (byte)0xB0;
31  public static final byte EPC_VISITOR_DETECTION_STATUS = (byte)0xB1;
32  public static final byte EPC_VISITOR_DETECTION_HOLDING_TIME = (byte)0xBE;
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().onNewVisitorSensor(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  }
205  protected abstract byte[] getVisitorDetectionStatus();
233  protected boolean isValidVisitorDetectionStatus(byte[] edt) {
234  if(edt == null || !(edt.length == 1)) return false;
235  return true;
236  }
260  protected boolean setVisitorDetectionHoldingTime(byte[] edt) {return false;}
284  protected byte[] getVisitorDetectionHoldingTime() {return null;}
308  protected boolean isValidVisitorDetectionHoldingTime(byte[] edt) {
309  if(edt == null || !(edt.length == 2)) return false;
310  return true;
311  }
312 
313  @Override
314  protected synchronized boolean setProperty(EchoProperty property) {
315  boolean success = super.setProperty(property);
316  if(success) return success;
317 
318  switch(property.epc) {
321  default : return false;
322  }
323  }
324 
325  @Override
326  protected synchronized byte[] getProperty(byte epc) {
327  byte[] edt = super.getProperty(epc);
328  if(edt != null) return edt;
329 
330  switch(epc) {
334  default : return null;
335  }
336  }
337 
338  @Override
339  protected synchronized boolean isValidProperty(EchoProperty property) {
340  boolean valid = super.isValidProperty(property);
341  if(valid) return valid;
342 
343  switch(property.epc) {
347  default : return false;
348  }
349  }
350 
351  @Override
352  public Setter set() {
353  return set(true);
354  }
355 
356  @Override
357  public Setter set(boolean responseRequired) {
358  return new Setter(getEchoClassCode(), getInstanceCode()
359  , getNode().getAddressStr(), responseRequired);
360  }
361 
362  @Override
363  public Getter get() {
364  return new Getter(getEchoClassCode(), getInstanceCode()
365  , getNode().getAddressStr());
366  }
367 
368  @Override
369  public Informer inform() {
370  return inform(isSelfObject());
371  }
372 
373  @Override
374  protected Informer inform(boolean multicast) {
375  String address;
376  if(multicast) {
378  } else {
379  address = getNode().getAddressStr();
380  }
381  return new Informer(getEchoClassCode(), getInstanceCode()
382  , address, isSelfObject());
383  }
384 
385  public static class Receiver extends DeviceObject.Receiver {
386 
387  @Override
388  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
389  EchoProperty property, boolean success) {
390  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
391  if(ret) return true;
392 
393  switch(property.epc) {
395  onSetDetectionThresholdLevel(eoj, tid, esv, property, success);
396  return true;
398  onSetVisitorDetectionHoldingTime(eoj, tid, esv, property, success);
399  return true;
400  default :
401  return false;
402  }
403  }
404 
405  @Override
406  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
407  EchoProperty property, boolean success) {
408  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
409  if(ret) return true;
410 
411  switch(property.epc) {
413  onGetDetectionThresholdLevel(eoj, tid, esv, property, success);
414  return true;
416  onGetVisitorDetectionStatus(eoj, tid, esv, property, success);
417  return true;
419  onGetVisitorDetectionHoldingTime(eoj, tid, esv, property, success);
420  return true;
421  default :
422  return false;
423  }
424  }
425 
448  protected void onSetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
471  protected void onGetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
499  protected void onGetVisitorDetectionStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
523  protected void onSetVisitorDetectionHoldingTime(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
547  protected void onGetVisitorDetectionHoldingTime(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
548  }
549 
550  public static class Setter extends DeviceObject.Setter {
551  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
552  , String dstEchoAddress, boolean responseRequired) {
553  super(dstEchoClassCode, dstEchoInstanceCode
554  , dstEchoAddress, responseRequired);
555  }
556 
557  @Override
558  public Setter reqSetProperty(byte epc, byte[] edt) {
559  return (Setter)super.reqSetProperty(epc, edt);
560  }
561 
562  @Override
563  public Setter reqSetOperationStatus(byte[] edt) {
564  return (Setter)super.reqSetOperationStatus(edt);
565  }
566  @Override
567  public Setter reqSetInstallationLocation(byte[] edt) {
568  return (Setter)super.reqSetInstallationLocation(edt);
569  }
570  @Override
571  public Setter reqSetCurrentLimitSetting(byte[] edt) {
572  return (Setter)super.reqSetCurrentLimitSetting(edt);
573  }
574  @Override
575  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
576  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
577  }
578  @Override
579  public Setter reqSetRemoteControlSetting(byte[] edt) {
580  return (Setter)super.reqSetRemoteControlSetting(edt);
581  }
582  @Override
583  public Setter reqSetCurrentTimeSetting(byte[] edt) {
584  return (Setter)super.reqSetCurrentTimeSetting(edt);
585  }
586  @Override
587  public Setter reqSetCurrentDateSetting(byte[] edt) {
588  return (Setter)super.reqSetCurrentDateSetting(edt);
589  }
590  @Override
591  public Setter reqSetPowerLimitSetting(byte[] edt) {
592  return (Setter)super.reqSetPowerLimitSetting(edt);
593  }
594 
617  public Setter reqSetDetectionThresholdLevel(byte[] edt) {
618  reqSetProperty(EPC_DETECTION_THRESHOLD_LEVEL, edt);
619  return this;
620  }
644  public Setter reqSetVisitorDetectionHoldingTime(byte[] edt) {
645  reqSetProperty(EPC_VISITOR_DETECTION_HOLDING_TIME, edt);
646  return this;
647  }
648  }
649 
650  public static class Getter extends DeviceObject.Getter {
651  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
652  , String dstEchoAddress) {
653  super(dstEchoClassCode, dstEchoInstanceCode
654  , dstEchoAddress);
655  }
656 
657  @Override
658  public Getter reqGetProperty(byte epc) {
659  return (Getter)super.reqGetProperty(epc);
660  }
661 
662  @Override
663  public Getter reqGetOperationStatus() {
664  return (Getter)super.reqGetOperationStatus();
665  }
666  @Override
667  public Getter reqGetInstallationLocation() {
668  return (Getter)super.reqGetInstallationLocation();
669  }
670  @Override
671  public Getter reqGetStandardVersionInformation() {
672  return (Getter)super.reqGetStandardVersionInformation();
673  }
674  @Override
675  public Getter reqGetIdentificationNumber() {
676  return (Getter)super.reqGetIdentificationNumber();
677  }
678  @Override
679  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
680  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
681  }
682  @Override
683  public Getter reqGetMeasuredCumulativePowerConsumption() {
684  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
685  }
686  @Override
687  public Getter reqGetManufacturersFaultCode() {
688  return (Getter)super.reqGetManufacturersFaultCode();
689  }
690  @Override
691  public Getter reqGetCurrentLimitSetting() {
692  return (Getter)super.reqGetCurrentLimitSetting();
693  }
694  @Override
695  public Getter reqGetFaultStatus() {
696  return (Getter)super.reqGetFaultStatus();
697  }
698  @Override
699  public Getter reqGetFaultDescription() {
700  return (Getter)super.reqGetFaultDescription();
701  }
702  @Override
703  public Getter reqGetManufacturerCode() {
704  return (Getter)super.reqGetManufacturerCode();
705  }
706  @Override
707  public Getter reqGetBusinessFacilityCode() {
708  return (Getter)super.reqGetBusinessFacilityCode();
709  }
710  @Override
711  public Getter reqGetProductCode() {
712  return (Getter)super.reqGetProductCode();
713  }
714  @Override
715  public Getter reqGetProductionNumber() {
716  return (Getter)super.reqGetProductionNumber();
717  }
718  @Override
719  public Getter reqGetProductionDate() {
720  return (Getter)super.reqGetProductionDate();
721  }
722  @Override
723  public Getter reqGetPowerSavingOperationSetting() {
724  return (Getter)super.reqGetPowerSavingOperationSetting();
725  }
726  @Override
727  public Getter reqGetRemoteControlSetting() {
728  return (Getter)super.reqGetRemoteControlSetting();
729  }
730  @Override
731  public Getter reqGetCurrentTimeSetting() {
732  return (Getter)super.reqGetCurrentTimeSetting();
733  }
734  @Override
735  public Getter reqGetCurrentDateSetting() {
736  return (Getter)super.reqGetCurrentDateSetting();
737  }
738  @Override
739  public Getter reqGetPowerLimitSetting() {
740  return (Getter)super.reqGetPowerLimitSetting();
741  }
742  @Override
743  public Getter reqGetCumulativeOperatingTime() {
744  return (Getter)super.reqGetCumulativeOperatingTime();
745  }
746  @Override
747  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
748  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
749  }
750  @Override
751  public Getter reqGetSetPropertyMap() {
752  return (Getter)super.reqGetSetPropertyMap();
753  }
754  @Override
755  public Getter reqGetGetPropertyMap() {
756  return (Getter)super.reqGetGetPropertyMap();
757  }
758 
781  public Getter reqGetDetectionThresholdLevel() {
782  reqGetProperty(EPC_DETECTION_THRESHOLD_LEVEL);
783  return this;
784  }
812  public Getter reqGetVisitorDetectionStatus() {
813  reqGetProperty(EPC_VISITOR_DETECTION_STATUS);
814  return this;
815  }
839  public Getter reqGetVisitorDetectionHoldingTime() {
840  reqGetProperty(EPC_VISITOR_DETECTION_HOLDING_TIME);
841  return this;
842  }
843  }
844 
845  public static class Informer extends DeviceObject.Informer {
846  public Informer(short echoClassCode, byte echoInstanceCode
847  , String dstEchoAddress, boolean isSelfObject) {
848  super(echoClassCode, echoInstanceCode
849  , dstEchoAddress, isSelfObject);
850  }
851 
852  @Override
853  public Informer reqInformProperty(byte epc) {
854  return (Informer)super.reqInformProperty(epc);
855  }
856  @Override
857  public Informer reqInformOperationStatus() {
858  return (Informer)super.reqInformOperationStatus();
859  }
860  @Override
861  public Informer reqInformInstallationLocation() {
862  return (Informer)super.reqInformInstallationLocation();
863  }
864  @Override
865  public Informer reqInformStandardVersionInformation() {
866  return (Informer)super.reqInformStandardVersionInformation();
867  }
868  @Override
869  public Informer reqInformIdentificationNumber() {
870  return (Informer)super.reqInformIdentificationNumber();
871  }
872  @Override
873  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
874  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
875  }
876  @Override
877  public Informer reqInformMeasuredCumulativePowerConsumption() {
878  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
879  }
880  @Override
881  public Informer reqInformManufacturersFaultCode() {
882  return (Informer)super.reqInformManufacturersFaultCode();
883  }
884  @Override
885  public Informer reqInformCurrentLimitSetting() {
886  return (Informer)super.reqInformCurrentLimitSetting();
887  }
888  @Override
889  public Informer reqInformFaultStatus() {
890  return (Informer)super.reqInformFaultStatus();
891  }
892  @Override
893  public Informer reqInformFaultDescription() {
894  return (Informer)super.reqInformFaultDescription();
895  }
896  @Override
897  public Informer reqInformManufacturerCode() {
898  return (Informer)super.reqInformManufacturerCode();
899  }
900  @Override
901  public Informer reqInformBusinessFacilityCode() {
902  return (Informer)super.reqInformBusinessFacilityCode();
903  }
904  @Override
905  public Informer reqInformProductCode() {
906  return (Informer)super.reqInformProductCode();
907  }
908  @Override
909  public Informer reqInformProductionNumber() {
910  return (Informer)super.reqInformProductionNumber();
911  }
912  @Override
913  public Informer reqInformProductionDate() {
914  return (Informer)super.reqInformProductionDate();
915  }
916  @Override
917  public Informer reqInformPowerSavingOperationSetting() {
918  return (Informer)super.reqInformPowerSavingOperationSetting();
919  }
920  @Override
921  public Informer reqInformRemoteControlSetting() {
922  return (Informer)super.reqInformRemoteControlSetting();
923  }
924  @Override
925  public Informer reqInformCurrentTimeSetting() {
926  return (Informer)super.reqInformCurrentTimeSetting();
927  }
928  @Override
929  public Informer reqInformCurrentDateSetting() {
930  return (Informer)super.reqInformCurrentDateSetting();
931  }
932  @Override
933  public Informer reqInformPowerLimitSetting() {
934  return (Informer)super.reqInformPowerLimitSetting();
935  }
936  @Override
937  public Informer reqInformCumulativeOperatingTime() {
938  return (Informer)super.reqInformCumulativeOperatingTime();
939  }
940  @Override
941  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
942  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
943  }
944  @Override
945  public Informer reqInformSetPropertyMap() {
946  return (Informer)super.reqInformSetPropertyMap();
947  }
948  @Override
949  public Informer reqInformGetPropertyMap() {
950  return (Informer)super.reqInformGetPropertyMap();
951  }
952 
975  public Informer reqInformDetectionThresholdLevel() {
976  reqInformProperty(EPC_DETECTION_THRESHOLD_LEVEL);
977  return this;
978  }
1006  public Informer reqInformVisitorDetectionStatus() {
1007  reqInformProperty(EPC_VISITOR_DETECTION_STATUS);
1008  return this;
1009  }
1033  public Informer reqInformVisitorDetectionHoldingTime() {
1034  reqInformProperty(EPC_VISITOR_DETECTION_HOLDING_TIME);
1035  return this;
1036  }
1037  }
1038 
1039  public static class Proxy extends VisitorSensor {
1040  public Proxy(byte instanceCode) {
1041  super();
1042  mEchoInstanceCode = instanceCode;
1043  }
1044  @Override
1045  public byte getInstanceCode() {
1046  return mEchoInstanceCode;
1047  }
1048  @Override
1049  protected byte[] getOperationStatus() {return null;}
1050  @Override
1051  protected boolean setInstallationLocation(byte[] edt) {return false;}
1052  @Override
1053  protected byte[] getInstallationLocation() {return null;}
1054  @Override
1055  protected byte[] getStandardVersionInformation() {return null;}
1056  @Override
1057  protected byte[] getFaultStatus() {return null;}
1058  @Override
1059  protected byte[] getManufacturerCode() {return null;}
1060  @Override
1061  protected byte[] getVisitorDetectionStatus() {return null;}
1062  }
1063 
1064  public static Setter setG() {
1065  return setG((byte)0);
1066  }
1067 
1068  public static Setter setG(byte instanceCode) {
1069  return setG(instanceCode, true);
1070  }
1071 
1072  public static Setter setG(boolean responseRequired) {
1073  return setG((byte)0, responseRequired);
1074  }
1075 
1076  public static Setter setG(byte instanceCode, boolean responseRequired) {
1077  return new Setter(ECHO_CLASS_CODE, instanceCode
1078  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1079  }
1080 
1081  public static Getter getG() {
1082  return getG((byte)0);
1083  }
1084 
1085  public static Getter getG(byte instanceCode) {
1086  return new Getter(ECHO_CLASS_CODE, instanceCode
1088  }
1089 
1090  public static Informer informG() {
1091  return informG((byte)0);
1092  }
1093 
1094  public static Informer informG(byte instanceCode) {
1095  return new Informer(ECHO_CLASS_CODE, instanceCode
1096  , EchoSocket.MULTICAST_ADDRESS, false);
1097  }
1098 
1099 }
synchronized boolean isValidProperty(EchoProperty property)
static Setter setG(byte instanceCode, 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 setProperty(EchoProperty property)
static Setter setG(boolean responseRequired)
static Informer informG(byte instanceCode)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53