12ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel/*
22ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *  Copyright (c) 2012-2013, 2016, The Linux Foundation. All rights reserved.
32ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *
42ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * Redistribution and use in source and binary forms, with or without
52ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * modification, are permitted provided that the following conditions are
62ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * met:
72ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *     * Redistributions of source code must retain the above copyright
82ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *       notice, this list of conditions and the following disclaimer.
92ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *     * Redistributions in binary form must reproduce the above
102ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *       copyright notice, this list of conditions and the following
112ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *       disclaimer in the documentation and/or other materials provided
122ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *       with the distribution.
132ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *     * Neither the name of The Linux Foundation nor the names of its
142ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *       contributors may be used to endorse or promote products derived
152ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *       from this software without specific prior written permission.
162ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel *
172ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
182ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
192ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
202ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
212ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
222ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
232ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
242ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
252ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
262ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
272ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
282ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel */
292ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
302ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#ifndef ANDROID_QSERVICE_H
312ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#define ANDROID_QSERVICE_H
322ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
3396a73c98ee23859a3e99287f5ebde8883852a0d4Mark Salyzyn#include <stdint.h>
342ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <sys/types.h>
3596a73c98ee23859a3e99287f5ebde8883852a0d4Mark Salyzyn
362ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <binder/IServiceManager.h>
3796a73c98ee23859a3e99287f5ebde8883852a0d4Mark Salyzyn#include <log/log.h>
3896a73c98ee23859a3e99287f5ebde8883852a0d4Mark Salyzyn#include <utils/Errors.h>
3996a73c98ee23859a3e99287f5ebde8883852a0d4Mark Salyzyn
402ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <IQService.h>
412ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#include <IQClient.h>
422ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
432ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelstruct hwc_context_t;
442ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
452ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelnamespace qService {
462ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel// ----------------------------------------------------------------------------
472ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel
482ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelclass QService : public BnQService {
492ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelpublic:
502ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    virtual ~QService();
512ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    virtual void connect(const android::sp<qClient::IQClient>& client);
522ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    virtual void connect(const android::sp<qClient::IQHDMIClient>& client);
532ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    virtual android::status_t dispatch(uint32_t command,
542ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel            const android::Parcel* data,
552ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel            android::Parcel* reply);
562ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    virtual void onHdmiHotplug(int connected);
572ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    virtual void onCECMessageReceived(char *msg, ssize_t len);
582ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    static void init();
592ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudelprivate:
602ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    QService();
612ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    android::sp<qClient::IQClient> mClient;
622ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    android::sp<qClient::IQHDMIClient> mHDMIClient;
632ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel    static QService *sQService;
642ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel};
652ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel}; // namespace qService
662ebc25b87caae537b8cd97beb8a86a7ff5f0cdf4Thierry Strudel#endif // ANDROID_QSERVICE_H
67