본문 바로가기

Hello CE,Mobile

[Wndows Mobile] Programming Camera Driver #2

[Wndows Mobile] Programming Camera Driver #2

Camera Driver Architecture

   

Camera device로부터 나오는 data flow control하기 위해서는 다음과 같은 3가지 종류의 object 요구된다: camera adapters, pins, and streams.

   

Streaming Architecture for Cameras

Windows Embedded CE camera driver에서 사용되는 많은 구조들은 Windows XP-based desktop system에서 사용되는 kernel steaming architecture로부터 비롯되었다. 대부분의 경우에 있어, data structures IOCTL codes 같은 식별자들은 동일한 formatsemantics 사용하는 반면, Windows Embedded CE conventions 의해 새로운 이름이 정해졌다. 다른 경우에 있어, data layouts, programming models, 그리고 nomenclatures Windows Embedded CE camera driver model 더욱 적합하도록 변경되었다.

   

Camera control interfaces kernel streaming property model 이용하여 구현되었다.

Property capability, settings, 또는 camera video stream 포함된 상태를 나타낸다.

관련 property 그룹은 하나의 property set으로 참조되도록 하였다. Application DeviceIoControl function dwIoControlCode parameter IOCTL_CS_PEOPERTY 셋팅함으로써, 특정한 properties set 하거나 get 있다. Input buffer CSPROPERTY structure 또는 CSPROPERTY structure 안에 포함되어 있는 다른 structure 하나이며, 요청과 관련된 추가적인 정보를 포함하고 있다.

   

DeviceIoControl function 호출 함으로써, client 두개의 buffer 전달한다: property descriptor type property value type. Property descriptor type DeviceIoControl 상의 lpInBuffer parameter 위한 값을 나타낸다. 모든 type operation-specific identification data 의한 CSPROPERTY header 시작된다. Property value DeviceIoControl function lpOutBuffer parameter 위한 값을 나타낸다. 그것은 property get 또는 set 하기 위한 data buffer 제공한다. Camera property 사용하기 위해서는, 반드시 IOCTL_CS_PROPERTY code 가진DeviceIoControl function 호출해야 하며, 위에서 언급한 structures 넘겨줘야 한다.

   

   

Camera Driver Interface

Camera driver Windows Embedded CE stream interface drivers architecture 따른다. 많은 정보는 Stream Interface Drivers 참고하기 바란다. DirectShow middleware CreateFile function 이용하여 file handle 여는 것을 통해 드라이버와 통신을 있으며, 해당 file handle 이용하여, DeviceIoControl 함수를 호출한다.

   

아래의 table stream interface functions 나열한 것으로, camera driver 만들 , 구현해야만 하는 함수들이다.

Function

Description

CAM_Close

Camera device 위한 device context close한다.

CAM_DeInit

Camera device stop한다.

CAM_Init

Camera device initialize한다.

CAM_IoControl

Camera device 하나의 command 보낸다.

CAM_Open

읽기 위해, camera device open한다.

PIN_Close

Pin 대한 device context close한다.

PIN_DeInit

Pin stop한다.

PIN_Init

Pin initialize한다.

PIN_IoControl

Pin 하나의 command 보낸다.

PIN_Open

Pin 읽기 위해 open 한다.

Camera driver stream interface function XXX_Read, XXX_Write, XXX_Seek function 반드시 구현할 필요는 없다.

   

아래의 table camera driver에서 반드시 구현해야 하는 I/O control codes 보여준다.

I/O Control Code

Description

IOCTL_CS_PROPERTY

Property values get 또는 set하는데 사용되거나, 하나의 property 대한 지원 여부를 결정하는데 사용된다.

IOCTL_CS_BUFFERS

Driver에게 하나의 buffer 보내는데 사용된다.

IOCTL_STREAM_INSTANTIATE

주어진 pin 대한 stream type set하는데 사용된다.

   

October 5, 2007

Hoya^^

   

원본 위치 <http://www.devpia.co.kr/MAEUL/Contents/Detail.aspx?BoardID=60&MAEULNO=23&no=264&page=2>

   

'Hello CE,Mobile' 카테고리의 다른 글

[Windows Mobile] Programming Camera Driver #4  (0) 2010.10.28
[Windows Mobile] Programming Camera Driver #3  (0) 2010.10.28
[Windows Mobile] Programming Camera Driver #1  (0) 2010.10.28
버스드라이버  (0) 2010.10.27
NAND  (1) 2010.10.19