OpenECHO
 All Classes Namespaces Files Functions Variables
MicromotionSensor.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 MicromotionSensor extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x0026;
29 
30  public static final byte EPC_DETECTION_THRESHOLD_LEVEL = (byte)0xB0;
31  public static final byte EPC_MICROMOTION_DETECTION_STATUS = (byte)0xB1;
32  public static final byte EPC_DETECTION_COUNTER = (byte)0xB2;
33  public static final byte EPC_SAMPLING_COUNT = (byte)0xBC;
34  public static final byte EPC_SAMPLING_CYCLE = (byte)0xBD;
35 
36  @Override
37  protected void setupPropertyMaps() {
38  super.setupPropertyMaps();
39 
45  }
46 
47  @Override
48  public void onNew() {
49  super.onNew();
50  Echo.getEventListener().onNewMicromotionSensor(this);
51  }
52 
53  @Override
54  public short getEchoClassCode() {
55  return ECHO_CLASS_CODE;
56  }
57 
82  protected boolean setOperationStatus(byte[] edt) {return false;}
107  protected abstract byte[] getOperationStatus();
130  protected boolean setDetectionThresholdLevel(byte[] edt) {return false;}
153  protected byte[] getDetectionThresholdLevel() {return null;}
176  protected boolean isValidDetectionThresholdLevel(byte[] edt) {
177  if(edt == null || !(edt.length == 1)) return false;
178  return true;
179  }
204  protected abstract byte[] getMicromotionDetectionStatus();
229  protected boolean isValidMicromotionDetectionStatus(byte[] edt) {
230  if(edt == null || !(edt.length == 1)) return false;
231  return true;
232  }
255  protected boolean setDetectionCounter(byte[] edt) {return false;}
278  protected byte[] getDetectionCounter() {return null;}
301  protected boolean isValidDetectionCounter(byte[] edt) {
302  if(edt == null || !(edt.length == 2)) return false;
303  return true;
304  }
327  protected boolean setSamplingCount(byte[] edt) {return false;}
350  protected byte[] getSamplingCount() {return null;}
373  protected boolean isValidSamplingCount(byte[] edt) {
374  if(edt == null || !(edt.length == 2)) return false;
375  return true;
376  }
399  protected boolean setSamplingCycle(byte[] edt) {return false;}
422  protected byte[] getSamplingCycle() {return null;}
445  protected boolean isValidSamplingCycle(byte[] edt) {
446  if(edt == null || !(edt.length == 2)) return false;
447  return true;
448  }
449 
450  @Override
451  protected synchronized boolean setProperty(EchoProperty property) {
452  boolean success = super.setProperty(property);
453  if(success) return success;
454 
455  switch(property.epc) {
457  case EPC_DETECTION_COUNTER : return setDetectionCounter(property.edt);
458  case EPC_SAMPLING_COUNT : return setSamplingCount(property.edt);
459  case EPC_SAMPLING_CYCLE : return setSamplingCycle(property.edt);
460  default : return false;
461  }
462  }
463 
464  @Override
465  protected synchronized byte[] getProperty(byte epc) {
466  byte[] edt = super.getProperty(epc);
467  if(edt != null) return edt;
468 
469  switch(epc) {
473  case EPC_SAMPLING_COUNT : return getSamplingCount();
474  case EPC_SAMPLING_CYCLE : return getSamplingCycle();
475  default : return null;
476  }
477  }
478 
479  @Override
480  protected synchronized boolean isValidProperty(EchoProperty property) {
481  boolean valid = super.isValidProperty(property);
482  if(valid) return valid;
483 
484  switch(property.epc) {
487  case EPC_DETECTION_COUNTER : return isValidDetectionCounter(property.edt);
488  case EPC_SAMPLING_COUNT : return isValidSamplingCount(property.edt);
489  case EPC_SAMPLING_CYCLE : return isValidSamplingCycle(property.edt);
490  default : return false;
491  }
492  }
493 
494  @Override
495  public Setter set() {
496  return set(true);
497  }
498 
499  @Override
500  public Setter set(boolean responseRequired) {
501  return new Setter(getEchoClassCode(), getInstanceCode()
502  , getNode().getAddressStr(), responseRequired);
503  }
504 
505  @Override
506  public Getter get() {
507  return new Getter(getEchoClassCode(), getInstanceCode()
508  , getNode().getAddressStr());
509  }
510 
511  @Override
512  public Informer inform() {
513  return inform(isSelfObject());
514  }
515 
516  @Override
517  protected Informer inform(boolean multicast) {
518  String address;
519  if(multicast) {
521  } else {
522  address = getNode().getAddressStr();
523  }
524  return new Informer(getEchoClassCode(), getInstanceCode()
525  , address, isSelfObject());
526  }
527 
528  public static class Receiver extends DeviceObject.Receiver {
529 
530  @Override
531  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
532  EchoProperty property, boolean success) {
533  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
534  if(ret) return true;
535 
536  switch(property.epc) {
538  onSetDetectionThresholdLevel(eoj, tid, esv, property, success);
539  return true;
540  case EPC_DETECTION_COUNTER :
541  onSetDetectionCounter(eoj, tid, esv, property, success);
542  return true;
543  case EPC_SAMPLING_COUNT :
544  onSetSamplingCount(eoj, tid, esv, property, success);
545  return true;
546  case EPC_SAMPLING_CYCLE :
547  onSetSamplingCycle(eoj, tid, esv, property, success);
548  return true;
549  default :
550  return false;
551  }
552  }
553 
554  @Override
555  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
556  EchoProperty property, boolean success) {
557  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
558  if(ret) return true;
559 
560  switch(property.epc) {
562  onGetDetectionThresholdLevel(eoj, tid, esv, property, success);
563  return true;
565  onGetMicromotionDetectionStatus(eoj, tid, esv, property, success);
566  return true;
567  case EPC_DETECTION_COUNTER :
568  onGetDetectionCounter(eoj, tid, esv, property, success);
569  return true;
570  case EPC_SAMPLING_COUNT :
571  onGetSamplingCount(eoj, tid, esv, property, success);
572  return true;
573  case EPC_SAMPLING_CYCLE :
574  onGetSamplingCycle(eoj, tid, esv, property, success);
575  return true;
576  default :
577  return false;
578  }
579  }
580 
603  protected void onSetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
626  protected void onGetDetectionThresholdLevel(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
651  protected void onGetMicromotionDetectionStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
674  protected void onSetDetectionCounter(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
697  protected void onGetDetectionCounter(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
720  protected void onSetSamplingCount(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
743  protected void onGetSamplingCount(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
766  protected void onSetSamplingCycle(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
789  protected void onGetSamplingCycle(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
790  }
791 
792  public static class Setter extends DeviceObject.Setter {
793  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
794  , String dstEchoAddress, boolean responseRequired) {
795  super(dstEchoClassCode, dstEchoInstanceCode
796  , dstEchoAddress, responseRequired);
797  }
798 
799  @Override
800  public Setter reqSetProperty(byte epc, byte[] edt) {
801  return (Setter)super.reqSetProperty(epc, edt);
802  }
803 
804  @Override
805  public Setter reqSetOperationStatus(byte[] edt) {
806  return (Setter)super.reqSetOperationStatus(edt);
807  }
808  @Override
809  public Setter reqSetInstallationLocation(byte[] edt) {
810  return (Setter)super.reqSetInstallationLocation(edt);
811  }
812  @Override
813  public Setter reqSetCurrentLimitSetting(byte[] edt) {
814  return (Setter)super.reqSetCurrentLimitSetting(edt);
815  }
816  @Override
817  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
818  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
819  }
820  @Override
821  public Setter reqSetRemoteControlSetting(byte[] edt) {
822  return (Setter)super.reqSetRemoteControlSetting(edt);
823  }
824  @Override
825  public Setter reqSetCurrentTimeSetting(byte[] edt) {
826  return (Setter)super.reqSetCurrentTimeSetting(edt);
827  }
828  @Override
829  public Setter reqSetCurrentDateSetting(byte[] edt) {
830  return (Setter)super.reqSetCurrentDateSetting(edt);
831  }
832  @Override
833  public Setter reqSetPowerLimitSetting(byte[] edt) {
834  return (Setter)super.reqSetPowerLimitSetting(edt);
835  }
836 
859  public Setter reqSetDetectionThresholdLevel(byte[] edt) {
860  reqSetProperty(EPC_DETECTION_THRESHOLD_LEVEL, edt);
861  return this;
862  }
885  public Setter reqSetDetectionCounter(byte[] edt) {
886  reqSetProperty(EPC_DETECTION_COUNTER, edt);
887  return this;
888  }
911  public Setter reqSetSamplingCount(byte[] edt) {
912  reqSetProperty(EPC_SAMPLING_COUNT, edt);
913  return this;
914  }
937  public Setter reqSetSamplingCycle(byte[] edt) {
938  reqSetProperty(EPC_SAMPLING_CYCLE, edt);
939  return this;
940  }
941  }
942 
943  public static class Getter extends DeviceObject.Getter {
944  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
945  , String dstEchoAddress) {
946  super(dstEchoClassCode, dstEchoInstanceCode
947  , dstEchoAddress);
948  }
949 
950  @Override
951  public Getter reqGetProperty(byte epc) {
952  return (Getter)super.reqGetProperty(epc);
953  }
954 
955  @Override
956  public Getter reqGetOperationStatus() {
957  return (Getter)super.reqGetOperationStatus();
958  }
959  @Override
960  public Getter reqGetInstallationLocation() {
961  return (Getter)super.reqGetInstallationLocation();
962  }
963  @Override
964  public Getter reqGetStandardVersionInformation() {
965  return (Getter)super.reqGetStandardVersionInformation();
966  }
967  @Override
968  public Getter reqGetIdentificationNumber() {
969  return (Getter)super.reqGetIdentificationNumber();
970  }
971  @Override
972  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
973  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
974  }
975  @Override
976  public Getter reqGetMeasuredCumulativePowerConsumption() {
977  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
978  }
979  @Override
980  public Getter reqGetManufacturersFaultCode() {
981  return (Getter)super.reqGetManufacturersFaultCode();
982  }
983  @Override
984  public Getter reqGetCurrentLimitSetting() {
985  return (Getter)super.reqGetCurrentLimitSetting();
986  }
987  @Override
988  public Getter reqGetFaultStatus() {
989  return (Getter)super.reqGetFaultStatus();
990  }
991  @Override
992  public Getter reqGetFaultDescription() {
993  return (Getter)super.reqGetFaultDescription();
994  }
995  @Override
996  public Getter reqGetManufacturerCode() {
997  return (Getter)super.reqGetManufacturerCode();
998  }
999  @Override
1000  public Getter reqGetBusinessFacilityCode() {
1001  return (Getter)super.reqGetBusinessFacilityCode();
1002  }
1003  @Override
1004  public Getter reqGetProductCode() {
1005  return (Getter)super.reqGetProductCode();
1006  }
1007  @Override
1008  public Getter reqGetProductionNumber() {
1009  return (Getter)super.reqGetProductionNumber();
1010  }
1011  @Override
1012  public Getter reqGetProductionDate() {
1013  return (Getter)super.reqGetProductionDate();
1014  }
1015  @Override
1016  public Getter reqGetPowerSavingOperationSetting() {
1017  return (Getter)super.reqGetPowerSavingOperationSetting();
1018  }
1019  @Override
1020  public Getter reqGetRemoteControlSetting() {
1021  return (Getter)super.reqGetRemoteControlSetting();
1022  }
1023  @Override
1024  public Getter reqGetCurrentTimeSetting() {
1025  return (Getter)super.reqGetCurrentTimeSetting();
1026  }
1027  @Override
1028  public Getter reqGetCurrentDateSetting() {
1029  return (Getter)super.reqGetCurrentDateSetting();
1030  }
1031  @Override
1032  public Getter reqGetPowerLimitSetting() {
1033  return (Getter)super.reqGetPowerLimitSetting();
1034  }
1035  @Override
1036  public Getter reqGetCumulativeOperatingTime() {
1037  return (Getter)super.reqGetCumulativeOperatingTime();
1038  }
1039  @Override
1040  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
1041  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
1042  }
1043  @Override
1044  public Getter reqGetSetPropertyMap() {
1045  return (Getter)super.reqGetSetPropertyMap();
1046  }
1047  @Override
1048  public Getter reqGetGetPropertyMap() {
1049  return (Getter)super.reqGetGetPropertyMap();
1050  }
1051 
1074  public Getter reqGetDetectionThresholdLevel() {
1075  reqGetProperty(EPC_DETECTION_THRESHOLD_LEVEL);
1076  return this;
1077  }
1102  public Getter reqGetMicromotionDetectionStatus() {
1103  reqGetProperty(EPC_MICROMOTION_DETECTION_STATUS);
1104  return this;
1105  }
1128  public Getter reqGetDetectionCounter() {
1129  reqGetProperty(EPC_DETECTION_COUNTER);
1130  return this;
1131  }
1154  public Getter reqGetSamplingCount() {
1155  reqGetProperty(EPC_SAMPLING_COUNT);
1156  return this;
1157  }
1180  public Getter reqGetSamplingCycle() {
1181  reqGetProperty(EPC_SAMPLING_CYCLE);
1182  return this;
1183  }
1184  }
1185 
1186  public static class Informer extends DeviceObject.Informer {
1187  public Informer(short echoClassCode, byte echoInstanceCode
1188  , String dstEchoAddress, boolean isSelfObject) {
1189  super(echoClassCode, echoInstanceCode
1190  , dstEchoAddress, isSelfObject);
1191  }
1192 
1193  @Override
1194  public Informer reqInformProperty(byte epc) {
1195  return (Informer)super.reqInformProperty(epc);
1196  }
1197  @Override
1198  public Informer reqInformOperationStatus() {
1199  return (Informer)super.reqInformOperationStatus();
1200  }
1201  @Override
1202  public Informer reqInformInstallationLocation() {
1203  return (Informer)super.reqInformInstallationLocation();
1204  }
1205  @Override
1206  public Informer reqInformStandardVersionInformation() {
1207  return (Informer)super.reqInformStandardVersionInformation();
1208  }
1209  @Override
1210  public Informer reqInformIdentificationNumber() {
1211  return (Informer)super.reqInformIdentificationNumber();
1212  }
1213  @Override
1214  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
1215  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
1216  }
1217  @Override
1218  public Informer reqInformMeasuredCumulativePowerConsumption() {
1219  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
1220  }
1221  @Override
1222  public Informer reqInformManufacturersFaultCode() {
1223  return (Informer)super.reqInformManufacturersFaultCode();
1224  }
1225  @Override
1226  public Informer reqInformCurrentLimitSetting() {
1227  return (Informer)super.reqInformCurrentLimitSetting();
1228  }
1229  @Override
1230  public Informer reqInformFaultStatus() {
1231  return (Informer)super.reqInformFaultStatus();
1232  }
1233  @Override
1234  public Informer reqInformFaultDescription() {
1235  return (Informer)super.reqInformFaultDescription();
1236  }
1237  @Override
1238  public Informer reqInformManufacturerCode() {
1239  return (Informer)super.reqInformManufacturerCode();
1240  }
1241  @Override
1242  public Informer reqInformBusinessFacilityCode() {
1243  return (Informer)super.reqInformBusinessFacilityCode();
1244  }
1245  @Override
1246  public Informer reqInformProductCode() {
1247  return (Informer)super.reqInformProductCode();
1248  }
1249  @Override
1250  public Informer reqInformProductionNumber() {
1251  return (Informer)super.reqInformProductionNumber();
1252  }
1253  @Override
1254  public Informer reqInformProductionDate() {
1255  return (Informer)super.reqInformProductionDate();
1256  }
1257  @Override
1258  public Informer reqInformPowerSavingOperationSetting() {
1259  return (Informer)super.reqInformPowerSavingOperationSetting();
1260  }
1261  @Override
1262  public Informer reqInformRemoteControlSetting() {
1263  return (Informer)super.reqInformRemoteControlSetting();
1264  }
1265  @Override
1266  public Informer reqInformCurrentTimeSetting() {
1267  return (Informer)super.reqInformCurrentTimeSetting();
1268  }
1269  @Override
1270  public Informer reqInformCurrentDateSetting() {
1271  return (Informer)super.reqInformCurrentDateSetting();
1272  }
1273  @Override
1274  public Informer reqInformPowerLimitSetting() {
1275  return (Informer)super.reqInformPowerLimitSetting();
1276  }
1277  @Override
1278  public Informer reqInformCumulativeOperatingTime() {
1279  return (Informer)super.reqInformCumulativeOperatingTime();
1280  }
1281  @Override
1282  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
1283  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
1284  }
1285  @Override
1286  public Informer reqInformSetPropertyMap() {
1287  return (Informer)super.reqInformSetPropertyMap();
1288  }
1289  @Override
1290  public Informer reqInformGetPropertyMap() {
1291  return (Informer)super.reqInformGetPropertyMap();
1292  }
1293 
1316  public Informer reqInformDetectionThresholdLevel() {
1317  reqInformProperty(EPC_DETECTION_THRESHOLD_LEVEL);
1318  return this;
1319  }
1344  public Informer reqInformMicromotionDetectionStatus() {
1345  reqInformProperty(EPC_MICROMOTION_DETECTION_STATUS);
1346  return this;
1347  }
1370  public Informer reqInformDetectionCounter() {
1371  reqInformProperty(EPC_DETECTION_COUNTER);
1372  return this;
1373  }
1396  public Informer reqInformSamplingCount() {
1397  reqInformProperty(EPC_SAMPLING_COUNT);
1398  return this;
1399  }
1422  public Informer reqInformSamplingCycle() {
1423  reqInformProperty(EPC_SAMPLING_CYCLE);
1424  return this;
1425  }
1426  }
1427 
1428  public static class Proxy extends MicromotionSensor {
1429  public Proxy(byte instanceCode) {
1430  super();
1431  mEchoInstanceCode = instanceCode;
1432  }
1433  @Override
1434  public byte getInstanceCode() {
1435  return mEchoInstanceCode;
1436  }
1437  @Override
1438  protected byte[] getOperationStatus() {return null;}
1439  @Override
1440  protected boolean setInstallationLocation(byte[] edt) {return false;}
1441  @Override
1442  protected byte[] getInstallationLocation() {return null;}
1443  @Override
1444  protected byte[] getStandardVersionInformation() {return null;}
1445  @Override
1446  protected byte[] getFaultStatus() {return null;}
1447  @Override
1448  protected byte[] getManufacturerCode() {return null;}
1449  @Override
1450  protected byte[] getMicromotionDetectionStatus() {return null;}
1451  }
1452 
1453  public static Setter setG() {
1454  return setG((byte)0);
1455  }
1456 
1457  public static Setter setG(byte instanceCode) {
1458  return setG(instanceCode, true);
1459  }
1460 
1461  public static Setter setG(boolean responseRequired) {
1462  return setG((byte)0, responseRequired);
1463  }
1464 
1465  public static Setter setG(byte instanceCode, boolean responseRequired) {
1466  return new Setter(ECHO_CLASS_CODE, instanceCode
1467  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1468  }
1469 
1470  public static Getter getG() {
1471  return getG((byte)0);
1472  }
1473 
1474  public static Getter getG(byte instanceCode) {
1475  return new Getter(ECHO_CLASS_CODE, instanceCode
1477  }
1478 
1479  public static Informer informG() {
1480  return informG((byte)0);
1481  }
1482 
1483  public static Informer informG(byte instanceCode) {
1484  return new Informer(ECHO_CLASS_CODE, instanceCode
1485  , EchoSocket.MULTICAST_ADDRESS, false);
1486  }
1487 
1488 }
final void removeSetProperty(byte epc)
Definition: EchoObject.java:98
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
static Setter setG(byte instanceCode, boolean responseRequired)
final void addGetProperty(byte epc)
synchronized boolean isValidProperty(EchoProperty property)
synchronized boolean setProperty(EchoProperty property)
static Setter setG(boolean responseRequired)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53