📄 ring.lst
字号:
C51 COMPILER V7.20 RING 02/20/2006 10:13:55 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE RING
OBJECT MODULE PLACED IN .\output\ring.obj
COMPILER INVOKED BY: D:\keil c51 v7.09\C51\BIN\C51.EXE ring.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\ring.lst) OBJECT(.\
-output\ring.obj)
line level source
1 #ifndef _RING_C_
2 #define _RING_C_
3
4 #include "api.h"
5
6 BYTE is_key_press()
7 {
8 1 #if _LCD_MENU_
9 1 if( get_menu_key_voice_status() )
10 1 return VALID;
11 1 #endif
12 1 return INVALID;
13 1 }
14
15 BYTE is_ow_call()
16 {
17 1 BYTE hook_status;
18 1 SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
19 1 static BYTE xdata preview_remote_hook = 0;
20 1 BYTE remote_hook;
21 1
22 1 hook_status = ReadChip( LOCAL_HOOKSTATUS_ADDR );
23 1
24 1 if( hook_status&BIT1 )
25 1 psdev->local.alarm_hook &= HOOK_ON;
26 1
27 1 if( (!(hook_status&BIT1)) && ( (psdev->remote.alarm_hook&0x0f) != PHONE_TALK) )
28 1 {
29 2 psdev->local.alarm_hook &= HOOK_ON;
30 2 psdev->local.alarm_hook |= HOOK_OFF;
31 2 return INVALID;
32 2 }
33 1
34 1 if( ((psdev->remote.alarm_hook&0x0f) == (HOOK_ON&0x0f))
35 1 && ((psdev->local.alarm_hook&0x0f) == (HOOK_ON&0x0f)) )
36 1 preview_remote_hook = (HOOK_ON&0x0f);
37 1
38 1 if( hook_status&BIT1 )
39 1 {
40 2 remote_hook = (psdev->remote.alarm_hook&0x0f);
41 2 if( remote_hook == HOOK_OFF )
42 2 {
43 3 if( (preview_remote_hook&0x0f) == (HOOK_ON&0x0f) )
44 3 return VALID;
45 3 }
46 2 }
47 1 if( ((psdev->remote.alarm_hook&0x0f) == PHONE_TALK)
48 1 ||((psdev->remote.alarm_hook&0x0f) == HOOK_OFF)
49 1 && ((preview_remote_hook&0x0f) == (HOOK_ON&0x0f)) )
50 1 {
51 2 preview_remote_hook = HOOK_OFF;
52 2 return INVALID;
53 2 }
54 1
C51 COMPILER V7.20 RING 02/20/2006 10:13:55 PAGE 2
55 1 return INVALID;
56 1 }
57
58 BYTE get_mute_status()
59 {
60 1 BYTE mute;
61 1
62 1 mute = ReadChip( LOCAL_HOOKSTATUS_ADDR );
63 1
64 1 if( mute&BIT0 )
65 1 return INVALID;
66 1 else
67 1 return VALID;
68 1 }
69
70
71 BYTE is_alarm( SYSTEM_DEVICE_STATUS *psdev )
72 {
73 1 if( (get_local_alarm_status( psdev ) != ALARM )
74 1 || (get_remote_alarm_status( psdev ) != ALARM ) )
75 1 return VALID;
76 1
77 1 return INVALID;
78 1 }
79
80 BYTE is_local_loop( SYSTEM_DEVICE_STATUS *psdev )
81 {
82 1 if( light_e1_loop( psdev->remote.e1_status ) != INVALID )
83 1 return VALID;
84 1
85 1 return INVALID;
86 1 }
87
88 BYTE is_remote_loop( SYSTEM_DEVICE_STATUS *psdev )
89 {
90 1 if( light_e1_loop( psdev->local.e1_status ) != INVALID )
91 1 return VALID;
92 1
93 1 return INVALID;
94 1 }
95
96 BYTE get_remote_ow_status( SYSTEM_DEVICE_STATUS *psdev )
97 {
98 1 return (psdev->remote.alarm_hook&0x0f);
99 1 }
100
101 void ring_control( BYTE ring_status , SYSTEM_DEVICE_STATUS *psdev )
102 {
103 1 BYTE ring_chip = RING_NORMAL;
104 1
105 1 switch( ring_status )
106 1 {
107 2 case KEY_VOICE:
108 2 ring_chip &= ~BIT6;
109 2 break;
110 2
111 2 case CALL_VOICE:
112 2 ring_chip &= ~BIT4;
113 2 break;
114 2
115 2 case ALARM_VOICE:
116 2 ring_chip &= ~BIT2;
C51 COMPILER V7.20 RING 02/20/2006 10:13:55 PAGE 3
117 2 break;
118 2
119 2 case LOCAL_LOOP_VOICE:
120 2 ring_chip &= ~BIT3;
121 2 break;
122 2
123 2 case REMOTE_LOOP_VOICE:
124 2 ring_chip &= ~BIT5;
125 2 break;
126 2
127 2 default:
128 2 break;
129 2 }
130 1
131 1 if( get_remote_ow_status( psdev ) == HOOK_OFF )
132 1 ring_chip &= ~BIT1;
133 1
134 1 if( get_remote_ow_status( psdev ) == PHONE_TALK )
135 1 ring_chip &= ~BIT0;
136 1
137 1 WriteChip( REMOTE_HOOK_ADDR, ring_chip );
138 1 }
139
140 void ring_process( SYSTEM_DEVICE_STATUS *psdev )
141 {
142 1 BYTE ring_status;
143 1
144 1 /*LCD按键是否按下*/
145 1 if( is_key_press() == VALID )
146 1 ring_status = KEY_VOICE;
147 1
148 1 /*公务是否有电话*/
149 1 else if( is_ow_call() == VALID )
150 1 ring_status = CALL_VOICE;
151 1
152 1 /*检验静音状态*/
153 1 else if( get_mute_status() == INVALID )
154 1 ring_status = SILENCE;
155 1
156 1 /*检查是否有告警*/
157 1 else if( is_alarm( psdev ) == VALID )
158 1 ring_status = ALARM_VOICE;
159 1
160 1 /*检查是否有本端环回*/
161 1 else if( is_local_loop( psdev ) == VALID )
162 1 ring_status = LOCAL_LOOP_VOICE;
163 1
164 1 /*检查是否有远端环回*/
165 1 else if( is_remote_loop( psdev ) == VALID )
166 1 ring_status = REMOTE_LOOP_VOICE;
167 1
168 1 ring_control( ring_status, psdev );
169 1 }
170
171 void task_ring_process( void )
172 {
173 1 SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
174 1
175 1 ring_process( psdev );
176 1 }
177
178 #endif
C51 COMPILER V7.20 RING 02/20/2006 10:13:55 PAGE 4
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 465 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 1 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 13
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -