Files
hisi_SS524V100_SDK/mpp/sample/sdi_cut/anjian_receive.c
T

129 lines
2.7 KiB
C
Executable File

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
#include <sys/time.h> // gettimeofday
#include <sys/stat.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/mman.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <errno.h>
#include "confile.h"
#include "Util.h"
volatile int count;
volatile int count_pre=0;
void endian_swap(unsigned int *x)
{
*x = (*x>>24) |
((*x<<8) & 0x00FF0000) |
((*x>>8) & 0x0000FF00) |
(*x<<24);
}
int get_parameter(struct decoce_param *pparam)
{
if(confile_init()) {
printf("config file parse failed!\n");
return -1;
}
pparam->sdi_switch = get_conf_int("sdi_switch", 0);
pparam->osd_on = get_conf_int("osd_on", 0);
//pparam->light = get_conf_int("light", 0);
printf("sdi %d osd %d ",pparam->sdi_switch,pparam->osd_on);
return 0;
}
int main(int argc, char **argv)
{
unsigned long filesize;
int socket_descriptor;
int len;
struct timeval timeout;
struct sockaddr_in address;
// volatile int count;
// volatile int count_pre=0;
int i;
int flag=0;
int port;
char buf_cmd[20];
struct decoce_param param;
struct sockaddr_in clientAddr;
len = sizeof(clientAddr);
bzero(&address,sizeof(address));
address.sin_family=AF_INET;
address.sin_addr.s_addr=htonl(INADDR_ANY);
port = atoi(argv[1]);
address.sin_port=htons(port);
socket_descriptor=socket(AF_INET,SOCK_DGRAM,0);//IPV4
get_parameter(&param);
count = param.sdi_switch;
/*
timeout.tv_sec = 1;
timeout.tv_usec = 1000;
if (setsockopu(socket_descriptor, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)) == -1) {
printf("setsockopt failed:\n");
}
*/
if (bind(socket_descriptor, (struct sockaddr *)&address, sizeof(address)) < 0)
{
perror("bind");
exit(1);
}
sprintf(buf_cmd,"/root/shell_sdi_cut_reg.sh %d",count);
printf("-- %s\n",buf_cmd);
system(buf_cmd);
while(1)
{
i = recvfrom(socket_descriptor, &count, 4, 0, (struct sockaddr*)&clientAddr, &len);
//printf("count %d\n",count);
if(count_pre != count){
count_pre = count;
//printf("++count ==== %d\n",count);
//printf("count_pre +++ %d\n",count_pre);
set_conf_int("sdi_switch",count);
save_confile("/root/decode.cfg");
sprintf(buf_cmd,"/root/shell_sdi_cut_reg.sh %d",count);
printf("%s\n",buf_cmd);
system(buf_cmd);
// count_pre = count;
}
}
close(socket_descriptor);
printf("send file finish\r\n");
}