📄 main.c
字号:
}
void start_leave()
{
for (i=0;i<18;i++)
{
rev_multi_video.sin_addr[i] = 0;
}
rev_multi_video.sin_addr[12] = rev_para_video[0][0];
rev_multi_video.sin_addr[13] = rev_para_video[0][1];
rev_multi_video.sin_addr[14] = rev_para_video[0][2];
rev_multi_video.sin_addr[15] = rev_para_video[0][3];
rev_multi_video.sin_port = REV_VIDEO_PORT;
if(leave(video_revhandle,&rev_multi_video,sizeof(struct sockaddr)) == 0)
{
puts("leave from rev_multi_video success! - 0");
}
else
{
puts("leave from rev_multi_video failure! - 0");
}
for (i=0;i<18;i++)
{
rev_multi_video.sin_addr[i] = 0;
}
rev_multi_video.sin_addr[12] = rev_para_video[1][0];
rev_multi_video.sin_addr[13] = rev_para_video[1][1];
rev_multi_video.sin_addr[14] = rev_para_video[1][2];
rev_multi_video.sin_addr[15] = rev_para_video[1][3];
rev_multi_video.sin_port = REV_VIDEO_PORT;
if(leave(video_revhandle,&rev_multi_video,sizeof(struct sockaddr)) == 0)
{
puts("leave from rev_multi_video success! - 1");
}
else
{
puts("leave from rev_multi_video failure! - 1");
}
for (i=0;i<18;i++)
{
rev_multi_audio.sin_addr[i] = 0;
}
rev_multi_audio.sin_addr[12] = rev_para_audio[0][0];
rev_multi_audio.sin_addr[13] = rev_para_audio[0][1];
rev_multi_audio.sin_addr[14] = rev_para_audio[0][2];
rev_multi_audio.sin_addr[15] = rev_para_audio[0][3];
rev_multi_audio.sin_port = REV_G711_PORT;
if(leave(g711_revhandle,&rev_multi_audio,sizeof(struct sockaddr)) == 0)
{
puts("leave from rev_multi_audio success! - 0");
}
else
{
puts("leave from rev_multi_audio failure! - 0");
}
for (i=0;i<18;i++)
{
rev_multi_audio.sin_addr[i] = 0;
}
rev_multi_audio.sin_addr[12] = rev_para_audio[1][0];
rev_multi_audio.sin_addr[13] = rev_para_audio[1][1];
rev_multi_audio.sin_addr[14] = rev_para_audio[1][2];
rev_multi_audio.sin_addr[15] = rev_para_audio[1][3];
rev_multi_audio.sin_port = REV_G711_PORT;
if(leave(g711_revhandle,&rev_multi_audio,sizeof(struct sockaddr)) == 0)
{
puts("leave from rev_multi_audio success! - 1");
}
else
{
puts("leave from rev_multi_audio failure! - 1");
}
for (i=0;i<18;i++)
{
rev_multi_audio.sin_addr[i] = 0;
}
rev_multi_audio.sin_addr[12] = rev_para_audio[2][0];
rev_multi_audio.sin_addr[13] = rev_para_audio[2][1];
rev_multi_audio.sin_addr[14] = rev_para_audio[2][2];
rev_multi_audio.sin_addr[15] = rev_para_audio[2][3];
rev_multi_audio.sin_port = REV_G711_PORT;
if(leave(g711_revhandle,&rev_multi_audio,sizeof(struct sockaddr)) == 0)
{
puts("leave from rev_multi_audio success! - 2");
}
else
{
puts("leave from rev_multi_audio failure! - 2");
}
}
void wait_millis(unsigned int waitTime)//延时等待函数
{
unsigned int result;
struct TIME time1;
struct TIME time2;
task_entercritsection();
task_gettimemillis(&time1);
result = 0;
while (result < waitTime)
{
task_gettimemillis(&time2);
result = time2.millis - time1.millis;
}
task_leavecritsection();
printf("Waited for %ld msec\r\n", (time2.millis - time1.millis));
}
void do_static()//配置本端网络属性
{
unsigned int result;
unsigned char xdata config[56];
unsigned int i;
for (i=0;i<56;i++)
config[i] = 0;
//set the ip address
config[12] = static_ip[0];
config[13] = static_ip[1];
config[14] = static_ip[2];
config[15] = static_ip[3];
//set the subnet mask
config[16] = yan_ma[0];
config[17] = yan_ma[1];
config[18] = yan_ma[2];
config[19] = yan_ma[3];
//set the iP4 prefix
config[20] = STATIC_IPV4_PREFIX;
//set the gateway
config[33] = gate_ip[0];
config[34] = gate_ip[1];
config[35] = gate_ip[2];
config[36] = gate_ip[3];
result = setnetworkparams(config);
printf("Set network parameters result: %u\r\n", result);
}
void network_config()//读取本端网络属性
{
unsigned char result;
unsigned char xdata config[56];
unsigned int i;
for (i=0;i<56;i++)
config[i] = 0;
result = getnetworkparams(config);
printf("Network params result: %d\r\n", result);
printf("IP : %bu %bu %bu %bu\r\n", config[12], config[13], config[14], config[15]);
printf("Subnet: %bu %bu %bu %bu\r\n", config[16], config[17], config[18], config[19]);
printf("Prefix: %bu\r\n", config[20]);
printf("Gate : %bu %bu %bu %bu\r\n", config[33], config[34], config[35], config[36]);
}
void init()//初始化自己定义的量
{
send_addr_video = 0x050000;//视频发送地址指针
rev_addr_video = 0x051000;//视频接收地址指针
send_addr_audio = 0x052000;//音频发送地址指针
rev_addr_audio = 0x053000;//音频接收地址指针
send_addr_command = 0x054000;//命令字发送地址指针
rev_addr_command = 0x055000;//命令字接收地址指针
rd_fifo_hf = 0x280000;//读取音频发送FIFO半满地址指针
rd_fifo_ef = 0x2a0000;//读取视频发送FIFO空地址指针
dual_send = 0x240200;//双口RAM写地址指针
dual_rev = 0x240000;//双口RAM读地址指针
dual_ip = 0x240400;//网络参数配置地址指针
command_length = 0;
head_r = 0;
tail_r = 0;
trans_num = 0;
for(i = 0;i < 2048;i++)
{
rev_buf[i] = 0;
}
for(i = 0; i < 4;i++)
{
for(j = 0; j < 4;j++)
{
send_para[i][j] = 0;
}
}
for(i = 0; i < 3;i++)
{
for(j = 0; j < 4;j++)
{
rev_para_video[i][j] = 0;
rev_para_audio[i][j] = 0;
}
}
send_video_flag = 0xff;
rev_video_flag = 0xff;
send_audio_flag = 0xff;
rev_audio_flag = 0xff;
static_ip[0] = 192;
static_ip[1] = 168;
static_ip[2] = 0;
static_ip[3] = 200;
gate_ip[0] = 192;
gate_ip[1] = 168;
gate_ip[2] = 0;
gate_ip[3] = 1;
yan_ma[0] = 255;
yan_ma[1] = 255;
yan_ma[2] = 255;
yan_ma[3] = 0;
SEND_VIDEO_PORT = 10025;
REV_VIDEO_PORT = 10026;
SEND_G711_PORT = 10027;
REV_G711_PORT = 10028;
SEND_COMMAND_PORT = 10029;
REV_COMMAND_PORT = 10030;
}
void moveto_buf()//将收到的命令字转移到接收缓冲区
{
unsigned char tem,length;
length = rev_length_command - 1;
for(tem = 0;tem < length;tem++)
{
rev_buf[head_r] = *(rev_addr_command + tem + 1);
head_r = (head_r + 1) & 0x7ff;
}
}
void send_command()//通过双口RAM发送命令字
{
unsigned char flag,length,total;
flag = (*dual_send) & 0x01;
if(flag == 0)//文景顺已经读走了命令字,可以写
{
total = 0;
length = rev_buf[tail_r];
if((length < 2) || (length > 30))
{
head_r = 0;
tail_r = 0;
for(i = 0;i < 2048;i++)
{
rev_buf[i] = 0;
}
total = 0;
}
while((head_r != tail_r) && ((total + length) < 120))
{
for(i = 0;i < length;i++)
{
temp = rev_buf[tail_r];
*(dual_send + total + 2) = temp;
tail_r = (tail_r + 1) & 0x7ff;
total++;
}
length = rev_buf[tail_r];
if(head_r != tail_r)
{
if((length < 2) || (length > 30))
{
head_r = 0;
tail_r = 0;
for(i = 0;i < 2048;i++)
{
rev_buf[i] = 0;
}
total = 0;
}
}
}
if((total > 0) && (total < 128))
{
*(dual_send + 1) = total;
*dual_send = 0x01;
}
}
}
void analyse_current_state(unsigned char state,unsigned num)
//根据8031提供的情况调整视频、音频的收发
{
}
void adjust_send_video(unsigned char num,unsigned char flag)
//调整视频的发送
{
}
void adjust_send_audio(unsigned char num,unsigned char flag)
//调整音频的发送
{
}
void adjust_rev_video(unsigned char num,unsigned char flag)
//调整视频的接收
{
}
void adjust_rev_audio(unsigned char num,unsigned char flag)
//调整音频的接收
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -