📄 datatransfer.h
字号:
/*+++ *******************************************************************\
*
* 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.
*
\******************************************************************* ---*/
#ifndef _DATA_TRANSFER_H_
#define _DATA_TRANSFER_H_
extern "C"
{
#include <wdm.h>
#include <usb.h>
#include <usbdlib.h>
#include <usbdrivr.h>
}
#include <windef.h>
#include "Parse656Data.h"
#include "BufferQueue.h"
#include "IDataTransfer.h"
#include "transportStream.h"
class CUsbInterface;
class BasePin;
class PcbConfig;
class DataTransfer : public IDataTransfer
{
public:
DataTransfer(
CUsbInterface* p_usb,
PolarisUsbInterface* p_usb_firmware,
PDEVICE_OBJECT pdo,
PcbConfig* p_current_config,
BYTE type);
~DataTransfer();
VOID setPin(BasePin* p_pin);
VOID releasePin(BasePin* p_pin);
NTSTATUS start();
VOID stop();
VOID notifyPinFormatChange(BasePin* p_pin);
VOID powerUp();
BYTE getType();
protected:
PBUFFER_ENTRY allocateBuffer();
VOID freeBuffer(PBUFFER_ENTRY p_buffer);
VOID getUrbAndBufferSizes();
NTSTATUS sendBuffer(PBUFFER_ENTRY p_buffer);
static VOID static_BufferComplete(
PBUFFER_ENTRY p_context,
NTSTATUS status,
ULONG transfer_size,
PVOID p_read_context);
NTSTATUS startThread();
static VOID static_ThreadFunction(DataTransfer* p_this);
VOID parseBufferThread();
VOID initializeTransfer();
VOID sleep(LONG time);
VOID startStream();
VOID stopStream();
VOID PolarisModeRegister(WORD address, DWORD mode);
NTSTATUS setInterface(UCHAR usb_interface_index);
private:
CUsbInterface* _p_usb;
PolarisUsbInterface* _p_usb_firmware;
PcbConfig* _p_current_config;
DWORD _pipe;
BYTE _interface;
DWORD _urb_size;
DWORD _buffer_size;
BOOLEAN _stop_thread;
PVOID _p_thread_object;
PDEVICE_OBJECT _pdo;
Parse656Data _data_parser;
LONG _buffer_count;
BufferQueue _buffer_complete_queue;
TransportStream _ts_Data;
DWORD _buffers_need;
BOOLEAN _digital_stream;
BYTE _media_type;
DWORD _ep_mask; //for polaris sc used
BYTE _is_bulk;
BYTE _enable_HANC_Audio;
ULONG _polaris_engine_fail_count;
};
inline VOID DataTransfer::notifyPinFormatChange(BasePin* p_pin)
{
_data_parser.notifyPinFormatChange(p_pin);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -