/** @brief Get system register byte. */ int tua9001_GetSysRegByte( TUNER_MODULE *pTuner, unsigned short RegAddr, unsigned char *pReadingByte ) { // Get demod system register byte. // if(RTK_SYS_Byte_Read(RegAddr, LEN_1_BYTE, pReadingByte) != TRUE) // goto error_status_get_system_registers; I2C_BRIDGE_MODULE *pI2cBridge; BASE_INTERFACE_MODULE *pBaseInterface; struct dvb_usb_device *d; // Get I2C bridge. pI2cBridge = pTuner->pI2cBridge; pBaseInterface = pTuner->pBaseInterface; pBaseInterface->GetUserDefinedDataPointer(pBaseInterface, (void **)&d); if ( read_usb_sys_char_bytes(d, RTD2832U_SYS, RegAddr, pReadingByte, LEN_1_BYTE) ) goto error_status_get_system_registers; return FUNCTION_SUCCESS; error_status_get_system_registers: return FUNCTION_ERROR; }
/** @brief Get register bytes with address. */ int tua9001_GetRegBytesWithRegAddr( TUNER_MODULE *pTuner, unsigned char DeviceAddr, unsigned char RegAddr, unsigned char *pReadingBytes, unsigned char ByteNum ) { // Get tuner register byte. //if(rtl2832usb_ReadWithRegAddr(DeviceAddr, RegAddr, pReadingBytes, ByteNum) != FUNCTION_SUCCESS) // goto error_status_get_tuner_registers_with_address; I2C_BRIDGE_MODULE *pI2cBridge; BASE_INTERFACE_MODULE *pBaseInterface; unsigned char TunerDeviceAddr; struct dvb_usb_device *d; // Get I2C bridge. pI2cBridge = pTuner->pI2cBridge; pBaseInterface = pTuner->pBaseInterface; // Get tuner device address. pTuner->GetDeviceAddr(pTuner,&TunerDeviceAddr); pBaseInterface->GetUserDefinedDataPointer(pBaseInterface, (void **)&d); if( read_rtl2832_tuner_register( d, TunerDeviceAddr, RegAddr, pReadingBytes, ByteNum ) ) goto error_status_get_tuner_registers_with_address; return FUNCTION_SUCCESS; error_status_get_tuner_registers_with_address: return FUNCTION_ERROR; }
int tua9001i2cBusWrite (TUNER_MODULE *pTuner, unsigned char deviceAddress, unsigned char registerAddress, char *data, unsigned int length) { #if 0 BASE_INTERFACE_MODULE *pBaseInterface; unsigned char ByteNum; unsigned char WritingBytes[I2C_BUFFER_LEN]; unsigned int i; // Get base interface. pBaseInterface = pTuner->pBaseInterface; /* I2C write data format */ /* STA device_address ACK register_address ACK H_Byte-Data ACK L_Byte-Data !ACK STO */ /* STA = start condition, ACK = Acknowledge, STO = stop condition */ /* *data = pointer to data source */ /* length = number of bytes to write */ // Determine byte number. ByteNum = length + LEN_1_BYTE; // Determine writing bytes. WritingBytes[0] = registerAddress; for(i = 0; i < length; i++) WritingBytes[LEN_1_BYTE + i] = data[i]; // Send I2C writing command. if(pBaseInterface->I2cWrite(pBaseInterface, deviceAddress, WritingBytes, ByteNum) != FUNCTION_SUCCESS) goto error_status_set_tuner_registers; return TUA9001_TUNER_OK; error_status_set_tuner_registers: return TUA9001_TUNER_ERR; #endif BASE_INTERFACE_MODULE *pBaseInterface; unsigned char ByteNum; unsigned char WritingBytes[I2C_BUFFER_LEN]; unsigned int i=0; I2C_BRIDGE_MODULE *pI2cBridge; struct dvb_usb_device *d; // Get base interface. pBaseInterface = pTuner->pBaseInterface; // Get I2C bridge. pI2cBridge = pTuner->pI2cBridge; // Get tuner device address. pBaseInterface->GetUserDefinedDataPointer(pBaseInterface, (void **)&d); // Determine byte number. ByteNum = length; // Determine writing bytes. //WritingBytes[0] = registerAddress; for(i = 0; i < length; i++) WritingBytes[i] = data[i]; // Send I2C writing command. if( write_rtl2832_tuner_register( d, deviceAddress, registerAddress, WritingBytes, ByteNum ) ) goto error_status_set_tuner_registers; return TUA9001_TUNER_OK; error_status_set_tuner_registers: return TUA9001_TUNER_ERR; }