亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usbaudiodevice.h

?? USB_Audio c8051Fxxx
?? H
字號:
// USBAudioDevice.h: interface for the CUSBAudioDevice class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_USBAudioDEVICE_H__6F0D8129_C34F_4CBC_93A0_EC3F2F68A8D1__INCLUDED_)
#define AFX_USBAudioDEVICE_H__6F0D8129_C34F_4CBC_93A0_EC3F2F68A8D1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

///////////////////
//DDK Setup for HID

// There are many versions of these files dangling around 
// in the Visual Studio, the SDK and various DDK directories.
// All the pathnames will be completely spelled out (instead 
// of using compiler/linker setting), to avoid ambiguity.

// Define one of these macros below to select the DDK version:
//#define DDK98
#define DDK_2000_DDK			// Retired Windows 2000 DDK
//#define DDK_XP_SP1_DDK		// Latest Windows XP SP1, Windows XP, Windows 2000, Windows Millenium Edition.
//#define DDK_SERVER_2003_DDK	// Latest Windows Server 2003, Windows XP SP1, Windows XP, Windows 2000.

// There are many versions of these files dangling around 
// in the Visual Studio, the SDK and various DDK directories.
// All the pathnames will be completely spelled out (instead 
// of using compiler/linker setting), to avoid ambiguity.

#ifdef DDK_2000_DDK
#pragma message ("Using retired Windows 2000 DDK")
// Use the setupapi.lib that comes with the compiler
// (even though the DDK also has a setupapi.lib library)
#pragma comment (lib, "setupapi.lib")
// Use the hid.lib file from the appropriate DDK directory
#pragma comment (lib, "\\winddk\\2600\\lib\\wxp\\i386\\hid.lib")
#endif

#ifdef DDK_XP_SP1_DDK
#pragma message ("Using Windows XP SP1 DDK")
// Use the setupapi.lib file that comes with the compiler
// (even though the DDK also has a setupapi.lib library)
#pragma comment (lib, "setupapi.lib")
// Use the hid.lib file from the appropriate DDK directory
#pragma comment (lib, "\\winddk\\2600\\lib\\wxp\\i386\\hid.lib")
//#pragma comment (lib, "\\winddk\\2600\\lib\\wxp\\i386\\hid.lib")
#endif

#ifdef DDK_SERVER_2003_DDK
#pragma message ("Using Windows Server 2003 DDK")
// Use the setupapi.lib file that comes with the compiler
// (even though the DDK also has a setupapi.lib library)
#pragma comment (lib, "setupapi.lib")
// Use the hid.lib file from the appropriate DDK directory
#pragma comment (lib, "\\winddk\\3790\\lib\\w2k\\i386\\hid.lib")
//#pragma comment (lib, "\\winddk\\3790\\lib\\wxp\\i386\\hid.lib")
#endif

#ifdef DDK_2000_DDK
#include "/winddk/2600/inc/crt/initguid.h"
#define MAX_LOADSTRING 256

extern "C" {
#include "/winddk/2600/inc/wxp/hidsdi.h"
}
#include "/winddk/2600/inc/crt/setupapi.h"

#include <dbt.h>
#endif

#ifdef DDK_XP_SP1_DDK
#include "/winddk/2600/inc/wxp/guiddef.h"

#define MAX_LOADSTRING 256

extern "C" {
#include "/winddk/2600/inc/wxp/hidsdi.h"
//#include "/winddk/2600/inc/ddk/wdm/w2k/hidsdi.h"
//#include "/winddk/2600/inc/wxp/hidsdi.h"
//#include "/winddk/2600/inc/ddk/wdm/wxp/hidsdi.h"
}
#include "/winddk/2600/inc/w2k/setupapi.h"
#include <dbt.h>
#endif

#ifdef DDK_SERVER_2003_DDK
#include "/winddk/3790/inc/w2k/initguid.h"
//#include "/winddk/3790/inc/wxp/initguid.h"

#define MAX_LOADSTRING 256

extern "C" {
#include "/winddk/3790/inc/w2k/hidsdi.h"
//#include "/winddk/3790/inc/ddk/wdm/w2k/hidsdi.h"
//#include "/winddk/3790/inc/wxp/hidsdi.h"
//#include "/winddk/3790/inc/ddk/wdm/wxp/hidsdi.h"
}
#include "/winddk/3790/inc/w2k/setupapi.h"
//#include "/winddk/3790/inc/wxp/setupapi.h"

#include <dbt.h>
#endif

////////////////
////////////////

#include "mmsystem.h"
#include <windows.h>

//#include "USBAudioBootloader.h"
//#include "RDSData.h"

#define MAX_USB_DEVICES	64

//Device data
#define USBAudio_VID	0x10C4
#define USBAudio_PID	0x819A

#define USBAudio_SW_VERSION		6
#define USBAudio_HW_VERSION		1

//Audio data
#define SAMPLES_PER_SECOND	24000
//#define SAMPLES_PER_SECOND	96000
//#define SAMPLES_PER_SECOND	24000
#define BITS_PER_SAMPLE		16
#define CHANNELS			2

//Our stream data should be in 20 blocks at 32KB each
#define BLOCK_SIZE		32768
#define BLOCK_COUNT		20
#define BUFFER_PADDING	19

//Return Codes
#define STATUS_OK					0x00
#define STATUS_ERROR				0x01
#define STATUS_OUTPUTAUDIO_ERROR	0x02
#define STATUS_USBAudioAUDIO_ERROR	0x03
#define STATUS_USBAudioDATA_ERROR	0x04
#define STATUS_BOOTLOAD_ERROR		0x05

//Register definitions
#define USBAudio_REGISTER_NUM	16
#define RDS_REGISTER_NUM		6

#define USBAudio_REGISTER	WORD
#define USBAudio_REGISTER_SIZE	sizeof(USBAudio_REGISTER)

#define DEVICEID		0
#define CHIPID			1
#define POWERCFG		2
#define CHANNEL			3
#define SYSCONFIG1		4
#define SYSCONFIG2		5
#define SYSCONFIG3		6
#define TEST1			7
#define TEST2			8
#define BOOTCONFIG		9
#define STATUSRSSI		10
#define READCHAN		11
#define RDSA			12
#define RDSB			13
#define RDSC			14
#define RDSD			15

//Bit definitions
#define DEVICEID_PN		0xF000
#define DEVICEID_MFGID	0x0FFF

#define CHIPID_REV		0xFC00
#define CHIPID_DEV		0x0200
#define CHIPID_FIRMWARE	0x01FF

#define POWERCFG_DMUTE		0x4000
#define POWERCFG_MONO		0x2000
#define POWERCFG_SEEKUP		0x0200
#define POWERCFG_SEEK		0x0100
#define POWERCFG_DISABLE	0x0040
#define POWERCFG_ENABLE		0x0001

#define CHANNEL_TUNE	0x8000
#define CHANNEL_CHAN	0x03FF

#define SYSCONFIG1_DE		0x0800
#define SYSCONFIG1_RDS		0x1000

#define SYSCONFIG2_SEEKTH	0xFF00
#define SYSCONFIG2_BAND		0x0080
#define SYSCONFIG2_SPACE	0x0030
#define SYSCONFIG2_VOLUME	0x000F

#define SYSCONFIG2_SPACE_200KHZ	0x0000
#define SYSCONFIG2_SPACE_100KHZ	0x0010
#define SYSCONFIG2_SPACE_50KHZ	0x0020

#define STATUSRSSI_RDSR		0x8000
#define STATUSRSSI_STC		0x4000
#define STATUSRSSI_SF		0x2000
#define STATUSRSSI_ST		0x0100
#define STATUSRSSI_RSSI		0x00FF

#define READCHAN_READCHAN	0x03FF

//Scratch page
#define SCRATCH_PAGE_SIZE		63
#define SCRATCH_PAGE_USED_SIZE	22
typedef BYTE	SCRATCH_PAGE[SCRATCH_PAGE_SIZE];

#define SCRATCH_PAGE_SW_VERSION	1
#define SCRATCH_PAGE_HW_VERSION	2

//Report definitions
#define DEVICEID_REPORT		DEVICEID + 1
#define CHIPID_REPORT		CHIPID + 1
#define POWERCFG_REPORT		POWERCFG + 1
#define CHANNEL_REPORT		CHANNEL + 1
#define SYSCONFIG1_REPORT	SYSCONFIG1 + 1
#define SYSCONFIG2_REPORT	SYSCONFIG2 + 1
#define SYSCONFIG3_REPORT	SYSCONFIG3 + 1
#define TEST1_REPORT		TEST1 + 1
#define TEST2_REPORT		TEST2 + 1
#define BOOTCONFIG_REPORT	BOOTCONFIG + 1
#define STATUSRSSI_REPORT	STATUSRSSI + 1
#define READCHAN_REPORT		READCHAN + 1
#define RDSA_REPORT			RDSA + 1
#define RDSB_REPORT			RDSB + 1
#define RDSC_REPORT			RDSC + 1
#define RDSD_REPORT			RDSD + 1
#define LED_REPORT			19
#define SCRATCH_REPORT		20

#define ENTIRE_REPORT		USBAudio_REGISTER_NUM + 1
#define RDS_REPORT			USBAudio_REGISTER_NUM + 2

#define REGISTER_REPORT_SIZE	(USBAudio_REGISTER_SIZE + 1)
#define ENTIRE_REPORT_SIZE		((USBAudio_REGISTER_NUM * USBAudio_REGISTER_SIZE) + 1)
#define RDS_REPORT_SIZE			((RDS_REGISTER_NUM * USBAudio_REGISTER_SIZE) + 1)
#define LED_REPORT_SIZE			3
#define SCRATCH_REPORT_SIZE		(SCRATCH_PAGE_SIZE + 1)

//LED State definitions
#define LED_COMMAND			0x35

#define NO_CHANGE_LED		0x00
#define ALL_COLOR_LED		0x01
#define BLINK_GREEN_LED		0x02
#define BLINK_RED_LED		0x04
#define BLINK_ORANGE_LED	0x10
#define SOLID_GREEN_LED		0x20
#define SOLID_RED_LED		0x40
#define SOLID_ORANGE_LED	0x80

#define CONNECT_STATE		BLINK_GREEN_LED
#define DISCONNECT_STATE	BLINK_ORANGE_LED
#define BOOTLOAD_STATE		SOLID_RED_LED
#define STREAMING_STATE		ALL_COLOR_LED
#define TUNING_STATE		SOLID_GREEN_LED
#define SEEKING_STATE		SOLID_GREEN_LED

//Function definitions
#define SEEK_UP		true
#define SEEK_DOWN	false

#define TUNE_UP		true
#define TUNE_DOWN	false

//Volume Definitions
#define VOLUME_MIN	0		//0% - 100%
#define VOLUME_MAX	100

#define	POLL_TIMEOUT_SECONDS		3
#define DISCONNECT_TIMEOUT_SECONDS	15

#define MAX_SEEK_THRESHOLD			63
#define PREFERRED_SEEK_THRESHOLD	31

//Global variables for the critical section and 
//free block count, used by callback functions
static CRITICAL_SECTION gWaveCriticalSection;
static volatile BYTE gWaveFreeBlockCount;

//Global callback function for when wave out terminates
static void CALLBACK waveOutProc(HWAVEOUT hwo, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2);

#define PRESET_NUM	12

//Structure that contains all useful data about the device - filled from the scratch page
typedef struct AudioData
{
	BYTE monoStereo;

} AudioData;

//Structure that contains the RDS data
typedef struct RDSData
{
	double currentStation;
	BYTE recievedSignalStrength;
	BYTE monoStereo;
} RDSData;

//Values used within the AudioData structure to assign values to the band, spacing, deemphasis, and gui options

#define DATA_MONOSTEREO			0x10
#define DATA_MONOSTEREO_STEREO	0x00
#define DATA_MONOSTEREO_MONO	0x10

class CUSBAudioDevice  
{
public:
	CUSBAudioDevice();
	virtual ~CUSBAudioDevice();

//////////////////////
//Global Functionality

	BYTE	OpenUSBAudio(AudioData* audioData);
	bool	CloseUSBAudio();

//////////////////////
//////////////////////

///////////////////////
//USB HID Functionality

//	bool BootloadDevice(AudioData* AudioData);
	
	bool	StopStream(bool stop);
private:
	bool	OpenUSBAudioData();
	bool	CloseUSBAudioData();

	HANDLE	m_USBAudioDataHandle;

	BYTE*	m_pEndpoint0ReportBuffer;
	DWORD	m_Endpoint0ReportBufferSize;

	BYTE*	m_pEndpoint1ReportBuffer;
	DWORD	m_Endpoint1ReportBufferSize;

	BYTE*	m_pEndpoint2ReportBuffer;
	DWORD	m_Endpoint2ReportBufferSize;

	USBAudio_REGISTER	m_Register[USBAudio_REGISTER_NUM];
	SCRATCH_PAGE		m_ScratchPage;


////////////////////////
////////////////////////

//////////////////////////
//USB Audio  Functionality

public:
	void	StreamAudio();
	bool	IsStreaming();
	bool	IsTuning();
	BYTE	GetWaveOutVolume();
	bool	SetWaveOutVolume(BYTE level);
	UINT    GetCurrentBlock(void);
	UINT    GetFreeBlock(void);
	long    GetOut_Count(void);
	long    GetIn_Count(void);

private:
	bool	OpenUSBAudioAudio();
	bool	OpenSoundCard();
	void	InitializeStream();
	bool	CloseUSBAudioAudio();	
	bool	CloseSoundCard();

	long    In_Count;
	long    Out_Count;

	HWAVEIN		m_USBAudioAudioHandle;
	HWAVEOUT	m_SoundCardHandle;

	WAVEHDR		m_InputHeader;
	WAVEHDR*	m_OutputHeader;
	char*		m_WaveformBuffer;

	bool		m_Streaming;
	bool		m_Tuning;
	int			m_CurrentBlock;
	int			m_FreeBlock;

	//void	(*pStreamAudio)();

	bool	StreamAudioIn();
	bool	StreamAudioOut();
	bool	ChangeLED(BYTE ledState);

	WAVEHDR*	AllocateBlocks(int size, int count);
	void		FreeBlocks(WAVEHDR*);

////////////////////////////
////////////////////////////
};

#endif // !defined(AFX_USBAudioDEVICE_H__6F0D8129_C34F_4CBC_93A0_EC3F2F68A8D1__INCLUDED_)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产露脸91国语对白| 国产性色一区二区| 久久精品亚洲一区二区三区浴池| 亚洲日本一区二区| 国产在线精品一区二区三区不卡| 欧美亚洲动漫制服丝袜| 国产精品久久久久久一区二区三区| 午夜视频一区二区| 91亚洲精品一区二区乱码| 久久综合九色综合97婷婷女人| 亚洲国产一二三| 91美女在线观看| 国产精品久久午夜| 国产在线不卡视频| 精品剧情v国产在线观看在线| 亚洲香肠在线观看| 在线一区二区三区做爰视频网站| 国产欧美综合在线| 国产成人aaaa| 久久久久久久久久美女| 国产在线国偷精品产拍免费yy| 3d动漫精品啪啪1区2区免费| 亚洲午夜电影网| 欧美日韩视频在线观看一区二区三区| 亚洲手机成人高清视频| 成人app网站| 综合久久久久久| 99re6这里只有精品视频在线观看| 国产欧美1区2区3区| 国产成人午夜精品影院观看视频 | 欧美主播一区二区三区美女| 中文字幕日本乱码精品影院| 99久久精品国产网站| 国产精品高清亚洲| 色偷偷88欧美精品久久久| 亚洲久草在线视频| 欧美日韩一区二区在线观看视频 | 欧美日韩国产成人在线免费| 亚洲成人精品一区二区| 欧美精品在欧美一区二区少妇| 五月天中文字幕一区二区| 欧美日韩三级一区二区| 青青草91视频| 国产亚洲精品资源在线26u| 国产高清精品网站| 亚洲色图色小说| 欧美三级中文字幕| 蜜桃一区二区三区在线观看| 久久久久久久久久久99999| 风间由美中文字幕在线看视频国产欧美| 久久久精品人体av艺术| 国产成人在线网站| 夜夜揉揉日日人人青青一国产精品| 欧美日韩在线三区| 国产在线精品国自产拍免费| 最新热久久免费视频| 欧美日高清视频| 国产一区二区三区久久久| 一区二区中文字幕在线| 欧美色图激情小说| 国产专区综合网| 国产精品久久久久久久第一福利| 欧美日韩综合在线免费观看| 韩国午夜理伦三级不卡影院| 亚洲欧洲国产日本综合| 91精品婷婷国产综合久久竹菊| 国产一区在线看| 亚洲一区免费观看| 久久美女艺术照精彩视频福利播放 | 91视频在线观看| 久久99热狠狠色一区二区| 亚洲欧美另类小说| 精品久久久三级丝袜| 色婷婷精品久久二区二区蜜臀av | 久久久一区二区三区| 日本精品一级二级| 国产一区二区三区久久悠悠色av| 亚洲精品中文字幕在线观看| 久久亚洲影视婷婷| 欧美日韩精品欧美日韩精品一综合| 国产精品一区二区x88av| 亚洲国产sm捆绑调教视频 | 91亚洲国产成人精品一区二三| 日本中文字幕一区二区视频| 亚洲人精品午夜| 久久久精品一品道一区| 欧美一区二区三区影视| 在线视频国产一区| av电影天堂一区二区在线| 天堂av在线一区| 亚洲精品第1页| 中文在线资源观看网站视频免费不卡| 91精品免费在线| 在线观看国产精品网站| av高清不卡在线| 国产精品自拍在线| 精品一区二区在线观看| 日本欧美肥老太交大片| 亚洲综合免费观看高清完整版在线 | 99re66热这里只有精品3直播| 国产一区二区三区综合| 久久99精品久久久久| 日韩精品电影在线观看| 午夜视频在线观看一区| 亚洲高清视频的网址| 亚洲一区二区三区中文字幕| 亚洲精品高清在线观看| 亚洲欧美偷拍三级| 中文字幕一区二区三区乱码在线 | 91在线观看一区二区| 国产不卡免费视频| 国产mv日韩mv欧美| 成人性色生活片免费看爆迷你毛片| 激情综合网av| 国产中文一区二区三区| 精品一区二区三区在线播放| 另类小说色综合网站| 看电影不卡的网站| 紧缚捆绑精品一区二区| 国产综合色在线| 国产曰批免费观看久久久| 国产98色在线|日韩| 成人黄色777网| 91色乱码一区二区三区| 欧美中文字幕一区二区三区亚洲| 日本高清免费不卡视频| 欧美日韩国产经典色站一区二区三区| 91超碰这里只有精品国产| 日韩手机在线导航| 国产亚洲综合在线| 亚洲老司机在线| 天天综合网 天天综合色| 老司机精品视频线观看86| 韩国av一区二区三区在线观看| 国产aⅴ综合色| 欧洲一区二区三区在线| 日韩一区二区电影| 国产精品久久久久婷婷| 亚洲成人综合视频| 日av在线不卡| 成人爱爱电影网址| 欧美日韩一级二级三级| 精品免费99久久| 亚洲图片激情小说| 视频一区视频二区在线观看| 国产又粗又猛又爽又黄91精品| av在线不卡免费看| 欧美福利视频导航| 国产精品网站一区| 三级在线观看一区二区| 国产成人超碰人人澡人人澡| 一本久道中文字幕精品亚洲嫩| 91精品黄色片免费大全| 国产精品免费人成网站| 日韩精品视频网站| eeuss鲁片一区二区三区| 日韩一区二区三区av| 亚洲人成在线播放网站岛国| 精品一区二区久久| 91久久久免费一区二区| 久久影院午夜片一区| 一二三四社区欧美黄| 丰满亚洲少妇av| 日韩一级黄色片| 亚洲一区二区美女| 成人午夜av电影| 欧美一区二区成人| 一区二区三区在线视频观看58| 国内成人免费视频| 欧美日韩精品福利| 亚洲男同1069视频| 国产不卡视频一区| 欧美成人bangbros| 视频在线观看91| 欧美视频日韩视频在线观看| 中文字幕日本乱码精品影院| 狠狠色丁香九九婷婷综合五月| 欧美精品一二三| 一区二区高清在线| 色国产综合视频| 亚洲人成亚洲人成在线观看图片| 国内久久婷婷综合| 精品日韩成人av| 蜜臀av国产精品久久久久| 欧美片网站yy| 亚洲不卡一区二区三区| 在线观看日韩高清av| 亚洲人成在线播放网站岛国| caoporm超碰国产精品| 久久精品亚洲乱码伦伦中文| 国内精品写真在线观看| 日韩精品一区二区三区四区| 日本午夜精品视频在线观看| 欧美精品丝袜久久久中文字幕| 一区二区三区欧美久久| 欧美综合一区二区三区| 亚洲一级二级在线| 欧美日韩亚洲丝袜制服| 午夜精品在线看| 91麻豆精品91久久久久同性|