18f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown/* 28f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * Copyright (C) 2013 The Android Open Source Project 38f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * 48f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 58f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * you may not use this file except in compliance with the License. 68f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * You may obtain a copy of the License at 78f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * 88f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * http://www.apache.org/licenses/LICENSE-2.0 98f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * 108f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * Unless required by applicable law or agreed to in writing, software 118f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 128f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * See the License for the specific language governing permissions and 148f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * limitations under the License. 158f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown */ 168f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 178f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brownpackage com.android.accessorydisplay.common; 188f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 198f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown/** 208f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * Defines message types. 218f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown */ 228f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brownpublic class Protocol { 238f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // Message header. 248f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // 0: service id (16 bits) 258f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // 2: what (16 bits) 268f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // 4: content size (32 bits) 278f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // 8: ... content follows ... 288f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown static final int HEADER_SIZE = 8; 298f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 308f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // Maximum size of a message envelope including the header and contents. 318f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown static final int MAX_ENVELOPE_SIZE = 64 * 1024; 328f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 338f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown /** 348f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown * Maximum message content size. 358f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown */ 368f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown public static final int MAX_CONTENT_SIZE = MAX_ENVELOPE_SIZE - HEADER_SIZE; 378f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 388f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown public static final class DisplaySinkService { 398f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown private DisplaySinkService() { } 408f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 418f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown public static final int ID = 1; 428f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 438f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // Query sink capabilities. 448f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // Replies with sink available or not available. 458f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown public static final int MSG_QUERY = 1; 468f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 478f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // Send MPEG2-TS H.264 encoded content. 488f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown public static final int MSG_CONTENT = 2; 498f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown } 508f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 518f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown public static final class DisplaySourceService { 528f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown private DisplaySourceService() { } 538f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 548f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown public static final int ID = 2; 558f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 568f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // Sink is now available for use. 578f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // 0: width (32 bits) 588f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // 4: height (32 bits) 598f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // 8: density dpi (32 bits) 608f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown public static final int MSG_SINK_AVAILABLE = 1; 618f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown 628f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown // Sink is no longer available for use. 638f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown public static final int MSG_SINK_NOT_AVAILABLE = 2; 648f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown } 658f3b1307678fcd1896c7fb8ba4cc20553dc032e8Jeff Brown} 66