OpenECHO
 All Classes Namespaces Files Functions Variables
HumanBodyLocationSensor.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 HumanBodyLocationSensor extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x002B;
29 
30  public static final byte EPC_HUMAN_BODY_DETECTION_LOCATION1 = (byte)0xE0;
31  public static final byte EPC_MAXIMUM_NUMBER_OF_HUMAN_BODY_ID_S = (byte)0xE1;
32  public static final byte EPC_HUMAN_BODY_DETECTION_LOCATION2 = (byte)0xE2;
33  public static final byte EPC_HUMAN_BODY_EXISTENCE_INFORMATION = (byte)0xE3;
34 
35  @Override
36  protected void setupPropertyMaps() {
37  super.setupPropertyMaps();
38 
44  }
45 
46  @Override
47  public void onNew() {
48  super.onNew();
49  Echo.getEventListener().onNewHumanBodyLocationSensor(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();
132  protected abstract byte[] getHumanBodyDetectionLocation1();
158  protected boolean isValidHumanBodyDetectionLocation1(byte[] edt) {
159  if(edt == null || !(edt.length == 3)) return false;
160  return true;
161  }
184  protected byte[] getMaximumNumberOfHumanBodyIdS() {return null;}
207  protected boolean isValidMaximumNumberOfHumanBodyIdS(byte[] edt) {
208  if(edt == null || !(edt.length == 2)) return false;
209  return true;
210  }
233  protected abstract byte[] getHumanBodyDetectionLocation2();
256  protected boolean isValidHumanBodyDetectionLocation2(byte[] edt) {
257  if(edt == null || !(edt.length == 3)) return false;
258  return true;
259  }
283  protected byte[] getHumanBodyExistenceInformation() {return null;}
307  protected boolean isValidHumanBodyExistenceInformation(byte[] edt) {
308  if(edt == null || !(edt.length == 16)) return false;
309  return true;
310  }
311 
312  @Override
313  protected synchronized boolean setProperty(EchoProperty property) {
314  boolean success = super.setProperty(property);
315  if(success) return success;
316 
317  switch(property.epc) {
318  default : return false;
319  }
320  }
321 
322  @Override
323  protected synchronized byte[] getProperty(byte epc) {
324  byte[] edt = super.getProperty(epc);
325  if(edt != null) return edt;
326 
327  switch(epc) {
332  default : return null;
333  }
334  }
335 
336  @Override
337  protected synchronized boolean isValidProperty(EchoProperty property) {
338  boolean valid = super.isValidProperty(property);
339  if(valid) return valid;
340 
341  switch(property.epc) {
346  default : return false;
347  }
348  }
349 
350  @Override
351  public Setter set() {
352  return set(true);
353  }
354 
355  @Override
356  public Setter set(boolean responseRequired) {
357  return new Setter(getEchoClassCode(), getInstanceCode()
358  , getNode().getAddressStr(), responseRequired);
359  }
360 
361  @Override
362  public Getter get() {
363  return new Getter(getEchoClassCode(), getInstanceCode()
364  , getNode().getAddressStr());
365  }
366 
367  @Override
368  public Informer inform() {
369  return inform(isSelfObject());
370  }
371 
372  @Override
373  protected Informer inform(boolean multicast) {
374  String address;
375  if(multicast) {
377  } else {
378  address = getNode().getAddressStr();
379  }
380  return new Informer(getEchoClassCode(), getInstanceCode()
381  , address, isSelfObject());
382  }
383 
384  public static class Receiver extends DeviceObject.Receiver {
385 
386  @Override
387  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
388  EchoProperty property, boolean success) {
389  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
390  if(ret) return true;
391 
392  switch(property.epc) {
393  default :
394  return false;
395  }
396  }
397 
398  @Override
399  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
400  EchoProperty property, boolean success) {
401  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
402  if(ret) return true;
403 
404  switch(property.epc) {
406  onGetHumanBodyDetectionLocation1(eoj, tid, esv, property, success);
407  return true;
409  onGetMaximumNumberOfHumanBodyIdS(eoj, tid, esv, property, success);
410  return true;
412  onGetHumanBodyDetectionLocation2(eoj, tid, esv, property, success);
413  return true;
415  onGetHumanBodyExistenceInformation(eoj, tid, esv, property, success);
416  return true;
417  default :
418  return false;
419  }
420  }
421 
447  protected void onGetHumanBodyDetectionLocation1(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
470  protected void onGetMaximumNumberOfHumanBodyIdS(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
493  protected void onGetHumanBodyDetectionLocation2(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
517  protected void onGetHumanBodyExistenceInformation(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
518  }
519 
520  public static class Setter extends DeviceObject.Setter {
521  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
522  , String dstEchoAddress, boolean responseRequired) {
523  super(dstEchoClassCode, dstEchoInstanceCode
524  , dstEchoAddress, responseRequired);
525  }
526 
527  @Override
528  public Setter reqSetProperty(byte epc, byte[] edt) {
529  return (Setter)super.reqSetProperty(epc, edt);
530  }
531 
532  @Override
533  public Setter reqSetOperationStatus(byte[] edt) {
534  return (Setter)super.reqSetOperationStatus(edt);
535  }
536  @Override
537  public Setter reqSetInstallationLocation(byte[] edt) {
538  return (Setter)super.reqSetInstallationLocation(edt);
539  }
540  @Override
541  public Setter reqSetCurrentLimitSetting(byte[] edt) {
542  return (Setter)super.reqSetCurrentLimitSetting(edt);
543  }
544  @Override
545  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
546  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
547  }
548  @Override
549  public Setter reqSetRemoteControlSetting(byte[] edt) {
550  return (Setter)super.reqSetRemoteControlSetting(edt);
551  }
552  @Override
553  public Setter reqSetCurrentTimeSetting(byte[] edt) {
554  return (Setter)super.reqSetCurrentTimeSetting(edt);
555  }
556  @Override
557  public Setter reqSetCurrentDateSetting(byte[] edt) {
558  return (Setter)super.reqSetCurrentDateSetting(edt);
559  }
560  @Override
561  public Setter reqSetPowerLimitSetting(byte[] edt) {
562  return (Setter)super.reqSetPowerLimitSetting(edt);
563  }
564 
565  }
566 
567  public static class Getter extends DeviceObject.Getter {
568  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
569  , String dstEchoAddress) {
570  super(dstEchoClassCode, dstEchoInstanceCode
571  , dstEchoAddress);
572  }
573 
574  @Override
575  public Getter reqGetProperty(byte epc) {
576  return (Getter)super.reqGetProperty(epc);
577  }
578 
579  @Override
580  public Getter reqGetOperationStatus() {
581  return (Getter)super.reqGetOperationStatus();
582  }
583  @Override
584  public Getter reqGetInstallationLocation() {
585  return (Getter)super.reqGetInstallationLocation();
586  }
587  @Override
588  public Getter reqGetStandardVersionInformation() {
589  return (Getter)super.reqGetStandardVersionInformation();
590  }
591  @Override
592  public Getter reqGetIdentificationNumber() {
593  return (Getter)super.reqGetIdentificationNumber();
594  }
595  @Override
596  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
597  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
598  }
599  @Override
600  public Getter reqGetMeasuredCumulativePowerConsumption() {
601  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
602  }
603  @Override
604  public Getter reqGetManufacturersFaultCode() {
605  return (Getter)super.reqGetManufacturersFaultCode();
606  }
607  @Override
608  public Getter reqGetCurrentLimitSetting() {
609  return (Getter)super.reqGetCurrentLimitSetting();
610  }
611  @Override
612  public Getter reqGetFaultStatus() {
613  return (Getter)super.reqGetFaultStatus();
614  }
615  @Override
616  public Getter reqGetFaultDescription() {
617  return (Getter)super.reqGetFaultDescription();
618  }
619  @Override
620  public Getter reqGetManufacturerCode() {
621  return (Getter)super.reqGetManufacturerCode();
622  }
623  @Override
624  public Getter reqGetBusinessFacilityCode() {
625  return (Getter)super.reqGetBusinessFacilityCode();
626  }
627  @Override
628  public Getter reqGetProductCode() {
629  return (Getter)super.reqGetProductCode();
630  }
631  @Override
632  public Getter reqGetProductionNumber() {
633  return (Getter)super.reqGetProductionNumber();
634  }
635  @Override
636  public Getter reqGetProductionDate() {
637  return (Getter)super.reqGetProductionDate();
638  }
639  @Override
640  public Getter reqGetPowerSavingOperationSetting() {
641  return (Getter)super.reqGetPowerSavingOperationSetting();
642  }
643  @Override
644  public Getter reqGetRemoteControlSetting() {
645  return (Getter)super.reqGetRemoteControlSetting();
646  }
647  @Override
648  public Getter reqGetCurrentTimeSetting() {
649  return (Getter)super.reqGetCurrentTimeSetting();
650  }
651  @Override
652  public Getter reqGetCurrentDateSetting() {
653  return (Getter)super.reqGetCurrentDateSetting();
654  }
655  @Override
656  public Getter reqGetPowerLimitSetting() {
657  return (Getter)super.reqGetPowerLimitSetting();
658  }
659  @Override
660  public Getter reqGetCumulativeOperatingTime() {
661  return (Getter)super.reqGetCumulativeOperatingTime();
662  }
663  @Override
664  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
665  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
666  }
667  @Override
668  public Getter reqGetSetPropertyMap() {
669  return (Getter)super.reqGetSetPropertyMap();
670  }
671  @Override
672  public Getter reqGetGetPropertyMap() {
673  return (Getter)super.reqGetGetPropertyMap();
674  }
675 
701  public Getter reqGetHumanBodyDetectionLocation1() {
702  reqGetProperty(EPC_HUMAN_BODY_DETECTION_LOCATION1);
703  return this;
704  }
727  public Getter reqGetMaximumNumberOfHumanBodyIdS() {
729  return this;
730  }
753  public Getter reqGetHumanBodyDetectionLocation2() {
754  reqGetProperty(EPC_HUMAN_BODY_DETECTION_LOCATION2);
755  return this;
756  }
780  public Getter reqGetHumanBodyExistenceInformation() {
781  reqGetProperty(EPC_HUMAN_BODY_EXISTENCE_INFORMATION);
782  return this;
783  }
784  }
785 
786  public static class Informer extends DeviceObject.Informer {
787  public Informer(short echoClassCode, byte echoInstanceCode
788  , String dstEchoAddress, boolean isSelfObject) {
789  super(echoClassCode, echoInstanceCode
790  , dstEchoAddress, isSelfObject);
791  }
792 
793  @Override
794  public Informer reqInformProperty(byte epc) {
795  return (Informer)super.reqInformProperty(epc);
796  }
797  @Override
798  public Informer reqInformOperationStatus() {
799  return (Informer)super.reqInformOperationStatus();
800  }
801  @Override
802  public Informer reqInformInstallationLocation() {
803  return (Informer)super.reqInformInstallationLocation();
804  }
805  @Override
806  public Informer reqInformStandardVersionInformation() {
807  return (Informer)super.reqInformStandardVersionInformation();
808  }
809  @Override
810  public Informer reqInformIdentificationNumber() {
811  return (Informer)super.reqInformIdentificationNumber();
812  }
813  @Override
814  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
815  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
816  }
817  @Override
818  public Informer reqInformMeasuredCumulativePowerConsumption() {
819  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
820  }
821  @Override
822  public Informer reqInformManufacturersFaultCode() {
823  return (Informer)super.reqInformManufacturersFaultCode();
824  }
825  @Override
826  public Informer reqInformCurrentLimitSetting() {
827  return (Informer)super.reqInformCurrentLimitSetting();
828  }
829  @Override
830  public Informer reqInformFaultStatus() {
831  return (Informer)super.reqInformFaultStatus();
832  }
833  @Override
834  public Informer reqInformFaultDescription() {
835  return (Informer)super.reqInformFaultDescription();
836  }
837  @Override
838  public Informer reqInformManufacturerCode() {
839  return (Informer)super.reqInformManufacturerCode();
840  }
841  @Override
842  public Informer reqInformBusinessFacilityCode() {
843  return (Informer)super.reqInformBusinessFacilityCode();
844  }
845  @Override
846  public Informer reqInformProductCode() {
847  return (Informer)super.reqInformProductCode();
848  }
849  @Override
850  public Informer reqInformProductionNumber() {
851  return (Informer)super.reqInformProductionNumber();
852  }
853  @Override
854  public Informer reqInformProductionDate() {
855  return (Informer)super.reqInformProductionDate();
856  }
857  @Override
858  public Informer reqInformPowerSavingOperationSetting() {
859  return (Informer)super.reqInformPowerSavingOperationSetting();
860  }
861  @Override
862  public Informer reqInformRemoteControlSetting() {
863  return (Informer)super.reqInformRemoteControlSetting();
864  }
865  @Override
866  public Informer reqInformCurrentTimeSetting() {
867  return (Informer)super.reqInformCurrentTimeSetting();
868  }
869  @Override
870  public Informer reqInformCurrentDateSetting() {
871  return (Informer)super.reqInformCurrentDateSetting();
872  }
873  @Override
874  public Informer reqInformPowerLimitSetting() {
875  return (Informer)super.reqInformPowerLimitSetting();
876  }
877  @Override
878  public Informer reqInformCumulativeOperatingTime() {
879  return (Informer)super.reqInformCumulativeOperatingTime();
880  }
881  @Override
882  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
883  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
884  }
885  @Override
886  public Informer reqInformSetPropertyMap() {
887  return (Informer)super.reqInformSetPropertyMap();
888  }
889  @Override
890  public Informer reqInformGetPropertyMap() {
891  return (Informer)super.reqInformGetPropertyMap();
892  }
893 
919  public Informer reqInformHumanBodyDetectionLocation1() {
920  reqInformProperty(EPC_HUMAN_BODY_DETECTION_LOCATION1);
921  return this;
922  }
945  public Informer reqInformMaximumNumberOfHumanBodyIdS() {
946  reqInformProperty(EPC_MAXIMUM_NUMBER_OF_HUMAN_BODY_ID_S);
947  return this;
948  }
971  public Informer reqInformHumanBodyDetectionLocation2() {
972  reqInformProperty(EPC_HUMAN_BODY_DETECTION_LOCATION2);
973  return this;
974  }
998  public Informer reqInformHumanBodyExistenceInformation() {
999  reqInformProperty(EPC_HUMAN_BODY_EXISTENCE_INFORMATION);
1000  return this;
1001  }
1002  }
1003 
1004  public static class Proxy extends HumanBodyLocationSensor {
1005  public Proxy(byte instanceCode) {
1006  super();
1007  mEchoInstanceCode = instanceCode;
1008  }
1009  @Override
1010  public byte getInstanceCode() {
1011  return mEchoInstanceCode;
1012  }
1013  @Override
1014  protected byte[] getOperationStatus() {return null;}
1015  @Override
1016  protected boolean setInstallationLocation(byte[] edt) {return false;}
1017  @Override
1018  protected byte[] getInstallationLocation() {return null;}
1019  @Override
1020  protected byte[] getStandardVersionInformation() {return null;}
1021  @Override
1022  protected byte[] getFaultStatus() {return null;}
1023  @Override
1024  protected byte[] getManufacturerCode() {return null;}
1025  @Override
1026  protected byte[] getHumanBodyDetectionLocation1() {return null;}
1027  @Override
1028  protected byte[] getHumanBodyDetectionLocation2() {return null;}
1029  }
1030 
1031  public static Setter setG() {
1032  return setG((byte)0);
1033  }
1034 
1035  public static Setter setG(byte instanceCode) {
1036  return setG(instanceCode, true);
1037  }
1038 
1039  public static Setter setG(boolean responseRequired) {
1040  return setG((byte)0, responseRequired);
1041  }
1042 
1043  public static Setter setG(byte instanceCode, boolean responseRequired) {
1044  return new Setter(ECHO_CLASS_CODE, instanceCode
1045  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1046  }
1047 
1048  public static Getter getG() {
1049  return getG((byte)0);
1050  }
1051 
1052  public static Getter getG(byte instanceCode) {
1053  return new Getter(ECHO_CLASS_CODE, instanceCode
1055  }
1056 
1057  public static Informer informG() {
1058  return informG((byte)0);
1059  }
1060 
1061  public static Informer informG(byte instanceCode) {
1062  return new Informer(ECHO_CLASS_CODE, instanceCode
1063  , EchoSocket.MULTICAST_ADDRESS, false);
1064  }
1065 
1066 }
final void removeSetProperty(byte epc)
Definition: EchoObject.java:98
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
final void addGetProperty(byte epc)
static Setter setG(byte instanceCode, boolean responseRequired)
synchronized boolean isValidProperty(EchoProperty property)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53