OpenECHO
 All Classes Namespaces Files Functions Variables
BedPresenceSensor.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 BedPresenceSensor extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x0028;
29 
30  public static final byte EPC_DETECTION_THRESHOLD_LEVEL = (byte)0xB0;
31  public static final byte EPC_BED_PRESENCE_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().onNewBedPresenceSensor(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  }
201  protected abstract byte[] getBedPresenceDetectionStatus();
226  protected boolean isValidBedPresenceDetectionStatus(byte[] edt) {
227  if(edt == null || !(edt.length == 1)) return false;
228  return true;
229  }
230 
231  @Override
232  protected synchronized boolean setProperty(EchoProperty property) {
233  boolean success = super.setProperty(property);
234  if(success) return success;
235 
236  switch(property.epc) {
238  default : return false;
239  }
240  }
241 
242  @Override
243  protected synchronized byte[] getProperty(byte epc) {
244  byte[] edt = super.getProperty(epc);
245  if(edt != null) return edt;
246 
247  switch(epc) {
250  default : return null;
251  }
252  }
253 
254  @Override
255  protected synchronized boolean isValidProperty(EchoProperty property) {
256  boolean valid = super.isValidProperty(property);
257  if(valid) return valid;
258 
259  switch(property.epc) {
262  default : return false;
263  }
264  }
265 
266  @Override
267  public Setter set() {
268  return set(true);
269  }
270 
271  @Override
272  public Setter set(boolean responseRequired) {
273  return new Setter(getEchoClassCode(), getInstanceCode()
274  , getNode().getAddressStr(), responseRequired);
275  }
276 
277  @Override
278  public Getter get() {
279  return new Getter(getEchoClassCode(), getInstanceCode()
280  , getNode().getAddressStr());
281  }
282 
283  @Override
284  public Informer inform() {
285  return inform(isSelfObject());
286  }
287 
288  @Override
289  protected Informer inform(boolean multicast) {
290  String address;
291  if(multicast) {
293  } else {
294  address = getNode().getAddressStr();
295  }
296  return new Informer(getEchoClassCode(), getInstanceCode()
297  , address, isSelfObject());
298  }
299 
300  public static class Receiver extends DeviceObject.Receiver {
301 
302  @Override
303  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
304  EchoProperty property, boolean success) {
305  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
306  if(ret) return true;
307 
308  switch(property.epc) {
310  onSetDetectionThresholdLevel(eoj, tid, esv, property, success);
311  return true;
312  default :
313  return false;
314  }
315  }
316 
317  @Override
318  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
319  EchoProperty property, boolean success) {
320  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
321  if(ret) return true;
322 
323  switch(property.epc) {
325  onGetDetectionThresholdLevel(eoj, tid, esv, property, success);
326  return true;
328  onGetBedPresenceDetectionStatus(eoj, tid, esv, property, success);
329  return true;
330  default :
331  return false;
332  }
333  }
334 
357  protected void onSetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
380  protected void onGetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
405  protected void onGetBedPresenceDetectionStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
406  }
407 
408  public static class Setter extends DeviceObject.Setter {
409  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
410  , String dstEchoAddress, boolean responseRequired) {
411  super(dstEchoClassCode, dstEchoInstanceCode
412  , dstEchoAddress, responseRequired);
413  }
414 
415  @Override
416  public Setter reqSetProperty(byte epc, byte[] edt) {
417  return (Setter)super.reqSetProperty(epc, edt);
418  }
419 
420  @Override
421  public Setter reqSetOperationStatus(byte[] edt) {
422  return (Setter)super.reqSetOperationStatus(edt);
423  }
424  @Override
425  public Setter reqSetInstallationLocation(byte[] edt) {
426  return (Setter)super.reqSetInstallationLocation(edt);
427  }
428  @Override
429  public Setter reqSetCurrentLimitSetting(byte[] edt) {
430  return (Setter)super.reqSetCurrentLimitSetting(edt);
431  }
432  @Override
433  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
434  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
435  }
436  @Override
437  public Setter reqSetRemoteControlSetting(byte[] edt) {
438  return (Setter)super.reqSetRemoteControlSetting(edt);
439  }
440  @Override
441  public Setter reqSetCurrentTimeSetting(byte[] edt) {
442  return (Setter)super.reqSetCurrentTimeSetting(edt);
443  }
444  @Override
445  public Setter reqSetCurrentDateSetting(byte[] edt) {
446  return (Setter)super.reqSetCurrentDateSetting(edt);
447  }
448  @Override
449  public Setter reqSetPowerLimitSetting(byte[] edt) {
450  return (Setter)super.reqSetPowerLimitSetting(edt);
451  }
452 
475  public Setter reqSetDetectionThresholdLevel(byte[] edt) {
476  reqSetProperty(EPC_DETECTION_THRESHOLD_LEVEL, edt);
477  return this;
478  }
479  }
480 
481  public static class Getter extends DeviceObject.Getter {
482  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
483  , String dstEchoAddress) {
484  super(dstEchoClassCode, dstEchoInstanceCode
485  , dstEchoAddress);
486  }
487 
488  @Override
489  public Getter reqGetProperty(byte epc) {
490  return (Getter)super.reqGetProperty(epc);
491  }
492 
493  @Override
494  public Getter reqGetOperationStatus() {
495  return (Getter)super.reqGetOperationStatus();
496  }
497  @Override
498  public Getter reqGetInstallationLocation() {
499  return (Getter)super.reqGetInstallationLocation();
500  }
501  @Override
502  public Getter reqGetStandardVersionInformation() {
503  return (Getter)super.reqGetStandardVersionInformation();
504  }
505  @Override
506  public Getter reqGetIdentificationNumber() {
507  return (Getter)super.reqGetIdentificationNumber();
508  }
509  @Override
510  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
511  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
512  }
513  @Override
514  public Getter reqGetMeasuredCumulativePowerConsumption() {
515  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
516  }
517  @Override
518  public Getter reqGetManufacturersFaultCode() {
519  return (Getter)super.reqGetManufacturersFaultCode();
520  }
521  @Override
522  public Getter reqGetCurrentLimitSetting() {
523  return (Getter)super.reqGetCurrentLimitSetting();
524  }
525  @Override
526  public Getter reqGetFaultStatus() {
527  return (Getter)super.reqGetFaultStatus();
528  }
529  @Override
530  public Getter reqGetFaultDescription() {
531  return (Getter)super.reqGetFaultDescription();
532  }
533  @Override
534  public Getter reqGetManufacturerCode() {
535  return (Getter)super.reqGetManufacturerCode();
536  }
537  @Override
538  public Getter reqGetBusinessFacilityCode() {
539  return (Getter)super.reqGetBusinessFacilityCode();
540  }
541  @Override
542  public Getter reqGetProductCode() {
543  return (Getter)super.reqGetProductCode();
544  }
545  @Override
546  public Getter reqGetProductionNumber() {
547  return (Getter)super.reqGetProductionNumber();
548  }
549  @Override
550  public Getter reqGetProductionDate() {
551  return (Getter)super.reqGetProductionDate();
552  }
553  @Override
554  public Getter reqGetPowerSavingOperationSetting() {
555  return (Getter)super.reqGetPowerSavingOperationSetting();
556  }
557  @Override
558  public Getter reqGetRemoteControlSetting() {
559  return (Getter)super.reqGetRemoteControlSetting();
560  }
561  @Override
562  public Getter reqGetCurrentTimeSetting() {
563  return (Getter)super.reqGetCurrentTimeSetting();
564  }
565  @Override
566  public Getter reqGetCurrentDateSetting() {
567  return (Getter)super.reqGetCurrentDateSetting();
568  }
569  @Override
570  public Getter reqGetPowerLimitSetting() {
571  return (Getter)super.reqGetPowerLimitSetting();
572  }
573  @Override
574  public Getter reqGetCumulativeOperatingTime() {
575  return (Getter)super.reqGetCumulativeOperatingTime();
576  }
577  @Override
578  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
579  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
580  }
581  @Override
582  public Getter reqGetSetPropertyMap() {
583  return (Getter)super.reqGetSetPropertyMap();
584  }
585  @Override
586  public Getter reqGetGetPropertyMap() {
587  return (Getter)super.reqGetGetPropertyMap();
588  }
589 
612  public Getter reqGetDetectionThresholdLevel() {
613  reqGetProperty(EPC_DETECTION_THRESHOLD_LEVEL);
614  return this;
615  }
640  public Getter reqGetBedPresenceDetectionStatus() {
641  reqGetProperty(EPC_BED_PRESENCE_DETECTION_STATUS);
642  return this;
643  }
644  }
645 
646  public static class Informer extends DeviceObject.Informer {
647  public Informer(short echoClassCode, byte echoInstanceCode
648  , String dstEchoAddress, boolean isSelfObject) {
649  super(echoClassCode, echoInstanceCode
650  , dstEchoAddress, isSelfObject);
651  }
652 
653  @Override
654  public Informer reqInformProperty(byte epc) {
655  return (Informer)super.reqInformProperty(epc);
656  }
657  @Override
658  public Informer reqInformOperationStatus() {
659  return (Informer)super.reqInformOperationStatus();
660  }
661  @Override
662  public Informer reqInformInstallationLocation() {
663  return (Informer)super.reqInformInstallationLocation();
664  }
665  @Override
666  public Informer reqInformStandardVersionInformation() {
667  return (Informer)super.reqInformStandardVersionInformation();
668  }
669  @Override
670  public Informer reqInformIdentificationNumber() {
671  return (Informer)super.reqInformIdentificationNumber();
672  }
673  @Override
674  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
675  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
676  }
677  @Override
678  public Informer reqInformMeasuredCumulativePowerConsumption() {
679  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
680  }
681  @Override
682  public Informer reqInformManufacturersFaultCode() {
683  return (Informer)super.reqInformManufacturersFaultCode();
684  }
685  @Override
686  public Informer reqInformCurrentLimitSetting() {
687  return (Informer)super.reqInformCurrentLimitSetting();
688  }
689  @Override
690  public Informer reqInformFaultStatus() {
691  return (Informer)super.reqInformFaultStatus();
692  }
693  @Override
694  public Informer reqInformFaultDescription() {
695  return (Informer)super.reqInformFaultDescription();
696  }
697  @Override
698  public Informer reqInformManufacturerCode() {
699  return (Informer)super.reqInformManufacturerCode();
700  }
701  @Override
702  public Informer reqInformBusinessFacilityCode() {
703  return (Informer)super.reqInformBusinessFacilityCode();
704  }
705  @Override
706  public Informer reqInformProductCode() {
707  return (Informer)super.reqInformProductCode();
708  }
709  @Override
710  public Informer reqInformProductionNumber() {
711  return (Informer)super.reqInformProductionNumber();
712  }
713  @Override
714  public Informer reqInformProductionDate() {
715  return (Informer)super.reqInformProductionDate();
716  }
717  @Override
718  public Informer reqInformPowerSavingOperationSetting() {
719  return (Informer)super.reqInformPowerSavingOperationSetting();
720  }
721  @Override
722  public Informer reqInformRemoteControlSetting() {
723  return (Informer)super.reqInformRemoteControlSetting();
724  }
725  @Override
726  public Informer reqInformCurrentTimeSetting() {
727  return (Informer)super.reqInformCurrentTimeSetting();
728  }
729  @Override
730  public Informer reqInformCurrentDateSetting() {
731  return (Informer)super.reqInformCurrentDateSetting();
732  }
733  @Override
734  public Informer reqInformPowerLimitSetting() {
735  return (Informer)super.reqInformPowerLimitSetting();
736  }
737  @Override
738  public Informer reqInformCumulativeOperatingTime() {
739  return (Informer)super.reqInformCumulativeOperatingTime();
740  }
741  @Override
742  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
743  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
744  }
745  @Override
746  public Informer reqInformSetPropertyMap() {
747  return (Informer)super.reqInformSetPropertyMap();
748  }
749  @Override
750  public Informer reqInformGetPropertyMap() {
751  return (Informer)super.reqInformGetPropertyMap();
752  }
753 
776  public Informer reqInformDetectionThresholdLevel() {
777  reqInformProperty(EPC_DETECTION_THRESHOLD_LEVEL);
778  return this;
779  }
804  public Informer reqInformBedPresenceDetectionStatus() {
805  reqInformProperty(EPC_BED_PRESENCE_DETECTION_STATUS);
806  return this;
807  }
808  }
809 
810  public static class Proxy extends BedPresenceSensor {
811  public Proxy(byte instanceCode) {
812  super();
813  mEchoInstanceCode = instanceCode;
814  }
815  @Override
816  public byte getInstanceCode() {
817  return mEchoInstanceCode;
818  }
819  @Override
820  protected byte[] getOperationStatus() {return null;}
821  @Override
822  protected boolean setInstallationLocation(byte[] edt) {return false;}
823  @Override
824  protected byte[] getInstallationLocation() {return null;}
825  @Override
826  protected byte[] getStandardVersionInformation() {return null;}
827  @Override
828  protected byte[] getFaultStatus() {return null;}
829  @Override
830  protected byte[] getManufacturerCode() {return null;}
831  @Override
832  protected byte[] getBedPresenceDetectionStatus() {return null;}
833  }
834 
835  public static Setter setG() {
836  return setG((byte)0);
837  }
838 
839  public static Setter setG(byte instanceCode) {
840  return setG(instanceCode, true);
841  }
842 
843  public static Setter setG(boolean responseRequired) {
844  return setG((byte)0, responseRequired);
845  }
846 
847  public static Setter setG(byte instanceCode, boolean responseRequired) {
848  return new Setter(ECHO_CLASS_CODE, instanceCode
849  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
850  }
851 
852  public static Getter getG() {
853  return getG((byte)0);
854  }
855 
856  public static Getter getG(byte instanceCode) {
857  return new Getter(ECHO_CLASS_CODE, instanceCode
859  }
860 
861  public static Informer informG() {
862  return informG((byte)0);
863  }
864 
865  public static Informer informG(byte instanceCode) {
866  return new Informer(ECHO_CLASS_CODE, instanceCode
867  , EchoSocket.MULTICAST_ADDRESS, false);
868  }
869 
870 }
synchronized boolean setProperty(EchoProperty property)
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)
static Setter setG(boolean responseRequired)
synchronized boolean isValidProperty(EchoProperty property)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53