OpenECHO
 All Classes Namespaces Files Functions Variables
Switch.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.managementoperation;
17 
25 
26 public abstract class Switch extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x05FD;
29 
30  public static final byte EPC_CONNECTED_DEVICE = (byte)0xE0;
31 
32  @Override
33  protected void setupPropertyMaps() {
34  super.setupPropertyMaps();
35 
39  }
40 
41  @Override
42  public void onNew() {
43  super.onNew();
44  Echo.getEventListener().onNewSwitch(this);
45  }
46 
47  @Override
48  public short getEchoClassCode() {
49  return ECHO_CLASS_CODE;
50  }
51 
77  protected abstract boolean setOperationStatus(byte[] edt);
103  protected abstract byte[] getOperationStatus();
127  protected boolean setConnectedDevice(byte[] edt) {return false;}
151  protected byte[] getConnectedDevice() {return null;}
175  protected boolean isValidConnectedDevice(byte[] edt) {
176  if(edt == null || !(edt.length == 12)) return false;
177  return true;
178  }
179 
180  @Override
181  protected synchronized boolean setProperty(EchoProperty property) {
182  boolean success = super.setProperty(property);
183  if(success) return success;
184 
185  switch(property.epc) {
186  case EPC_CONNECTED_DEVICE : return setConnectedDevice(property.edt);
187  default : return false;
188  }
189  }
190 
191  @Override
192  protected synchronized byte[] getProperty(byte epc) {
193  byte[] edt = super.getProperty(epc);
194  if(edt != null) return edt;
195 
196  switch(epc) {
198  default : return null;
199  }
200  }
201 
202  @Override
203  protected synchronized boolean isValidProperty(EchoProperty property) {
204  boolean valid = super.isValidProperty(property);
205  if(valid) return valid;
206 
207  switch(property.epc) {
208  case EPC_CONNECTED_DEVICE : return isValidConnectedDevice(property.edt);
209  default : return false;
210  }
211  }
212 
213  @Override
214  public Setter set() {
215  return set(true);
216  }
217 
218  @Override
219  public Setter set(boolean responseRequired) {
220  return new Setter(getEchoClassCode(), getInstanceCode()
221  , getNode().getAddressStr(), responseRequired);
222  }
223 
224  @Override
225  public Getter get() {
226  return new Getter(getEchoClassCode(), getInstanceCode()
227  , getNode().getAddressStr());
228  }
229 
230  @Override
231  public Informer inform() {
232  return inform(isSelfObject());
233  }
234 
235  @Override
236  protected Informer inform(boolean multicast) {
237  String address;
238  if(multicast) {
240  } else {
241  address = getNode().getAddressStr();
242  }
243  return new Informer(getEchoClassCode(), getInstanceCode()
244  , address, isSelfObject());
245  }
246 
247  public static class Receiver extends DeviceObject.Receiver {
248 
249  @Override
250  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
251  EchoProperty property, boolean success) {
252  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
253  if(ret) return true;
254 
255  switch(property.epc) {
256  case EPC_CONNECTED_DEVICE :
257  onSetConnectedDevice(eoj, tid, esv, property, success);
258  return true;
259  default :
260  return false;
261  }
262  }
263 
264  @Override
265  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
266  EchoProperty property, boolean success) {
267  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
268  if(ret) return true;
269 
270  switch(property.epc) {
271  case EPC_CONNECTED_DEVICE :
272  onGetConnectedDevice(eoj, tid, esv, property, success);
273  return true;
274  default :
275  return false;
276  }
277  }
278 
302  protected void onSetConnectedDevice(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
326  protected void onGetConnectedDevice(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
327  }
328 
329  public static class Setter extends DeviceObject.Setter {
330  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
331  , String dstEchoAddress, boolean responseRequired) {
332  super(dstEchoClassCode, dstEchoInstanceCode
333  , dstEchoAddress, responseRequired);
334  }
335 
336  @Override
337  public Setter reqSetProperty(byte epc, byte[] edt) {
338  return (Setter)super.reqSetProperty(epc, edt);
339  }
340 
341  @Override
342  public Setter reqSetOperationStatus(byte[] edt) {
343  return (Setter)super.reqSetOperationStatus(edt);
344  }
345  @Override
346  public Setter reqSetInstallationLocation(byte[] edt) {
347  return (Setter)super.reqSetInstallationLocation(edt);
348  }
349  @Override
350  public Setter reqSetCurrentLimitSetting(byte[] edt) {
351  return (Setter)super.reqSetCurrentLimitSetting(edt);
352  }
353  @Override
354  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
355  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
356  }
357  @Override
358  public Setter reqSetRemoteControlSetting(byte[] edt) {
359  return (Setter)super.reqSetRemoteControlSetting(edt);
360  }
361  @Override
362  public Setter reqSetCurrentTimeSetting(byte[] edt) {
363  return (Setter)super.reqSetCurrentTimeSetting(edt);
364  }
365  @Override
366  public Setter reqSetCurrentDateSetting(byte[] edt) {
367  return (Setter)super.reqSetCurrentDateSetting(edt);
368  }
369  @Override
370  public Setter reqSetPowerLimitSetting(byte[] edt) {
371  return (Setter)super.reqSetPowerLimitSetting(edt);
372  }
373 
397  public Setter reqSetConnectedDevice(byte[] edt) {
398  reqSetProperty(EPC_CONNECTED_DEVICE, edt);
399  return this;
400  }
401  }
402 
403  public static class Getter extends DeviceObject.Getter {
404  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
405  , String dstEchoAddress) {
406  super(dstEchoClassCode, dstEchoInstanceCode
407  , dstEchoAddress);
408  }
409 
410  @Override
411  public Getter reqGetProperty(byte epc) {
412  return (Getter)super.reqGetProperty(epc);
413  }
414 
415  @Override
416  public Getter reqGetOperationStatus() {
417  return (Getter)super.reqGetOperationStatus();
418  }
419  @Override
420  public Getter reqGetInstallationLocation() {
421  return (Getter)super.reqGetInstallationLocation();
422  }
423  @Override
424  public Getter reqGetStandardVersionInformation() {
425  return (Getter)super.reqGetStandardVersionInformation();
426  }
427  @Override
428  public Getter reqGetIdentificationNumber() {
429  return (Getter)super.reqGetIdentificationNumber();
430  }
431  @Override
432  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
433  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
434  }
435  @Override
436  public Getter reqGetMeasuredCumulativePowerConsumption() {
437  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
438  }
439  @Override
440  public Getter reqGetManufacturersFaultCode() {
441  return (Getter)super.reqGetManufacturersFaultCode();
442  }
443  @Override
444  public Getter reqGetCurrentLimitSetting() {
445  return (Getter)super.reqGetCurrentLimitSetting();
446  }
447  @Override
448  public Getter reqGetFaultStatus() {
449  return (Getter)super.reqGetFaultStatus();
450  }
451  @Override
452  public Getter reqGetFaultDescription() {
453  return (Getter)super.reqGetFaultDescription();
454  }
455  @Override
456  public Getter reqGetManufacturerCode() {
457  return (Getter)super.reqGetManufacturerCode();
458  }
459  @Override
460  public Getter reqGetBusinessFacilityCode() {
461  return (Getter)super.reqGetBusinessFacilityCode();
462  }
463  @Override
464  public Getter reqGetProductCode() {
465  return (Getter)super.reqGetProductCode();
466  }
467  @Override
468  public Getter reqGetProductionNumber() {
469  return (Getter)super.reqGetProductionNumber();
470  }
471  @Override
472  public Getter reqGetProductionDate() {
473  return (Getter)super.reqGetProductionDate();
474  }
475  @Override
476  public Getter reqGetPowerSavingOperationSetting() {
477  return (Getter)super.reqGetPowerSavingOperationSetting();
478  }
479  @Override
480  public Getter reqGetRemoteControlSetting() {
481  return (Getter)super.reqGetRemoteControlSetting();
482  }
483  @Override
484  public Getter reqGetCurrentTimeSetting() {
485  return (Getter)super.reqGetCurrentTimeSetting();
486  }
487  @Override
488  public Getter reqGetCurrentDateSetting() {
489  return (Getter)super.reqGetCurrentDateSetting();
490  }
491  @Override
492  public Getter reqGetPowerLimitSetting() {
493  return (Getter)super.reqGetPowerLimitSetting();
494  }
495  @Override
496  public Getter reqGetCumulativeOperatingTime() {
497  return (Getter)super.reqGetCumulativeOperatingTime();
498  }
499  @Override
500  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
501  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
502  }
503  @Override
504  public Getter reqGetSetPropertyMap() {
505  return (Getter)super.reqGetSetPropertyMap();
506  }
507  @Override
508  public Getter reqGetGetPropertyMap() {
509  return (Getter)super.reqGetGetPropertyMap();
510  }
511 
535  public Getter reqGetConnectedDevice() {
536  reqGetProperty(EPC_CONNECTED_DEVICE);
537  return this;
538  }
539  }
540 
541  public static class Informer extends DeviceObject.Informer {
542  public Informer(short echoClassCode, byte echoInstanceCode
543  , String dstEchoAddress, boolean isSelfObject) {
544  super(echoClassCode, echoInstanceCode
545  , dstEchoAddress, isSelfObject);
546  }
547 
548  @Override
549  public Informer reqInformProperty(byte epc) {
550  return (Informer)super.reqInformProperty(epc);
551  }
552  @Override
553  public Informer reqInformOperationStatus() {
554  return (Informer)super.reqInformOperationStatus();
555  }
556  @Override
557  public Informer reqInformInstallationLocation() {
558  return (Informer)super.reqInformInstallationLocation();
559  }
560  @Override
561  public Informer reqInformStandardVersionInformation() {
562  return (Informer)super.reqInformStandardVersionInformation();
563  }
564  @Override
565  public Informer reqInformIdentificationNumber() {
566  return (Informer)super.reqInformIdentificationNumber();
567  }
568  @Override
569  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
570  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
571  }
572  @Override
573  public Informer reqInformMeasuredCumulativePowerConsumption() {
574  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
575  }
576  @Override
577  public Informer reqInformManufacturersFaultCode() {
578  return (Informer)super.reqInformManufacturersFaultCode();
579  }
580  @Override
581  public Informer reqInformCurrentLimitSetting() {
582  return (Informer)super.reqInformCurrentLimitSetting();
583  }
584  @Override
585  public Informer reqInformFaultStatus() {
586  return (Informer)super.reqInformFaultStatus();
587  }
588  @Override
589  public Informer reqInformFaultDescription() {
590  return (Informer)super.reqInformFaultDescription();
591  }
592  @Override
593  public Informer reqInformManufacturerCode() {
594  return (Informer)super.reqInformManufacturerCode();
595  }
596  @Override
597  public Informer reqInformBusinessFacilityCode() {
598  return (Informer)super.reqInformBusinessFacilityCode();
599  }
600  @Override
601  public Informer reqInformProductCode() {
602  return (Informer)super.reqInformProductCode();
603  }
604  @Override
605  public Informer reqInformProductionNumber() {
606  return (Informer)super.reqInformProductionNumber();
607  }
608  @Override
609  public Informer reqInformProductionDate() {
610  return (Informer)super.reqInformProductionDate();
611  }
612  @Override
613  public Informer reqInformPowerSavingOperationSetting() {
614  return (Informer)super.reqInformPowerSavingOperationSetting();
615  }
616  @Override
617  public Informer reqInformRemoteControlSetting() {
618  return (Informer)super.reqInformRemoteControlSetting();
619  }
620  @Override
621  public Informer reqInformCurrentTimeSetting() {
622  return (Informer)super.reqInformCurrentTimeSetting();
623  }
624  @Override
625  public Informer reqInformCurrentDateSetting() {
626  return (Informer)super.reqInformCurrentDateSetting();
627  }
628  @Override
629  public Informer reqInformPowerLimitSetting() {
630  return (Informer)super.reqInformPowerLimitSetting();
631  }
632  @Override
633  public Informer reqInformCumulativeOperatingTime() {
634  return (Informer)super.reqInformCumulativeOperatingTime();
635  }
636  @Override
637  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
638  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
639  }
640  @Override
641  public Informer reqInformSetPropertyMap() {
642  return (Informer)super.reqInformSetPropertyMap();
643  }
644  @Override
645  public Informer reqInformGetPropertyMap() {
646  return (Informer)super.reqInformGetPropertyMap();
647  }
648 
672  public Informer reqInformConnectedDevice() {
673  reqInformProperty(EPC_CONNECTED_DEVICE);
674  return this;
675  }
676  }
677 
678  public static class Proxy extends Switch {
679  public Proxy(byte instanceCode) {
680  super();
681  mEchoInstanceCode = instanceCode;
682  }
683  @Override
684  public byte getInstanceCode() {
685  return mEchoInstanceCode;
686  }
687  @Override
688  protected byte[] getOperationStatus() {return null;}
689  @Override
690  protected boolean setInstallationLocation(byte[] edt) {return false;}
691  @Override
692  protected byte[] getInstallationLocation() {return null;}
693  @Override
694  protected byte[] getStandardVersionInformation() {return null;}
695  @Override
696  protected byte[] getFaultStatus() {return null;}
697  @Override
698  protected byte[] getManufacturerCode() {return null;}
699  @Override
700  protected boolean setOperationStatus(byte[] edt) {return false;}
701  }
702 
703  public static Setter setG() {
704  return setG((byte)0);
705  }
706 
707  public static Setter setG(byte instanceCode) {
708  return setG(instanceCode, true);
709  }
710 
711  public static Setter setG(boolean responseRequired) {
712  return setG((byte)0, responseRequired);
713  }
714 
715  public static Setter setG(byte instanceCode, boolean responseRequired) {
716  return new Setter(ECHO_CLASS_CODE, instanceCode
717  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
718  }
719 
720  public static Getter getG() {
721  return getG((byte)0);
722  }
723 
724  public static Getter getG(byte instanceCode) {
725  return new Getter(ECHO_CLASS_CODE, instanceCode
727  }
728 
729  public static Informer informG() {
730  return informG((byte)0);
731  }
732 
733  public static Informer informG(byte instanceCode) {
734  return new Informer(ECHO_CLASS_CODE, instanceCode
735  , EchoSocket.MULTICAST_ADDRESS, false);
736  }
737 
738 }
synchronized boolean setProperty(EchoProperty property)
Definition: Switch.java:181
final void addStatusChangeAnnouncementProperty(byte epc)
Definition: EchoObject.java:71
final void addGetProperty(byte epc)
static Setter setG(boolean responseRequired)
Definition: Switch.java:711
final void addSetProperty(byte epc)
Definition: EchoObject.java:93
static Setter setG(byte instanceCode, boolean responseRequired)
Definition: Switch.java:715
static Informer informG(byte instanceCode)
Definition: Switch.java:733
synchronized boolean isValidProperty(EchoProperty property)
Definition: Switch.java:203
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53