/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.accessorydisplay.common;
/**
* Defines message types.
*/
public class Protocol {
// Message header.
// 0: service id (16 bits)
// 2: what (16 bits)
// 4: content size (32 bits)
// 8: ... content follows ...
static final int HEADER_SIZE = 8;
// Maximum size of a message envelope including the header and contents.
static final int MAX_ENVELOPE_SIZE = 64 * 1024;
/**
* Maximum message content size.
*/
public static final int MAX_CONTENT_SIZE = MAX_ENVELOPE_SIZE - HEADER_SIZE;
public static final class DisplaySinkService {
private DisplaySinkService() { }
public static final int ID = 1;
// Query sink capabilities.
// Replies with sink available or not available.
public static final int MSG_QUERY = 1;
// Send MPEG2-TS H.264 encoded content.
public static final int MSG_CONTENT = 2;
}
public static final class DisplaySourceService {
private DisplaySourceService() { }
public static final int ID = 2;
// Sink is now available for use.
// 0: width (32 bits)
// 4: height (32 bits)
// 8: density dpi (32 bits)
public static final int MSG_SINK_AVAILABLE = 1;
// Sink is no longer available for use.
public static final int MSG_SINK_NOT_AVAILABLE = 2;
}
}