Drivers Pctv Input Devices

Category: Input Device
Manufacturer: Pinnacle
Caution Level: Intermediate
Download File Size: 190 KB
Operating System: Windows ME, 2000, XP
Latest Version / Release Date: 1.0.3.105 / N/A

Go to Device Manager (right click on My Computer, choose Manage and then find Device Manager in the left panel), or right click on Start Menu for Windows 10 and select Device Manager 3. Driver Description Download drivers for NXP Pinnacle PCTV 110i Capture Device TV-tuners (Windows 7 x64), or install DriverPack Solution software for automatic driver download and update Are you tired of looking for the drivers for your devices? Device driver: Requests the device be put in D0 (see scenario 2) and sets any proprietary registers in the chip required to handle the wake-up event. Call to action on PCI power management and device drivers. Integrate ACPI and PCI-PM capabilities into your devices as described in this article. Then it allocates a new input device structure with inputallocatedevice and sets up input bitfields. This way the device driver tells the other parts of the input systems what it is - what events can be generated or accepted by this input device. Our example device can only generate EVKEY type events, and from those only BTN0 event code. Products North America. Digital products. PCTV HD mini Stick; Hybrid products. PCTV HD Stick; PCTV HD Pro Stick; PCTV HD Card; Mac products. PCTV for Mac HD mini Stick.

Windows device driver information for Pinnacle PCTV Deluxe USB (NTSC) device

Pinnacle PCTV Deluxe USB (NTSC) device is integrated with TV tuner to function as an external USB2 analog video capture. Almost the same size as a VHS tape, the device comes along with front-panel input connectors that are used for composite video and it also comes with S-video together with a stereo audio. It also has TV input that is used for antenna or cable as well as power connectors and the USB. Moreover the device also comes with a programmable remote control and it is capable of providing a TWAIN interface that is appropriate for still image capture. The device allows one to watch TV on PC by simply plugging in the cable or antenna to the Pinnacle PCTV Deluxe. The device has a state of the art TV tuner that allows one to watch any program of choice from the PC monitor.

Outdated Drivers?

Unless you update your drivers regularly you may face hardware performance issues.

To check your drivers you should manually verify every device on your system for driver updates

Pinnacle PCTV Deluxe USB (NTSC) device has a high quality recorder that is compatible with MPEG2 and MPEG1 and allows one to record in real time regardless of the source. It allows one to simply connect the camcorder, DVD player or VCR and store the recorded video on any digital media or hard disk using MPEG format. Besides, this device enables one to take charge of the programs he/she would like to watch and when to watch them. Its features allow one to pause live TV shows, skip commercials, create instant replays and zoom in any part of the screen. The device also allows one to burn VCD, SVCD and DVD by using the CD or DVD recorder. One can also record TV shows and store them directly into the PCs hard drive. The device brings out high quality video recordings without any fuzzy images. It is highly recommended you run a free registry scan for Windows and Pinnacle PCTV Deluxe USB (NTSC) device errors before installing any driver updates.

To write an input driver, you must first create your owninput module. The sample directory contains asample skeleton for creating a module. We recommend that youuse this as a starting point.

A module is represented by a data type calledinput_module_t. It contains various datafields and function pointers representing its interface.

input_module_t data type

Writing an input module consists of simply creating aninput_module_t representing your module andfilling in the relevant interface functions.

flags
Only one flag has been defined — MODULE_FLAG_INUSE, which indicates a valid module.
type
A combination (OR) of two descriptors:
  • driver class:
    • DEVI_CLASS_KBD — keyboard
    • DEVI_CLASS_REL — relative
    • DEVI_CLASS_ABS — absolute
  • driver layer that this module represents:
    • DEVI_MODULE_TYPE_FILTER — filter
    • DEVI_MODULE_TYPE_PROTO — protocol
    • DEVI_MODULE_TYPE_DEVICE — device
args
List of module parameters where each parameter isrepresented by a single character. If there's an optionalargument, the parameter has the format x: (the: means that the optional argument is expected).
data
Usually a pointer to a module's local data. This can beassigned in the init() module function.

In the sample directory

The code in the sample directory provides lots of commentsdetailing the steps required to initialize your module, andwhat to put in your module's functions.

Pctv

You'll also find two modules:

  • samp_dev — an example of a device module.
  • samp_proto — the MS-mouse protocol code with lots of comments.

You'll also find a README file that providesfurther background info on how the system processes datafrom keyboard and absolute devices.

In many embedded systems, a combination device/protocolmodule is called for. For details, see the section on“Writing a combination device/protocol module”in this chapter.

Device modules can pass data in any format they want up toprotocol modules. But protocol modules must pass data ina specific format to filter modules.

This protocol module:Must format data into a:
Keyboardstruct packet_kbd
Relativestruct packet_rel
Absolutestruct packet_abs

See the header <devi.h> for the format of these structures.All these structures have a timestamp field; you fill them inusing the library call clk_get().

When writing keyboard device modules, keep in mind that theprotocol/filter layers will expect make-and-break scan codesindicating when a key is pressed down and released. Theeasiest thing to do is to map the scan codes your devicesends to the standard PC scan codes. This way you won't haveto make any filter-layer changes — it will all justwork like a normal PC keyboard. Standard PC scan codes areavailable in any PC hardware book.

When passing up a struct packet_kbd to the filter layer, all youneed to do is:

  1. Fill in the key_scan field of the struct _keyboard_datawith the scan code.
  2. Fill in the flags field with KEY_SCAN_VALID.

The keyboard filter layer will read in a keyboarddefinition file and interpret the scan codes itreceives based on the contents of this file.

The keyboard definition files are typically kept in thelocation$PHOTON_PATH/keyboard, where$PHOTON_PATH depends on you systemconfiguration (e.g. this might be /usr/photon on your machine).In this directory there's a file calledsample.kdef, which provides a sample definition file. The .kdeffiles are compiled into .kbd files using the utilities kbcvtand mkkbd.

Drivers Pctv Input Devices Download

Both of these utilities are shipped with Photon for QNX 4.

You shouldn't have to play around with these mapping filesvery much if you map your scan codes appropriately. The onlyplace where you might need to modify these files is if your keyboardhas special keys. In this case, you would start with a standard definitionfile (e.g. en_US_101.kdef), and add your uniquescan codes.

When the driver starts up and initializes the keyboard filter module,the module will try to load in a mapping definition file.It uses the following algorithm to look for the file:

  1. The module tries to open the keyboard configuration file/etc/system/trap/.KEYBOARD.If this file exists, the module just reads thekeyboard filename from it.
  2. If the keyboard mapping filename is empty, the moduletries to take it from the KBD environmentvariable.
  3. If the keyboard mapping filename is still empty, themodule assigns the standard US keyboard definition file(en_US_101.kbd) to it.
  4. The module tries to find this file in the %PHOTON%/keyboard directory.
  5. If the PHOTON environment variable isn'tdefined, the module tries to open it in the /usr/photon/keyboard directory.

The elo directory contains an example of atouchscreen protocol module.

Absolute devices (e.g. touchscreens) need to be calibrated.They typically generate “raw” coordinates thatmust be translated into actual screen coordinates. Thescreen coordinates they're translated into depend on thescreen resolution.

The device/protocol layer module receives raw coordinates fromthe touchscreen device, formats a packet_abs structure, and passes itup to the absolute filter.

The absolute filter module takes care of translating rawcoordinates into screen coordinates. To do this, the moduletries to locate and read in a calibration file on startup via:

  1. Command-line option to the absolute filter (-ffilename)
  2. ABSF environment variable
  3. /etc/system/config/calib.hostname

Calibration file format

The format of this file is as follows:

where:

XL
X screen coordinate of upper left side (typically 0).
YL
Y screen coordinate of upper left side (typically 0).
XH
X screen coordinate of lower right side (typically X screen resolution − 1).
YH
Y screen coordinate of lower right side (typically Y screen resolution − 1).
XRL
Raw touchscreen X coordinate at upper left side.
XRH
Raw touchscreen X coordinate at lower right side.
YRL
Raw touchscreen Y coordinate at upper left side.
YRH
Raw touchscreen Y coordinate at lower right size.
SWAP
Whether to swap X or Y axes (0 is no, 1 is yes.) It's safe to leave this as 0.

This calibration file is typically generated by the Photontouchscreen calibration application, calib.When the utility starts, it sends a message to the devi- driver asking it to switch toraw mode, and then solicits coordinate info by asking the user totouch the screen at all four corners and the middle. Afterdoing this, calib formats the absf file, sends acalibration message to the devi-* driver, and writes the file.

The hirun directory contains examples of amouse device (kb.c) and protocol (msoft.c, ps2.s, msys.c) modules.

Since these modules cover all the main types of relativedevices, you probably won't need to develop something newfrom scratch. If you need to implement support for anydevice that's not completely supported by this driver, youcan simply copy the files from this directory into a new oneand modify them.

Drivers Pctv Input Devices App

Note that Microsoft and Mouse Systems class devices don't have a device module — they justuse /dev/serN to get raw data from a serial communication port.A PS/2 mouse shares the 8042 controller device driver (kb.c) with a standardkeyboard.

The protocol layer module receives raw coordinates fromthe mouse, formats a packet_rel structure, andthen passes it up to the relative filter.

The relative filter module implements an accelerationalgorithm, converts raw data received from the protocollevel according to the current speed parameter, and emitsthis data in the form of events to Photon.

The main part of developing a new module involvesimplementing several standard callback functions, combined“under the roof” of the module's instance ofthe input_module_t structure.

Consider implementing the following callbacks:

init()
Should be called for a one-time initialization of amodule's state after it's loaded.
reset()
Used to reset a module's and/or device's state. Youwould call it when the module is linked into an event busline; if necessary, it could be called from your code as areaction to any sort of device trouble.
input()
You usually implement this callback function in protocolmodules as part of the device-to-interface data channel.
output()
Usually called by higher-layer modules asking for datato be sent to the device. You can use this callback forpassing commands to control an input device.
pulse()
Usually implemented in device class modules. Thiscallback is automatically activated each time that aregistered interrupt handler wants to notify a device moduleabout input activity.
parm()
Called by the Input Runtime System to parse anycommand-line parameters given to the module.
devctrl()
Used by modules in an event bus line to send commands toeach other. This callback may also be called as a responseto the external devctl() call. You can use thiscallback for reconfiguring a driver on the fly.
shutdown()
Called when the Input Runtime System is shutting down.

Which callbacks are required?

To decide which callback functions should be implemented ina module, you'll need to consider the module's purpose. Ingeneral, a device module must have the followingfunctions:

Drivers Pctv Input Devices Input

  • pulse() (if it doesn't use an interrupt handler)
  • init()
  • parm()
  • devctrl()

A protocol module, in turn, must have at least theinput() function (and optionallyinit(), parm(), anddevctrl()).

Callback sequence

At startup, the Input Runtime System always calls a module'scallback functions in the following sequence:

init()parm()reset()

If you're writing a driver for a custom type of device whereit doesn't make sense to split up the functionality ofdevice and protocol, you can write acombination module.

Pctv

To do this, you simply proceed as you would when writing a“normal” driver: fill in your callbacks, talkto your device, interpret its protocol, etc.

In addition, there are two things you have to do:

  1. In the type field, put in DEVI_MODULE_TYPE_DEVICE | DEVI_MODULE_TYPE_PROTOin addition to the DEVI_CLASS_ manifest.
  2. When you've interpreted the data from your device,package up a struct packet_* (depending onyour class of device) and send it up.

Because the devi-* framework is multithreaded,you should be aware of a possible reentrancy issue. When adevi-* driver is invoked, a module may bespecified multiple times, where each invocation will belongto a separate event bus line.

Drivers

An example is the keyboard controller device module(kb). This module can communicate with akeyboard and with a PS/2 mouse. We would invoke the driveras follows:

Here we'll have two event bus lines: one for the keyboard andone for the mouse. Upon initialization, the input frameworkwill use the static kb data structure (input_module_t) for one ofthe bus lines and dynamically allocate/copy another one for theother bus line.

Drivers Pctv Input Devices Usb

Devices

If you keep your module-specific data confinedto the private data member of the module structure, you won't haveany problems with reentrancy. But if your module contains globalvariables, then you'll have to use some sort of mutual exclusionmechanism for protection.

Usb

Drivers Pctv Input Devices

Note that you don't have to ensure that theinit(), reset(), and parm()callbacks are reentrant, because they're always called froma single thread upon initialization. (However, if for somereason you need to call them when the runtime system is up,then you'd have to ensure that they're reentrant.) Thecallbacks used at runtime (e.g. the pulse()callback) are the ones at risk.

For more information, see the keyboard controller module code (hirun/kb.c).