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