OpenECHO
 All Classes Namespaces Files Functions Variables
VOCSensor.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 VOCSensor extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x001D;
29 
30  public static final byte EPC_DETECTION_THRESHOLD_LEVEL = (byte)0xB0;
31  public static final byte EPC_VOC_DETECTION_STATUS = (byte)0xB1;
32  public static final byte EPC_MEASURED_VALUE_OF_VOC_CONCENTRATION = (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().onNewVOCSensor(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  }
203  protected byte[] getVocDetectionStatus() {return null;}
229  protected boolean isValidVocDetectionStatus(byte[] edt) {
230  if(edt == null || !(edt.length == 1)) return false;
231  return true;
232  }
255  protected abstract byte[] getMeasuredValueOfVocConcentration();
278  protected boolean isValidMeasuredValueOfVocConcentration(byte[] edt) {
279  if(edt == null || !(edt.length == 2)) return false;
280  return true;
281  }
282 
283  @Override
284  protected synchronized boolean setProperty(EchoProperty property) {
285  boolean success = super.setProperty(property);
286  if(success) return success;
287 
288  switch(property.epc) {
290  default : return false;
291  }
292  }
293 
294  @Override
295  protected synchronized byte[] getProperty(byte epc) {
296  byte[] edt = super.getProperty(epc);
297  if(edt != null) return edt;
298 
299  switch(epc) {
303  default : return null;
304  }
305  }
306 
307  @Override
308  protected synchronized boolean isValidProperty(EchoProperty property) {
309  boolean valid = super.isValidProperty(property);
310  if(valid) return valid;
311 
312  switch(property.epc) {
316  default : return false;
317  }
318  }
319 
320  @Override
321  public Setter set() {
322  return set(true);
323  }
324 
325  @Override
326  public Setter set(boolean responseRequired) {
327  return new Setter(getEchoClassCode(), getInstanceCode()
328  , getNode().getAddressStr(), responseRequired);
329  }
330 
331  @Override
332  public Getter get() {
333  return new Getter(getEchoClassCode(), getInstanceCode()
334  , getNode().getAddressStr());
335  }
336 
337  @Override
338  public Informer inform() {
339  return inform(isSelfObject());
340  }
341 
342  @Override
343  protected Informer inform(boolean multicast) {
344  String address;
345  if(multicast) {
347  } else {
348  address = getNode().getAddressStr();
349  }
350  return new Informer(getEchoClassCode(), getInstanceCode()
351  , address, isSelfObject());
352  }
353 
354  public static class Receiver extends DeviceObject.Receiver {
355 
356  @Override
357  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
358  EchoProperty property, boolean success) {
359  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
360  if(ret) return true;
361 
362  switch(property.epc) {
364  onSetDetectionThresholdLevel(eoj, tid, esv, property, success);
365  return true;
366  default :
367  return false;
368  }
369  }
370 
371  @Override
372  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
373  EchoProperty property, boolean success) {
374  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
375  if(ret) return true;
376 
377  switch(property.epc) {
379  onGetDetectionThresholdLevel(eoj, tid, esv, property, success);
380  return true;
382  onGetVocDetectionStatus(eoj, tid, esv, property, success);
383  return true;
385  onGetMeasuredValueOfVocConcentration(eoj, tid, esv, property, success);
386  return true;
387  default :
388  return false;
389  }
390  }
391 
414  protected void onSetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
437  protected void onGetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
463  protected void onGetVocDetectionStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
486  protected void onGetMeasuredValueOfVocConcentration(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
487  }
488 
489  public static class Setter extends DeviceObject.Setter {
490  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
491  , String dstEchoAddress, boolean responseRequired) {
492  super(dstEchoClassCode, dstEchoInstanceCode
493  , dstEchoAddress, responseRequired);
494  }
495 
496  @Override
497  public Setter reqSetProperty(byte epc, byte[] edt) {
498  return (Setter)super.reqSetProperty(epc, edt);
499  }
500 
501  @Override
502  public Setter reqSetOperationStatus(byte[] edt) {
503  return (Setter)super.reqSetOperationStatus(edt);
504  }
505  @Override
506  public Setter reqSetInstallationLocation(byte[] edt) {
507  return (Setter)super.reqSetInstallationLocation(edt);
508  }
509  @Override
510  public Setter reqSetCurrentLimitSetting(byte[] edt) {
511  return (Setter)super.reqSetCurrentLimitSetting(edt);
512  }
513  @Override
514  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
515  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
516  }
517  @Override
518  public Setter reqSetRemoteControlSetting(byte[] edt) {
519  return (Setter)super.reqSetRemoteControlSetting(edt);
520  }
521  @Override
522  public Setter reqSetCurrentTimeSetting(byte[] edt) {
523  return (Setter)super.reqSetCurrentTimeSetting(edt);
524  }
525  @Override
526  public Setter reqSetCurrentDateSetting(byte[] edt) {
527  return (Setter)super.reqSetCurrentDateSetting(edt);
528  }
529  @Override
530  public Setter reqSetPowerLimitSetting(byte[] edt) {
531  return (Setter)super.reqSetPowerLimitSetting(edt);
532  }
533 
556  public Setter reqSetDetectionThresholdLevel(byte[] edt) {
557  reqSetProperty(EPC_DETECTION_THRESHOLD_LEVEL, edt);
558  return this;
559  }
560  }
561 
562  public static class Getter extends DeviceObject.Getter {
563  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
564  , String dstEchoAddress) {
565  super(dstEchoClassCode, dstEchoInstanceCode
566  , dstEchoAddress);
567  }
568 
569  @Override
570  public Getter reqGetProperty(byte epc) {
571  return (Getter)super.reqGetProperty(epc);
572  }
573 
574  @Override
575  public Getter reqGetOperationStatus() {
576  return (Getter)super.reqGetOperationStatus();
577  }
578  @Override
579  public Getter reqGetInstallationLocation() {
580  return (Getter)super.reqGetInstallationLocation();
581  }
582  @Override
583  public Getter reqGetStandardVersionInformation() {
584  return (Getter)super.reqGetStandardVersionInformation();
585  }
586  @Override
587  public Getter reqGetIdentificationNumber() {
588  return (Getter)super.reqGetIdentificationNumber();
589  }
590  @Override
591  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
592  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
593  }
594  @Override
595  public Getter reqGetMeasuredCumulativePowerConsumption() {
596  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
597  }
598  @Override
599  public Getter reqGetManufacturersFaultCode() {
600  return (Getter)super.reqGetManufacturersFaultCode();
601  }
602  @Override
603  public Getter reqGetCurrentLimitSetting() {
604  return (Getter)super.reqGetCurrentLimitSetting();
605  }
606  @Override
607  public Getter reqGetFaultStatus() {
608  return (Getter)super.reqGetFaultStatus();
609  }
610  @Override
611  public Getter reqGetFaultDescription() {
612  return (Getter)super.reqGetFaultDescription();
613  }
614  @Override
615  public Getter reqGetManufacturerCode() {
616  return (Getter)super.reqGetManufacturerCode();
617  }
618  @Override
619  public Getter reqGetBusinessFacilityCode() {
620  return (Getter)super.reqGetBusinessFacilityCode();
621  }
622  @Override
623  public Getter reqGetProductCode() {
624  return (Getter)super.reqGetProductCode();
625  }
626  @Override
627  public Getter reqGetProductionNumber() {
628  return (Getter)super.reqGetProductionNumber();
629  }
630  @Override
631  public Getter reqGetProductionDate() {
632  return (Getter)super.reqGetProductionDate();
633  }
634  @Override
635  public Getter reqGetPowerSavingOperationSetting() {
636  return (Getter)super.reqGetPowerSavingOperationSetting();
637  }
638  @Override
639  public Getter reqGetRemoteControlSetting() {
640  return (Getter)super.reqGetRemoteControlSetting();
641  }
642  @Override
643  public Getter reqGetCurrentTimeSetting() {
644  return (Getter)super.reqGetCurrentTimeSetting();
645  }
646  @Override
647  public Getter reqGetCurrentDateSetting() {
648  return (Getter)super.reqGetCurrentDateSetting();
649  }
650  @Override
651  public Getter reqGetPowerLimitSetting() {
652  return (Getter)super.reqGetPowerLimitSetting();
653  }
654  @Override
655  public Getter reqGetCumulativeOperatingTime() {
656  return (Getter)super.reqGetCumulativeOperatingTime();
657  }
658  @Override
659  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
660  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
661  }
662  @Override
663  public Getter reqGetSetPropertyMap() {
664  return (Getter)super.reqGetSetPropertyMap();
665  }
666  @Override
667  public Getter reqGetGetPropertyMap() {
668  return (Getter)super.reqGetGetPropertyMap();
669  }
670 
693  public Getter reqGetDetectionThresholdLevel() {
694  reqGetProperty(EPC_DETECTION_THRESHOLD_LEVEL);
695  return this;
696  }
722  public Getter reqGetVocDetectionStatus() {
723  reqGetProperty(EPC_VOC_DETECTION_STATUS);
724  return this;
725  }
748  public Getter reqGetMeasuredValueOfVocConcentration() {
750  return this;
751  }
752  }
753 
754  public static class Informer extends DeviceObject.Informer {
755  public Informer(short echoClassCode, byte echoInstanceCode
756  , String dstEchoAddress, boolean isSelfObject) {
757  super(echoClassCode, echoInstanceCode
758  , dstEchoAddress, isSelfObject);
759  }
760 
761  @Override
762  public Informer reqInformProperty(byte epc) {
763  return (Informer)super.reqInformProperty(epc);
764  }
765  @Override
766  public Informer reqInformOperationStatus() {
767  return (Informer)super.reqInformOperationStatus();
768  }
769  @Override
770  public Informer reqInformInstallationLocation() {
771  return (Informer)super.reqInformInstallationLocation();
772  }
773  @Override
774  public Informer reqInformStandardVersionInformation() {
775  return (Informer)super.reqInformStandardVersionInformation();
776  }
777  @Override
778  public Informer reqInformIdentificationNumber() {
779  return (Informer)super.reqInformIdentificationNumber();
780  }
781  @Override
782  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
783  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
784  }
785  @Override
786  public Informer reqInformMeasuredCumulativePowerConsumption() {
787  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
788  }
789  @Override
790  public Informer reqInformManufacturersFaultCode() {
791  return (Informer)super.reqInformManufacturersFaultCode();
792  }
793  @Override
794  public Informer reqInformCurrentLimitSetting() {
795  return (Informer)super.reqInformCurrentLimitSetting();
796  }
797  @Override
798  public Informer reqInformFaultStatus() {
799  return (Informer)super.reqInformFaultStatus();
800  }
801  @Override
802  public Informer reqInformFaultDescription() {
803  return (Informer)super.reqInformFaultDescription();
804  }
805  @Override
806  public Informer reqInformManufacturerCode() {
807  return (Informer)super.reqInformManufacturerCode();
808  }
809  @Override
810  public Informer reqInformBusinessFacilityCode() {
811  return (Informer)super.reqInformBusinessFacilityCode();
812  }
813  @Override
814  public Informer reqInformProductCode() {
815  return (Informer)super.reqInformProductCode();
816  }
817  @Override
818  public Informer reqInformProductionNumber() {
819  return (Informer)super.reqInformProductionNumber();
820  }
821  @Override
822  public Informer reqInformProductionDate() {
823  return (Informer)super.reqInformProductionDate();
824  }
825  @Override
826  public Informer reqInformPowerSavingOperationSetting() {
827  return (Informer)super.reqInformPowerSavingOperationSetting();
828  }
829  @Override
830  public Informer reqInformRemoteControlSetting() {
831  return (Informer)super.reqInformRemoteControlSetting();
832  }
833  @Override
834  public Informer reqInformCurrentTimeSetting() {
835  return (Informer)super.reqInformCurrentTimeSetting();
836  }
837  @Override
838  public Informer reqInformCurrentDateSetting() {
839  return (Informer)super.reqInformCurrentDateSetting();
840  }
841  @Override
842  public Informer reqInformPowerLimitSetting() {
843  return (Informer)super.reqInformPowerLimitSetting();
844  }
845  @Override
846  public Informer reqInformCumulativeOperatingTime() {
847  return (Informer)super.reqInformCumulativeOperatingTime();
848  }
849  @Override
850  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
851  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
852  }
853  @Override
854  public Informer reqInformSetPropertyMap() {
855  return (Informer)super.reqInformSetPropertyMap();
856  }
857  @Override
858  public Informer reqInformGetPropertyMap() {
859  return (Informer)super.reqInformGetPropertyMap();
860  }
861 
884  public Informer reqInformDetectionThresholdLevel() {
885  reqInformProperty(EPC_DETECTION_THRESHOLD_LEVEL);
886  return this;
887  }
913  public Informer reqInformVocDetectionStatus() {
914  reqInformProperty(EPC_VOC_DETECTION_STATUS);
915  return this;
916  }
939  public Informer reqInformMeasuredValueOfVocConcentration() {
940  reqInformProperty(EPC_MEASURED_VALUE_OF_VOC_CONCENTRATION);
941  return this;
942  }
943  }
944 
945  public static class Proxy extends VOCSensor {
946  public Proxy(byte instanceCode) {
947  super();
948  mEchoInstanceCode = instanceCode;
949  }
950  @Override
951  public byte getInstanceCode() {
952  return mEchoInstanceCode;
953  }
954  @Override
955  protected byte[] getOperationStatus() {return null;}
956  @Override
957  protected boolean setInstallationLocation(byte[] edt) {return false;}
958  @Override
959  protected byte[] getInstallationLocation() {return null;}
960  @Override
961  protected byte[] getStandardVersionInformation() {return null;}
962  @Override
963  protected byte[] getFaultStatus() {return null;}
964  @Override
965  protected byte[] getManufacturerCode() {return null;}
966  @Override
967  protected byte[] getMeasuredValueOfVocConcentration() {return null;}
968  }
969 
970  public static Setter setG() {
971  return setG((byte)0);
972  }
973 
974  public static Setter setG(byte instanceCode) {
975  return setG(instanceCode, true);
976  }
977 
978  public static Setter setG(boolean responseRequired) {
979  return setG((byte)0, responseRequired);
980  }
981 
982  public static Setter setG(byte instanceCode, boolean responseRequired) {
983  return new Setter(ECHO_CLASS_CODE, instanceCode
984  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
985  }
986 
987  public static Getter getG() {
988  return getG((byte)0);
989  }
990 
991  public static Getter getG(byte instanceCode) {
992  return new Getter(ECHO_CLASS_CODE, instanceCode
994  }
995 
996  public static Informer informG() {
997  return informG((byte)0);
998  }
999 
1000  public static Informer informG(byte instanceCode) {
1001  return new Informer(ECHO_CLASS_CODE, instanceCode
1002  , EchoSocket.MULTICAST_ADDRESS, false);
1003  }
1004 
1005 }
synchronized boolean setProperty(EchoProperty property)
Definition: VOCSensor.java:284
static Setter setG(boolean responseRequired)
Definition: VOCSensor.java:978
Informer inform(boolean multicast)
Definition: VOCSensor.java:343
synchronized byte[] getProperty(byte epc)
Definition: VOCSensor.java:295
final void removeSetProperty(byte epc)
Definition: EchoObject.java:98
static Setter setG(byte instanceCode)
Definition: VOCSensor.java:974
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
final void addGetProperty(byte epc)
static Setter setG(byte instanceCode, boolean responseRequired)
Definition: VOCSensor.java:982
synchronized boolean isValidProperty(EchoProperty property)
Definition: VOCSensor.java:308
boolean isValidDetectionThresholdLevel(byte[] edt)
Definition: VOCSensor.java:174
static Getter getG(byte instanceCode)
Definition: VOCSensor.java:991
Setter set(boolean responseRequired)
Definition: VOCSensor.java:326
boolean isValidMeasuredValueOfVocConcentration(byte[] edt)
Definition: VOCSensor.java:278
static final byte EPC_MEASURED_VALUE_OF_VOC_CONCENTRATION
Definition: VOCSensor.java:32
static Informer informG(byte instanceCode)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53