libdvr: fix compile for am_ca_test [1/1]
PD#SWPL-162671
Problem:
fix compile
Solution:
fix compile
Verify:
verified at BM201
Change-Id: I13681f4ccd3814ae0c35bb0319840c91c7a52e3f
Signed-off-by: chuangcheng.peng <chuangcheng.peng@amlogic.com>
diff --git a/test/am_ca_test/am_ca.c b/test/am_ca_test/am_ca.c
index 731b664..4e65826 100644
--- a/test/am_ca_test/am_ca.c
+++ b/test/am_ca_test/am_ca.c
@@ -31,6 +31,7 @@
//#include <am_config.h>
#include "ca.h"
#include "am_ca.h"
+#include <stdio.h>
/****************************************************************************
* Macro definitions
***************************************************************************/
diff --git a/test/am_ca_test/am_ca_test.c b/test/am_ca_test/am_ca_test.c
index 85fafc1..fbaa64a 100644
--- a/test/am_ca_test/am_ca_test.c
+++ b/test/am_ca_test/am_ca_test.c
@@ -91,6 +91,9 @@
#define get_u_para(_i) (u_para[(_i)]? u_para[(_i)] : u_para_g)
+int inject_file(int dvr_no, char *inject_name);
+int inject_file_and_rec_close(void);
+
#if 0
static void pes_cb(AM_PES_Handle_t handle, uint8_t *buf, int size) {
int u = (int)(long)AM_PES_GetUserData(handle);
@@ -634,6 +637,7 @@
if (u_input_g) {
AM_DMX_SetInput(dmx, INPUT_LOCAL);
+ AM_DMX_SetSource(dmx, 0);
}
memset(&key_index, -1, sizeof(key_index));
diff --git a/test/am_ca_test/am_dmx.c b/test/am_ca_test/am_dmx.c
index 0b4997b..208445e 100644
--- a/test/am_ca_test/am_dmx.c
+++ b/test/am_ca_test/am_dmx.c
@@ -25,6 +25,8 @@
#include <string.h>
#include <assert.h>
#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
//#include "am_misc.h"
/****************************************************************************
@@ -118,13 +120,13 @@
}
/**\brief 根据设备号取得设备结构并检查设备是否已经打开*/
-static AM_INLINE AM_ErrorCode_t dmx_get_openned_dev(int dev_no, AM_DMX_Device_t **dev)
+static AM_INLINE AM_ErrorCode_t dmx_get_opened_dev(int dev_no, AM_DMX_Device_t **dev)
{
AM_TRY(dmx_get_dev(dev_no, dev));
if ((*dev)->open_count <= 0)
{
- printf("demux device %d has not been openned", dev_no);
+ printf("demux device %d has not been opened", dev_no);
return AM_DMX_ERR_INVALID_DEV_NO;
}
@@ -351,7 +353,7 @@
if (dev->open_count > 0)
{
- printf("demux device %d has already been openned", dev_no);
+ printf("demux device %d has already been opened", dev_no);
dev->open_count++;
ret = AM_SUCCESS;
goto final;
@@ -407,7 +409,7 @@
AM_ErrorCode_t ret = AM_SUCCESS;
int i;
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
// pthread_mutex_lock(&am_gAdpLock);
@@ -451,7 +453,7 @@
assert(fhandle);
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
pthread_mutex_lock(&dev->lock);
@@ -505,7 +507,7 @@
assert(params);
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
if (!dev->drv->set_sec_filter)
{
@@ -559,7 +561,7 @@
assert(params);
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
if (!dev->drv->set_pes_filter)
{
@@ -593,7 +595,7 @@
AM_DMX_Filter_t *filter;
AM_ErrorCode_t ret = AM_SUCCESS;
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
printf("%s line:%d\n", __FUNCTION__, __LINE__);
if (!dev->drv->get_stc)
{
@@ -630,7 +632,7 @@
AM_DMX_Filter_t *filter;
AM_ErrorCode_t ret = AM_SUCCESS;
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
pthread_mutex_lock(&dev->lock);
@@ -660,7 +662,7 @@
AM_DMX_Filter_t *filter = NULL;
AM_ErrorCode_t ret = AM_SUCCESS;
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
pthread_mutex_lock(&dev->lock);
@@ -700,7 +702,7 @@
AM_DMX_Filter_t *filter = NULL;
AM_ErrorCode_t ret = AM_SUCCESS;
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
pthread_mutex_lock(&dev->lock);
@@ -733,7 +735,7 @@
AM_DMX_Filter_t *filter;
AM_ErrorCode_t ret = AM_SUCCESS;
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
pthread_mutex_lock(&dev->lock);
@@ -769,7 +771,7 @@
AM_DMX_Filter_t *filter;
AM_ErrorCode_t ret = AM_SUCCESS;
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
pthread_mutex_lock(&dev->lock);
@@ -804,7 +806,7 @@
AM_DMX_Filter_t *filter;
AM_ErrorCode_t ret = AM_SUCCESS;
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
pthread_mutex_lock(&dev->lock);
ret = dmx_get_used_filter(dev, fhandle, &filter);
if (ret == AM_SUCCESS)
@@ -830,7 +832,7 @@
AM_DMX_Device_t *dev;
AM_ErrorCode_t ret = AM_SUCCESS;
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
pthread_mutex_lock(&dev->lock);
if (!dev->drv->set_input)
{
@@ -854,6 +856,30 @@
return ret;
}
+AM_ErrorCode_t AM_DMX_SetSource(int dev_no, int source)
+{
+ AM_DMX_Device_t *dev;
+ AM_ErrorCode_t ret = AM_SUCCESS;
+
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
+ pthread_mutex_lock(&dev->lock);
+ if (!dev->drv->set_source)
+ {
+ printf("do not support set_source");
+ ret = AM_DMX_ERR_NOT_SUPPORTED;
+ }
+
+ if (ret == AM_SUCCESS)
+ {
+ ret = dev->drv->set_source(dev, source);
+ }
+
+ pthread_mutex_unlock(&dev->lock);
+
+ return ret;
+}
+
+
/**\brief DMX同步,可用于等待回调函数执行完毕
* \param dev_no 解复用设备号
* \return
@@ -865,7 +891,7 @@
AM_DMX_Device_t *dev;
AM_ErrorCode_t ret = AM_SUCCESS;
- AM_TRY(dmx_get_openned_dev(dev_no, &dev));
+ AM_TRY(dmx_get_opened_dev(dev_no, &dev));
pthread_mutex_lock(&dev->lock);
if (dev->thread != pthread_self())
{
diff --git a/test/am_ca_test/am_dmx.h b/test/am_ca_test/am_dmx.h
index 6991a6c..3ec7fba 100644
--- a/test/am_ca_test/am_dmx.h
+++ b/test/am_ca_test/am_dmx.h
@@ -190,6 +190,8 @@
*/
extern AM_ErrorCode_t AM_DMX_SetInput(int dev_no, int input);
+extern AM_ErrorCode_t AM_DMX_SetSource(int dev_no, int source);
+
/**\cond */
/**\brief Sync the demux data
* \param dev_no Demux device number
diff --git a/test/am_ca_test/am_dmx_internal.h b/test/am_ca_test/am_dmx_internal.h
index a2883e7..9698ef9 100644
--- a/test/am_ca_test/am_dmx_internal.h
+++ b/test/am_ca_test/am_dmx_internal.h
@@ -65,6 +65,7 @@
AM_ErrorCode_t (*poll)(AM_DMX_Device_t *dev, AM_DMX_FilterMask_t *mask, int timeout);
AM_ErrorCode_t (*read)(AM_DMX_Device_t *dev, AM_DMX_Filter_t *filter, uint8_t *buf, int *size);
AM_ErrorCode_t (*set_input)(AM_DMX_Device_t *dev, int input);
+ AM_ErrorCode_t (*set_source)(AM_DMX_Device_t *dev, int source);
AM_ErrorCode_t (*get_stc)(AM_DMX_Device_t *dev, AM_DMX_Filter_t *filter);
} AM_DMX_Driver_t;
diff --git a/test/am_ca_test/am_key.c b/test/am_ca_test/am_key.c
index b1039ed..b432f0e 100644
--- a/test/am_ca_test/am_key.c
+++ b/test/am_ca_test/am_key.c
@@ -26,6 +26,7 @@
#include <string.h>
#include <errno.h>
#include "aml_key.h"
+#include <stdio.h>
/****************************************************************************
* Macro definitions
diff --git a/test/am_ca_test/linux_dvb.c b/test/am_ca_test/linux_dvb.c
index d97b3be..67f6364 100644
--- a/test/am_ca_test/linux_dvb.c
+++ b/test/am_ca_test/linux_dvb.c
@@ -31,6 +31,8 @@
#include <string.h>
#include <errno.h>
#include <poll.h>
+#include <stdlib.h>
+
/*add for config define for linux dvb *.h*/
//#include <am_config.h>
#include "dmx.h"
@@ -74,6 +76,7 @@
static AM_ErrorCode_t dvb_read(AM_DMX_Device_t *dev, AM_DMX_Filter_t *filter, uint8_t *buf, int *size);
static AM_ErrorCode_t dvb_set_input(AM_DMX_Device_t *dev, int input);
static AM_ErrorCode_t dvb_get_stc(AM_DMX_Device_t *dev, AM_DMX_Filter_t *filter);
+static AM_ErrorCode_t dvb_set_source(AM_DMX_Device_t *dev, int source);
const AM_DMX_Driver_t linux_dvb_dmx_drv = {
.open = dvb_open,
@@ -87,6 +90,7 @@
.poll = dvb_poll,
.read = dvb_read,
.set_input = dvb_set_input,
+.set_source = dvb_set_source,
.get_stc = dvb_get_stc
};
@@ -350,3 +354,24 @@
return 0;
}
+static AM_ErrorCode_t dvb_set_source(AM_DMX_Device_t *dev, int source)
+{
+ int ret;
+ int fd = 0;
+ DVBDmx_t *dmx = (DVBDmx_t*)dev->drv_data;
+
+ fd = open(dmx->dev_name, O_RDWR);
+ if (fd == -1)
+ {
+ printf("cannot open for set dmx source \"%s\" (%s)", dmx->dev_name, strerror(errno));
+ return AM_DMX_ERR_CANNOT_OPEN_DEV;
+ }
+
+ ret = ioctl(fd, DMX_SET_HW_SOURCE, source);
+
+ printf("dmx set_source ret:%d, source:%d\n", ret, source);
+
+ close(fd);
+ return 0;
+}
+