⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flatrion.cpp

📁 完整的基于Conxant平台的USB电视棒的WIN驱动程序。
💻 CPP
字号:
/*+++ *******************************************************************\ 
* 
*  Copyright and Disclaimer: 
*  
*     --------------------------------------------------------------- 
*     This software is provided "AS IS" without warranty of any kind, 
*     either expressed or implied, including but not limited to the 
*     implied warranties of noninfringement, merchantability and/or 
*     fitness for a particular purpose.
*     --------------------------------------------------------------- 
*   
*     Copyright (c) 2008 Conexant Systems, Inc. 
*     All rights reserved. 
*
\******************************************************************* ---*/ 
#include "Flatrion.h"
#include "DriverI2c.h"
#include "miscfuncs.h"

#define   Flatrion_DEVICE_ADDRESS   0x98

Flatrion::Flatrion(DriverI2C * p_i2c):
_p_i2c(p_i2c)
{
    KeInitializeMutex(&_mutex, 0);
}
Flatrion::~Flatrion()
{

}

VOID Flatrion::lock()
{
    KeWaitForSingleObject(&_mutex, Executive, KernelMode, FALSE, NULL );
   

}

/////////////////////////////////////////////////////////////////////////////////////////
VOID Flatrion::unlock()
{
    KeReleaseMutex(&_mutex, FALSE);
}

VOID Flatrion::initialize()
{
	BYTE value;
	readByte(CH_PWR_CTRL1, &value);
    //enables clock to delta-sigma and decimation filter
    value |= 0x80;   
	writeByte(CH_PWR_CTRL1, value);
    ///power up all channel
	writeByte(CH_PWR_CTRL2, 0x00); 

}
/////////////////////////////////////////////////////////////////////////////////////////
NTSTATUS Flatrion::readByte(BYTE register_address, PBYTE p_value)
{
    lock();

    NTSTATUS status = readByteNoLock(register_address, p_value);

    unlock();

    return status;
}

/////////////////////////////////////////////////////////////////////////////////////////
NTSTATUS Flatrion::writeByte(BYTE register_address, BYTE value)
{
    lock();

    NTSTATUS status = writeByteNoLock(register_address, value);

    unlock();

    return status;
}

/////////////////////////////////////////////////////////////////////////////////////////
NTSTATUS Flatrion::readByteNoLock(BYTE register_address, PBYTE p_value)
{
    BOOLEAN status = _p_i2c->read(
        Flatrion_DEVICE_ADDRESS>>1, //device address
        1,                          //write size
        &register_address,          //write buffer
        1,                          //read size
        p_value);                   //read buffer


    if (status==TRUE)
    {
        return STATUS_SUCCESS;
    }
    else
    {
        return STATUS_UNSUCCESSFUL;
    }
}

/////////////////////////////////////////////////////////////////////////////////////////
NTSTATUS Flatrion::writeByteNoLock(BYTE register_address, BYTE value)
{  
    BOOLEAN status = _p_i2c->write(
        Flatrion_DEVICE_ADDRESS>>1, //device address
        1,                          //write size
        &register_address,          //write buffer
        1,                          //write size
        &value);                    //write buffer

    if (status==TRUE)
    {
        return STATUS_SUCCESS;
    }
    else
    {
        return STATUS_UNSUCCESSFUL;
    }
}

VOID Flatrion::powerUp()
{
    //todo:finsih this
}

VOID Flatrion::powerDown()
{
    //todo:finsih this
}

// set flatiron for audio input types
VOID Flatrion::setAudioInput(AUDIO_INPUT audio_input)
{   
    switch(audio_input)
    {
        case AUDIO_INPUT_LINE:            
        	writeByte(CH_PWR_CTRL2, 0);
            writeByte(CH_PWR_CTRL1, 0x80);
            break;
        default:
            //todo: ask Alsor for Flatiron setting.
            break;
    }
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -