OpenECHO
 All Classes Namespaces Files Functions Variables
CallSensor.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 CallSensor extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x0009;
29 
30  public static final byte EPC_DETECTION_THRESHOLD_LEVEL = (byte)0xB0;
31  public static final byte EPC_CALL_STATUS = (byte)0xB1;
32  public static final byte EPC_CALL_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().onNewCallSensor(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  }
202  protected abstract byte[] getCallStatus();
227  protected boolean isValidCallStatus(byte[] edt) {
228  if(edt == null || !(edt.length == 1)) return false;
229  return true;
230  }
254  protected boolean setCallHoldingTime(byte[] edt) {return false;}
278  protected byte[] getCallHoldingTime() {return null;}
302  protected boolean isValidCallHoldingTime(byte[] edt) {
303  if(edt == null || !(edt.length == 2)) return false;
304  return true;
305  }
306 
307  @Override
308  protected synchronized boolean setProperty(EchoProperty property) {
309  boolean success = super.setProperty(property);
310  if(success) return success;
311 
312  switch(property.epc) {
314  case EPC_CALL_HOLDING_TIME : return setCallHoldingTime(property.edt);
315  default : return false;
316  }
317  }
318 
319  @Override
320  protected synchronized byte[] getProperty(byte epc) {
321  byte[] edt = super.getProperty(epc);
322  if(edt != null) return edt;
323 
324  switch(epc) {
326  case EPC_CALL_STATUS : return getCallStatus();
328  default : return null;
329  }
330  }
331 
332  @Override
333  protected synchronized boolean isValidProperty(EchoProperty property) {
334  boolean valid = super.isValidProperty(property);
335  if(valid) return valid;
336 
337  switch(property.epc) {
339  case EPC_CALL_STATUS : return isValidCallStatus(property.edt);
340  case EPC_CALL_HOLDING_TIME : return isValidCallHoldingTime(property.edt);
341  default : return false;
342  }
343  }
344 
345  @Override
346  public Setter set() {
347  return set(true);
348  }
349 
350  @Override
351  public Setter set(boolean responseRequired) {
352  return new Setter(getEchoClassCode(), getInstanceCode()
353  , getNode().getAddressStr(), responseRequired);
354  }
355 
356  @Override
357  public Getter get() {
358  return new Getter(getEchoClassCode(), getInstanceCode()
359  , getNode().getAddressStr());
360  }
361 
362  @Override
363  public Informer inform() {
364  return inform(isSelfObject());
365  }
366 
367  @Override
368  protected Informer inform(boolean multicast) {
369  String address;
370  if(multicast) {
372  } else {
373  address = getNode().getAddressStr();
374  }
375  return new Informer(getEchoClassCode(), getInstanceCode()
376  , address, isSelfObject());
377  }
378 
379  public static class Receiver extends DeviceObject.Receiver {
380 
381  @Override
382  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
383  EchoProperty property, boolean success) {
384  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
385  if(ret) return true;
386 
387  switch(property.epc) {
389  onSetDetectionThresholdLevel(eoj, tid, esv, property, success);
390  return true;
391  case EPC_CALL_HOLDING_TIME :
392  onSetCallHoldingTime(eoj, tid, esv, property, success);
393  return true;
394  default :
395  return false;
396  }
397  }
398 
399  @Override
400  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
401  EchoProperty property, boolean success) {
402  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
403  if(ret) return true;
404 
405  switch(property.epc) {
407  onGetDetectionThresholdLevel(eoj, tid, esv, property, success);
408  return true;
409  case EPC_CALL_STATUS :
410  onGetCallStatus(eoj, tid, esv, property, success);
411  return true;
412  case EPC_CALL_HOLDING_TIME :
413  onGetCallHoldingTime(eoj, tid, esv, property, success);
414  return true;
415  default :
416  return false;
417  }
418  }
419 
442  protected void onSetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
465  protected void onGetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
490  protected void onGetCallStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
514  protected void onSetCallHoldingTime(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
538  protected void onGetCallHoldingTime(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
539  }
540 
541  public static class Setter extends DeviceObject.Setter {
542  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
543  , String dstEchoAddress, boolean responseRequired) {
544  super(dstEchoClassCode, dstEchoInstanceCode
545  , dstEchoAddress, responseRequired);
546  }
547 
548  @Override
549  public Setter reqSetProperty(byte epc, byte[] edt) {
550  return (Setter)super.reqSetProperty(epc, edt);
551  }
552 
553  @Override
554  public Setter reqSetOperationStatus(byte[] edt) {
555  return (Setter)super.reqSetOperationStatus(edt);
556  }
557  @Override
558  public Setter reqSetInstallationLocation(byte[] edt) {
559  return (Setter)super.reqSetInstallationLocation(edt);
560  }
561  @Override
562  public Setter reqSetCurrentLimitSetting(byte[] edt) {
563  return (Setter)super.reqSetCurrentLimitSetting(edt);
564  }
565  @Override
566  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
567  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
568  }
569  @Override
570  public Setter reqSetRemoteControlSetting(byte[] edt) {
571  return (Setter)super.reqSetRemoteControlSetting(edt);
572  }
573  @Override
574  public Setter reqSetCurrentTimeSetting(byte[] edt) {
575  return (Setter)super.reqSetCurrentTimeSetting(edt);
576  }
577  @Override
578  public Setter reqSetCurrentDateSetting(byte[] edt) {
579  return (Setter)super.reqSetCurrentDateSetting(edt);
580  }
581  @Override
582  public Setter reqSetPowerLimitSetting(byte[] edt) {
583  return (Setter)super.reqSetPowerLimitSetting(edt);
584  }
585 
608  public Setter reqSetDetectionThresholdLevel(byte[] edt) {
609  reqSetProperty(EPC_DETECTION_THRESHOLD_LEVEL, edt);
610  return this;
611  }
635  public Setter reqSetCallHoldingTime(byte[] edt) {
636  reqSetProperty(EPC_CALL_HOLDING_TIME, edt);
637  return this;
638  }
639  }
640 
641  public static class Getter extends DeviceObject.Getter {
642  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
643  , String dstEchoAddress) {
644  super(dstEchoClassCode, dstEchoInstanceCode
645  , dstEchoAddress);
646  }
647 
648  @Override
649  public Getter reqGetProperty(byte epc) {
650  return (Getter)super.reqGetProperty(epc);
651  }
652 
653  @Override
654  public Getter reqGetOperationStatus() {
655  return (Getter)super.reqGetOperationStatus();
656  }
657  @Override
658  public Getter reqGetInstallationLocation() {
659  return (Getter)super.reqGetInstallationLocation();
660  }
661  @Override
662  public Getter reqGetStandardVersionInformation() {
663  return (Getter)super.reqGetStandardVersionInformation();
664  }
665  @Override
666  public Getter reqGetIdentificationNumber() {
667  return (Getter)super.reqGetIdentificationNumber();
668  }
669  @Override
670  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
671  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
672  }
673  @Override
674  public Getter reqGetMeasuredCumulativePowerConsumption() {
675  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
676  }
677  @Override
678  public Getter reqGetManufacturersFaultCode() {
679  return (Getter)super.reqGetManufacturersFaultCode();
680  }
681  @Override
682  public Getter reqGetCurrentLimitSetting() {
683  return (Getter)super.reqGetCurrentLimitSetting();
684  }
685  @Override
686  public Getter reqGetFaultStatus() {
687  return (Getter)super.reqGetFaultStatus();
688  }
689  @Override
690  public Getter reqGetFaultDescription() {
691  return (Getter)super.reqGetFaultDescription();
692  }
693  @Override
694  public Getter reqGetManufacturerCode() {
695  return (Getter)super.reqGetManufacturerCode();
696  }
697  @Override
698  public Getter reqGetBusinessFacilityCode() {
699  return (Getter)super.reqGetBusinessFacilityCode();
700  }
701  @Override
702  public Getter reqGetProductCode() {
703  return (Getter)super.reqGetProductCode();
704  }
705  @Override
706  public Getter reqGetProductionNumber() {
707  return (Getter)super.reqGetProductionNumber();
708  }
709  @Override
710  public Getter reqGetProductionDate() {
711  return (Getter)super.reqGetProductionDate();
712  }
713  @Override
714  public Getter reqGetPowerSavingOperationSetting() {
715  return (Getter)super.reqGetPowerSavingOperationSetting();
716  }
717  @Override
718  public Getter reqGetRemoteControlSetting() {
719  return (Getter)super.reqGetRemoteControlSetting();
720  }
721  @Override
722  public Getter reqGetCurrentTimeSetting() {
723  return (Getter)super.reqGetCurrentTimeSetting();
724  }
725  @Override
726  public Getter reqGetCurrentDateSetting() {
727  return (Getter)super.reqGetCurrentDateSetting();
728  }
729  @Override
730  public Getter reqGetPowerLimitSetting() {
731  return (Getter)super.reqGetPowerLimitSetting();
732  }
733  @Override
734  public Getter reqGetCumulativeOperatingTime() {
735  return (Getter)super.reqGetCumulativeOperatingTime();
736  }
737  @Override
738  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
739  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
740  }
741  @Override
742  public Getter reqGetSetPropertyMap() {
743  return (Getter)super.reqGetSetPropertyMap();
744  }
745  @Override
746  public Getter reqGetGetPropertyMap() {
747  return (Getter)super.reqGetGetPropertyMap();
748  }
749 
772  public Getter reqGetDetectionThresholdLevel() {
773  reqGetProperty(EPC_DETECTION_THRESHOLD_LEVEL);
774  return this;
775  }
800  public Getter reqGetCallStatus() {
801  reqGetProperty(EPC_CALL_STATUS);
802  return this;
803  }
827  public Getter reqGetCallHoldingTime() {
828  reqGetProperty(EPC_CALL_HOLDING_TIME);
829  return this;
830  }
831  }
832 
833  public static class Informer extends DeviceObject.Informer {
834  public Informer(short echoClassCode, byte echoInstanceCode
835  , String dstEchoAddress, boolean isSelfObject) {
836  super(echoClassCode, echoInstanceCode
837  , dstEchoAddress, isSelfObject);
838  }
839 
840  @Override
841  public Informer reqInformProperty(byte epc) {
842  return (Informer)super.reqInformProperty(epc);
843  }
844  @Override
845  public Informer reqInformOperationStatus() {
846  return (Informer)super.reqInformOperationStatus();
847  }
848  @Override
849  public Informer reqInformInstallationLocation() {
850  return (Informer)super.reqInformInstallationLocation();
851  }
852  @Override
853  public Informer reqInformStandardVersionInformation() {
854  return (Informer)super.reqInformStandardVersionInformation();
855  }
856  @Override
857  public Informer reqInformIdentificationNumber() {
858  return (Informer)super.reqInformIdentificationNumber();
859  }
860  @Override
861  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
862  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
863  }
864  @Override
865  public Informer reqInformMeasuredCumulativePowerConsumption() {
866  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
867  }
868  @Override
869  public Informer reqInformManufacturersFaultCode() {
870  return (Informer)super.reqInformManufacturersFaultCode();
871  }
872  @Override
873  public Informer reqInformCurrentLimitSetting() {
874  return (Informer)super.reqInformCurrentLimitSetting();
875  }
876  @Override
877  public Informer reqInformFaultStatus() {
878  return (Informer)super.reqInformFaultStatus();
879  }
880  @Override
881  public Informer reqInformFaultDescription() {
882  return (Informer)super.reqInformFaultDescription();
883  }
884  @Override
885  public Informer reqInformManufacturerCode() {
886  return (Informer)super.reqInformManufacturerCode();
887  }
888  @Override
889  public Informer reqInformBusinessFacilityCode() {
890  return (Informer)super.reqInformBusinessFacilityCode();
891  }
892  @Override
893  public Informer reqInformProductCode() {
894  return (Informer)super.reqInformProductCode();
895  }
896  @Override
897  public Informer reqInformProductionNumber() {
898  return (Informer)super.reqInformProductionNumber();
899  }
900  @Override
901  public Informer reqInformProductionDate() {
902  return (Informer)super.reqInformProductionDate();
903  }
904  @Override
905  public Informer reqInformPowerSavingOperationSetting() {
906  return (Informer)super.reqInformPowerSavingOperationSetting();
907  }
908  @Override
909  public Informer reqInformRemoteControlSetting() {
910  return (Informer)super.reqInformRemoteControlSetting();
911  }
912  @Override
913  public Informer reqInformCurrentTimeSetting() {
914  return (Informer)super.reqInformCurrentTimeSetting();
915  }
916  @Override
917  public Informer reqInformCurrentDateSetting() {
918  return (Informer)super.reqInformCurrentDateSetting();
919  }
920  @Override
921  public Informer reqInformPowerLimitSetting() {
922  return (Informer)super.reqInformPowerLimitSetting();
923  }
924  @Override
925  public Informer reqInformCumulativeOperatingTime() {
926  return (Informer)super.reqInformCumulativeOperatingTime();
927  }
928  @Override
929  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
930  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
931  }
932  @Override
933  public Informer reqInformSetPropertyMap() {
934  return (Informer)super.reqInformSetPropertyMap();
935  }
936  @Override
937  public Informer reqInformGetPropertyMap() {
938  return (Informer)super.reqInformGetPropertyMap();
939  }
940 
963  public Informer reqInformDetectionThresholdLevel() {
964  reqInformProperty(EPC_DETECTION_THRESHOLD_LEVEL);
965  return this;
966  }
991  public Informer reqInformCallStatus() {
992  reqInformProperty(EPC_CALL_STATUS);
993  return this;
994  }
1018  public Informer reqInformCallHoldingTime() {
1019  reqInformProperty(EPC_CALL_HOLDING_TIME);
1020  return this;
1021  }
1022  }
1023 
1024  public static class Proxy extends CallSensor {
1025  public Proxy(byte instanceCode) {
1026  super();
1027  mEchoInstanceCode = instanceCode;
1028  }
1029  @Override
1030  public byte getInstanceCode() {
1031  return mEchoInstanceCode;
1032  }
1033  @Override
1034  protected byte[] getOperationStatus() {return null;}
1035  @Override
1036  protected boolean setInstallationLocation(byte[] edt) {return false;}
1037  @Override
1038  protected byte[] getInstallationLocation() {return null;}
1039  @Override
1040  protected byte[] getStandardVersionInformation() {return null;}
1041  @Override
1042  protected byte[] getFaultStatus() {return null;}
1043  @Override
1044  protected byte[] getManufacturerCode() {return null;}
1045  @Override
1046  protected byte[] getCallStatus() {return null;}
1047  }
1048 
1049  public static Setter setG() {
1050  return setG((byte)0);
1051  }
1052 
1053  public static Setter setG(byte instanceCode) {
1054  return setG(instanceCode, true);
1055  }
1056 
1057  public static Setter setG(boolean responseRequired) {
1058  return setG((byte)0, responseRequired);
1059  }
1060 
1061  public static Setter setG(byte instanceCode, boolean responseRequired) {
1062  return new Setter(ECHO_CLASS_CODE, instanceCode
1063  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1064  }
1065 
1066  public static Getter getG() {
1067  return getG((byte)0);
1068  }
1069 
1070  public static Getter getG(byte instanceCode) {
1071  return new Getter(ECHO_CLASS_CODE, instanceCode
1073  }
1074 
1075  public static Informer informG() {
1076  return informG((byte)0);
1077  }
1078 
1079  public static Informer informG(byte instanceCode) {
1080  return new Informer(ECHO_CLASS_CODE, instanceCode
1081  , EchoSocket.MULTICAST_ADDRESS, false);
1082  }
1083 
1084 }
synchronized boolean setProperty(EchoProperty property)
Setter set(boolean responseRequired)
static Setter setG(byte instanceCode)
final void removeSetProperty(byte epc)
Definition: EchoObject.java:98
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
final void addGetProperty(byte epc)
static Getter getG(byte instanceCode)
synchronized boolean isValidProperty(EchoProperty property)
synchronized byte[] getProperty(byte epc)
static Setter setG(byte instanceCode, boolean responseRequired)
static Informer informG(byte instanceCode)
static Setter setG(boolean responseRequired)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53