📄 path_switch.lst
字号:
436 3 }
437 2 else sport = 1;
438 2 break;
439 2 default: break;
440 2 }
C51 COMPILER V7.50 PATH_SWITCH 03/10/2006 16:35:33 PAGE 9
441 1 if (mode == 2){
442 2 return_value = 0;
443 2 path_switch_state[timeid - 1] = mode; //保存倒换模式
444 2 }
445 1 else if ((mode == 1) & (sboard == 0)){ //由自动状态倒换到主用状态
446 2 return_value = 0;
447 2 path_switch_state[timeid - 1] = mode; //保存倒换模式
448 2 }
449 1 else { //强制倒换状态
450 2 bport = path_switch_array[sport][timeid - 1][0];
451 2 outport = path_switch_array[sport][timeid - 1][1];
452 2 if (bport < 4){
453 3 PTUN(outport,timeid - 1) = bport;
454 3 // return_value = path_switch_function(path_switch_array[sport][timeid - 1][0],timeid - 1,outport);
455 3 //调用倒换函数
456 3 // if (return_value == 0){ //倒换成功更改当前输入表中的输入端口
457 3 path_switch_array[sport][timeid - 1][3] = 0;
458 3 path_switch_array[bport][timeid - 1][3] = 1;
459 3 if (outport < 4){ //若是保护的是时隙,则要同时进行时隙的并发配置
460 4 switch (outport){ //对光口进行并发配置
461 5 case 0: PTUN(1,timeid - 1) = bport;
462 5 //return_value = path_switch_function(0,timeid - 1,1);
463 5 break;
464 5 case 1: PTUN(0,timeid - 1) = bport;
465 5 //return_value = path_switch_function(0,timeid - 1,0);
466 5 break;
467 5 case 2: PTUN(3,timeid - 1) = bport;
468 5 //return_value = path_switch_function(0,timeid - 1,3);
469 5 break;
470 5 case 3: PTUN(2,timeid - 1) = bport;
471 5 //return_value = path_switch_function(0,timeid - 1,2);
472 5 break;
473 5 default:break;
474 5 }
475 4 }
476 3 return_value = 0;
477 3 path_switch_state[timeid - 1] = mode; //保存倒换模式
478 3 }
479 2 else return_value = 2;
480 2 }
481 1 if (!GetResRdyTbl(1))
482 1 SetResRdyTbl(1);
483 1 return (return_value);
484 1 }
485
486
487
488 unsigned char get_path_state(struct cmd_para_save *path_switch){
489 1 //C53查询当前通道运行状态
490 1 unsigned char xdata boardid;
491 1 unsigned char xdata portid;
492 1 unsigned char xdata timeid;
493 1 unsigned char xdata mport;
494 1 unsigned char xdata return_value;
495 1
496 1 boardid = path_switch -> path_stat_swget_board; //输出盘号
497 1 portid = path_switch -> path_stat_swget_port; //输出端口
498 1 timeid = path_switch -> path_stat_swget_slot; //输出时隙
499 1
500 1 mport = get_solt_working(boardid,portid,timeid); //得到所保护的输出时隙的输入
501 1 switch (mport){
502 2 case 0: mboardid = 5;
C51 COMPILER V7.50 PATH_SWITCH 03/10/2006 16:35:33 PAGE 10
503 2 mportid = 1;
504 2 return_value = 0;
505 2 break;
506 2 case 1: mboardid = 5;
507 2 mportid = 2;
508 2 return_value = 0;
509 2 break;
510 2 case 2: mboardid = 4;
511 2 mportid = 1;
512 2 return_value = 0;
513 2 break;
514 2 case 3: mboardid = 4;
515 2 mportid = 2;
516 2 return_value = 0;
517 2 break;
518 2 default: return_value = 2;
519 2 break;
520 2 }
521 1 if (!GetResRdyTbl(22))
522 1 SetResRdyTbl(22);
523 1 return (return_value);
524 1 }
525
526
527 void report_path_stat(unsigned char value,unsigned char board,unsigned port){
528 1 //C53回应函数
529 1 tx_buf[0] = '$';
530 1 tx_buf[1] = '2';
531 1 tx_buf[2] = '1';
532 1 tx_buf[3] = 0x43;
533 1 tx_buf[4] = 0x35;
534 1 tx_buf[5] = 0x33;
535 1 tx_buf[6] = '0';
536 1 tx_buf[7] = '0';
537 1 tx_buf[8] = '0';
538 1 tx_buf[9] = '5';
539 1 tx_buf[10] = value + 0x30;
540 1 tx_buf[11] = board + 0x30;
541 1 if (board == 5){
542 2 tx_buf[12] = '1';
543 2 }
544 1 else tx_buf[12] = '4';
545 1 tx_buf[13] = '0';
546 1 tx_buf[14] = port + 0x30;
547 1 tx_buf[15] = '*';
548 1 tx_buf_pointer = 0;
549 1 while(tx_buf[tx_buf_pointer] != '*'){
550 2 SBUF = tx_buf[tx_buf_pointer];
551 2 while(tx_done == 0);
552 2 tx_done = 0;
553 2 tx_buf_pointer++;
554 2 }
555 1 SBUF = tx_buf[tx_buf_pointer]; //发送最后一个字符'*'
556 1 while(tx_done == 0);
557 1 tx_done = 0;
558 1
559 1 }
560
561
562 /*以下为自动倒换函数*/
563 unsigned char xdata init_flg[2][4];
564 unsigned char xdata init_recover[4] = {0,0,0,0};
C51 COMPILER V7.50 PATH_SWITCH 03/10/2006 16:35:33 PAGE 11
565
566 /******************************************************************************************************/
567 void path_switch_recover(void){
568 1 //每秒查询是否信号恢复,进行通道倒换函数
569 1
570 1 unsigned char xdata temp;
571 1 unsigned char xdata tport;
572 1 unsigned char xdata outport;
573 1 unsigned char xdata value;
574 1 unsigned char xdata *valueid;
575 1 unsigned char xdata quotient;
576 1 unsigned char xdata residue;
577 1
578 1 if (((Ia0_a & 0xD0) | (Ia2_a & 0xE0) | (Ia3_a & 0x80)) == 0){ //MCB A口全0
579 2 if (init_recover[0] == 1){
580 3 for (temp = 0; temp <= 62; temp++){
581 4 if (path_switch_state[temp] == 2){ //如果处于自动倒换状态
582 5 for (tport = 1; tport <= 3; tport++){ //轮循查找哪个光口的备用光口是MCB光口1
583 6 if (path_switch_array[tport][temp][0] == 0){
584 7 quotient = temp >> 3; //得到该时隙所在的字节值(同timeid / 8运算)
585 7 residue = temp & 0x07; //同timeid % 8运算
586 7 residue = 7 - residue; //得到该时隙所在的bit位
587 7 outport = path_switch_array[tport][temp][1];
588 7 // value = path_switch_function(0,temp,outport); //进行该时隙的通道倒换
589 7 switch(tport){
590 8 // case 0: valueid = (quotient + 0x88A6);
591 8 // value = ((*valueid) >> residue) & 0x01; //如果该时隙出现AIS
592 8 // if (value != 0){ //该时隙不能倒换
593 8 // PTUN(outport,temp) = 0;
594 8 // value = 0;
595 8 // }
596 8 // else{
597 8 // value = 2;
598 8 // }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -