CEC : Add validator for select digital service message
Test: atest HdmiCecMessageValidatorTest Bug: 170811408 Change-Id: Ia0f12e9b3c7cd18af9846b3e80e4e8215823d9b9
This commit is contained in:
@@ -163,6 +163,10 @@ public class HdmiCecMessageValidator {
|
||||
Constants.MESSAGE_SELECT_ANALOG_SERVICE,
|
||||
new SelectAnalogueServiceValidator(),
|
||||
DEST_DIRECT);
|
||||
addValidationInfo(
|
||||
Constants.MESSAGE_SELECT_DIGITAL_SERVICE,
|
||||
new SelectDigitalServiceValidator(),
|
||||
DEST_DIRECT);
|
||||
|
||||
// Messages for the Vendor Specific Commands.
|
||||
VariableLengthValidator maxLengthValidator = new VariableLengthValidator(0, 14);
|
||||
@@ -911,4 +915,19 @@ public class HdmiCecMessageValidator {
|
||||
&& isValidBroadcastSystem(params[3]));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given select digital service parameter is valid. A valid parameter should lie
|
||||
* within the range description defined in CEC 1.4 Specification : Operand Descriptions
|
||||
* (Section 17)
|
||||
*/
|
||||
private class SelectDigitalServiceValidator implements ParameterValidator {
|
||||
@Override
|
||||
public int isValid(byte[] params) {
|
||||
if (params.length < 4) {
|
||||
return ERROR_PARAMETER_SHORT;
|
||||
}
|
||||
return toErrorCode(isValidDigitalServiceIdentification(params, 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -425,6 +425,32 @@ public class HdmiCecMessageValidatorTest {
|
||||
assertMessageValidity("40:92:02:EA:60:20").isEqualTo(ERROR_PARAMETER);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void isValid_selectDigitalService() {
|
||||
assertMessageValidity("40:93:00:11:CE:90:0F:00:78").isEqualTo(OK);
|
||||
assertMessageValidity("40:93:10:13:0B:34:38").isEqualTo(OK);
|
||||
assertMessageValidity("40:93:9A:06:F9:D3:E6").isEqualTo(OK);
|
||||
assertMessageValidity("40:93:91:09:F4:40:C8").isEqualTo(OK);
|
||||
|
||||
assertMessageValidity("4F:93:00:11:CE:90:0F:00:78").isEqualTo(ERROR_DESTINATION);
|
||||
assertMessageValidity("F0:93:10:13:0B:34:38").isEqualTo(ERROR_SOURCE);
|
||||
assertMessageValidity("40:93:9A:06:F9").isEqualTo(ERROR_PARAMETER_SHORT);
|
||||
// Invalid Digital Broadcast System
|
||||
assertMessageValidity("40:93:14:11:CE:90:0F:00:78").isEqualTo(ERROR_PARAMETER);
|
||||
// Invalid Digital Broadcast System
|
||||
assertMessageValidity("40:93:A0:07:95:F1").isEqualTo(ERROR_PARAMETER);
|
||||
// Insufficient data for ARIB Broadcast system
|
||||
assertMessageValidity("40:93:00:11:CE:90:0F:00").isEqualTo(ERROR_PARAMETER);
|
||||
// Insufficient data for ATSC Broadcast system
|
||||
assertMessageValidity("40:93:10:13:0B:34").isEqualTo(ERROR_PARAMETER);
|
||||
// Insufficient data for DVB Broadcast system
|
||||
assertMessageValidity("40:93:18:BE:77:00:7D:01").isEqualTo(ERROR_PARAMETER);
|
||||
// Invalid channel number format
|
||||
assertMessageValidity("40:93:9A:10:F9:D3").isEqualTo(ERROR_PARAMETER);
|
||||
// Insufficient data for 2 part channel number
|
||||
assertMessageValidity("40:93:91:09:F4:40").isEqualTo(ERROR_PARAMETER);
|
||||
}
|
||||
|
||||
private IntegerSubject assertMessageValidity(String message) {
|
||||
return assertThat(mHdmiCecMessageValidator.isValid(buildMessage(message)));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user