sony_result_t sony_demod_isdbt_monitor_PresetInfo(sony_demod_t* pDemod, sony_demod_isdbt_preset_info_t* pPresetInfo) { sony_result_t result = SONY_RESULT_OK; SONY_TRACE_ENTER("sony_demod_isdbt_monitor_PresetInfo"); if ((!pDemod) || (!pPresetInfo)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if ((pDemod->state != SONY_DEMOD_STATE_ACTIVE) && (pDemod->state != SONY_DEMOD_STATE_EWS)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_SW_STATE); } result = SLVT_FreezeReg(pDemod); if (result != SONY_RESULT_OK) { SONY_TRACE_RETURN(result); } result = isLock(pDemod); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* Set SLV-T Bank : 0x60 */ result = pDemod->pI2c->WriteOneRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x00, 0x60); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* * slave Bank Addr Bit Name * -------------------------------------------------------- * <SLV-T> 60h 32h [7:0] PIR_TMCC_SET_2 * <SLV-T> 60h 33h [7:0] PIR_TMCC_SET_3 * <SLV-T> 60h 34h [7:0] PIR_TMCC_SET_4 * <SLV-T> 60h 35h [7:0] PIR_TMCC_SET_5 * <SLV-T> 60h 36h [7:0] PIR_TMCC_SET_6 * <SLV-T> 60h 37h [7:0] PIR_TMCC_SET_7 * <SLV-T> 60h 38h [7:0] PIR_TMCC_SET_8 * <SLV-T> 60h 39h [7:0] PIR_TMCC_SET_9 * <SLV-T> 60h 3Ah [7:0] PIR_TMCC_SET_10 * <SLV-T> 60h 3Bh [7:0] PIR_TMCC_SET_11 * <SLV-T> 60h 3Ch [7:0] PIR_TMCC_SET_12 * <SLV-T> 60h 3Dh [7:0] PIR_TMCC_SET_13 * <SLV-T> 60h 3Eh [7:0] PIR_TMCC_SET_14 */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x32, pPresetInfo->data, 13); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); }
bool CActorInstance::CanMove() { if (!CanAct()) return false; if (isLock()) return false; return true; }
sony_result_t sony_demod_isdbt_monitor_SpectrumSense(sony_demod_t* pDemod, sony_demod_spectrum_sense_t * pSense) { sony_result_t result = SONY_RESULT_OK; uint8_t data = 0; SONY_TRACE_ENTER("sony_demod_isdbt_monitor_SpectrumSense"); if ((!pDemod) || (!pSense)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if ((pDemod->state != SONY_DEMOD_STATE_ACTIVE) && (pDemod->state != SONY_DEMOD_STATE_EWS)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_SW_STATE); } result = SLVT_FreezeReg(pDemod); if (result != SONY_RESULT_OK) { SONY_TRACE_RETURN(result); } result = isLock(pDemod); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* Set SLV-T Bank : 0x60 */ result = pDemod->pI2c->WriteOneRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x00, 0x60); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* * slave Bank Addr Bit Signal name Meaning * --------------------------------------------------------------------------------- * <SLV-T> 60h 3Fh [0] IREG_COSNE_SINV 0:Not inverted, 1:Inverted */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x3F, &data, 1); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } SLVT_UnFreezeReg(pDemod); if (pDemod->confSense == SONY_DEMOD_SPECTRUM_INV) { *pSense = (data & 0x01) ? SONY_DEMOD_SPECTRUM_NORMAL : SONY_DEMOD_SPECTRUM_INV; } else { *pSense = (data & 0x01) ? SONY_DEMOD_SPECTRUM_INV : SONY_DEMOD_SPECTRUM_NORMAL; } SONY_TRACE_RETURN(result); }
void CActorInstance::OnShootDamage() { if (IsStun()) { Die(); } else { __Shake(100); if (!isLock() && !__IsKnockDownMotion() && !__IsStandUpMotion()) { if (InterceptOnceMotion(CRaceMotionData::NAME_DAMAGE)) PushLoopMotion(CRaceMotionData::NAME_WAIT); } } }
void unLockofLog() { if (isLock()) { isLock_ = false; mutex.unlock(); } }
void lockofLog() { if (!isLock()) { mutex.lock(); isLock_ = true; } }
sony_result_t sony_demod_isdbt_monitor_PacketErrorNumber(sony_demod_t* pDemod, sony_isdbt_monitor_target_t target, uint32_t* pPacketErrorNum) { sony_result_t result = SONY_RESULT_OK; uint8_t data[2]; SONY_TRACE_ENTER("sony_demod_isdbt_monitor_PacketErrorNumber"); if ((!pDemod) || (!pPacketErrorNum)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if (pDemod->state != SONY_DEMOD_STATE_ACTIVE) { /* Invalid on EWS mode */ SONY_TRACE_RETURN(SONY_RESULT_ERROR_SW_STATE); } result = SLVT_FreezeReg(pDemod); if (result != SONY_RESULT_OK) { SONY_TRACE_RETURN(result); } result = isLock(pDemod); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* Set SLV-T Bank : 0x60 */ result = pDemod->pI2c->WriteOneRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x00, 0x60); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } switch (target) { case SONY_ISDBT_MONITOR_TARGET_LAYER_A: /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h A2h [7:0] ICWRJCTCNT_A[15:8] * <SLV-T> 60h A3h [7:0] ICWRJCTCNT_A[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0xA2, data, 2); break; case SONY_ISDBT_MONITOR_TARGET_LAYER_B: /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h A4h [7:0] ICWRJCTCNT_B[15:8] * <SLV-T> 60h A5h [7:0] ICWRJCTCNT_B[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0xA4, data, 2); break; case SONY_ISDBT_MONITOR_TARGET_LAYER_C: /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h A6h [7:0] ICWRJCTCNT_C[15:8] * <SLV-T> 60h A7h [7:0] ICWRJCTCNT_C[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0xA6, data, 2); break; default: SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } SLVT_UnFreezeReg(pDemod); *pPacketErrorNum = 0; *pPacketErrorNum = data[0]; *pPacketErrorNum = (*pPacketErrorNum << 8) + data[1]; SONY_TRACE_RETURN(result); }
sony_result_t sony_demod_isdbt_monitor_PER(sony_demod_t* pDemod, sony_isdbt_monitor_target_t target, uint32_t* pPER) { sony_result_t result = SONY_RESULT_OK; uint8_t tmpPacketNum[2] = {0x00, 0x00}; uint8_t tmpPacketError[2] = {0x00, 0x00}; uint16_t packetNum = 0x0000; uint32_t packetError = 0x00000000; SONY_TRACE_ENTER("sony_demod_isdbt_monitor_PER"); if ((!pDemod) || (!pPER)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if (pDemod->state != SONY_DEMOD_STATE_ACTIVE) { /* Invalid on EWS mode */ SONY_TRACE_RETURN(SONY_RESULT_ERROR_SW_STATE); } result = SLVT_FreezeReg(pDemod); if (result != SONY_RESULT_OK) { SONY_TRACE_RETURN(result); } result = isLock(pDemod); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* Set SLV-T Bank : 0x60 */ result = pDemod->pI2c->WriteOneRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x00, 0x60); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h 5Bh [6:0] OBER_CDUR_RSA[14:8] * <SLV-T> 60h 5Ch [7:0] OBER_CDUR_RSA[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x5B, tmpPacketNum, 2); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } switch (target) { case SONY_ISDBT_MONITOR_TARGET_LAYER_A: /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h 1Fh [6:0] IBER_PENUM_RSA[14:8] * <SLV-T> 60h 20h [7:0] IBER_PENUM_RSA[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x1F, tmpPacketError, 2); break; case SONY_ISDBT_MONITOR_TARGET_LAYER_B: /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h 21h [6:0] IBER_PENUM_RSB[14:8] * <SLV-T> 60h 22h [7:0] IBER_PENUM_RSB[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x21, tmpPacketError, 2); break; case SONY_ISDBT_MONITOR_TARGET_LAYER_C: /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h 23h [6:0] IBER_PENUM_RSC[14:8] * <SLV-T> 60h 24h [7:0] IBER_PENUM_RSC[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x23, tmpPacketError, 2); break; default: SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } SLVT_UnFreezeReg(pDemod); packetError = tmpPacketError[0]; packetError = (packetError << 8) + tmpPacketError[1]; packetNum = tmpPacketNum[0]; packetNum = (packetNum << 8) + tmpPacketNum[1]; if (packetNum == 0) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_HW_STATE); } /* PER = packetError * 1000000 / packetNum PER = packetError * 1000 * 1000 / packetNum */ { uint32_t div = 0; uint32_t Q = 0; uint32_t R = 0; div = packetNum; Q = (packetError * 1000) / div; R = (packetError * 1000) % div; R *= 1000; Q = Q * 1000 + R / div; R = R % div; if ((div != 1) && (R >= (div / 2))) { *pPER = Q + 1; } else { *pPER = Q; } } SONY_TRACE_RETURN(result); }
sony_result_t sony_demod_isdbt_monitor_PreRSBER(sony_demod_t* pDemod, sony_isdbt_monitor_target_t target, uint32_t* pBER) { sony_result_t result = SONY_RESULT_OK; uint8_t tmpPacketNum[2] = {0x00, 0x00}; uint8_t tmpBitError[3] = {0x00, 0x00, 0x00}; uint16_t packetNum = 0x0000; uint32_t bitError = 0x00000000; SONY_TRACE_ENTER("sony_demod_isdbt_monitor_PreRSBER"); if ((!pDemod) || (!pBER)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if (pDemod->state != SONY_DEMOD_STATE_ACTIVE) { /* Invalid on EWS mode */ SONY_TRACE_RETURN(SONY_RESULT_ERROR_SW_STATE); } result = SLVT_FreezeReg(pDemod); if (result != SONY_RESULT_OK) { SONY_TRACE_RETURN(result); } result = isLock(pDemod); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* Set SLV-T Bank : 0x60 */ result = pDemod->pI2c->WriteOneRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x00, 0x60); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h 5Bh [6:0] OBER_CDUR_RSA[14:8] * <SLV-T> 60h 5Ch [7:0] OBER_CDUR_RSA[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x5B, tmpPacketNum, 2); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } switch (target) { case SONY_ISDBT_MONITOR_TARGET_LAYER_A: /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h 16h [5:0] IBER_BENUM_RSA[21:16] * <SLV-T> 60h 17h [7:0] IBER_BENUM_RSA[15:8] * <SLV-T> 60h 18h [7:0] IBER_BENUM_RSA[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x16, tmpBitError, 3); break; case SONY_ISDBT_MONITOR_TARGET_LAYER_B: /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h 19h [5:0] IBER_BENUM_RSB[21:16] * <SLV-T> 60h 1Ah [7:0] IBER_BENUM_RSB[15:8] * <SLV-T> 60h 1Bh [7:0] IBER_BENUM_RSB[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x19, tmpBitError, 3); break; case SONY_ISDBT_MONITOR_TARGET_LAYER_C: /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h 1Ch [5:0] IBER_BENUM_RSC[21:16] * <SLV-T> 60h 1Dh [7:0] IBER_BENUM_RSC[15:8] * <SLV-T> 60h 1Eh [7:0] IBER_BENUM_RSC[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x1C, tmpBitError, 3); break; default: SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } SLVT_UnFreezeReg(pDemod); packetNum = tmpPacketNum[0]; packetNum = (packetNum << 8) + tmpPacketNum[1]; bitError = tmpBitError[0] & 0x7F; bitError = (bitError << 8) + tmpBitError[1]; bitError = (bitError << 8) + tmpBitError[2]; if (packetNum == 0) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_HW_STATE); } /* BER = (bitError * 10000000) / (packetNum * 8 * 204) BER = (bitError * 312500) / (packetNum * 51) BER = (bitError * 250 * 1250) / (packetNum * 51) */ { uint32_t div = 0; uint32_t Q = 0; uint32_t R = 0; div = packetNum * 51; Q = (bitError * 250) / div; R = (bitError * 250) % div; R *= 1250; Q = Q * 1250 + R / div; R = R % div; if (R >= (div/2)) { *pBER = Q + 1; } else { *pBER = Q; } } SONY_TRACE_RETURN(result); }
sony_result_t sony_demod_isdbt_monitor_ModeGuard(sony_demod_t* pDemod, sony_isdbt_mode_t* pMode, sony_isdbt_guard_t* pGuard) { sony_result_t result = SONY_RESULT_OK; uint8_t data = 0x00; SONY_TRACE_ENTER("sony_demod_isdbt_monitor_ModeGuard"); if ((!pDemod) || (!pMode) || (!pGuard)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if ((pDemod->state != SONY_DEMOD_STATE_ACTIVE) && (pDemod->state != SONY_DEMOD_STATE_EWS)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_SW_STATE); } result = SLVT_FreezeReg(pDemod); if (result != SONY_RESULT_OK) { SONY_TRACE_RETURN(result); } result = isLock(pDemod); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* Set SLV-T Bank : 0x60 */ result = pDemod->pI2c->WriteOneRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x00, 0x60); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* * slave Bank Addr Bit Name Meaning * --------------------------------------------------------------------------------- * <SLV-T> 60h 40h [3:2] IREG_MODE[1:0] 0:Mode1, 1:Mode3, 2:Mode2 * <SLV-T> 60h 40h [1:0] IREG_GI[1:0] 0:1/32, 1:1/16, 2:1/8, 3:1/4 */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x40, &data, 1); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } SLVT_UnFreezeReg(pDemod); switch ((data >> 2) & 0x03) { case 0: *pMode = SONY_ISDBT_MODE_1; break; case 1: *pMode = SONY_ISDBT_MODE_3; break; case 2: *pMode = SONY_ISDBT_MODE_2; break; default: *pMode = SONY_ISDBT_MODE_UNKNOWN; break; } switch (data & 0x03) { case 0: *pGuard = SONY_ISDBT_GUARD_1_32; break; case 1: *pGuard = SONY_ISDBT_GUARD_1_16; break; case 2: *pGuard = SONY_ISDBT_GUARD_1_8; break; case 3: *pGuard = SONY_ISDBT_GUARD_1_4; break; default: *pGuard = SONY_ISDBT_GUARD_UNKNOWN; break; } SONY_TRACE_RETURN(result); }
sony_result_t sony_demod_isdbt_monitor_SNR(sony_demod_t* pDemod, int32_t* pSNR) { sony_result_t result = SONY_RESULT_OK; uint8_t data[2] = {0x00, 0x00}; uint16_t iregSnmonOd = 0x0000; SONY_TRACE_ENTER("sony_demod_isdbt_monitor_SNR"); if ((!pDemod) || (!pSNR)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if ((pDemod->state != SONY_DEMOD_STATE_ACTIVE) && (pDemod->state != SONY_DEMOD_STATE_EWS)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_SW_STATE); } result = SLVT_FreezeReg(pDemod); if (result != SONY_RESULT_OK) { SONY_TRACE_RETURN(result); } result = isLock(pDemod); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* Set SLV-T Bank : 0x60 */ result = pDemod->pI2c->WriteOneRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x00, 0x60); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 60h 28h [7:0] IREG_SNMON_OD[15:8] * <SLV-T> 60h 29h [7:0] IREG_SNMON_OD[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x28, data, 2); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } SLVT_UnFreezeReg(pDemod); iregSnmonOd = data[0]; iregSnmonOd = (iregSnmonOd << 8) + data[1]; if (iregSnmonOd == 0) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_HW_STATE); } /* * * Xtal = 20.5MHz or 41MHz and * BW8MHz: * if IREG_SNMON_OD > 1143 * SNR[dB] = 10 * log10 ( 1143 / ( 1200 - 1143 ) ) + 22 * else * SNR[dB] = 10 * log10 ( IREG_SNMON_OD / ( 1200 - IREG_SNMON_OD ) ) + 22 * = 10 * (log10(IREG_SNMON_OD) - log10(1200 - IREG_SNMON_OD)) + 22 * sony_log10 returns log10(x) * 100 * Therefore SNR(dB) * 1000 : * = 10 * 10 * (sony_log10(IREG_SNMON_OD) - sony_log10(1200 - IREG_SNMON_OD) + 22 * * Others: SNR[dB] = 10 * log10 (IREG_SNMON_OD / 8 ) * = 10 * (log10(IREG_SNMON_OD) - log10(8)) * sony_log10 returns log10(x) * 100 * Therefore SNR(dB) * 1000 : * = 10 * 10 * (sony_log10(IREG_SNMON_OD) - sony_log10(8)) * = 10 * 10 * sony_log10(IREG_SNMON_OD) - 9031 */ if ((pDemod->bandwidth == SONY_DEMOD_BW_8_MHZ) && ((pDemod->xtalFreq == SONY_DEMOD_XTAL_20500KHz) || (pDemod->xtalFreq == SONY_DEMOD_XTAL_41000KHz))) { if (iregSnmonOd > 1143) { iregSnmonOd = 1143; } *pSNR = 10 * 10 * ((int32_t)sony_math_log10(iregSnmonOd) - (int32_t)sony_math_log10(1200 - iregSnmonOd)); *pSNR += 22000; } else { *pSNR = 100 * (int32_t)sony_math_log10(iregSnmonOd) - 9031; } SONY_TRACE_RETURN(result); }
sony_result_t sony_demod_isdbt_monitor_CarrierOffset(sony_demod_t* pDemod, int32_t* pOffset) { sony_result_t result = SONY_RESULT_OK; uint8_t data[4] = {0x00, 0x00, 0x00, 0x00}; uint32_t iregCrcgCtrlval = 0; SONY_TRACE_ENTER("sony_demod_isdbt_monitor_CarrierOffset"); if ((!pDemod) || (!pOffset)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if ((pDemod->state != SONY_DEMOD_STATE_ACTIVE) && (pDemod->state != SONY_DEMOD_STATE_EWS)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_SW_STATE); } result = SLVT_FreezeReg(pDemod); if (result != SONY_RESULT_OK) { SONY_TRACE_RETURN(result); } result = isLock(pDemod); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* Set SLV-T Bank : 0x60 */ result = pDemod->pI2c->WriteOneRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x00, 0x60); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* * slave Bank Addr Bit Signal name * --------------------------------------------------------------- * <SLV-T> 60h 4Ch [4:0] IREG_CRCG_CTLVAL[28:24] * <SLV-T> 60h 4Dh [7:0] IREG_CRCG_CTLVAL[23:16] * <SLV-T> 60h 4Eh [7:0] IREG_CRCG_CTLVAL[15:8] * <SLV-T> 60h 4Fh [7:0] IREG_CRCG_CTLVAL[7:0] */ result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x4C, data, 4); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } SLVT_UnFreezeReg(pDemod); iregCrcgCtrlval = data[0] & 0x1F; iregCrcgCtrlval = (iregCrcgCtrlval << 8) + data[1]; iregCrcgCtrlval = (iregCrcgCtrlval << 8) + data[2]; iregCrcgCtrlval = (iregCrcgCtrlval << 8) + data[3]; /* * (1)For the tuner which spectrum sense is not same as RF, use these formulas. * (Ordinary tuner, which is single converted and use upper local. also including ASCOT) * * Carrier Frequency Offset [Hz] = -( ( IREG_CRCG_CTLVAL / 2^28 ) * 8192 ) / ( 1008 * 10^-6 ) ---6MHz BW * = -( IREG_CRCG_CTLVAL * 8 / (2^18 * 1008 / 10^6) ) * = -( IREG_CRCG_CTLVAL * 8 / 264.241 ) * * Carrier Frequency Offset [Hz] = -( ( IREG_CRCG_CTLVAL / 2^28 ) * 8192 ) / ( 882 * 10^-6 ) ---7MHz BW * = -( IREG_CRCG_CTLVAL * 8 / (2^18 * 882 / 10^6) ) * = -( IREG_CRCG_CTLVAL * 8 / 231.211 ) * * Carrier Frequency Offset [Hz] = -( ( IREG_CRCG_CTLVAL / 2^28 ) * 8192 ) / ( 756 * 10^-6 ) ---8MHz BW * = -( IREG_CRCG_CTLVAL * 8 / (2^18 * 756 / 10^6) ) * = -( IREG_CRCG_CTLVAL * 8 / 198.181 ) * * (2)For the tuner which spectrum sense is same as RF, use these formulas. * * Carrier Frequency Offset [Hz] = ( ( IREG_CRCG_CTLVAL / 2^28 ) * 8192 ) / ( 1008 * 10^-6 ) ---6MHz BW * Carrier Frequency Offset [Hz] = ( ( IREG_CRCG_CTLVAL / 2^28 ) * 8192 ) / ( 882 * 10^-6 ) ---7MHz BW * Carrier Frequency Offset [Hz] = ( ( IREG_CRCG_CTLVAL / 2^28 ) * 8192 ) / ( 756 * 10^-6 ) ---8MHz BW */ *pOffset = sony_Convert2SComplement(iregCrcgCtrlval, 29); switch (pDemod->bandwidth) { case SONY_DEMOD_BW_6_MHZ: *pOffset = -1 * ((*pOffset) * 8 / 264); break; case SONY_DEMOD_BW_7_MHZ: *pOffset = -1 * ((*pOffset) * 8 / 231); break; case SONY_DEMOD_BW_8_MHZ: *pOffset = -1 * ((*pOffset) * 8 / 198); break; default: SONY_TRACE_RETURN(SONY_RESULT_ERROR_SW_STATE); } if (pDemod->confSense == SONY_DEMOD_SPECTRUM_INV) { *pOffset *= -1; } SONY_TRACE_RETURN(result); }
sony_result_t sony_demod_isdbt_monitor_ACEEWInfo(sony_demod_t* pDemod, uint8_t* pIsExist, sony_isdbt_aceew_info_t* pACEEWInfo) { sony_result_t result = SONY_RESULT_OK; uint8_t data[36]; SONY_TRACE_ENTER("sony_demod_isdbt_monitor_ACEEWInfo"); if ((!pDemod) || (!pACEEWInfo) || (!pIsExist)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_ARG); } if ((pDemod->state != SONY_DEMOD_STATE_ACTIVE) && (pDemod->state != SONY_DEMOD_STATE_EWS)) { SONY_TRACE_RETURN(SONY_RESULT_ERROR_SW_STATE); } result = SLVT_FreezeReg(pDemod); if (result != SONY_RESULT_OK) { SONY_TRACE_RETURN(result); } result = isLock(pDemod); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } /* * slave Bank Addr Bit Name * ------------------------------------------------------------ * <SLV-T> 61h 21h [0] IREG_AC_EMERGENCY_ACTIVATION * <SLV-T> 61h 22h [7:0] IREG_AC_EMERGENCY_PAGE0ALL1,IREG_AC_EMERGENCY_PAGE0SECOND_EN,IREG_AC_EMERGENCY_DECODE_EN_0,IREG_AC_EMERGENCY_DECODE_EN_1,IREG_AC_EMERGENCY_DECODE_EN_2 * <SLV-T> 61h 23h - 2eh IREG_AC_EMERGENCY_DECODE_0_1 - IREG_AC_EMERGENCY_DECODE_0_11 * <SLV-T> 61h 2fh - 39h IREG_AC_EMERGENCY_DECODE_1_1 - IREG_AC_EMERGENCY_DECODE_1_11 * <SLV-T> 61h 3ah - 44h IREG_AC_EMERGENCY_DECODE_2_1 - IREG_AC_EMERGENCY_DECODE_2_11 */ result = pDemod->pI2c->WriteOneRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x00, 0x61); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } result = pDemod->pI2c->ReadRegister(pDemod->pI2c, pDemod->i2cAddressSLVT, 0x21, data, 36); if (result != SONY_RESULT_OK) { SLVT_UnFreezeReg(pDemod); SONY_TRACE_RETURN(result); } SLVT_UnFreezeReg(pDemod); if(data[0] & 0x01) { *pIsExist = 1; pACEEWInfo->startEndFlag = (uint8_t)((data[1] >> 6) & 0x03); pACEEWInfo->updateFlag = (uint8_t)((data[1] >> 4) & 0x03); pACEEWInfo->signalId = (uint8_t)((data[1] >> 1) & 0x07); pACEEWInfo->isAreaValid = 0; pACEEWInfo->isEpicenter1Valid = 0; pACEEWInfo->isEpicenter2Valid = 0; if(data[2] & 0x04) { /* Area data is valid */ pACEEWInfo->isAreaValid = 1; sony_memcpy(pACEEWInfo->areaInfo.data, &data[3], 11); } if(data[2] & 0x02) { /* Epicenter1 data is valid */ pACEEWInfo->isEpicenter1Valid = 1; sony_memcpy(pACEEWInfo->epicenter1Info.data, &data[14], 11); } if(data[2] & 0x01) { /* Epicenter2 data is valid */ pACEEWInfo->isEpicenter2Valid = 1; sony_memcpy(pACEEWInfo->epicenter2Info.data, &data[25], 11); } } else {