156f610dd235b577725198e9341caae92379fdf23Saurabh Shah/*
2d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah *  Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
356f610dd235b577725198e9341caae92379fdf23Saurabh Shah *
456f610dd235b577725198e9341caae92379fdf23Saurabh Shah * Redistribution and use in source and binary forms, with or without
556f610dd235b577725198e9341caae92379fdf23Saurabh Shah * modification, are permitted provided that the following conditions are
656f610dd235b577725198e9341caae92379fdf23Saurabh Shah * met:
756f610dd235b577725198e9341caae92379fdf23Saurabh Shah *     * Redistributions of source code must retain the above copyright
856f610dd235b577725198e9341caae92379fdf23Saurabh Shah *       notice, this list of conditions and the following disclaimer.
956f610dd235b577725198e9341caae92379fdf23Saurabh Shah *     * Redistributions in binary form must reproduce the above
1056f610dd235b577725198e9341caae92379fdf23Saurabh Shah *       copyright notice, this list of conditions and the following
1156f610dd235b577725198e9341caae92379fdf23Saurabh Shah *       disclaimer in the documentation and/or other materials provided
1256f610dd235b577725198e9341caae92379fdf23Saurabh Shah *       with the distribution.
13a43fb8fce6d9be5577de1e0f49c99bd4fe2f6d44Duy Truong *     * Neither the name of The Linux Foundation nor the names of its
1456f610dd235b577725198e9341caae92379fdf23Saurabh Shah *       contributors may be used to endorse or promote products derived
1556f610dd235b577725198e9341caae92379fdf23Saurabh Shah *       from this software without specific prior written permission.
1656f610dd235b577725198e9341caae92379fdf23Saurabh Shah *
1756f610dd235b577725198e9341caae92379fdf23Saurabh Shah * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
1856f610dd235b577725198e9341caae92379fdf23Saurabh Shah * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
1956f610dd235b577725198e9341caae92379fdf23Saurabh Shah * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
2056f610dd235b577725198e9341caae92379fdf23Saurabh Shah * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
2156f610dd235b577725198e9341caae92379fdf23Saurabh Shah * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2256f610dd235b577725198e9341caae92379fdf23Saurabh Shah * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2356f610dd235b577725198e9341caae92379fdf23Saurabh Shah * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
2456f610dd235b577725198e9341caae92379fdf23Saurabh Shah * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
2556f610dd235b577725198e9341caae92379fdf23Saurabh Shah * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
2656f610dd235b577725198e9341caae92379fdf23Saurabh Shah * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
2756f610dd235b577725198e9341caae92379fdf23Saurabh Shah * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2856f610dd235b577725198e9341caae92379fdf23Saurabh Shah */
2956f610dd235b577725198e9341caae92379fdf23Saurabh Shah
3056f610dd235b577725198e9341caae92379fdf23Saurabh Shah#include <QService.h>
3156f610dd235b577725198e9341caae92379fdf23Saurabh Shah
3256f610dd235b577725198e9341caae92379fdf23Saurabh Shah#define QSERVICE_DEBUG 0
3356f610dd235b577725198e9341caae92379fdf23Saurabh Shah
3456f610dd235b577725198e9341caae92379fdf23Saurabh Shahusing namespace android;
3556f610dd235b577725198e9341caae92379fdf23Saurabh Shah
3656f610dd235b577725198e9341caae92379fdf23Saurabh Shahnamespace qService {
3756f610dd235b577725198e9341caae92379fdf23Saurabh Shah
3856f610dd235b577725198e9341caae92379fdf23Saurabh ShahQService* QService::sQService = NULL;
3956f610dd235b577725198e9341caae92379fdf23Saurabh Shah// ----------------------------------------------------------------------------
40d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh ShahQService::QService()
4156f610dd235b577725198e9341caae92379fdf23Saurabh Shah{
4256f610dd235b577725198e9341caae92379fdf23Saurabh Shah    ALOGD_IF(QSERVICE_DEBUG, "QService Constructor invoked");
4356f610dd235b577725198e9341caae92379fdf23Saurabh Shah}
4456f610dd235b577725198e9341caae92379fdf23Saurabh Shah
4556f610dd235b577725198e9341caae92379fdf23Saurabh ShahQService::~QService()
4656f610dd235b577725198e9341caae92379fdf23Saurabh Shah{
4756f610dd235b577725198e9341caae92379fdf23Saurabh Shah    ALOGD_IF(QSERVICE_DEBUG,"QService Destructor invoked");
4856f610dd235b577725198e9341caae92379fdf23Saurabh Shah}
4956f610dd235b577725198e9341caae92379fdf23Saurabh Shah
5056f610dd235b577725198e9341caae92379fdf23Saurabh Shahvoid QService::securing(uint32_t startEnd) {
51d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    if(mClient.get()) {
52d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        mClient->notifyCallback(SECURING, startEnd);
53d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    }
5456f610dd235b577725198e9341caae92379fdf23Saurabh Shah}
5556f610dd235b577725198e9341caae92379fdf23Saurabh Shah
5656f610dd235b577725198e9341caae92379fdf23Saurabh Shahvoid QService::unsecuring(uint32_t startEnd) {
57d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    if(mClient.get()) {
58d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        mClient->notifyCallback(UNSECURING, startEnd);
59d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    }
60d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah}
61d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah
62d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shahvoid QService::connect(const sp<qClient::IQClient>& client) {
63d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah    mClient = client;
6456f610dd235b577725198e9341caae92379fdf23Saurabh Shah}
6556f610dd235b577725198e9341caae92379fdf23Saurabh Shah
66e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaranandroid::status_t QService::screenRefresh() {
67e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaran    status_t result = NO_ERROR;
68e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaran    if(mClient.get()) {
69e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaran        result = mClient->notifyCallback(SCREEN_REFRESH, 0);
70e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaran    }
71e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaran    return result;
72e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaran}
73e1f47e78496b6b9382d8c71c959ae6365c7a05d2Jeykumar Sankaran
74d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shahvoid QService::init()
7556f610dd235b577725198e9341caae92379fdf23Saurabh Shah{
7656f610dd235b577725198e9341caae92379fdf23Saurabh Shah    if(!sQService) {
77d5e3e404e1344eb2148c8df9f3e35d841ddd4285Saurabh Shah        sQService = new QService();
7856f610dd235b577725198e9341caae92379fdf23Saurabh Shah        sp<IServiceManager> sm = defaultServiceManager();
7956f610dd235b577725198e9341caae92379fdf23Saurabh Shah        sm->addService(String16("display.qservice"), sQService);
8056f610dd235b577725198e9341caae92379fdf23Saurabh Shah        if(sm->checkService(String16("display.qservice")) != NULL)
8156f610dd235b577725198e9341caae92379fdf23Saurabh Shah            ALOGD_IF(QSERVICE_DEBUG, "adding display.qservice succeeded");
8256f610dd235b577725198e9341caae92379fdf23Saurabh Shah        else
8356f610dd235b577725198e9341caae92379fdf23Saurabh Shah            ALOGD_IF(QSERVICE_DEBUG, "adding display.qservice failed");
8456f610dd235b577725198e9341caae92379fdf23Saurabh Shah    }
8556f610dd235b577725198e9341caae92379fdf23Saurabh Shah}
8656f610dd235b577725198e9341caae92379fdf23Saurabh Shah
8756f610dd235b577725198e9341caae92379fdf23Saurabh Shah}
88