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

📄 usbcam.h

📁 三星2440 cpu WINCE 5.00板级支持包
💻 H
📖 第 1 页 / 共 2 页
字号:
#define ACCEPT_IO( p ) \
   ( VALID_CONTEXT( p ) && \
     p->Flags.Open && \
    !p->Flags.UnloadPending )



//
// USB_DRIVER_SETTINGS
//
#define DRIVER_SETTINGS \
            sizeof(USB_DRIVER_SETTINGS),  \
            USB_NO_INFO,   \
            USB_NO_INFO,   \
            USB_NO_INFO,   \
            USB_NO_INFO,   \
            USB_NO_INFO,   \
            USB_NO_INFO,   \
            USB_CAM_INTERFACE_CLASS,      \
            USB_NO_INFO,   \
            USB_NO_INFO
// show Camera 
//		dwLenIn = 1 : Normal overlay
//		dwLenIn = 4 : Alphablending 
//		dwLenIn = 5 : Colorkey overlay
#define IOCTL_CAM_SHOW			CTL_CODE( FILE_DEVICE_VIDEO, 1, METHOD_NEITHER,FILE_ANY_ACCESS)

// hide Camera 
#define IOCTL_CAM_HIDE			CTL_CODE( FILE_DEVICE_VIDEO, 2, METHOD_NEITHER,FILE_ANY_ACCESS)

// Set Diplay position 
//		dwLenIn = MAKELONG(left, top)
//		dwLenOut = MAKELONG(width, height)
#define IOCTL_CAM_SETPOS		CTL_CODE( FILE_DEVICE_VIDEO, 3, METHOD_NEITHER,FILE_ANY_ACCESS)

// play 
#define IOCTL_CAM_CONT			CTL_CODE( FILE_DEVICE_VIDEO, 4, METHOD_NEITHER,FILE_ANY_ACCESS)

// stop
#define IOCTL_CAM_STOP			CTL_CODE( FILE_DEVICE_VIDEO, 5, METHOD_NEITHER,FILE_ANY_ACCESS)

// copy camera image to pBufOut (RGB565 format)
//		dwLenIn = 0 : top-down image
//		dwLenIn = 1 : bottom-up image
#define IOCTL_CAM_COPY			CTL_CODE( FILE_DEVICE_VIDEO, 6, METHOD_OUT_DIRECT,FILE_ANY_ACCESS)

// set colorkey
//		dwLenIn = RGB(R-value, G-value, B-value)
#define IOCTL_CAM_SETCOLKEY		CTL_CODE( FILE_DEVICE_VIDEO, 7, METHOD_NEITHER,FILE_ANY_ACCESS)

// set alpha value
//		dwLenIn = alpha value[0-8]
#define IOCTL_CAM_SETALPHA		CTL_CODE( FILE_DEVICE_VIDEO, 8, METHOD_NEITHER,FILE_ANY_ACCESS)

// get camera information
//		pBufOut = LPCAMINFO;
#define IOCTL_CAM_GETINFO		CTL_CODE( FILE_DEVICE_VIDEO, 9, METHOD_OUT_DIRECT,FILE_ANY_ACCESS)

// set scale for image_scaler
//		dwLenIn = scalemode (0:FINE, 3:COARSE)
//		pBufIn = (float*)&scale;
#define IOCTL_CAM_SETSCALE		CTL_CODE( FILE_DEVICE_VIDEO, 10, METHOD_IN_DIRECT,FILE_ANY_ACCESS)

// set hue value
//		dwLenIn = MAKELONG(hue_value[0-90], coord.[0-4]) ; if coord==0 then all coord. set
#define IOCTL_CAM_SETHUE		CTL_CODE( FILE_DEVICE_VIDEO, 11, METHOD_NEITHER,FILE_ANY_ACCESS)

// set gamma
//		gamma_off : dwLenIn = 0
//		gamma_on  : pBufIn = gamma_table; dwLenIn = sizeof(gamma_table=2048); 
#define IOCTL_CAM_SETGAMMA		CTL_CODE( FILE_DEVICE_VIDEO, 12, METHOD_IN_DIRECT,FILE_ANY_ACCESS)

// set White balance coordinate
//		pBufIn = WBtable;
#define IOCTL_CAM_SETWBCOORD	CTL_CODE( FILE_DEVICE_VIDEO, 13, METHOD_IN_DIRECT,FILE_ANY_ACCESS)

// set Auto Exposure accumulation limit
//		dwLenIn = MAKELONG(LowerLimit[0-255], UpperLimit[0-255]);
#define IOCTL_CAM_SETAELIMIT	CTL_CODE( FILE_DEVICE_VIDEO, 14, METHOD_NEITHER,FILE_ANY_ACCESS)

// set ADC offset value
//		dwLenIn = RGB((BYTE)R-offset[-127 - 128], (BYTE)G-offset[-127 - 128], (BYTE)B-offset[-127 - 128]);
#define IOCTL_CAM_SETADCOFS		CTL_CODE( FILE_DEVICE_VIDEO, 15, METHOD_NEITHER,FILE_ANY_ACCESS)

// set ADC offset value
//		Decimal_X_gain[5.4] = (unsigned char)(fGain[0.0-8.0]*0x20);
//		dwLenIn = RGB(Decimal_R_gain, Decimal_G_gain, Decimal_B_gain);
#define IOCTL_CAM_SETWBGAIN		CTL_CODE( FILE_DEVICE_VIDEO, 16, METHOD_NEITHER,FILE_ANY_ACCESS)

// set CbGain & CrGain
//		Decimal_Cx_gain[7.6] = (unsigned char)(fGain[0.0-2.0]*0x80);
//		dwLenIn = MAKELONG(Decimal_Cr_gain, Decimal_Cb_gain);
#define IOCTL_CAM_SETCBCRGAIN	CTL_CODE( FILE_DEVICE_VIDEO, 17, METHOD_NEITHER,FILE_ANY_ACCESS)

// set Luminance Enhancement Gain
//		Decimal_H_gain[4.3] = (unsigned char)(fHGain[0.0-8.0]*0x10);
//		Decimal_V_gain[4.3] = (unsigned char)(fVGain[0.0-8.0]*0x10);
//		Decimal_Main_gain[6.5] = (unsigned char)(fMainGain[0.0-4.0]*0x40);
//		dwLenIn = MAKELONG(Decimal_H_gain, Decimal_V_gain);
//		dwLenOut = Decimal_Main_Gain;
#define IOCTL_CAM_SETLEGAIN		CTL_CODE( FILE_DEVICE_VIDEO, 18, METHOD_NEITHER,FILE_ANY_ACCESS)

// set brightness
//		dwLenIn = (BYTE)brightness[-127 - 128];
#define IOCTL_CAM_SETBRIGHTNESS CTL_CODE( FILE_DEVICE_VIDEO, 19, METHOD_NEITHER,FILE_ANY_ACCESS)

// set Clip point & color supress 
//		dwLenIn = CSlantEn[0-1] << 31 | CSlant_val[0-1,[7.6]decimal] << 16 | Clip2[0-255] << 8 | Clip1[0-255];
#define IOCTL_CAM_SETCLIP		CTL_CODE( FILE_DEVICE_VIDEO, 20, METHOD_NEITHER,FILE_ANY_ACCESS)

// set Slice limit
//		dwLenIn = slice_limit[0-255];
#define IOCTL_CAM_SETSLICELMT	CTL_CODE( FILE_DEVICE_VIDEO, 21, METHOD_NEITHER,FILE_ANY_ACCESS)

// set White balance accumulation Limit
//		dwLenIn = MAKELONG(LowerLimit[0-255], UpperLimit[0-255]);
#define IOCTL_CAM_WBACCLMT		CTL_CODE( FILE_DEVICE_VIDEO, 22, METHOD_NEITHER,FILE_ANY_ACCESS)

// set Color supress Luma Edge limit
//		dwLenIn = MAKELONG(LowerLimit[0-255], UpperLimit[0-255]);
#define IOCTL_CAM_CSEDGELMT		CTL_CODE( FILE_DEVICE_VIDEO, 23, METHOD_NEITHER,FILE_ANY_ACCESS)

// Camera V-Sync Interrupt Handler Enable
#define IOCTL_CAM_ENVINT		CTL_CODE( FILE_DEVICE_VIDEO, 24, METHOD_NEITHER,FILE_ANY_ACCESS)

// Camera V-Sync Interrupt Handler Disable
#define IOCTL_CAM_DISVINT		CTL_CODE( FILE_DEVICE_VIDEO, 25, METHOD_NEITHER,FILE_ANY_ACCESS)

// set Camera
//		pBufIn = (LPTSTR)szCameraName;
#define IOCTL_CAM_SETCAMERA		CTL_CODE( FILE_DEVICE_VIDEO, 26, METHOD_IN_DIRECT,FILE_ANY_ACCESS)

#define CAM_IOCTL_GETJPEG			0x500
#define CAM_IOCTL_PRV_SETSIZE		0x501
#define CAM_IOCTL_PREVIEW_ON		0x502
#define CAM_IOCTL_PREVIEW_OFF		0x503
#define CAM_IOCTL_PRV_POSITION		0x504
#define CAM_IOCTL_ZOOM_ON			0x505
#define CAM_IOCTL_ZOOM_OFF			0x506
#define CAM_IOCTL_Y_FLIP			0x507
#define CAM_IOCTL_X_FLIP			0x508
#define CAM_IOCTL_MOVIE_START		0x509
#define CAM_IOCTL_MOVIE_STOP		0x50A
#define CAM_IOCTL_GET_LATEST_FRAME	0x50B
#define CAM_IOCTL_POWER_RESUME		0x50C
#define CAM_IOCTL_SET_RESOLUTION	0x50D
#define CAM_IOCTL_GET_RESOLUTION	0x50E
#define CAM_IOCTL_SET_BRIGHTNESS	0x50F
#define CAM_IOCTL_SET_SENSOR		0x510
#define CAM_IOCTL_GET_SENSOR		0x511
#define CAM_IOCTL_SET_ASIC			0x512
#define CAM_IOCTL_GET_ASIC			0x513
#define CAM_IOCTL_LM_PREVIEW		0x514
#define CAM_IOCTL_GET_QFACTOR		0x515
#define CAM_IOCTL_SET_WHITEBAL		0x516
#define CAM_IOCTL_SAMSUNG_CAM		0x520
#define CAM_IOCTL_IMAGE_SIZE		0x521 
#define CAM_IOCTL_SAMSUNG_CAM_PR	0x522
#define CAM_IOCTL_SAMSUNG_PREVIEW_START	0x523
#define CAM_IOCTL_SAMSUNG_PREVIEW_STOP	0x524

#define VIRTUAL_OFFSET		0x7C000000
#define VIRTUAL_ADDR_OFFSET	VIRTUAL_OFFSET // for MPEG4
#define DMA_BUFFER_BASE				0xAC000000
#define DMA_PHYSICAL_BASE			0x30000000  // S3C2440X01

#define FRAMEBUF_BASE				(DMA_BUFFER_BASE + 0x00100000)
#define FRAMEBUF_DMA_BASE			(DMA_PHYSICAL_BASE + 0x00100000)
#define MSG_EN_1 1

//Image Size
#define XGA_XSIZE			(1024)
#define XGA_YSIZE			(768)
#define SVGA_XSIZE			(800)
#define SVGA_YSIZE			(600)
#define VGA_XSIZE			(640)
#define VGA_YSIZE			(480)
#define PQVGA_XSIZE			(240)
#define PQVGA_YSIZE			(320)
#define CIF_XSIZE			(352)
#define CIF_YSIZE			(288)

#define QCIF_XSIZE			(176)
#define QCIF_YSIZE			(144)

#define XGA					(1)
#define SVGA					(2)
#define VGA					(3)
#define CIF					(4)
#define PQVGA				(5)
#define QCIF					(6)
//
// DEBUG
//
#if DEBUG

#define ZONE_ERR            DEBUGZONE(0)
#define ZONE_WARN           DEBUGZONE(1)
#define ZONE_INIT           DEBUGZONE(2)
#define ZONE_TRACE          DEBUGZONE(3)

#define ZONE_LPT_INIT       DEBUGZONE(4)
#define ZONE_LPT_READ       DEBUGZONE(5)
#define ZONE_LPT_WRITE      DEBUGZONE(6)
#define ZONE_LPT_IOCTL      DEBUGZONE(7)

#define ZONE_USB_PARSE      DEBUGZONE(8)
#define ZONE_USB_INIT       DEBUGZONE(9)
#define ZONE_USB_CONTROL    DEBUGZONE(10)
#define ZONE_USB_BULK       DEBUGZONE(11)

#define ZONE_USBCLIENT      DEBUGZONE(15)

//
// these should be removed in the code if you can 'g' past these successfully
//
#define TEST_TRAP() { \
   NKDbgPrintfW( TEXT("%s: Code Coverage Trap in: %s, Line: %d\n"), DRIVER_NAME, TEXT(__FILE__), __LINE__); \
   DebugBreak();  \
}

#define DUMP_USB_DEVICE_DESCRIPTOR( d ) { \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("USB_DEVICE_DESCRIPTOR:\n"))); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("----------------------\n"))); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bLength: 0x%x\n"), d.bLength ));   \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bDescriptorType: 0x%x\n"), d.bDescriptorType ));  \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bcdUSB: 0x%x\n"), d.bcdUSB ));  \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bDeviceClass: 0x%x\n"), d.bDeviceClass ));  \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bDeviceSubClass: 0x%x\n"), d.bDeviceSubClass ));  \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bDeviceProtocol: 0x%x\n"), d.bDeviceProtocol ));  \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bMaxPacketSize0: 0x%x\n"), d.bMaxPacketSize0 ));  \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("idVendor: 0x%x\n"), d.idVendor )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("idProduct: 0x%x\n"), d.idProduct ));  \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bcdDevice: 0x%x\n"), d.bcdDevice ));  \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("iManufacturer: 0x%x\n"), d.iManufacturer ));   \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("iProduct: 0x%x\n"), d.iProduct )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("iSerialNumber: 0x%x\n"), d.iSerialNumber ));   \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bNumConfigurations: 0x%x\n"), d.bNumConfigurations ));  \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("\n")));  \
}

#define DUMP_USB_CONFIGURATION_DESCRIPTOR( c ) { \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("USB_CONFIGURATION_DESCRIPTOR:\n"))); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("-----------------------------\n"))); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bLength: 0x%x\n"), c.bLength )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bDescriptorType: 0x%x\n"), c.bDescriptorType )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("wTotalLength: 0x%x\n"), c.wTotalLength )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bNumInterfaces: 0x%x\n"), c.bNumInterfaces )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bConfigurationValue: 0x%x\n"), c.bConfigurationValue )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("iConfiguration: 0x%x\n"), c.iConfiguration )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bmAttributes: 0x%x\n"), c.bmAttributes )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("MaxPower: 0x%x\n"), c.MaxPower )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("\n"))); \
}

#define DUMP_USB_INTERFACE_DESCRIPTOR( i, _index ) { \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("USB_INTERFACE_DESCRIPTOR[%d]:\n"), _index )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("-------------------------\n"))); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bLength: 0x%x\n"), i.bLength )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bDescriptorType: 0x%x\n"), i.bDescriptorType )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bInterfaceNumber: 0x%x\n"), i.bInterfaceNumber )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bAlternateSetting: 0x%x\n"), i.bAlternateSetting )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bNumEndpoints: 0x%x\n"), i.bNumEndpoints )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bInterfaceClass: 0x%x\n"), i.bInterfaceClass )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bInterfaceSubClass: 0x%x\n"), i.bInterfaceSubClass )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bInterfaceProtocol: 0x%x\n"), i.bInterfaceProtocol )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("iInterface: 0x%x\n"), i.iInterface )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("\n"))); \
}

#define DUMP_USB_ENDPOINT_DESCRIPTOR( e ) { \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("USB_ENDPOINT_DESCRIPTOR:\n"))); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("-----------------------------\n"))); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bLength: 0x%x\n"), e.bLength )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bDescriptorType: 0x%x\n"), e.bDescriptorType )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bEndpointAddress: 0x%x\n"), e.bEndpointAddress )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bmAttributes: 0x%x\n"), e.bmAttributes )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("wMaxPacketSize: 0x%x\n"), e.wMaxPacketSize )); \
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("bInterval: 0x%x\n"), e.bInterval ));\
   DEBUGMSG( ZONE_USB_PARSE, (TEXT("\n"))); \
}

#else
#define TEST_TRAP()
#define DUMP_USB_DEVICE_DESCRIPTOR( p )
#define DUMP_USB_CONFIGURATION_DESCRIPTOR( c )
#define DUMP_USB_INTERFACE_DESCRIPTOR( i, _index )
#define DUMP_USB_ENDPOINT_DESCRIPTOR( e )
#endif // DEBUG

#endif

⌨️ 快捷键说明

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