OpenECHO
 All Classes Namespaces Files Functions Variables
Television.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.audiovisual;
17 
25 
26 public abstract class Television extends DeviceObject {
27 
28  public static final short ECHO_CLASS_CODE = (short)0x0602;
29 
30  public static final byte EPC_DISPLAY_CONTROL_SETTING = (byte)0xB0;
31  public static final byte EPC_CHARACTER_STRING_SETTING_ACCEPTANCE_STATUS = (byte)0xB1;
32  public static final byte EPC_SUPPORTED_CHARACTER_CODES = (byte)0xB2;
33  public static final byte EPC_CHARACTER_STRING_TO_PRESENT_TO_THE_USER = (byte)0xB3;
34  public static final byte EPC_LENGTH_OF_CHARACTER_STRING_ACCEPTED = (byte)0xB4;
35 
36  @Override
37  protected void setupPropertyMaps() {
38  super.setupPropertyMaps();
39 
48  }
49 
50  @Override
51  public void onNew() {
52  super.onNew();
53  Echo.getEventListener().onNewTelevision(this);
54  }
55 
56  @Override
57  public short getEchoClassCode() {
58  return ECHO_CLASS_CODE;
59  }
60 
87  protected abstract boolean setOperationStatus(byte[] edt);
114  protected abstract byte[] getOperationStatus();
139  protected boolean setDisplayControlSetting(byte[] edt) {return false;}
164  protected byte[] getDisplayControlSetting() {return null;}
189  protected boolean isValidDisplayControlSetting(byte[] edt) {
190  if(edt == null || !(edt.length == 1)) return false;
191  return true;
192  }
219  protected abstract byte[] getCharacterStringSettingAcceptanceStatus();
246  protected boolean isValidCharacterStringSettingAcceptanceStatus(byte[] edt) {
247  if(edt == null || !(edt.length == 1)) return false;
248  return true;
249  }
275  protected abstract byte[] getSupportedCharacterCodes();
301  protected boolean isValidSupportedCharacterCodes(byte[] edt) {
302  if(edt == null || !(edt.length == 2)) return false;
303  return true;
304  }
328  protected abstract boolean setCharacterStringToPresentToTheUser(byte[] edt);
352  protected byte[] getCharacterStringToPresentToTheUser() {return null;}
376  protected boolean isValidCharacterStringToPresentToTheUser(byte[] edt) {
377  if(edt == null || !(edt.length <= 247)) return false;
378  return true;
379  }
405  protected abstract byte[] getLengthOfCharacterStringAccepted();
431  protected boolean isValidLengthOfCharacterStringAccepted(byte[] edt) {
432  if(edt == null || !(edt.length == 2)) return false;
433  return true;
434  }
435 
436  @Override
437  protected synchronized boolean setProperty(EchoProperty property) {
438  boolean success = super.setProperty(property);
439  if(success) return success;
440 
441  switch(property.epc) {
444  default : return false;
445  }
446  }
447 
448  @Override
449  protected synchronized byte[] getProperty(byte epc) {
450  byte[] edt = super.getProperty(epc);
451  if(edt != null) return edt;
452 
453  switch(epc) {
459  default : return null;
460  }
461  }
462 
463  @Override
464  protected synchronized boolean isValidProperty(EchoProperty property) {
465  boolean valid = super.isValidProperty(property);
466  if(valid) return valid;
467 
468  switch(property.epc) {
474  default : return false;
475  }
476  }
477 
478  @Override
479  public Setter set() {
480  return set(true);
481  }
482 
483  @Override
484  public Setter set(boolean responseRequired) {
485  return new Setter(getEchoClassCode(), getInstanceCode()
486  , getNode().getAddressStr(), responseRequired);
487  }
488 
489  @Override
490  public Getter get() {
491  return new Getter(getEchoClassCode(), getInstanceCode()
492  , getNode().getAddressStr());
493  }
494 
495  @Override
496  public Informer inform() {
497  return inform(isSelfObject());
498  }
499 
500  @Override
501  protected Informer inform(boolean multicast) {
502  String address;
503  if(multicast) {
505  } else {
506  address = getNode().getAddressStr();
507  }
508  return new Informer(getEchoClassCode(), getInstanceCode()
509  , address, isSelfObject());
510  }
511 
512  public static class Receiver extends DeviceObject.Receiver {
513 
514  @Override
515  protected boolean onSetProperty(EchoObject eoj, short tid, byte esv,
516  EchoProperty property, boolean success) {
517  boolean ret = super.onSetProperty(eoj, tid, esv, property, success);
518  if(ret) return true;
519 
520  switch(property.epc) {
522  onSetDisplayControlSetting(eoj, tid, esv, property, success);
523  return true;
525  onSetCharacterStringToPresentToTheUser(eoj, tid, esv, property, success);
526  return true;
527  default :
528  return false;
529  }
530  }
531 
532  @Override
533  protected boolean onGetProperty(EchoObject eoj, short tid, byte esv,
534  EchoProperty property, boolean success) {
535  boolean ret = super.onGetProperty(eoj, tid, esv, property, success);
536  if(ret) return true;
537 
538  switch(property.epc) {
540  onGetDisplayControlSetting(eoj, tid, esv, property, success);
541  return true;
543  onGetCharacterStringSettingAcceptanceStatus(eoj, tid, esv, property, success);
544  return true;
546  onGetSupportedCharacterCodes(eoj, tid, esv, property, success);
547  return true;
549  onGetCharacterStringToPresentToTheUser(eoj, tid, esv, property, success);
550  return true;
552  onGetLengthOfCharacterStringAccepted(eoj, tid, esv, property, success);
553  return true;
554  default :
555  return false;
556  }
557  }
558 
583  protected void onSetDisplayControlSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
608  protected void onGetDisplayControlSetting(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
635  protected void onGetCharacterStringSettingAcceptanceStatus(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
661  protected void onGetSupportedCharacterCodes(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
685  protected void onSetCharacterStringToPresentToTheUser(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
709  protected void onGetCharacterStringToPresentToTheUser(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
735  protected void onGetLengthOfCharacterStringAccepted(EchoObject eoj, short tid, byte esv, EchoProperty property, boolean success) {}
736  }
737 
738  public static class Setter extends DeviceObject.Setter {
739  public Setter(short dstEchoClassCode, byte dstEchoInstanceCode
740  , String dstEchoAddress, boolean responseRequired) {
741  super(dstEchoClassCode, dstEchoInstanceCode
742  , dstEchoAddress, responseRequired);
743  }
744 
745  @Override
746  public Setter reqSetProperty(byte epc, byte[] edt) {
747  return (Setter)super.reqSetProperty(epc, edt);
748  }
749 
750  @Override
751  public Setter reqSetOperationStatus(byte[] edt) {
752  return (Setter)super.reqSetOperationStatus(edt);
753  }
754  @Override
755  public Setter reqSetInstallationLocation(byte[] edt) {
756  return (Setter)super.reqSetInstallationLocation(edt);
757  }
758  @Override
759  public Setter reqSetCurrentLimitSetting(byte[] edt) {
760  return (Setter)super.reqSetCurrentLimitSetting(edt);
761  }
762  @Override
763  public Setter reqSetPowerSavingOperationSetting(byte[] edt) {
764  return (Setter)super.reqSetPowerSavingOperationSetting(edt);
765  }
766  @Override
767  public Setter reqSetRemoteControlSetting(byte[] edt) {
768  return (Setter)super.reqSetRemoteControlSetting(edt);
769  }
770  @Override
771  public Setter reqSetCurrentTimeSetting(byte[] edt) {
772  return (Setter)super.reqSetCurrentTimeSetting(edt);
773  }
774  @Override
775  public Setter reqSetCurrentDateSetting(byte[] edt) {
776  return (Setter)super.reqSetCurrentDateSetting(edt);
777  }
778  @Override
779  public Setter reqSetPowerLimitSetting(byte[] edt) {
780  return (Setter)super.reqSetPowerLimitSetting(edt);
781  }
782 
807  public Setter reqSetDisplayControlSetting(byte[] edt) {
808  reqSetProperty(EPC_DISPLAY_CONTROL_SETTING, edt);
809  return this;
810  }
834  public Setter reqSetCharacterStringToPresentToTheUser(byte[] edt) {
835  reqSetProperty(EPC_CHARACTER_STRING_TO_PRESENT_TO_THE_USER, edt);
836  return this;
837  }
838  }
839 
840  public static class Getter extends DeviceObject.Getter {
841  public Getter(short dstEchoClassCode, byte dstEchoInstanceCode
842  , String dstEchoAddress) {
843  super(dstEchoClassCode, dstEchoInstanceCode
844  , dstEchoAddress);
845  }
846 
847  @Override
848  public Getter reqGetProperty(byte epc) {
849  return (Getter)super.reqGetProperty(epc);
850  }
851 
852  @Override
853  public Getter reqGetOperationStatus() {
854  return (Getter)super.reqGetOperationStatus();
855  }
856  @Override
857  public Getter reqGetInstallationLocation() {
858  return (Getter)super.reqGetInstallationLocation();
859  }
860  @Override
861  public Getter reqGetStandardVersionInformation() {
862  return (Getter)super.reqGetStandardVersionInformation();
863  }
864  @Override
865  public Getter reqGetIdentificationNumber() {
866  return (Getter)super.reqGetIdentificationNumber();
867  }
868  @Override
869  public Getter reqGetMeasuredInstantaneousPowerConsumption() {
870  return (Getter)super.reqGetMeasuredInstantaneousPowerConsumption();
871  }
872  @Override
873  public Getter reqGetMeasuredCumulativePowerConsumption() {
874  return (Getter)super.reqGetMeasuredCumulativePowerConsumption();
875  }
876  @Override
877  public Getter reqGetManufacturersFaultCode() {
878  return (Getter)super.reqGetManufacturersFaultCode();
879  }
880  @Override
881  public Getter reqGetCurrentLimitSetting() {
882  return (Getter)super.reqGetCurrentLimitSetting();
883  }
884  @Override
885  public Getter reqGetFaultStatus() {
886  return (Getter)super.reqGetFaultStatus();
887  }
888  @Override
889  public Getter reqGetFaultDescription() {
890  return (Getter)super.reqGetFaultDescription();
891  }
892  @Override
893  public Getter reqGetManufacturerCode() {
894  return (Getter)super.reqGetManufacturerCode();
895  }
896  @Override
897  public Getter reqGetBusinessFacilityCode() {
898  return (Getter)super.reqGetBusinessFacilityCode();
899  }
900  @Override
901  public Getter reqGetProductCode() {
902  return (Getter)super.reqGetProductCode();
903  }
904  @Override
905  public Getter reqGetProductionNumber() {
906  return (Getter)super.reqGetProductionNumber();
907  }
908  @Override
909  public Getter reqGetProductionDate() {
910  return (Getter)super.reqGetProductionDate();
911  }
912  @Override
913  public Getter reqGetPowerSavingOperationSetting() {
914  return (Getter)super.reqGetPowerSavingOperationSetting();
915  }
916  @Override
917  public Getter reqGetRemoteControlSetting() {
918  return (Getter)super.reqGetRemoteControlSetting();
919  }
920  @Override
921  public Getter reqGetCurrentTimeSetting() {
922  return (Getter)super.reqGetCurrentTimeSetting();
923  }
924  @Override
925  public Getter reqGetCurrentDateSetting() {
926  return (Getter)super.reqGetCurrentDateSetting();
927  }
928  @Override
929  public Getter reqGetPowerLimitSetting() {
930  return (Getter)super.reqGetPowerLimitSetting();
931  }
932  @Override
933  public Getter reqGetCumulativeOperatingTime() {
934  return (Getter)super.reqGetCumulativeOperatingTime();
935  }
936  @Override
937  public Getter reqGetStatusChangeAnnouncementPropertyMap() {
938  return (Getter)super.reqGetStatusChangeAnnouncementPropertyMap();
939  }
940  @Override
941  public Getter reqGetSetPropertyMap() {
942  return (Getter)super.reqGetSetPropertyMap();
943  }
944  @Override
945  public Getter reqGetGetPropertyMap() {
946  return (Getter)super.reqGetGetPropertyMap();
947  }
948 
973  public Getter reqGetDisplayControlSetting() {
974  reqGetProperty(EPC_DISPLAY_CONTROL_SETTING);
975  return this;
976  }
1003  public Getter reqGetCharacterStringSettingAcceptanceStatus() {
1005  return this;
1006  }
1032  public Getter reqGetSupportedCharacterCodes() {
1033  reqGetProperty(EPC_SUPPORTED_CHARACTER_CODES);
1034  return this;
1035  }
1059  public Getter reqGetCharacterStringToPresentToTheUser() {
1061  return this;
1062  }
1088  public Getter reqGetLengthOfCharacterStringAccepted() {
1090  return this;
1091  }
1092  }
1093 
1094  public static class Informer extends DeviceObject.Informer {
1095  public Informer(short echoClassCode, byte echoInstanceCode
1096  , String dstEchoAddress, boolean isSelfObject) {
1097  super(echoClassCode, echoInstanceCode
1098  , dstEchoAddress, isSelfObject);
1099  }
1100 
1101  @Override
1102  public Informer reqInformProperty(byte epc) {
1103  return (Informer)super.reqInformProperty(epc);
1104  }
1105  @Override
1106  public Informer reqInformOperationStatus() {
1107  return (Informer)super.reqInformOperationStatus();
1108  }
1109  @Override
1110  public Informer reqInformInstallationLocation() {
1111  return (Informer)super.reqInformInstallationLocation();
1112  }
1113  @Override
1114  public Informer reqInformStandardVersionInformation() {
1115  return (Informer)super.reqInformStandardVersionInformation();
1116  }
1117  @Override
1118  public Informer reqInformIdentificationNumber() {
1119  return (Informer)super.reqInformIdentificationNumber();
1120  }
1121  @Override
1122  public Informer reqInformMeasuredInstantaneousPowerConsumption() {
1123  return (Informer)super.reqInformMeasuredInstantaneousPowerConsumption();
1124  }
1125  @Override
1126  public Informer reqInformMeasuredCumulativePowerConsumption() {
1127  return (Informer)super.reqInformMeasuredCumulativePowerConsumption();
1128  }
1129  @Override
1130  public Informer reqInformManufacturersFaultCode() {
1131  return (Informer)super.reqInformManufacturersFaultCode();
1132  }
1133  @Override
1134  public Informer reqInformCurrentLimitSetting() {
1135  return (Informer)super.reqInformCurrentLimitSetting();
1136  }
1137  @Override
1138  public Informer reqInformFaultStatus() {
1139  return (Informer)super.reqInformFaultStatus();
1140  }
1141  @Override
1142  public Informer reqInformFaultDescription() {
1143  return (Informer)super.reqInformFaultDescription();
1144  }
1145  @Override
1146  public Informer reqInformManufacturerCode() {
1147  return (Informer)super.reqInformManufacturerCode();
1148  }
1149  @Override
1150  public Informer reqInformBusinessFacilityCode() {
1151  return (Informer)super.reqInformBusinessFacilityCode();
1152  }
1153  @Override
1154  public Informer reqInformProductCode() {
1155  return (Informer)super.reqInformProductCode();
1156  }
1157  @Override
1158  public Informer reqInformProductionNumber() {
1159  return (Informer)super.reqInformProductionNumber();
1160  }
1161  @Override
1162  public Informer reqInformProductionDate() {
1163  return (Informer)super.reqInformProductionDate();
1164  }
1165  @Override
1166  public Informer reqInformPowerSavingOperationSetting() {
1167  return (Informer)super.reqInformPowerSavingOperationSetting();
1168  }
1169  @Override
1170  public Informer reqInformRemoteControlSetting() {
1171  return (Informer)super.reqInformRemoteControlSetting();
1172  }
1173  @Override
1174  public Informer reqInformCurrentTimeSetting() {
1175  return (Informer)super.reqInformCurrentTimeSetting();
1176  }
1177  @Override
1178  public Informer reqInformCurrentDateSetting() {
1179  return (Informer)super.reqInformCurrentDateSetting();
1180  }
1181  @Override
1182  public Informer reqInformPowerLimitSetting() {
1183  return (Informer)super.reqInformPowerLimitSetting();
1184  }
1185  @Override
1186  public Informer reqInformCumulativeOperatingTime() {
1187  return (Informer)super.reqInformCumulativeOperatingTime();
1188  }
1189  @Override
1190  public Informer reqInformStatusChangeAnnouncementPropertyMap() {
1191  return (Informer)super.reqInformStatusChangeAnnouncementPropertyMap();
1192  }
1193  @Override
1194  public Informer reqInformSetPropertyMap() {
1195  return (Informer)super.reqInformSetPropertyMap();
1196  }
1197  @Override
1198  public Informer reqInformGetPropertyMap() {
1199  return (Informer)super.reqInformGetPropertyMap();
1200  }
1201 
1226  public Informer reqInformDisplayControlSetting() {
1227  reqInformProperty(EPC_DISPLAY_CONTROL_SETTING);
1228  return this;
1229  }
1256  public Informer reqInformCharacterStringSettingAcceptanceStatus() {
1258  return this;
1259  }
1285  public Informer reqInformSupportedCharacterCodes() {
1286  reqInformProperty(EPC_SUPPORTED_CHARACTER_CODES);
1287  return this;
1288  }
1312  public Informer reqInformCharacterStringToPresentToTheUser() {
1314  return this;
1315  }
1341  public Informer reqInformLengthOfCharacterStringAccepted() {
1342  reqInformProperty(EPC_LENGTH_OF_CHARACTER_STRING_ACCEPTED);
1343  return this;
1344  }
1345  }
1346 
1347  public static class Proxy extends Television {
1348  public Proxy(byte instanceCode) {
1349  super();
1350  mEchoInstanceCode = instanceCode;
1351  }
1352  @Override
1353  public byte getInstanceCode() {
1354  return mEchoInstanceCode;
1355  }
1356  @Override
1357  protected byte[] getOperationStatus() {return null;}
1358  @Override
1359  protected boolean setInstallationLocation(byte[] edt) {return false;}
1360  @Override
1361  protected byte[] getInstallationLocation() {return null;}
1362  @Override
1363  protected byte[] getStandardVersionInformation() {return null;}
1364  @Override
1365  protected byte[] getFaultStatus() {return null;}
1366  @Override
1367  protected byte[] getManufacturerCode() {return null;}
1368  @Override
1369  protected boolean setOperationStatus(byte[] edt) {return false;}
1370  @Override
1371  protected byte[] getCharacterStringSettingAcceptanceStatus() {return null;}
1372  @Override
1373  protected byte[] getSupportedCharacterCodes() {return null;}
1374  @Override
1375  protected boolean setCharacterStringToPresentToTheUser(byte[] edt) {return false;}
1376  @Override
1377  protected byte[] getLengthOfCharacterStringAccepted() {return null;}
1378  }
1379 
1380  public static Setter setG() {
1381  return setG((byte)0);
1382  }
1383 
1384  public static Setter setG(byte instanceCode) {
1385  return setG(instanceCode, true);
1386  }
1387 
1388  public static Setter setG(boolean responseRequired) {
1389  return setG((byte)0, responseRequired);
1390  }
1391 
1392  public static Setter setG(byte instanceCode, boolean responseRequired) {
1393  return new Setter(ECHO_CLASS_CODE, instanceCode
1394  , EchoSocket.MULTICAST_ADDRESS, responseRequired);
1395  }
1396 
1397  public static Getter getG() {
1398  return getG((byte)0);
1399  }
1400 
1401  public static Getter getG(byte instanceCode) {
1402  return new Getter(ECHO_CLASS_CODE, instanceCode
1404  }
1405 
1406  public static Informer informG() {
1407  return informG((byte)0);
1408  }
1409 
1410  public static Informer informG(byte instanceCode) {
1411  return new Informer(ECHO_CLASS_CODE, instanceCode
1412  , EchoSocket.MULTICAST_ADDRESS, false);
1413  }
1414 
1415 }
synchronized boolean isValidProperty(EchoProperty property)
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)
final void addSetProperty(byte epc)
Definition: EchoObject.java:93
abstract boolean setCharacterStringToPresentToTheUser(byte[] edt)
boolean isValidCharacterStringSettingAcceptanceStatus(byte[] edt)
static Setter setG(boolean responseRequired)
static Informer informG(byte instanceCode)
abstract boolean setInstallationLocation(byte[] edt)
static final String MULTICAST_ADDRESS
Definition: EchoSocket.java:53
abstract boolean setOperationStatus(byte[] edt)