📄 cmmbspi.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 + -