151 files changed, 45277 insertions, 47437 deletions
diff --git a/tvapi/libtv/tv/CFbcCommunication.cpp b/tvapi/libtv/tv/CFbcCommunication.cpp index 08bc0e3..cf63278 100644 --- a/tvapi/libtv/tv/CFbcCommunication.cpp +++ b/tvapi/libtv/tv/CFbcCommunication.cpp @@ -8,17 +8,13 @@ static CFbcCommunication *gSingletonFBC = NULL; CFbcCommunication *GetSingletonFBC() { - if (GetPlatformHaveFBCFlag() == 1) { - if (gSingletonFBC == NULL) { - gSingletonFBC = new CFbcCommunication(); - gSingletonFBC->start(); - } - - return gSingletonFBC; + if (gSingletonFBC == NULL) { + gSingletonFBC = new CFbcCommunication(); + gSingletonFBC->start(); } - LOGE("%s, the platform has no fbc!!!\n", __FUNCTION__); - return NULL; + return gSingletonFBC; + } CFbcCommunication::CFbcCommunication() @@ -61,7 +57,7 @@ int CFbcCommunication::start() #endif } - if(mEpoll.create() < 0) { + if (mEpoll.create() < 0) { return -1; } @@ -109,7 +105,7 @@ void CFbcCommunication::testUart() sleep(1); //LOGD("to read........\n"); mSerialPort.readFile(read_buf, 12); - for(idx = 0; idx < 12; idx++) + for (idx = 0; idx < 12; idx++) LOGD("the data is:0x%x\n", read_buf[idx]); LOGD("end....\n"); } @@ -118,23 +114,23 @@ void CFbcCommunication::showTime(struct timeval *_time) { struct timeval curTime; - if(_time == NULL) { + if (_time == NULL) { gettimeofday(&curTime, NULL); } else { curTime.tv_sec = _time->tv_sec; curTime.tv_usec = _time->tv_usec; } - if(curTime.tv_usec > 100000) { + if (curTime.tv_usec > 100000) { LOGD("[%d.%d]", curTime.tv_sec, curTime.tv_usec); - } else if(curTime.tv_usec > 10000) { + } else if (curTime.tv_usec > 10000) { LOGD("[%d.0%d]", curTime.tv_sec, curTime.tv_usec); - } else if(curTime.tv_usec > 1000) { + } else if (curTime.tv_usec > 1000) { LOGD("[%d.00%d]", curTime.tv_sec, curTime.tv_usec); - } else if(curTime.tv_usec > 100) { + } else if (curTime.tv_usec > 100) { LOGD("[%d.000%d]", curTime.tv_sec, curTime.tv_usec); - } else if(curTime.tv_usec > 10) { + } else if (curTime.tv_usec > 10) { LOGD("[%d.0000%d]", curTime.tv_sec, curTime.tv_usec); - } else if(curTime.tv_usec > 1) { + } else if (curTime.tv_usec > 1) { LOGD("[%d.00000%d]", curTime.tv_sec, curTime.tv_usec); } } @@ -171,7 +167,7 @@ void CFbcCommunication::sendAckCmd(bool isOk) ackcmd[3] = 0x00; ackcmd[4] = 0x80;//ack flag ackcmd[5] = 0xff;//cmd id - if(isOk) { + if (isOk) { ackcmd[6] = 0xfe; ackcmd[7] = 0x7f; } else { @@ -195,7 +191,7 @@ unsigned int CFbcCommunication::GetCrc32(unsigned char *InStr, unsigned int len) { //开始计算CRC32校验便 unsigned int Crc = 0xffffffff; - for(int i = 0; i < len; i++) { + for (int i = 0; i < len; i++) { Crc = (Crc >> 8) ^ mCrc32Table[(Crc & 0xFF) ^ InStr[i]]; } @@ -209,7 +205,7 @@ unsigned int CFbcCommunication::Calcrc32(unsigned int crc, const unsigned char * 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c }; unsigned int crcu32 = crc; - if(buf_len < 0) + if (buf_len < 0) return 0; if (!ptr) return 0; crcu32 = ~crcu32; @@ -224,7 +220,7 @@ unsigned int CFbcCommunication::Calcrc32(unsigned int crc, const unsigned char * int CFbcCommunication::sendDataOneway(int devno, unsigned char *pData, int dataLen, int flags) { int ret = -1; - switch(devno) { + switch (devno) { case COMM_DEV_CEC: { ret = mHdmiCec.writeFile(pData, dataLen); break; @@ -252,7 +248,7 @@ int CFbcCommunication::addToRequestList() int CFbcCommunication::sendDataAndWaitReply(int devno, int waitForDevno, int waitForCmd, unsigned char *pData, int dataLen, int timeout, unsigned char *pReData, int *reDataLen, int flags) { int ret = sendDataOneway(devno, pData, dataLen, flags); - if(ret < 0) return ret; + if (ret < 0) return ret; mReplyList.WaitDevNo = waitForDevno; mReplyList.WaitCmd = waitForCmd; @@ -268,7 +264,7 @@ int CFbcCommunication::sendDataAndWaitReply(int devno, int waitForDevno, int wai mLock.unlock(); // - if(mReplyList.reDataLen > 0) { //data have come in + if (mReplyList.reDataLen > 0) { //data have come in *reDataLen = mReplyList.reDataLen; memcpy(pReData, mReplyList.replyData, mReplyList.reDataLen); mReplyList.reDataLen = 0; @@ -302,14 +298,14 @@ int CFbcCommunication::handleCmd(COMM_DEV_TYPE_E fromDev, int *pData, int *pRetV fbc_command_t cmd_type = VPU_CMD_NULL; int ret_value = 0; - if((fromDev != COMM_DEV_SERIAL && fromDev != COMM_DEV_CEC) || pData == NULL || pRetValue == NULL) { + if ((fromDev != COMM_DEV_SERIAL && fromDev != COMM_DEV_CEC) || pData == NULL || pRetValue == NULL) { //LOGD("para error and returned!"); return -1; } cmd_type = (fbc_command_t)pData[0]; LOGD("the cmd type is:0x%02x\n", cmd_type); - switch(cmd_type) { + switch (cmd_type) { case VPU_CMD_RED_GAIN_DEF: cfbc_Set_Gain_Red(fromDev, pData[2]); break; @@ -352,7 +348,7 @@ int CFbcCommunication::uartReadStream(unsigned char *retData, int rd_max_len, in readLen = mSerialPort.readFile(retData + bufIndex, rd_max_len - haveRead); haveRead += readLen; bufIndex += readLen; - if(haveRead == rd_max_len) { + if (haveRead == rd_max_len) { return haveRead; } @@ -361,7 +357,7 @@ int CFbcCommunication::uartReadStream(unsigned char *retData, int rd_max_len, in if (((clock() - start_tm) / (CLOCKS_PER_SEC / 1000)) > timeout) { return haveRead; } - } while(true); + } while (true); return haveRead; } @@ -373,7 +369,7 @@ int CFbcCommunication::uartReadData(unsigned char *retData, int *retLen) int bufIndex = 0; int readLen = 0; - if(retData == NULL) { + if (retData == NULL) { LOGD("the retData is NULL\n"); return 0; } @@ -382,10 +378,10 @@ int CFbcCommunication::uartReadData(unsigned char *retData, int *retLen) memset(tempBuf, 0, sizeof(tempBuf)); do { readLen = mSerialPort.readFile(tempBuf + 0, 1); - if(tempBuf[0] == 0x5A) { + if (tempBuf[0] == 0x5A) { bufIndex = 1; readLen = mSerialPort.readFile(tempBuf + 1, 1); - if(tempBuf[1] == 0x5A) { + if (tempBuf[1] == 0x5A) { bufIndex = 2; LOGD("leading code coming...\n"); break; @@ -395,7 +391,7 @@ int CFbcCommunication::uartReadData(unsigned char *retData, int *retLen) } else { continue; } - } while(true); + } while (true); //data len 2 byte int needRead = 2, haveRead = 0; @@ -403,10 +399,10 @@ int CFbcCommunication::uartReadData(unsigned char *retData, int *retLen) readLen = mSerialPort.readFile(tempBuf + bufIndex, needRead - haveRead); haveRead += readLen; bufIndex += readLen; - if(haveRead == needRead) { + if (haveRead == needRead) { break; } - } while(true); + } while (true); //little endian cmdLen = (tempBuf[3] << 8) + tempBuf[2]; @@ -418,16 +414,16 @@ int CFbcCommunication::uartReadData(unsigned char *retData, int *retLen) readLen = mSerialPort.readFile(tempBuf + bufIndex, needRead - haveRead); haveRead += readLen; bufIndex += readLen; - if(readLen > 0) { + if (readLen > 0) { LOGD("data readLen is:%d\n", readLen); } - if(haveRead == needRead) { + if (haveRead == needRead) { break; } - } while(true); + } while (true); unsigned int crc = 0; - if(cmdLen > 4) { + if (cmdLen > 4) { crc = Calcrc32(0, tempBuf, cmdLen - 4);//not include crc 4byte } unsigned int bufCrc = tempBuf[cmdLen - 4] | @@ -436,7 +432,7 @@ int CFbcCommunication::uartReadData(unsigned char *retData, int *retLen) tempBuf[cmdLen - 1] << 24; int idx = 0; - if(crc == bufCrc) { + if (crc == bufCrc) { memcpy(retData, tempBuf, cmdLen % 512); *retLen = cmdLen; return cmdLen; @@ -447,19 +443,19 @@ int CFbcCommunication::uartReadData(unsigned char *retData, int *retLen) int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData, int dataLen) { - switch(fromDev) { + switch (fromDev) { case COMM_DEV_CEC: { - if(mReplyList.WaitDevNo == fromDev && mReplyList.WaitCmd == pData[1]) { + if (mReplyList.WaitDevNo == fromDev && mReplyList.WaitCmd == pData[1]) { mReplyList.reDataLen = dataLen; memcpy(mReplyList.replyData, pData, dataLen); mReplyList.WaitReplyCondition.signal(); - } else if(0) { + } else if (0) { } break; } case COMM_DEV_SERIAL: { LOGD("to signal wait dataLen:0x%x, cmdId:0x%x\n", dataLen, pData[5]); - if(mReplyList.WaitDevNo == fromDev && mReplyList.WaitCmd == pData[5]) { + if (mReplyList.WaitDevNo == fromDev && mReplyList.WaitCmd == pData[5]) { mReplyList.reDataLen = dataLen; memcpy(mReplyList.replyData, pData, dataLen); mReplyList.WaitReplyCondition.signal(); @@ -467,7 +463,7 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData unsigned char cmd = pData[5]; //just test const char *value; - if(!mbSendKeyCode) { + if (!mbSendKeyCode) { value = config_get_str("FBCUART", "fbc_key_event_handle", "null"); if ( strcmp ( value, "true" ) == 0 ) mbSendKeyCode = true; @@ -477,7 +473,7 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData switch (cmd) { case 0x14: if (mbSendKeyCode ) { - if(pData[6] >= 12 && pData[6] <= 16 ) { //left ---enter + if (pData[6] >= 12 && pData[6] <= 16 ) { //left ---enter unsigned char key = pData[6] ; LOGD(" key:0x%x\n", key); @@ -487,15 +483,15 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData //14 key 105 DPAD_LEFT //15 key 106 DPAD_RIGHT int checkKey = 0; - if(key == 16) + if (key == 16) checkKey = 28 ; - else if(key == 12) + else if (key == 12) checkKey = 103 ; - else if(key == 13) + else if (key == 13) checkKey = 108 ; - else if(key == 14) + else if (key == 14) checkKey = 105 ; - else if(key == 15) + else if (key == 15) checkKey = 106 ; mTvInput.sendkeyCode(checkKey); } @@ -515,14 +511,14 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData static int checkKey = 0, last_checkKey = 0; - switch(pData[6]) { //different key + switch (pData[6]) { //different key case 12: //DPAD_UP st_key_up = pData[5]; - if(st_key_up == 0x1D) { //CMD_INPUT_DOWN + if (st_key_up == 0x1D) { //CMD_INPUT_DOWN last_checkKey = checkKey; checkKey = 103; mTvInput.sendkeyCode(checkKey); - } else if(st_key_up == 0x1E) { //CMD_INPUT_UP + } else if (st_key_up == 0x1E) { //CMD_INPUT_UP //checkKey = 103; //mTvInput.sendkeyCode_Up(checkKey); } @@ -530,23 +526,37 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData case 13: //DPAD_DOWN st_key_down = pData[5]; - if(st_key_down == 0x1D) { //CMD_INPUT_DOWN + if (st_key_down == 0x1D) { //CMD_INPUT_DOWN last_checkKey = checkKey; checkKey = 108; mTvInput.sendkeyCode(checkKey); - } else if(st_key_down == 0x1E) { //CMD_INPUT_UP + } else if (st_key_down == 0x1E) { //CMD_INPUT_UP //checkKey = 108; //mTvInput.sendkeyCode_Up(checkKey); } break; case 14: //DPAD_LEFT - st_key_left = pData[5]; - if(st_key_left == 0x1D) { //CMD_INPUT_DOWN + st = pData[5]; + if (st == 0x1D) { //CMD_INPUT_DOWN last_checkKey = checkKey; checkKey = 105; - mTvInput.sendkeyCode(checkKey); - } else if(st_key_left == 0x1E) { //CMD_INPUT_UP + lastTime = 0; + mbFbcKeyEnterDown = 1;//true + mFbcEnterKeyDownTime = mTvInput.getNowMs(); + mTvInput.sendKeyRepeatStart(15, 1200, 1500);//code 4, dis 3, repeatTime 2 + } else if (st == 0x1E) { //CMD_INPUT_UP + checkKey = 105; + if (mbFbcKeyEnterDown == 1) { + mbFbcKeyEnterDown = 0;//false + mTvInput.sendKeyRepeatStop(); + int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; + LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); + if (disFbcEnterKeyDown > 1200) { //long down + } else { + mTvInput.sendkeyCode(105); + } + } //checkKey = 105; //mTvInput.sendkeyCode_Up(checkKey); } @@ -554,11 +564,11 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData case 15: //DPAD_RIGHT st_key_right = pData[5]; - if(st_key_right == 0x1D) { //CMD_INPUT_DOWN + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN last_checkKey = checkKey; checkKey = 106; mTvInput.sendkeyCode(checkKey); - } else if(st_key_right == 0x1E) { //CMD_INPUT_UP + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP //checkKey = 106; //mTvInput.sendkeyCode_Up(checkKey); } @@ -566,21 +576,21 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData case 16: //DPAD_ENTER st = pData[5]; - if(st == 0x1D) { //CMD_INPUT_DOWN + if (st == 0x1D) { //CMD_INPUT_DOWN last_checkKey = checkKey; checkKey = 28; lastTime = 0; mbFbcKeyEnterDown = 1;//true mFbcEnterKeyDownTime = mTvInput.getNowMs(); mTvInput.sendKeyRepeatStart(158, 1200, 1500);//code 4, dis 3, repeatTime 2 - } else if(st == 0x1E) { //CMD_INPUT_UP + } else if (st == 0x1E) { //CMD_INPUT_UP checkKey = 28; - if(mbFbcKeyEnterDown == 1) { + if (mbFbcKeyEnterDown == 1) { mbFbcKeyEnterDown = 0;//false mTvInput.sendKeyRepeatStop(); int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); - if(disFbcEnterKeyDown > 1200) { //long down + if (disFbcEnterKeyDown > 1200) { //long down } else { mTvInput.sendkeyCode(28); } @@ -590,12 +600,12 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData case 20: //7key power st_key_right = pData[5]; - if(st_key_right == 0x1D) { //CMD_INPUT_DOWN + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN last_checkKey = checkKey; checkKey = 116; //mTvInput.sendIRkeyCode_Down(checkKey); mTvInput.sendIRkeyCode(checkKey); - } else if(st_key_right == 0x1E) { //CMD_INPUT_UP + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP checkKey = 116; //mTvInput.sendIRkeyCode_Up(checkKey); } @@ -603,11 +613,11 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData case 26: //7key source st_key_right = pData[5]; - if(st_key_right == 0x1D) { //CMD_INPUT_DOWN + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN last_checkKey = checkKey; checkKey = 466; mTvInput.sendIRkeyCode_Down(checkKey); - } else if(st_key_right == 0x1E) { //CMD_INPUT_UP + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP checkKey = 466; mTvInput.sendIRkeyCode_Up(checkKey); } @@ -615,11 +625,11 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData case 27: //7key menu st_key_right = pData[5]; - if(st_key_right == 0x1D) { //CMD_INPUT_DOWN + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN last_checkKey = checkKey; checkKey = 139; mTvInput.sendkeyCode(checkKey); - } else if(st_key_right == 0x1E) { //CMD_INPUT_UP + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP //checkKey = 139; //mTvInput.sendkeyCode_Up(checkKey); } @@ -627,11 +637,11 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData case 40: //7key vol - st_key_right = pData[5]; - if(st_key_right == 0x1D) { //CMD_INPUT_DOWN + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN last_checkKey = checkKey; checkKey = 114; mTvInput.sendIRkeyCode_Down(checkKey); - } else if(st_key_right == 0x1E) { //CMD_INPUT_UP + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP checkKey = 114; mTvInput.sendIRkeyCode_Up(checkKey); } @@ -639,15 +649,88 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData case 41: //7key vol + st_key_right = pData[5]; - if(st_key_right == 0x1D) { //CMD_INPUT_DOWN + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN last_checkKey = checkKey; checkKey = 115; mTvInput.sendIRkeyCode_Down(checkKey); - } else if(st_key_right == 0x1E) { //CMD_INPUT_UP + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP checkKey = 115; mTvInput.sendIRkeyCode_Up(checkKey); } break; + case 201: //SARADC_DPAD_UP + st_key_up = pData[5]; + if (st_key_up == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 950; + mTvInput.sendkeyCode_Down(checkKey); + } else if (st_key_up == 0x1E) { //CMD_INPUT_UP + mTvInput.sendkeyCode_Up(checkKey); + } + break; + + case 202: //SARADC_DOWN + st_key_down = pData[5]; + if (st_key_down == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 951; + mTvInput.sendkeyCode_Down(checkKey); + } else if (st_key_down == 0x1E) { //CMD_INPUT_UP + mTvInput.sendkeyCode_Up(checkKey); + } + break; + + case 203: //SARADC_LEFT + st = pData[5]; + if (st == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 952; + lastTime = 0; + mbFbcKeyEnterDown = 1;//true + mFbcEnterKeyDownTime = mTvInput.getNowMs(); + mTvInput.sendkeyCode_Down(checkKey); + mTvInput.sendKeyRepeatStart(955, 1200, 1500);//code 4, dis 3, repeatTime 2 + } else if (st == 0x1E) { //CMD_INPUT_UP + checkKey = 952; + if (mbFbcKeyEnterDown == 1) { + mbFbcKeyEnterDown = 0;//false + mTvInput.sendKeyRepeatStop(); + int disFbcEnterKeyDown = mTvInput.getNowMs() - mFbcEnterKeyDownTime; + LOGD("disFbcEnterKeyDown = %d", disFbcEnterKeyDown); + if (disFbcEnterKeyDown > 1200) { //long down + mTvInput.sendkeyCode_Up(955); + mTvInput.sendkeyCode_Up(952); + } else { + mTvInput.sendkeyCode_Up(checkKey); + } + } + } + break; + + + case 204: //SARADC_RIGHT + st_key_right = pData[5]; + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 953; + mTvInput.sendkeyCode_Down(checkKey); + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP + mTvInput.sendkeyCode_Up(checkKey); + + } + break; + + case 205: //SARADC_ENTER + st_key_right = pData[5]; + if (st_key_right == 0x1D) { //CMD_INPUT_DOWN + last_checkKey = checkKey; + checkKey = 954; + mTvInput.sendkeyCode_Down(checkKey); + } else if (st_key_right == 0x1E) { //CMD_INPUT_UP + mTvInput.sendkeyCode_Up(checkKey); + } + + break; } #endif } @@ -662,14 +745,14 @@ int CFbcCommunication::processData(COMM_DEV_TYPE_E fromDev, unsigned char *pData bool CFbcCommunication::threadLoop() { unsigned char readFrameBuf[512]; - while(!exitPending()) { //requietexit() or requietexitWait() not call - while(mUpgradeFlag == 1) { + while (!exitPending()) { //requietexit() or requietexitWait() not call + while (mUpgradeFlag == 1) { usleep(1000 * 1000); } int num = mEpoll.wait(); - while(mUpgradeFlag == 1) { + while (mUpgradeFlag == 1) { usleep(1000 * 1000); } @@ -679,7 +762,7 @@ bool CFbcCommunication::threadLoop() * EPOLLIN event */ if ((mEpoll)[i].events & EPOLLIN) { - if(fd == mHdmiCec.getFd()) { //ce-----------------------------c + if (fd == mHdmiCec.getFd()) { //ce-----------------------------c int bufIndex = 0; int needRead = 4; int haveRead = 0; @@ -689,23 +772,30 @@ bool CFbcCommunication::threadLoop() haveRead += readLen; bufIndex += readLen; //if(haveRead == needRead) break; - } while(0); + } while (0); - if(readLen > 0) { + if (readLen > 0) { processData(COMM_DEV_CEC, readFrameBuf, readLen); } else { } - } else if(fd == mSerialPort.getFd()) { + } else if (fd == mSerialPort.getFd()) { //seria---------------------------l int cmdLen = 0, idx = 0; LOGD("serial data come"); memset(readFrameBuf, 0, 512); int ret = uartReadData(readFrameBuf, &cmdLen); - if(ret == -1) { //data error + if (ret == -1) { //data error sendAckCmd(false); - } else if(readFrameBuf[4] == 0x80) { //ack + } else if (readFrameBuf[4] == 0x80) { //ack LOGD("is ack come"); +#ifdef TV_RESEND_UMUTE_TO_FBC + if (((readFrameBuf[7] << 8) | readFrameBuf[6]) == 0x8001 && + readFrameBuf[5] == AUDIO_CMD_SET_MUTE) { + LOGD("resend unmute to 101 avoid 101 receiving unmute timeout\n"); + Fbc_Set_Value_INT8(COMM_DEV_SERIAL, AUDIO_CMD_SET_MUTE, 1); + } +#endif } else { //not ack sendAckCmd(true); processData(COMM_DEV_SERIAL, readFrameBuf, cmdLen); @@ -735,7 +825,7 @@ int CFbcCommunication::Fbc_Set_Value_INT8(COMM_DEV_TYPE_E toDev, int cmd_type, i return 0; } LOGD("%s cmd =0x%x, value=%d", __FUNCTION__, cmd_type, value); - if(toDev == COMM_DEV_CEC) { + if (toDev == COMM_DEV_CEC) { unsigned char cmd[16], rxbuf[16]; int rxlen = 0, idx = 0; memset(cmd, 0, 16); @@ -744,7 +834,7 @@ int CFbcCommunication::Fbc_Set_Value_INT8(COMM_DEV_TYPE_E toDev, int cmd_type, i cmd[1] = cmd_type; cmd[2] = value; sendDataOneway(COMM_DEV_CEC, cmd, 4, 0); - } else if(toDev == COMM_DEV_SERIAL) { + } else if (toDev == COMM_DEV_SERIAL) { int crc32value = 0; unsigned char write_buf[512]; unsigned char rxbuf[512]; @@ -778,7 +868,7 @@ int CFbcCommunication::Fbc_Set_Value_INT32(COMM_DEV_TYPE_E toDev, int cmd_type, return 0; } - if(toDev == COMM_DEV_SERIAL) { + if (toDev == COMM_DEV_SERIAL) { int crc32value = 0; unsigned char write_buf[512]; unsigned char rxbuf[512]; @@ -818,7 +908,7 @@ int CFbcCommunication::Fbc_Get_Value_INT8(COMM_DEV_TYPE_E fromDev, int cmd_type, LOGD("%s cmd =0x%x", __FUNCTION__, cmd_type); - if(fromDev == COMM_DEV_CEC) { + if (fromDev == COMM_DEV_CEC) { unsigned char cmd[16], rxbuf[16]; int rxlen = 0, idx = 0; memset(cmd, 0, 16); @@ -827,7 +917,7 @@ int CFbcCommunication::Fbc_Get_Value_INT8(COMM_DEV_TYPE_E fromDev, int cmd_type, cmd[1] = cmd_type; sendDataAndWaitReply(COMM_DEV_CEC, COMM_DEV_CEC, cmd[1], cmd, 4, 0, rxbuf, &rxlen, 0); *value = rxbuf[6]; - } else if(fromDev == COMM_DEV_SERIAL) { + } else if (fromDev == COMM_DEV_SERIAL) { int crc32value = 0, idx = 0, rxlen = 0; unsigned char write_buf[16]; unsigned char rxbuf[16]; @@ -863,21 +953,21 @@ int CFbcCommunication::Fbc_Set_BatchValue(COMM_DEV_TYPE_E toDev, unsigned char * return 0; } - if( 512 <= count) { + if ( 512 <= count) { return -1; } - if(toDev == COMM_DEV_CEC) { + if (toDev == COMM_DEV_CEC) { unsigned char cmd[512], rxbuf[512]; int rxlen = 0, idx = 0; memset(cmd, 0, 512); memset(rxbuf, 0, 512); cmd[0] = 0x40; - for(idx = 0; idx < count; idx++) { + for (idx = 0; idx < count; idx++) { cmd[idx + 1] = cmd_buf[idx]; } sendDataOneway(COMM_DEV_CEC, cmd, count + 1, 0); - } else if(toDev == COMM_DEV_SERIAL) { + } else if (toDev == COMM_DEV_SERIAL) { int crc32value = 0; unsigned char write_buf[512]; unsigned char rxbuf[512]; @@ -892,7 +982,7 @@ int CFbcCommunication::Fbc_Set_BatchValue(COMM_DEV_TYPE_E toDev, unsigned char * //Ack byte : 0x80-> ack package;0x00->normal package; write_buf[4] = 0x00; - for(idx = 0; idx < count; idx++) { + for (idx = 0; idx < count; idx++) { write_buf[idx + 5] = cmd_buf[idx]; } //crc32 little Endian @@ -912,12 +1002,12 @@ int CFbcCommunication::Fbc_Get_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char return 0; } - if( 512 <= count) { + if ( 512 <= count) { return -1; } int ret = 0; // TODO: read value - if(fromDev == COMM_DEV_CEC) { + if (fromDev == COMM_DEV_CEC) { unsigned char cmd[512], rxbuf[512]; int rxlen = 0, idx = 0; memset(cmd, 0, 512); @@ -926,8 +1016,8 @@ int CFbcCommunication::Fbc_Get_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char cmd[1] = cmd_buf[0]; sendDataAndWaitReply(COMM_DEV_CEC, COMM_DEV_CEC, cmd[1], cmd, count + 1, 0, rxbuf, &rxlen, 0); - if(rxlen > 2) { - for(idx = 0; idx < rxlen; idx++) { + if (rxlen > 2) { + for (idx = 0; idx < rxlen; idx++) { cmd_buf[idx] = cmd[idx + 1]; } } @@ -947,7 +1037,7 @@ int CFbcCommunication::Fbc_Get_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char //Ack byte write_buf[4] = 0x00; //cmd ID - for(idx = 0; idx < count; idx++) { + for (idx = 0; idx < count; idx++) { write_buf[idx + 5] = cmd_buf[idx]; } //crc32 little Endian @@ -958,8 +1048,8 @@ int CFbcCommunication::Fbc_Get_BatchValue(COMM_DEV_TYPE_E fromDev, unsigned char write_buf[count + 8] = (crc32value >> 24) & 0xFF; sendDataAndWaitReply(COMM_DEV_SERIAL, COMM_DEV_SERIAL, write_buf[5], write_buf, write_buf[2], 2000, rxbuf, &rxlen, 0); - if(rxlen > 9) { - for(idx = 0; idx < (rxlen - 9); idx++) { + if (rxlen > 9) { + for (idx = 0; idx < (rxlen - 9); idx++) { cmd_buf[idx] = rxbuf[idx + 5]; } } @@ -1041,12 +1131,43 @@ int CFbcCommunication::cfbc_Get_WB_Initial(COMM_DEV_TYPE_E fromDev, int *value) int CFbcCommunication::cfbc_Set_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int value) { - return Fbc_Set_Value_INT8(fromDev, VPU_CMD_COLOR_TEMPERATURE_DEF, value); + int fbcValue = value; + switch (value) { + case 0: //standard + fbcValue = 1; + break; + case 1: //warm + fbcValue = 2; + break; + case 2: //cold + fbcValue = 0; + break; + default: + break; + } + LOGD("before set fbcValue = %d", fbcValue); + return Fbc_Set_Value_INT8(fromDev, VPU_CMD_COLOR_TEMPERATURE_DEF, fbcValue); } int CFbcCommunication::cfbc_Get_ColorTemp_Mode(COMM_DEV_TYPE_E fromDev, int *value) { - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_COLOR_TEMPERATURE_DEF | 0x80, value); + Fbc_Get_Value_INT8(fromDev, VPU_CMD_COLOR_TEMPERATURE_DEF | 0x80, value); + + switch (*value) { + case 0: //cold + *value = 2; + break; + case 1: //standard + *value = 0; + break; + case 2: //warm + *value = 1; + break; + default: + break; + } + + return 0; } int CFbcCommunication::cfbc_Set_Test_Pattern(COMM_DEV_TYPE_E fromDev, int value) @@ -1302,7 +1423,7 @@ int CFbcCommunication::cfbc_Get_FBC_Factory_SN(COMM_DEV_TYPE_E fromDev, char Fac if (rx_len <= 0) { return -1; } - strncpy(FactorySN, (char *)(cmd + 1), 17); + strncpy(FactorySN, (char *)(cmd + 1), rx_len); LOGD("panelModel=%s", FactorySN); return 0; @@ -1455,6 +1576,17 @@ int CFbcCommunication::cfbc_Get_Gamma(COMM_DEV_TYPE_E fromDev, int *value) return 0; } +int CFbcCommunication::cfbc_Set_VMute(COMM_DEV_TYPE_E fromDev, unsigned char value) +{ + unsigned char cmd[512]; + memset(cmd, 0, 512); + + cmd[0] = VPU_CMD_USER_VMUTE; + cmd[1] = value; + LOGD("cfbc_Set_VMute=%d", cmd[1]); + + return Fbc_Set_BatchValue(fromDev, cmd, 2); +} int CFbcCommunication::cfbc_Set_WhiteBalance_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value) { unsigned char cmd[512]; @@ -1498,6 +1630,35 @@ int CFbcCommunication::cfbc_Set_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char return Fbc_Set_BatchValue(fromDev, cmd, 8); } +int CFbcCommunication::cfbc_TestPattern_Select(COMM_DEV_TYPE_E fromDev, int value) +{ + int ret = -1; + unsigned char cmd[512]; + memset(cmd, 0, 512); + + LOGD("Call vpp 63 2 1\n"); + cmd[0] = VPU_CMD_SRCIF; + cmd[1] = 2; + cmd[2] = 1; + + ret = Fbc_Set_BatchValue(fromDev, cmd, 3);//close csc0 + + if (ret == 0) { + LOGD("Call vpp 9 11 1\n"); + memset(cmd, 0, 512); + cmd[0] = VPU_CMD_ENABLE; + cmd[1] = 11; + cmd[2] = 1; + ret = Fbc_Set_BatchValue(fromDev, cmd, 3); + if (ret == 0) { + memset(cmd, 0, 512); + LOGD("Call vpp 42 1-17\n"); + Fbc_Set_Value_INT8(fromDev, VPU_CMD_PATTEN_SEL, value); + } + } + + return ret; +} int CFbcCommunication::cfbc_WhiteBalance_GrayPattern_OnOff(COMM_DEV_TYPE_E fromDev, int onOff) { int ret = -1; @@ -1575,6 +1736,22 @@ int CFbcCommunication::cfbc_WhiteBalance_SetGrayPattern(COMM_DEV_TYPE_E fromDev, return ret; } +int CFbcCommunication::cfbc_Set_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, unsigned char value) +{ + unsigned char cmd[512]; + memset(cmd, 0, 512); + + cmd[0] = CMD_SET_AUTO_BACKLIGHT_ONFF; + cmd[1] = value; + LOGD("cfbc_Set_naturelight_onoff\n"); + return Fbc_Set_BatchValue(fromDev, cmd, 2); +} + +int CFbcCommunication::cfbc_Get_Auto_Backlight_OnOff(COMM_DEV_TYPE_E fromDev, int *value) +{ + LOGD("cfbc_get_naturelight_onoff\n"); + return Fbc_Get_Value_INT8(fromDev, CMD_GET_AUTO_BACKLIGHT_ONFF, value); +} int CFbcCommunication::cfbc_Get_WB_Batch(COMM_DEV_TYPE_E fromDev, unsigned char mode, unsigned char *r_gain, unsigned char *g_gain, unsigned char *b_gain, unsigned char *r_offset, unsigned char *g_offset, unsigned char *b_offset) { unsigned char cmd[512]; @@ -1618,8 +1795,7 @@ int CFbcCommunication::cfbc_Set_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int valu int CFbcCommunication::cfbc_Get_AUTO_ELEC_MODE(COMM_DEV_TYPE_E fromDev, int *value) { - LOGD("%s cmd =0x%x~~~~~~~~~", __FUNCTION__, VPU_CMD_SET_ELEC_MODE); - return Fbc_Get_Value_INT8(fromDev, VPU_CMD_GET_ELEC_MODE, value); + return 0; } int CFbcCommunication::cfbc_Set_Thermal_state(COMM_DEV_TYPE_E fromDev, int value) @@ -1631,8 +1807,8 @@ int CFbcCommunication::cfbc_Set_Thermal_state(COMM_DEV_TYPE_E fromDev, int value int CFbcCommunication::cfbc_Set_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int value) { + return Fbc_Set_Value_INT8(fromDev, 0x84, value); // return Fbc_Set_Value_INT8(fromDev, CMD_LIGHT_SENSOR, value); - return 0; } int CFbcCommunication::cfbc_Get_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int *value) @@ -1643,8 +1819,8 @@ int CFbcCommunication::cfbc_Get_LightSensor_N310(COMM_DEV_TYPE_E fromDev, int *v int CFbcCommunication::cfbc_Set_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int value) { + return Fbc_Set_Value_INT8(fromDev, 0x83, value); // return Fbc_Set_Value_INT8(fromDev, CMD_DREAM_PANEL, value); - return 0; } int CFbcCommunication::cfbc_Get_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int *value) @@ -1655,8 +1831,8 @@ int CFbcCommunication::cfbc_Get_Dream_Panel_N310(COMM_DEV_TYPE_E fromDev, int *v int CFbcCommunication::cfbc_Set_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int value) { + return Fbc_Set_Value_INT8(fromDev, 0x81, value); // return Fbc_Set_Value_INT8(fromDev, CMD_MUTI_PQ, value); - return 0; } int CFbcCommunication::cfbc_Get_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int *value) @@ -1667,8 +1843,8 @@ int CFbcCommunication::cfbc_Get_MULT_PQ_N310(COMM_DEV_TYPE_E fromDev, int *value int CFbcCommunication::cfbc_Set_MEMC_N310(COMM_DEV_TYPE_E fromDev, int value) { + return Fbc_Set_Value_INT8(fromDev, 0x82, value); // return Fbc_Set_Value_INT8(fromDev, CMD_MEMC, value); - return 0; } int CFbcCommunication::cfbc_Get_MEMC_N310(COMM_DEV_TYPE_E fromDev, int *value) @@ -1676,7 +1852,54 @@ int CFbcCommunication::cfbc_Get_MEMC_N310(COMM_DEV_TYPE_E fromDev, int *value) // return Fbc_Get_Value_INT8(fromDev, CMD_MEMC|0x80, value); return 0; } +int CFbcCommunication::cfbc_Set_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int value) +{ + return Fbc_Set_Value_INT8(fromDev, CMD_BLUETOOTH_I2S_STATUS, value); +} +int CFbcCommunication::cfbc_Get_Bluetooth_IIS_onoff(COMM_DEV_TYPE_E fromDev, int *value) +{ + return Fbc_Get_Value_INT8(fromDev, CMD_BLUETOOTH_I2S_STATUS | 0x80, value); +} +int CFbcCommunication::cfbc_Set_Led_onoff(COMM_DEV_TYPE_E fromDev, int val_1, int val_2, int val_3) +{ + unsigned char cmd[512]; + memset(cmd, 0, 512); + + cmd[0] = CMD_SET_LED_MODE; + cmd[1] = val_1; + cmd[2] = val_2; + cmd[3] = val_3; + + return Fbc_Set_BatchValue(fromDev, cmd, 4); +} +int CFbcCommunication::cfbc_Set_LockN_state(COMM_DEV_TYPE_E fromDev, int value) +{ + LOGD("%s cmd =0x%x, data%d ~~~~~~~~~\n", __FUNCTION__, CMD_SET_LOCKN_DISABLE, value); + return Fbc_Set_Value_INT8(fromDev, CMD_SET_LOCKN_DISABLE, value); +} + +int CFbcCommunication::cfbc_SET_SPLIT_SCREEN_DEMO(COMM_DEV_TYPE_E fromDev, int value) +{ + LOGD("%s,cmd[%#x], data[%d]\n", __FUNCTION__, CMD_SET_SPLIT_SCREEN_DEMO, value); + return Fbc_Set_Value_INT8(fromDev, CMD_SET_SPLIT_SCREEN_DEMO, value); +} + +int CFbcCommunication::cfbc_Set_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int value) +{ + return Fbc_Set_Value_INT8(fromDev, CMD_PANEL_ON_OFF, value); + // return 0; +} + +int CFbcCommunication::cfbc_Get_AP_STANDBY_N310(COMM_DEV_TYPE_E fromDev, int *value) +{ + return Fbc_Get_Value_INT8(fromDev, CMD_PANEL_ON_OFF | 0x80, value); + // return 0; +} +int CFbcCommunication::cfbc_Set_Fbc_Uboot_Stage(COMM_DEV_TYPE_E fromDev, int value) +{ + return Fbc_Set_Value_INT8(fromDev, CMD_SET_UBOOT_STAGE, value); +} void CFbcCommunication::CFbcMsgQueue::handleMessage ( CMessage &msg ) { |