TaoStatus TaoPhoneComponentAdaptor::getRingerInfo(TaoMessage& rMsg)
{
        if (rMsg.getArgCnt())
        {
                int index = atoi(rMsg.getArgList());

                PsMsg msg(PsMsg::RINGER_GET_INFO, this, index, 0);
                mpPhoneTask->postMessage(msg);

                return TAO_SUCCESS;
        }

        return TAO_FAILURE;
}
TaoStatus TaoPhoneComponentAdaptor::activateGroup(TaoMessage& rMsg)
{
        int     argCnt = rMsg.getArgCnt();

        if (argCnt != 1)
                return TAO_FAILURE;

        mpPhoneTask->activateGroup((PsMsg&) rMsg);

        rMsg.setMsgSubType(TaoMessage::RESPONSE_PHONECOMPONENT);
        if (mpSvrTransport->postMessage(rMsg))
                return TAO_SUCCESS;

    return TAO_FAILURE;
}
TaoStatus TaoPhoneComponentAdaptor::setHookswState(TaoMessage& rMsg)
{
        if (rMsg.getArgCnt())
        {
                mHookswState = atoi(rMsg.getArgList());

                PsMsg hookswMsg(PsMsg::HOOKSW_STATE, this, mHookswState, mHookswState);
                mpPhoneTask->postMessage(hookswMsg);

                rMsg.setMsgSubType(TaoMessage::RESPONSE_PHONECOMPONENT);
                if (mpSvrTransport->postMessage(rMsg))
                        return TAO_SUCCESS;
        }

        return TAO_FAILURE;
}
TaoStatus TaoPhoneComponentAdaptor::setMicGain(TaoMessage& rMsg)
{
        if (rMsg.getArgCnt() != 2)
                return TAO_FAILURE;

        TaoString arg(rMsg.getArgList(), TAOMESSAGE_DELIMITER);
        int groupType = atoi(arg[0]);
        int gain = atoi(arg[1]);

        mpPhoneTask->taoSetMicGain(groupType, gain);

        rMsg.setMsgSubType(TaoMessage::RESPONSE_PHONECOMPONENT);
        if (mpSvrTransport->postMessage(rMsg))
                return TAO_SUCCESS;

        return TAO_FAILURE;
}
TaoStatus TaoPhoneComponentAdaptor::getDisplayContrast(TaoMessage& rMsg)
{
        int     argCnt = rMsg.getArgCnt();

        if (argCnt != 1)
                return TAO_FAILURE;

#ifdef _VXWORKS
        int nominal = 0;

        if (OS_SUCCESS == MpCodec_getLCDContrastRange(mLCDLow, mLCDHigh, nominal))
        {
                mLCDContrast = MpCodec_getLCDContrast();
                mLCDOffset = mLCDLow - 1;
                osPrintf("--- get LCD contrast level %d ---\n", mLCDContrast);
        }

        UtlString arg;
    char buff[MAXIMUM_INTEGER_STRING_LENGTH];

        int level = mLCDContrast - mLCDOffset;
        if (level < 1)
                level = 1;

    sprintf(buff, "%d", level);
        arg = buff + TAOMESSAGE_DELIMITER;

    sprintf(buff, "%d", 1);
        arg += buff + TAOMESSAGE_DELIMITER;

    sprintf(buff, "%d", (mLCDHigh - mLCDOffset));
        arg += buff + TAOMESSAGE_DELIMITER;

    sprintf(buff, "%d", (nominal - mLCDOffset));
        arg += buff;

        rMsg.setMsgSubType(TaoMessage::RESPONSE_PHONECOMPONENT);
        rMsg.setArgCnt(4);
        rMsg.setArgList(arg.data());
        if (mpSvrTransport->postMessage(rMsg))
                return TAO_SUCCESS;
#endif

    return TAO_FAILURE;
}
TaoStatus TaoPhoneComponentAdaptor::getMicGain(TaoMessage& rMsg)
{
        if (rMsg.getArgCnt() != 1)
                return TAO_FAILURE;

        UtlString arg = rMsg.getArgList();
        int groupType = atoi(arg.data());

        int gain = mpPhoneTask->taoGetMicGain(groupType);

        char buf[32];
        sprintf(buf, "%d", gain);
        arg += TAOMESSAGE_DELIMITER + buf;

        rMsg.setArgCnt(2);
        rMsg.setArgList(arg);
        rMsg.setMsgSubType(TaoMessage::RESPONSE_PHONECOMPONENT);
        if (mpSvrTransport->postMessage(rMsg))
                return TAO_SUCCESS;

        return TAO_FAILURE;
}
TaoStatus TaoPhoneComponentAdaptor::setDisplayContrast(TaoMessage& rMsg)
{
        int     argCnt = rMsg.getArgCnt();

        if (argCnt != 2)
                return TAO_FAILURE;

#ifdef _VXWORKS
        TaoString arg(rMsg.getArgList(), TAOMESSAGE_DELIMITER);
        int level = atoi(arg[0]);

        if (!mLCDLow && !mLCDHigh)
        {
                int nominal;
                MpCodec_getLCDContrastRange(mLCDLow, mLCDHigh, nominal);
                mLCDOffset = mLCDLow - 1;
        }

        level += mLCDOffset;
        if (level < mLCDLow)
                level = mLCDLow;
        if (level > mLCDHigh)
                level = mLCDHigh;

        if (OS_SUCCESS == MpCodec_setLCDContrast(level))
        {
                osPrintf("--- set LCD contrast level %d -> %d ---\n", mLCDContrast, level);
                mLCDContrast = level;
                rMsg.setMsgSubType(TaoMessage::RESPONSE_PHONECOMPONENT);

                if (mpSvrTransport->postMessage(rMsg))
                {
                        return TAO_SUCCESS;
                }
        }
#endif

        return TAO_FAILURE;
}
UtlBoolean TaoClientTask::receiveMsg(TaoMessage& rMsg)
{
        TaoObjHandle appHandle = 0;

        appHandle = rMsg.getSocket();   // where the app pointer is stored
        if (appHandle)
        {
                OsProtectedEvent*               pEvent;
                TaoObjHandle    handle;
                UtlString               argList;
                int                             data;

                pEvent  = (OsProtectedEvent *)appHandle;
                handle  = rMsg.getTaoObjHandle();
                data    = rMsg.getArgCnt();
                argList = rMsg.getArgList();

                pEvent->setIntData(data);

                data = rMsg.getCmd();
                pEvent->setIntData2(data);
                pEvent->setStringData(argList);
                // If the event has already been signalled, clean up
        if(OS_ALREADY_SIGNALED == pEvent->signal(handle))
        {
            OsProtectEventMgr* eventMgr = OsProtectEventMgr::getEventMgr();
            eventMgr->release(pEvent);
        }

                return TRUE;
        }
        else
        {
                osPrintf("<<<< TaoClientTask::receiveMsg: no appHandle!! >>>>\n");
                return FALSE;
        }
}