📄 main.lst
字号:
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE MAIN.C LARGE OMF2 ROM(D16M) REGFILE(.\trm.ORC) BROWSE MODDP2 MODDA VARBANKI
-NG DEBUG
stmt level source
1
2 /********************** 此程序为IP视频会议终端C400程序 ************************/
3
4 /*************************** main.c 为系统主程序 ******************************/
5
6 /**************************** designed by wangxq ***************************/
7
8 /**************************** 2006-02-23 ***************************/
9
10 #include <stdio.h>
11 #include <string.h>
12 #include "user.h"
13 #include "rom400_init.h"
14 #include "rom400_task.h"
15 #include "rom400_sock.h"
16
17 #ifdef USE_KMEM_LIB
18 #include "rom400_kmem.h"
19 #endif
20 #ifdef USE_XNETSTACK_LIB
21 #include "rom400_xnetstack.h"
22 #endif
23
24 void main()
25 {
26 1 unsigned int i;
27 1 #ifdef USE_XNETSTACK_LIB
28 1 xnetstack_install();
29 1 #endif
30 1
31 1 #ifdef USE_KMEM_LIB
32 1 kmem_install(ROM400_KMEM_MODEL_SMALLEST + 2);
33 1 #endif
34 1
35 1
36 1 init_rom(RAM_START, RAM_END);
37 1 //系统存储器的初始化,为ROMINIT.LIB的函数,完成对外接的存储器定标和分配地址
38 1
39 1 clear_param_buffers();
40 1
41 1
42 1 #ifdef USE_XNETSTACK_LIB
43 1 printf("DS80C400 Enhanced Network Library Version %d\r\n", xnetstack_version());
44 1 #endif
45 1
46 1 #ifdef USE_KMEM_LIB
47 1 printf("DS80C400 KMEM Library Version %d\r\n", kmem_version());
48 1 #endif
49 1
50 1 puts("Timing test...please wait.\r\n");
51 1 printf("Reload : %x\r\n", task_gettickreload());
52 1
53 1 init();//自己定义的函数,初始化自己定义的变量
54 1
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 2
55 1 puts("Wait IpAddress And Other Information");
56 1
57 1
58 1 /*********************** 获取网络参数 ***********************/
59 1
60 1 temp = 0;
61 1 while(temp == 0)
62 1 {
63 2 temp = (*dual_ip) & 0x01;
64 2
65 2 for(i = 0;i < 3;i++)
66 2 {
67 3 verify[i] = *(dual_ip + i + 65);
68 3 }
69 2
70 2 if((temp == 0x01) && (verify[0] == 0xaa) &&
71 2 (verify[1] == 0xbb) && (verify[2] == 0xcc))
72 2 {
73 3 temp = 1;
74 3 }
75 2 else
76 2 {
77 3 temp = 0;
78 3 }
79 2 }
80 1
81 1 for(i = 0;i < 4;i++)
82 1 {
83 2 static_ip[i] = *(dual_ip + 1 + i);//获取自己的IP
84 2 *(send_addr_command + i + 1) = static_ip[i];
85 2 }
86 1 for(i = 0;i < 4;i++)
87 1 {
88 2 yan_ma[i] = *(dual_ip + 5 + i);//获取子网掩码
89 2 }
90 1 for(i = 0;i < 4;i++)
91 1 {
92 2 gate_ip[i] = *(dual_ip + 9 + i);//获取网关
93 2 }
94 1
95 1 REV_VIDEO_PORT = (*(dual_ip + 14)) & 0xff;//获取视频接收端口号
96 1 REV_VIDEO_PORT = REV_VIDEO_PORT + (((*(dual_ip + 13)) & 0xff) << 8);
97 1 printf("REV_VIDEO_PORT : %u \r\n", REV_VIDEO_PORT);
98 1
99 1 SEND_VIDEO_PORT = (*(dual_ip + 16)) & 0xff;//获取视频发送端口号
100 1 SEND_VIDEO_PORT = SEND_VIDEO_PORT + (((*(dual_ip + 15)) & 0xff) << 8);
101 1 printf("SEND_VIDEO_PORT : %u \r\n", SEND_VIDEO_PORT);
102 1
103 1 REV_COMMAND_PORT = (*(dual_ip + 18)) & 0xff;//获取命令字接收端口号
104 1 REV_COMMAND_PORT = REV_COMMAND_PORT + (((*(dual_ip + 17)) & 0xff) << 8);
105 1 printf("REV_COMMAND_PORT : %u \r\n", REV_COMMAND_PORT);
106 1
107 1 SEND_COMMAND_PORT = (*(dual_ip + 20)) & 0xff;//获取命令字发送端口号
108 1 SEND_COMMAND_PORT = SEND_COMMAND_PORT + (((*(dual_ip + 19)) & 0xff) << 8);
109 1 printf("SEND_COMMAND_PORT : %u \r\n", SEND_COMMAND_PORT);
110 1
111 1 REV_G711_PORT = (*(dual_ip + 22)) & 0xff;//获取音频接收端口号
112 1 REV_G711_PORT = REV_G711_PORT + (((*(dual_ip + 21)) & 0xff) << 8);
113 1 printf("REV_G711_PORT : %u \r\n", REV_G711_PORT);
114 1
115 1 SEND_G711_PORT = (*(dual_ip + 24)) & 0xff;//获取音频发送端口号
116 1 SEND_G711_PORT = SEND_G711_PORT + (((*(dual_ip + 23)) & 0xff) << 8);
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 3
117 1 printf("SEND_G711_PORT : %u \r\n", SEND_G711_PORT);
118 1
119 1 for(i = 0;i < 4;i++)
120 1 {
121 2 send_para[0][i] = *(dual_ip + 25 + i);//获取第一发送地址
122 2 }
123 1 printf("First send IP : %bu %bu %bu %bu\r\n", send_para[0][0], send_para[0][1],send_para[0][2], send_para
-[0][3]);
124 1
125 1 for(i = 0;i < 4;i++)
126 1 {
127 2 rev_para_video[0][i] = *(dual_ip + 29 + i);//获取第一视频接收地址
128 2 }
129 1 printf("First receive video IP : %bu %bu %bu %bu\r\n", rev_para_video[0][0], rev_para_video[0][1],rev_par
-a_video[0][2], rev_para_video[0][3]);
130 1
131 1 for(i = 0;i < 4;i++)
132 1 {
133 2 rev_para_audio[0][i] = *(dual_ip + 33 + i);//获取第一音频接收地址
134 2 }
135 1 printf("First receive audio IP : %bu %bu %bu %bu\r\n", rev_para_audio[0][0], rev_para_audio[0][1],rev_par
-a_audio[0][2], rev_para_audio[0][3]);
136 1
137 1 for(i = 0;i < 4;i++)
138 1 {
139 2 send_para[1][i] = *(dual_ip + 37 + i);//获取第二发送地址
140 2 }
141 1 printf("Second send IP : %bu %bu %bu %bu\r\n", send_para[1][0], send_para[1][1],send_para[1][2], send_par
-a[1][3]);
142 1
143 1 for(i = 0;i < 4;i++)
144 1 {
145 2 rev_para_video[1][i] = *(dual_ip + 41 + i);//获取第二视频接收地址
146 2 }
147 1 printf("Second receive video IP : %bu %bu %bu %bu\r\n", rev_para_video[1][0], rev_para_video[1][1],rev_pa
-ra_video[1][2], rev_para_video[1][3]);
148 1
149 1 for(i = 0;i < 4;i++)
150 1 {
151 2 rev_para_audio[1][i] = *(dual_ip + 45 + i);//获取第二音频接收地址
152 2 }
153 1 printf("Second receive audio IP : %bu %bu %bu %bu\r\n", rev_para_audio[1][0], rev_para_audio[1][1],rev_pa
-ra_audio[1][2], rev_para_audio[1][3]);
154 1
155 1 for(i = 0;i < 4;i++)
156 1 {
157 2 send_para[2][i] = *(dual_ip + 49 + i);//获取第三发送地址
158 2 }
159 1 printf("Third send IP : %bu %bu %bu %bu\r\n", send_para[2][0], send_para[2][1],send_para[2][2], send_para
-[2][3]);
160 1
161 1 for(i = 0;i < 4;i++)
162 1 {
163 2 rev_para_video[2][i] = *(dual_ip + 53 + i);//获取第三视频接收地址
164 2 }
165 1 printf("Third receive video IP : %bu %bu %bu %bu\r\n", rev_para_video[2][0], rev_para_video[2][1],rev_par
-a_video[2][2], rev_para_video[2][3]);
166 1
167 1 for(i = 0;i < 4;i++)
168 1 {
169 2 rev_para_audio[2][i] = *(dual_ip + 57 + i);//获取第三视频接收地址
170 2 }
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 4
171 1 printf("Third receive audio IP : %bu %bu %bu %bu\r\n", rev_para_audio[2][0], rev_para_audio[2][1],rev_par
-a_audio[2][2], rev_para_audio[2][3]);
172 1
173 1 for(i = 0;i < 4;i++)
174 1 {
175 2 send_para[3][i] = *(dual_ip + 61 + i);//获取第四发送地址
176 2 }
177 1 printf("Four send IP : %bu %bu %bu %bu\r\n", send_para[3][0], send_para[3][1],send_para[3][2], send_para[
-3][3]);
178 1
179 1 *dual_ip = 0;
180 1 for(i = 0;i < 3;i++)
181 1 {
182 2 *(dual_ip + i + 65) = 0;
183 2 }
184 1
185 1 /*********************** 获取网络参数 ***********************/
186 1
187 1 task_settickreload(RELOAD_73_728);//装载任务调度定时器的初值
188 1
189 1 puts("About to wait 20...");
190 1
191 1 printf("Reload : %x\r\n", task_gettickreload());
192 1
193 1 do_static();//设置本地IP地址属性(包括IP、网关等)
194 1
195 1 network_config();//读取并打印设置参数
196 1
197 1
198 1 /********************** 创建发送连接 *************************/
199 1
200 1 video_sendhandle = socket(0, SOCKET_TYPE_DATAGRAM, 0);//创建UDP视频发送连接
201 1
202 1
203 1 g711_sendhandle = socket(0, SOCKET_TYPE_DATAGRAM, 0);//创建UDP音频发送连接
204 1
205 1 /*****************创建UDP命令字发送连接***********************/
206 1
207 1 memset(&send_udp_command, 0, sizeof(struct sockaddr));
208 1 send_udp_command.sin_addr[12] = send_para[3][0];
209 1 send_udp_command.sin_addr[13] = send_para[3][1];
210 1 send_udp_command.sin_addr[14] = send_para[3][2];
211 1 send_udp_command.sin_addr[15] = send_para[3][3];
212 1
213 1 send_udp_command.sin_port = SEND_COMMAND_PORT;
214 1
215 1 command_sendhandle = socket(0, SOCKET_TYPE_DATAGRAM, 0);//创建UDP命令字发送连接
216 1
217 1 if(command_sendhandle == 0x0FFFF)
218 1 puts("\r\n Failed to create command send UDP socket \r\n");
219 1 else
220 1 {
221 2 puts("\r\n Succeed to create command send UDP socket \r\n");
222 2 }
223 1
224 1 syn_setDatagramAddress(command_sendhandle, 1, &send_udp_command);//设置UDP命令字发送连接地址
225 1
226 1 /*****************创建UDP命令字发送连接***********************/
227 1
228 1 /******************** 创建发送连接 ***************************/
229 1
230 1 /******************** 创建接收连接 ***************************/
C51 COMPILER V7.07 MAIN 04/11/2006 11:07:35 PAGE 5
231 1
232 1 /******************创建UDP视频接收连接************************/
233 1
234 1 memset(&rev_udp_video, 0, sizeof(struct sockaddr));
235 1 rev_udp_video.sin_addr[12] = static_ip[0];
236 1 rev_udp_video.sin_addr[13] = static_ip[1];
237 1 rev_udp_video.sin_addr[14] = static_ip[2];
238 1 rev_udp_video.sin_addr[15] = static_ip[3];
239 1
240 1 rev_udp_video.sin_port = REV_VIDEO_PORT;
241 1
242 1 video_revhandle = socket(0, SOCKET_TYPE_DATAGRAM, 0);//创建UDP接收命令字连接
243 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -