OpenECHO
 All Classes Namespaces Files Functions Variables
WattHourMeter.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.housingfacilities;
17 
25 
26 public abstract class WattHourMeter extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x0280;
29 
30  public static final byte EPC_INTEGRAL_ELECTRIC_ENERGY_MEASUREMENT_VALUE = (byte)0xE0;
31  public static final byte EPC_INTEGRAL_ELECTRIC_ENERGY_UNIT = (byte)0xE2;
32  public static final byte EPC_INTEGRAL_ELECTRIC_ENERGY_MEASUREMENT_LOG1 = (byte)0xE3;
33  public static final byte EPC_INTEGRAL_ELECTRIC_ENERGY_MEASUREMENT_LOG2 = (byte)0xE4;
34 
35  @Override
36  protected void setupPropertyMaps() {
37  super.setupPropertyMaps();
38 
44  }
45 
46  @Override
47  public void onNew() {
48  super.onNew();
49  Echo.getEventListener().onNewWattHourMeter(this);
50  }
51 
52  @Override
53  public short getEchoClassCode() {
54  return ECHO_CLASS_CODE;
55  }
56 
81  protected boolean setOperationStatus(byte[] edt) {return false;}
106  protected abstract byte[] getOperationStatus();
131  protected abstract byte[] getIntegralElectricEnergyMeasurementValue();
156  protected boolean isValidIntegralElectricEnergyMeasurementValue(byte[] edt) {
157  if(edt == null || !(edt.length == 4)) return false;
158  return true;
159  }
183  protected abstract byte[] getIntegralElectricEnergyUnit();
207  protected boolean isValidIntegralElectricEnergyUnit(byte[] edt) {
208  if(edt == null || !(edt.length == 1)) return false;
209  return true;
210  }
236  protected byte[] getIntegralElectricEnergyMeasurementLog1() {return null;}
262  protected boolean isValidIntegralElectricEnergyMeasurementLog1(byte[] edt) {
263  if(edt == null || !(edt.length == 192)) return false;
264  return true;
265  }
294  protected byte[] getIntegralElectricEnergyMeasurementLog2() {return null;}
323  protected boolean isValidIntegralElectricEnergyMeasurementLog2(byte[] edt) {
324  if(edt == null || !(edt.length == 192)) return false;
325  return true;
326  }
327 
328  @Override
329  protected synchronized boolean setProperty(EchoProperty property) {
330  boolean success = super.setProperty(property);
331  if(success) return success;
332 
333  switch(property.epc) {
334  default : return false;
335  }
336  }
337 
338  @Override
339  protected synchronized byte[] getProperty(byte epc) {
340  byte[] edt = super.getProperty(epc);
341  if(edt != null) return edt;
342 
343  switch(epc) {
348  default : return null;
349  }
350  }
351 
352  @Override
353  protected synchronized boolean isValidProperty(EchoProperty property) {
354  boolean valid = super.isValidProperty(property);
355  if(valid) return valid;
356 
357  switch(property.epc) {
362  default : return false;
363  }
364  }
365 
366  @Override
367  public Setter set() {
368  return set(true);
369  }
370 
371  @Override
372  public Setter set(boolean responseRequired) {
373  return new Setter(getEchoClassCode(), getInstanceCode()
374  , getNode().getAddressStr(), responseRequired);
375  }
376 
377  @Override
378  public Getter get() {
379  return new Getter(getEchoClassCode(), getInstanceCode()
380  , getNode().getAddressStr());
381  }
382 
383  @Override
384  public Informer inform() {
385  return inform(isSelfObject());
386  }
387 
388  @Override
389  protected Informer inform(boolean multicast) {
390  String address;
391  if(multicast) {
393  } else {
394  address = getNode().getAddressStr();
395  }
396  return new Informer(getEchoClassCode(), getInstanceCode()
397  , address, isSelfObject());
398  }
399 
400  public static class Receiver extends DeviceObject.Receiver {
401 
402  @Override
403  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
404  EchoProperty property, boolean success) {
405  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
406  if(ret) return true;
407 
408  switch(property.epc) {
409  default :
410  return false;
411  }
412  }
413 
414  @Override
415  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
416  EchoProperty property, boolean success) {
417  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
418  if(ret) return true;
419 
420  switch(property.epc) {
422  onGetIntegralElectricEnergyMeasurementValue(eoj, tid, esv, property, success);
423  return true;
425  onGetIntegralElectricEnergyUnit(eoj, tid, esv, property, success);
426  return true;
428  onGetIntegralElectricEnergyMeasurementLog1(eoj, tid, esv, property, success);
429  return true;
431  onGetIntegralElectricEnergyMeasurementLog2(eoj, tid, esv, property, success);
432  return true;
433  default :
434  return false;
435  }
436  }
437 
462  protected void onGetIntegralElectricEnergyMeasurementValue(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
486  protected void onGetIntegralElectricEnergyUnit(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
512  protected void onGetIntegralElectricEnergyMeasurementLog1(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
541  protected void onGetIntegralElectricEnergyMeasurementLog2(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
542  }
543 
544  public static class Setter extends DeviceObject.Setter {
545  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
546  , String dstEchoAddress, boolean responseRequired) {
547  super(dstEchoClassCode, dstEchoInstanceCode
548  , dstEchoAddress, responseRequired);
549  }
550 
551  @Override
552  public Setter reqSetProperty(byte epc, byte[] edt) {
553  return (Setter)super.reqSetProperty(epc, edt);
554  }
555 
556  @Override
557  public Setter reqSetOperationStatus(byte[] edt) {
558  return (Setter)super.reqSetOperationStatus(edt);
559  }
560  @Override
561  public Setter reqSetInstallationLocation(byte[] edt) {
562  return (Setter)super.reqSetInstallationLocation(edt);
563  }
564  @Override
565  public Setter reqSetCurrentLimitSetting(byte[] edt) {
566  return (Setter)super.reqSetCurrentLimitSetting(edt);
567  }
568  @Override
569  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
570  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
571  }
572  @Override
573  public Setter reqSetRemoteControlSetting(byte[] edt) {
574  return (Setter)super.reqSetRemoteControlSetting(edt);
575  }
576  @Override
577  public Setter reqSetCurrentTimeSetting(byte[] edt) {
578  return (Setter)super.reqSetCurrentTimeSetting(edt);
579  }
580  @Override
581  public Setter reqSetCurrentDateSetting(byte[] edt) {
582  return (Setter)super.reqSetCurrentDateSetting(edt);
583  }
584  @Override
585  public Setter reqSetPowerLimitSetting(byte[] edt) {
586  return (Setter)super.reqSetPowerLimitSetting(edt);
587  }
588 
589  }
590 
591  public static class Getter extends DeviceObject.Getter {
592  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
593  , String dstEchoAddress) {
594  super(dstEchoClassCode, dstEchoInstanceCode
595  , dstEchoAddress);
596  }
597 
598  @Override
599  public Getter reqGetProperty(byte epc) {
600  return (Getter)super.reqGetProperty(epc);
601  }
602 
603  @Override
604  public Getter reqGetOperationStatus() {
605  return (Getter)super.reqGetOperationStatus();
606  }
607  @Override
608  public Getter reqGetInstallationLocation() {
609  return (Getter)super.reqGetInstallationLocation();
610  }
611  @Override
612  public Getter reqGetStandardVersionInformation() {
613  return (Getter)super.reqGetStandardVersionInformation();
614  }
615  @Override
616  public Getter reqGetIdentificationNumber() {
617  return (Getter)super.reqGetIdentificationNumber();
618  }
619  @Override
620  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
621  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
622  }
623  @Override
624  public Getter reqGetMeasuredCumulativePowerConsumption() {
625  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
626  }
627  @Override
628  public Getter reqGetManufacturersFaultCode() {
629  return (Getter)super.reqGetManufacturersFaultCode();
630  }
631  @Override
632  public Getter reqGetCurrentLimitSetting() {
633  return (Getter)super.reqGetCurrentLimitSetting();
634  }
635  @Override
636  public Getter reqGetFaultStatus() {
637  return (Getter)super.reqGetFaultStatus();
638  }
639  @Override
640  public Getter reqGetFaultDescription() {
641  return (Getter)super.reqGetFaultDescription();
642  }
643  @Override
644  public Getter reqGetManufacturerCode() {
645  return (Getter)super.reqGetManufacturerCode();
646  }
647  @Override
648  public Getter reqGetBusinessFacilityCode() {
649  return (Getter)super.reqGetBusinessFacilityCode();
650  }
651  @Override
652  public Getter reqGetProductCode() {
653  return (Getter)super.reqGetProductCode();
654  }
655  @Override
656  public Getter reqGetProductionNumber() {
657  return (Getter)super.reqGetProductionNumber();
658  }
659  @Override
660  public Getter reqGetProductionDate() {
661  return (Getter)super.reqGetProductionDate();
662  }
663  @Override
664  public Getter reqGetPowerSavingOperationSetting() {
665  return (Getter)super.reqGetPowerSavingOperationSetting();
666  }
667  @Override
668  public Getter reqGetRemoteControlSetting() {
669  return (Getter)super.reqGetRemoteControlSetting();
670  }
671  @Override
672  public Getter reqGetCurrentTimeSetting() {
673  return (Getter)super.reqGetCurrentTimeSetting();
674  }
675  @Override
676  public Getter reqGetCurrentDateSetting() {
677  return (Getter)super.reqGetCurrentDateSetting();
678  }
679  @Override
680  public Getter reqGetPowerLimitSetting() {
681  return (Getter)super.reqGetPowerLimitSetting();
682  }
683  @Override
684  public Getter reqGetCumulativeOperatingTime() {
685  return (Getter)super.reqGetCumulativeOperatingTime();
686  }
687  @Override
688  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
689  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
690  }
691  @Override
692  public Getter reqGetSetPropertyMap() {
693  return (Getter)super.reqGetSetPropertyMap();
694  }
695  @Override
696  public Getter reqGetGetPropertyMap() {
697  return (Getter)super.reqGetGetPropertyMap();
698  }
699 
724  public Getter reqGetIntegralElectricEnergyMeasurementValue() {
726  return this;
727  }
751  public Getter reqGetIntegralElectricEnergyUnit() {
752  reqGetProperty(EPC_INTEGRAL_ELECTRIC_ENERGY_UNIT);
753  return this;
754  }
780  public Getter reqGetIntegralElectricEnergyMeasurementLog1() {
782  return this;
783  }
812  public Getter reqGetIntegralElectricEnergyMeasurementLog2() {
814  return this;
815  }
816  }
817 
818  public static class Informer extends DeviceObject.Informer {
819  public Informer(short echoClassCode, byte echoInstanceCode
820  , String dstEchoAddress, boolean isSelfObject) {
821  super(echoClassCode, echoInstanceCode
822  , dstEchoAddress, isSelfObject);
823  }
824 
825  @Override
826  public Informer reqInformProperty(byte epc) {
827  return (Informer)super.reqInformProperty(epc);
828  }
829  @Override
830  public Informer reqInformOperationStatus() {
831  return (Informer)super.reqInformOperationStatus();
832  }
833  @Override
834  public Informer reqInformInstallationLocation() {
835  return (Informer)super.reqInformInstallationLocation();
836  }
837  @Override
838  public Informer reqInformStandardVersionInformation() {
839  return (Informer)super.reqInformStandardVersionInformation();
840  }
841  @Override
842  public Informer reqInformIdentificationNumber() {
843  return (Informer)super.reqInformIdentificationNumber();
844  }
845  @Override
846  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
847  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
848  }
849  @Override
850  public Informer reqInformMeasuredCumulativePowerConsumption() {
851  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
852  }
853  @Override
854  public Informer reqInformManufacturersFaultCode() {
855  return (Informer)super.reqInformManufacturersFaultCode();
856  }
857  @Override
858  public Informer reqInformCurrentLimitSetting() {
859  return (Informer)super.reqInformCurrentLimitSetting();
860  }
861  @Override
862  public Informer reqInformFaultStatus() {
863  return (Informer)super.reqInformFaultStatus();
864  }
865  @Override
866  public Informer reqInformFaultDescription() {
867  return (Informer)super.reqInformFaultDescription();
868  }
869  @Override
870  public Informer reqInformManufacturerCode() {
871  return (Informer)super.reqInformManufacturerCode();
872  }
873  @Override
874  public Informer reqInformBusinessFacilityCode() {
875  return (Informer)super.reqInformBusinessFacilityCode();
876  }
877  @Override
878  public Informer reqInformProductCode() {
879  return (Informer)super.reqInformProductCode();
880  }
881  @Override
882  public Informer reqInformProductionNumber() {
883  return (Informer)super.reqInformProductionNumber();
884  }
885  @Override
886  public Informer reqInformProductionDate() {
887  return (Informer)super.reqInformProductionDate();
888  }
889  @Override
890  public Informer reqInformPowerSavingOperationSetting() {
891  return (Informer)super.reqInformPowerSavingOperationSetting();
892  }
893  @Override
894  public Informer reqInformRemoteControlSetting() {
895  return (Informer)super.reqInformRemoteControlSetting();
896  }
897  @Override
898  public Informer reqInformCurrentTimeSetting() {
899  return (Informer)super.reqInformCurrentTimeSetting();
900  }
901  @Override
902  public Informer reqInformCurrentDateSetting() {
903  return (Informer)super.reqInformCurrentDateSetting();
904  }
905  @Override
906  public Informer reqInformPowerLimitSetting() {
907  return (Informer)super.reqInformPowerLimitSetting();
908  }
909  @Override
910  public Informer reqInformCumulativeOperatingTime() {
911  return (Informer)super.reqInformCumulativeOperatingTime();
912  }
913  @Override
914  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
915  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
916  }
917  @Override
918  public Informer reqInformSetPropertyMap() {
919  return (Informer)super.reqInformSetPropertyMap();
920  }
921  @Override
922  public Informer reqInformGetPropertyMap() {
923  return (Informer)super.reqInformGetPropertyMap();
924  }
925 
950  public Informer reqInformIntegralElectricEnergyMeasurementValue() {
952  return this;
953  }
977  public Informer reqInformIntegralElectricEnergyUnit() {
978  reqInformProperty(EPC_INTEGRAL_ELECTRIC_ENERGY_UNIT);
979  return this;
980  }
1006  public Informer reqInformIntegralElectricEnergyMeasurementLog1() {
1008  return this;
1009  }
1038  public Informer reqInformIntegralElectricEnergyMeasurementLog2() {
1040  return this;
1041  }
1042  }
1043 
1044  public static class Proxy extends WattHourMeter {
1045  public Proxy(byte instanceCode) {
1046  super();
1047  mEchoInstanceCode = instanceCode;
1048  }
1049  @Override
1050  public byte getInstanceCode() {
1051  return mEchoInstanceCode;
1052  }
1053  @Override
1054  protected byte[] getOperationStatus() {return null;}
1055  @Override
1056  protected boolean setInstallationLocation(byte[] edt) {return false;}
1057  @Override
1058  protected byte[] getInstallationLocation() {return null;}
1059  @Override
1060  protected byte[] getStandardVersionInformation() {return null;}
1061  @Override
1062  protected byte[] getFaultStatus() {return null;}
1063  @Override
1064  protected byte[] getManufacturerCode() {return null;}
1065  @Override
1066  protected byte[] getIntegralElectricEnergyMeasurementValue() {return null;}
1067  @Override
1068  protected byte[] getIntegralElectricEnergyUnit() {return null;}
1069  }
1070 
1071  public static Setter setG() {
1072  return setG((byte)0);
1073  }
1074 
1075  public static Setter setG(byte instanceCode) {
1076  return setG(instanceCode, true);
1077  }
1078 
1079  public static Setter setG(boolean responseRequired) {
1080  return setG((byte)0, responseRequired);
1081  }
1082 
1083  public static Setter setG(byte instanceCode, boolean responseRequired) {
1084  return new Setter(ECHO_CLASS_CODE, instanceCode
1085  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1086  }
1087 
1088  public static Getter getG() {
1089  return getG((byte)0);
1090  }
1091 
1092  public static Getter getG(byte instanceCode) {
1093  return new Getter(ECHO_CLASS_CODE, instanceCode
1095  }
1096 
1097  public static Informer informG() {
1098  return informG((byte)0);
1099  }
1100 
1101  public static Informer informG(byte instanceCode) {
1102  return new Informer(ECHO_CLASS_CODE, instanceCode
1103  , EchoSocket.MULTICAST_ADDRESS, false);
1104  }
1105 
1106 }
synchronized boolean isValidProperty(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)
synchronized boolean setProperty(EchoProperty property)
static Setter setG(byte instanceCode, boolean responseRequired)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53