📄 communication.lst
字号:
252 1 }
253
254 UCHAR ReadCID(UCHAR num)
255 {
256 1 idata UCHAR temp;
257 1
258 1 PORT_STORE=PORT;
259 1 RCON=RCON_Bank0;
260 1
261 1 temp=CID[num];
262 1
263 1 PORT=PORT_STORE;
264 1 return(temp);
265 1 }
266
267 void MessageDeal()
268 {
269 1 idata UCHAR i;
270 1 for(i=0;i<OUTSIDETELNUM;i++)
271 1 {
272 2 switch(ReadOutTelState(i))
273 2 {
274 3 case outtel_hold :outtel_hold_deal(i);break;
275 3 case outtel_ring :outtel_ring_deal(i);break;
276 3 case outtel_using :outtel_using_deal(i);break;
277 3 default:break;
278 3 }
279 2 }
280 1
281 1 for(i=0;i<ExtTelNum;i++) //内线处理
282 1 {
283 2 switch(ReadExtTelState(i))
284 2 {
285 3 case exttel_hold :exttel_hold_deal(i); break; //内线状态
286 3 case exttel_unhold :exttel_unhold_deal(i);break; //摘机空闲态
287 3 case exttel_dialing :exttel_dialing_deal(i);break; //拨号状态
288 3 case exttel_sendCID :exttel_sendCID_deal(i);break; //发送来电显示信号
289 3 case exttel_waiting :exttel_waiting_deal(i);break; //主叫方振铃等待状态
290 3 case exttel_ring :exttel_ring_deal(i);break; //振铃状态
291 3 case exttel_useing :exttel_useing_deal(i);break; //通话状态
292 3 case exttel_flash :exttel_flash_deal(i);break; //闪断状态
293 3 case exttel_switch :exttel_switch_deal(i);break; //转接状态
294 3 case exttel_switch_dialing:exttel_switch_dialing_deal(i);break; //转接拨号中
295 3 case exttel_error :exttel_error_deal(i);break; //出错状态
296 3 default:break;
297 3 }
298 2 }
299 1 return;
300 1 }
301
302 void outtel_hold_deal(UCHAR outtelnum)
303 {
C51 COMPILER V7.06 COMMUNICATION 11/15/2007 09:02:23 PAGE 6
304 1 idata UCHAR i,j,temp;
305 1
306 1 if(RawMessageNum!=0)
307 1 {
308 2 for(i=0;i<MESSAGEGROUPNUMBER;i++)
309 2 {
310 3 if(ReadMessageGroup(i,MessageGroup_origin)==OUTSIDELINE_ID[outtelnum])
311 3 { //为本外线消息
312 4 if(ReadMessageGroup(i,MessageGroup_type)==OUTSIDE_CALL_IN_MESSAGETYPE)
313 4 { //振铃消息
314 5 if(ReadMessageGroup(i,MessageGroup_datastar)==0x01)
315 5 {//第一声振铃
316 6 temp=testoutline(outtelnum);
317 6 if(temp==0xff)
318 6 {//此外线已占用
319 7 WriteOutTelState(outtelnum,outtel_used);
320 7
321 7 RawMessageNum--; //清楚已处理的消息
322 7 ClearAMessage(i);
323 7 return;
324 7 }
325 6 else
326 6 {
327 7 for(j=0;j<ExtTelNum;j++)
328 7 { //查找振铃空闲分机
329 8 if(ReadExtTelState(j)==exttel_hold)
330 8 {
331 9 CreatExtComGroupByID(outtelnum,MACHINE_ID[j],OUTSIDELINE_ID[outtelnum],OUTSIDECOMTYPE);
332 9 //建立通话组
333 9 WriteOutTelState(outtelnum,outtel_ring);//改变外线状态
334 9 WriteExtTelState(j,exttel_sendCID);//接受来电显示
335 9 RawMessageNum--; //清楚已处理的消息
336 9 ClearAMessage(i);
337 9 return;
338 9 }
339 8 }
340 7 //不存在空闲分机
341 7 RawMessageNum--; //清楚已处理的消息
342 7 ClearAMessage(i);
343 7 return;
344 7 }
345 6 }//第一声振铃
346 5 }//振铃消息
347 4 RawMessageNum--; //清楚已处理的消息
348 4 ClearAMessage(i);
349 4 return;
350 4 }//本外线消息
351 3 }//消息查询
352 2 }//是否有消息
353 1 }//函数
354
355 void outtel_ring_deal(UCHAR outtelnum)
356 {
357 1 idata UCHAR i;
358 1
359 1 if(RawMessageNum!=0)
360 1 {
361 2 for(i=0;i<MESSAGEGROUPNUMBER;i++)
362 2 {
363 3 if(ReadMessageGroup(i,MessageGroup_origin)==OUTSIDELINE_ID[outtelnum])
364 3 { //为本外线消息
365 4 RawMessageNum--; //清楚已处理的消息
C51 COMPILER V7.06 COMMUNICATION 11/15/2007 09:02:23 PAGE 7
366 4 ClearAMessage(i);
367 4 return;
368 4 }//本外线消息
369 3 }//消息查询
370 2 }//是否有消息
371 1 }//函数
372
373 void outtel_using_deal(UCHAR outtelnum)
374 {
375 1 idata UCHAR i;
376 1
377 1 if(RawMessageNum!=0)
378 1 {
379 2 for(i=0;i<MESSAGEGROUPNUMBER;i++)
380 2 {
381 3 if(ReadMessageGroup(i,MessageGroup_origin)==OUTSIDELINE_ID[outtelnum])
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -