blob: 23de038208c9eb4ce794a5dc28b165c3cbaf429a [file] [log] [blame]
The following examples shows how to use the cimax+usb driver.
All structures and macro are defined in file cimax+usb-driver.h.
1.Open the device cimax+usb
===========================
/* open device */
dev = open("/dev/cimaxusb0", O_RDWR);
/* select USB alt_setting */
ioctl(dev, DEVICE_IOC_SELECT_INTF, alt_setting);
2.Close the device cimax+usb
============================
/* unlock read queue */
ioctl(dev, DEVICE_IOC_UNLOCK_READ, 0);
/* close device */
close(dev);
3.Send a CI message to a CAM through the device
===============================================
/* Send CAM A Reset command */
uint8 command[5] = {0x01, /* Command */
0x01, /* Counter */
0x00, /* MSB data size */
0x01, /* LSB data size */
0x00}; /* data */
uint8 response[4100];
struct ioctl_data_s stData;
stData.txData = command;
stData.txSize = 5;
stData.rxData = response;
stData.rxSize = 4100;
ioctl(dev, DEVICE_IOC_CI_WRITE, &stData);
/* Send CAM B Get CIS command */
uint8 command[5] = {0x82, /* Command */
0x01, /* Counter */
0x00, /* MSB data size */
0x00}; /* LSB data size */
uint8 response[4100];
struct ioctl_data_s stData;
stData.txData = command;
stData.txSize = 4;
stData.rxData = response;
stData.rxSize = 4100;
ioctl(dev, DEVICE_IOC_CI_WRITE, &stData);
4.Send a Transport Stream to a CAM through the device
=====================================================
/* Send to CAM A */
struct rw_data_s rwData;
rwData.type = DEVICE_TYPE_TS_WRITE;
rwData.moduleId = 0; /* CAM A */
rwData.data = stream;
rwData.size = size;
rwData.copiedSize = 0;
write(dev, &rwData, sizeof(struct rw_data_s));
5.Read a Transport Stream from a CAM through the device
=======================================================
/* Read from CAM B */
struct rw_data_s rwData;
rwData.type = DEVICE_TYPE_TS_READ;
rwData.moduleId = 1; /* CAM B */
rwData.data = stream;
rwData.size = size;
rwData.copiedSize = 0;
read(dev, &rwData, sizeof(struct rw_data_s));
6.Read a CI message from a CAM through the device
=================================================
/* Read from CAM A */
uint8 response[4096];
struct rw_data_s rwData;
rwData.type = DEVICE_TYPE_CI_READ;
rwData.moduleId = 0; /* CAM A */
rwData.data = response;
rwData.size = 4096;
rwData.copiedSize = 0;
read(dev, &rwData, sizeof(struct rw_data_s));