OpenECHO
 All Classes Namespaces Files Functions Variables
WaterLeakSensor.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 WaterLeakSensor extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x0017;
29 
30  public static final byte EPC_DETECTION_THRESHOLD_LEVEL = (byte)0xB0;
31  public static final byte EPC_WATER_LEAK_DETECTION_STATUS = (byte)0xB1;
32 
33  @Override
34  protected void setupPropertyMaps() {
35  super.setupPropertyMaps();
36 
42  }
43 
44  @Override
45  public void onNew() {
46  super.onNew();
47  Echo.getEventListener().onNewWaterLeakSensor(this);
48  }
49 
50  @Override
51  public short getEchoClassCode() {
52  return ECHO_CLASS_CODE;
53  }
54 
79  protected boolean setOperationStatus(byte[] edt) {return false;}
104  protected abstract byte[] getOperationStatus();
127  protected boolean setDetectionThresholdLevel(byte[] edt) {return false;}
150  protected byte[] getDetectionThresholdLevel() {return null;}
173  protected boolean isValidDetectionThresholdLevel(byte[] edt) {
174  if(edt == null || !(edt.length == 1)) return false;
175  return true;
176  }
203  protected abstract byte[] getWaterLeakDetectionStatus();
230  protected boolean isValidWaterLeakDetectionStatus(byte[] edt) {
231  if(edt == null || !(edt.length == 1)) return false;
232  return true;
233  }
234 
235  @Override
236  protected synchronized boolean setProperty(EchoProperty property) {
237  boolean success = super.setProperty(property);
238  if(success) return success;
239 
240  switch(property.epc) {
242  default : return false;
243  }
244  }
245 
246  @Override
247  protected synchronized byte[] getProperty(byte epc) {
248  byte[] edt = super.getProperty(epc);
249  if(edt != null) return edt;
250 
251  switch(epc) {
254  default : return null;
255  }
256  }
257 
258  @Override
259  protected synchronized boolean isValidProperty(EchoProperty property) {
260  boolean valid = super.isValidProperty(property);
261  if(valid) return valid;
262 
263  switch(property.epc) {
266  default : return false;
267  }
268  }
269 
270  @Override
271  public Setter set() {
272  return set(true);
273  }
274 
275  @Override
276  public Setter set(boolean responseRequired) {
277  return new Setter(getEchoClassCode(), getInstanceCode()
278  , getNode().getAddressStr(), responseRequired);
279  }
280 
281  @Override
282  public Getter get() {
283  return new Getter(getEchoClassCode(), getInstanceCode()
284  , getNode().getAddressStr());
285  }
286 
287  @Override
288  public Informer inform() {
289  return inform(isSelfObject());
290  }
291 
292  @Override
293  protected Informer inform(boolean multicast) {
294  String address;
295  if(multicast) {
297  } else {
298  address = getNode().getAddressStr();
299  }
300  return new Informer(getEchoClassCode(), getInstanceCode()
301  , address, isSelfObject());
302  }
303 
304  public static class Receiver extends DeviceObject.Receiver {
305 
306  @Override
307  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
308  EchoProperty property, boolean success) {
309  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
310  if(ret) return true;
311 
312  switch(property.epc) {
314  onSetDetectionThresholdLevel(eoj, tid, esv, property, success);
315  return true;
316  default :
317  return false;
318  }
319  }
320 
321  @Override
322  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
323  EchoProperty property, boolean success) {
324  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
325  if(ret) return true;
326 
327  switch(property.epc) {
329  onGetDetectionThresholdLevel(eoj, tid, esv, property, success);
330  return true;
332  onGetWaterLeakDetectionStatus(eoj, tid, esv, property, success);
333  return true;
334  default :
335  return false;
336  }
337  }
338 
361  protected void onSetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
384  protected void onGetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
411  protected void onGetWaterLeakDetectionStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
412  }
413 
414  public static class Setter extends DeviceObject.Setter {
415  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
416  , String dstEchoAddress, boolean responseRequired) {
417  super(dstEchoClassCode, dstEchoInstanceCode
418  , dstEchoAddress, responseRequired);
419  }
420 
421  @Override
422  public Setter reqSetProperty(byte epc, byte[] edt) {
423  return (Setter)super.reqSetProperty(epc, edt);
424  }
425 
426  @Override
427  public Setter reqSetOperationStatus(byte[] edt) {
428  return (Setter)super.reqSetOperationStatus(edt);
429  }
430  @Override
431  public Setter reqSetInstallationLocation(byte[] edt) {
432  return (Setter)super.reqSetInstallationLocation(edt);
433  }
434  @Override
435  public Setter reqSetCurrentLimitSetting(byte[] edt) {
436  return (Setter)super.reqSetCurrentLimitSetting(edt);
437  }
438  @Override
439  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
440  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
441  }
442  @Override
443  public Setter reqSetRemoteControlSetting(byte[] edt) {
444  return (Setter)super.reqSetRemoteControlSetting(edt);
445  }
446  @Override
447  public Setter reqSetCurrentTimeSetting(byte[] edt) {
448  return (Setter)super.reqSetCurrentTimeSetting(edt);
449  }
450  @Override
451  public Setter reqSetCurrentDateSetting(byte[] edt) {
452  return (Setter)super.reqSetCurrentDateSetting(edt);
453  }
454  @Override
455  public Setter reqSetPowerLimitSetting(byte[] edt) {
456  return (Setter)super.reqSetPowerLimitSetting(edt);
457  }
458 
481  public Setter reqSetDetectionThresholdLevel(byte[] edt) {
482  reqSetProperty(EPC_DETECTION_THRESHOLD_LEVEL, edt);
483  return this;
484  }
485  }
486 
487  public static class Getter extends DeviceObject.Getter {
488  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
489  , String dstEchoAddress) {
490  super(dstEchoClassCode, dstEchoInstanceCode
491  , dstEchoAddress);
492  }
493 
494  @Override
495  public Getter reqGetProperty(byte epc) {
496  return (Getter)super.reqGetProperty(epc);
497  }
498 
499  @Override
500  public Getter reqGetOperationStatus() {
501  return (Getter)super.reqGetOperationStatus();
502  }
503  @Override
504  public Getter reqGetInstallationLocation() {
505  return (Getter)super.reqGetInstallationLocation();
506  }
507  @Override
508  public Getter reqGetStandardVersionInformation() {
509  return (Getter)super.reqGetStandardVersionInformation();
510  }
511  @Override
512  public Getter reqGetIdentificationNumber() {
513  return (Getter)super.reqGetIdentificationNumber();
514  }
515  @Override
516  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
517  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
518  }
519  @Override
520  public Getter reqGetMeasuredCumulativePowerConsumption() {
521  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
522  }
523  @Override
524  public Getter reqGetManufacturersFaultCode() {
525  return (Getter)super.reqGetManufacturersFaultCode();
526  }
527  @Override
528  public Getter reqGetCurrentLimitSetting() {
529  return (Getter)super.reqGetCurrentLimitSetting();
530  }
531  @Override
532  public Getter reqGetFaultStatus() {
533  return (Getter)super.reqGetFaultStatus();
534  }
535  @Override
536  public Getter reqGetFaultDescription() {
537  return (Getter)super.reqGetFaultDescription();
538  }
539  @Override
540  public Getter reqGetManufacturerCode() {
541  return (Getter)super.reqGetManufacturerCode();
542  }
543  @Override
544  public Getter reqGetBusinessFacilityCode() {
545  return (Getter)super.reqGetBusinessFacilityCode();
546  }
547  @Override
548  public Getter reqGetProductCode() {
549  return (Getter)super.reqGetProductCode();
550  }
551  @Override
552  public Getter reqGetProductionNumber() {
553  return (Getter)super.reqGetProductionNumber();
554  }
555  @Override
556  public Getter reqGetProductionDate() {
557  return (Getter)super.reqGetProductionDate();
558  }
559  @Override
560  public Getter reqGetPowerSavingOperationSetting() {
561  return (Getter)super.reqGetPowerSavingOperationSetting();
562  }
563  @Override
564  public Getter reqGetRemoteControlSetting() {
565  return (Getter)super.reqGetRemoteControlSetting();
566  }
567  @Override
568  public Getter reqGetCurrentTimeSetting() {
569  return (Getter)super.reqGetCurrentTimeSetting();
570  }
571  @Override
572  public Getter reqGetCurrentDateSetting() {
573  return (Getter)super.reqGetCurrentDateSetting();
574  }
575  @Override
576  public Getter reqGetPowerLimitSetting() {
577  return (Getter)super.reqGetPowerLimitSetting();
578  }
579  @Override
580  public Getter reqGetCumulativeOperatingTime() {
581  return (Getter)super.reqGetCumulativeOperatingTime();
582  }
583  @Override
584  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
585  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
586  }
587  @Override
588  public Getter reqGetSetPropertyMap() {
589  return (Getter)super.reqGetSetPropertyMap();
590  }
591  @Override
592  public Getter reqGetGetPropertyMap() {
593  return (Getter)super.reqGetGetPropertyMap();
594  }
595 
618  public Getter reqGetDetectionThresholdLevel() {
619  reqGetProperty(EPC_DETECTION_THRESHOLD_LEVEL);
620  return this;
621  }
648  public Getter reqGetWaterLeakDetectionStatus() {
649  reqGetProperty(EPC_WATER_LEAK_DETECTION_STATUS);
650  return this;
651  }
652  }
653 
654  public static class Informer extends DeviceObject.Informer {
655  public Informer(short echoClassCode, byte echoInstanceCode
656  , String dstEchoAddress, boolean isSelfObject) {
657  super(echoClassCode, echoInstanceCode
658  , dstEchoAddress, isSelfObject);
659  }
660 
661  @Override
662  public Informer reqInformProperty(byte epc) {
663  return (Informer)super.reqInformProperty(epc);
664  }
665  @Override
666  public Informer reqInformOperationStatus() {
667  return (Informer)super.reqInformOperationStatus();
668  }
669  @Override
670  public Informer reqInformInstallationLocation() {
671  return (Informer)super.reqInformInstallationLocation();
672  }
673  @Override
674  public Informer reqInformStandardVersionInformation() {
675  return (Informer)super.reqInformStandardVersionInformation();
676  }
677  @Override
678  public Informer reqInformIdentificationNumber() {
679  return (Informer)super.reqInformIdentificationNumber();
680  }
681  @Override
682  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
683  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
684  }
685  @Override
686  public Informer reqInformMeasuredCumulativePowerConsumption() {
687  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
688  }
689  @Override
690  public Informer reqInformManufacturersFaultCode() {
691  return (Informer)super.reqInformManufacturersFaultCode();
692  }
693  @Override
694  public Informer reqInformCurrentLimitSetting() {
695  return (Informer)super.reqInformCurrentLimitSetting();
696  }
697  @Override
698  public Informer reqInformFaultStatus() {
699  return (Informer)super.reqInformFaultStatus();
700  }
701  @Override
702  public Informer reqInformFaultDescription() {
703  return (Informer)super.reqInformFaultDescription();
704  }
705  @Override
706  public Informer reqInformManufacturerCode() {
707  return (Informer)super.reqInformManufacturerCode();
708  }
709  @Override
710  public Informer reqInformBusinessFacilityCode() {
711  return (Informer)super.reqInformBusinessFacilityCode();
712  }
713  @Override
714  public Informer reqInformProductCode() {
715  return (Informer)super.reqInformProductCode();
716  }
717  @Override
718  public Informer reqInformProductionNumber() {
719  return (Informer)super.reqInformProductionNumber();
720  }
721  @Override
722  public Informer reqInformProductionDate() {
723  return (Informer)super.reqInformProductionDate();
724  }
725  @Override
726  public Informer reqInformPowerSavingOperationSetting() {
727  return (Informer)super.reqInformPowerSavingOperationSetting();
728  }
729  @Override
730  public Informer reqInformRemoteControlSetting() {
731  return (Informer)super.reqInformRemoteControlSetting();
732  }
733  @Override
734  public Informer reqInformCurrentTimeSetting() {
735  return (Informer)super.reqInformCurrentTimeSetting();
736  }
737  @Override
738  public Informer reqInformCurrentDateSetting() {
739  return (Informer)super.reqInformCurrentDateSetting();
740  }
741  @Override
742  public Informer reqInformPowerLimitSetting() {
743  return (Informer)super.reqInformPowerLimitSetting();
744  }
745  @Override
746  public Informer reqInformCumulativeOperatingTime() {
747  return (Informer)super.reqInformCumulativeOperatingTime();
748  }
749  @Override
750  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
751  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
752  }
753  @Override
754  public Informer reqInformSetPropertyMap() {
755  return (Informer)super.reqInformSetPropertyMap();
756  }
757  @Override
758  public Informer reqInformGetPropertyMap() {
759  return (Informer)super.reqInformGetPropertyMap();
760  }
761 
784  public Informer reqInformDetectionThresholdLevel() {
785  reqInformProperty(EPC_DETECTION_THRESHOLD_LEVEL);
786  return this;
787  }
814  public Informer reqInformWaterLeakDetectionStatus() {
815  reqInformProperty(EPC_WATER_LEAK_DETECTION_STATUS);
816  return this;
817  }
818  }
819 
820  public static class Proxy extends WaterLeakSensor {
821  public Proxy(byte instanceCode) {
822  super();
823  mEchoInstanceCode = instanceCode;
824  }
825  @Override
826  public byte getInstanceCode() {
827  return mEchoInstanceCode;
828  }
829  @Override
830  protected byte[] getOperationStatus() {return null;}
831  @Override
832  protected boolean setInstallationLocation(byte[] edt) {return false;}
833  @Override
834  protected byte[] getInstallationLocation() {return null;}
835  @Override
836  protected byte[] getStandardVersionInformation() {return null;}
837  @Override
838  protected byte[] getFaultStatus() {return null;}
839  @Override
840  protected byte[] getManufacturerCode() {return null;}
841  @Override
842  protected byte[] getWaterLeakDetectionStatus() {return null;}
843  }
844 
845  public static Setter setG() {
846  return setG((byte)0);
847  }
848 
849  public static Setter setG(byte instanceCode) {
850  return setG(instanceCode, true);
851  }
852 
853  public static Setter setG(boolean responseRequired) {
854  return setG((byte)0, responseRequired);
855  }
856 
857  public static Setter setG(byte instanceCode, boolean responseRequired) {
858  return new Setter(ECHO_CLASS_CODE, instanceCode
859  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
860  }
861 
862  public static Getter getG() {
863  return getG((byte)0);
864  }
865 
866  public static Getter getG(byte instanceCode) {
867  return new Getter(ECHO_CLASS_CODE, instanceCode
869  }
870 
871  public static Informer informG() {
872  return informG((byte)0);
873  }
874 
875  public static Informer informG(byte instanceCode) {
876  return new Informer(ECHO_CLASS_CODE, instanceCode
877  , EchoSocket.MULTICAST_ADDRESS, false);
878  }
879 
880 }
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 setProperty(EchoProperty property)
synchronized boolean isValidProperty(EchoProperty property)
static Setter setG(boolean responseRequired)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53