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

📄 cmmbspi.c

📁 中兴提供的跨平台解码库的解码器的介绍源码和文档
💻 C
字号:
#include "cmmbspi.h"
#include <unistd.h>

int openSPI(const char * tv_streamName, int modeType)
{
	int fd = 0;
	fd = open(tv_streamName, modeType);
	return fd;
	/*int fd=0;
	fd=open(tv_streamName,modeType);
	return fd*/
}

int readSPI(int tvfd, char * buffer, unsigned int ulen)
{
	int ilen = 0;
	ilen = read(tvfd, buffer, ulen);
	return ilen;
	/*int ilen=0;
	ilen=read(tvfd,buffer,ulen);
	return ilen;
	*/
}

int writeSPI(int tvfd, char * buffer, unsigned int ulen)
{
	int iLen = 0;
	write(tvfd, buffer, ulen);
	return iLen;
}

void closeSPI(int tvfd)
{
	close(tvfd);
}

int startdemodulatorSPI()
{
	int fd;
	fd = open("/dev/tv_ctl_bb",O_WRONLY);
	if(fd < 0)
	{
		printf("StartDemodulator open error,fd=%d\n",fd);
		return -1;
	}
	ioctl(fd,TV_INIT);
	close(fd);	
	return 1;
}

int stopdemodulatorSPI()
{
	int fd;
	fd = open("/dev/tv_ctl_bb",O_WRONLY);
	if(fd < 0)
	{
		printf("StartDemodulator open error,fd=%d\n",fd);
		return -1;
	}
	ioctl(fd,TV_DEINIT);
	close(fd);
	return 1;
}

int readI2CData(unsigned char addrreg, int sizenum, unsigned char* data)
{
	int fd = 0;
	if (sizenum == 0)
	{
		return -3;
	}
	fd = open("/dev/tv_ctl_bb",O_RDONLY);
	if(fd<0)
	{
		printf("Open tv_ctl_bb error,fd=%d\n",fd);
		return -1;
	}
	lseek(fd,addrreg,SEEK_SET);
	if(sizenum != read(fd,data,sizenum))
	{	
		printf("I2C read error,len=%d\n",sizenum);
		return -2;
	}
	close(fd);
	return 1;
}

#define TV_CTL_PATH "/dev/tv_ctl_bb"

int ReadI2CDataEx(unsigned int const addrreg, unsigned char const *pval)
{
	unsigned char tmp = 0xff;
	int fd = 0;
	
	fd = open(TV_CTL_PATH,O_RDWR);
	if(fd<0)
	{
		return -1;
	}
	tmp = 0xff;
	lseek(fd, tmp, SEEK_SET);
	tmp = (addrreg & 0x0f00)>>8;
	if(sizeof(tmp) != write(fd, &tmp, sizeof(tmp)))
	{
		close(fd);
		return -1;
	}

	lseek(fd,(addrreg & 0xff),SEEK_SET);

	if(sizeof(char) != read(fd,pval,sizeof(char)))
	{
		close(fd);
		return -1;
	}

	close(fd);
	return sizeof(char);
}

int WriteI2CDataEx(unsigned int const addrreg, unsigned char const val)
{
	int fd = 0;

	unsigned char tmp = 0xff;

	fd = open(TV_CTL_PATH, O_RDWR);
	if(fd<0)
	{
		return -1;
	}
	tmp = 0xff;
	lseek(fd,tmp,SEEK_SET);
	tmp = (addrreg & 0x0f00)>>8;
	if(sizeof(tmp) != write(fd,&tmp,sizeof(tmp)))
	{
		close(fd);
		return -1;
	}
	lseek(fd,addrreg & 0xff,SEEK_SET);
	tmp = val & 0xff;
	if(sizeof(tmp) != write(fd,&tmp,sizeof(tmp)))
	{	
		
		close(fd);
		return -1;
	}
	close(fd);
	return 1;
}

int writeI2CData(unsigned char addrreg, int data)
{
	int fd = 0;
	unsigned char datac[2];

	if (data > 65535)
	{
		return -3;
	}
	fd = open("/dev/tv_ctl_bb", O_WRONLY);
	if(fd<0)
	{
		printf("Open tv_ctl_bb error,fd=%d",fd);
		return -1;
	}
	lseek(fd,addrreg,SEEK_SET);
	datac[0] = data;
	if(1 != write(fd,datac,1))
	{
		printf("I2C write error");
		return -2;
	}
	close(fd);
	return 1;
}

⌨️ 快捷键说明

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