📄 rc7017uart.lst
字号:
C51 COMPILER V7.20 RC7017UART 02/20/2006 10:13:55 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE RC7017UART
OBJECT MODULE PLACED IN .\output\rc7017uart.obj
COMPILER INVOKED BY: D:\keil c51 v7.09\C51\BIN\C51.EXE rc7017uart.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\rc7017uart.ls
-t) OBJECT(.\output\rc7017uart.obj)
line level source
1 #ifndef _RC7017UART_C_
2 #define _RC7017UART_C_
3
4 #include "api.h"
5 #include "serial.h"
6
7 #define FIBER_LOS_TIME 18
8 #define FIBER_LOS_OK_TIME 16
9
10 void EncapsulationSetCommand( SERIALSTRUCT *pUart, SYSTEM_INFOMATION *psys )
11 {
12 1 BYTE counter;
13 1 BYTE *pbuffer;
14 1
15 1 pbuffer = pUart->SendBuffer + 2;
16 1
17 1 pUart->SendLength = COMMAND_SET_LEGNTH;
18 1
19 1 *pbuffer ++ = COMMAND_SET;
20 1 for(counter=0; counter<sizeof( psys->setbuffer ); counter++)
21 1 *pbuffer ++ = psys->setbuffer[counter];
22 1
23 1 *pbuffer ++ = SERIAL_END;
24 1 }
25
26 void EncapsulationAlarmCommand( SERIALSTRUCT *pUart )
27 {
28 1 BYTE *pbuffer;
29 1
30 1 pbuffer = pUart->SendBuffer + 2;
31 1
32 1 pUart->SendLength = COMMAND_ALARM_LEGNTH;
33 1
34 1 *pbuffer ++ = COMMAND_ALARM;
35 1 *pbuffer ++ = 0x00;
36 1 *pbuffer ++ = SERIAL_END;
37 1 }
38
39 void EncapsulationValarCommand( SERIALSTRUCT *pUart )
40 {
41 1 BYTE counter;
42 1 BYTE *pbuffer;
43 1
44 1 pbuffer = pUart->SendBuffer + 2;
45 1
46 1 pUart->SendLength = COMMAND_VALAR_LEGNTH;
47 1
48 1 *pbuffer ++ = COMMAND_VALAR;
49 1
50 1 for(counter=0; counter<6; counter++)
51 1 *pbuffer ++ = 0;
52 1
53 1 *pbuffer ++ = SERIAL_END;
54 1 }
C51 COMPILER V7.20 RC7017UART 02/20/2006 10:13:55 PAGE 2
55
56 void EncapsulationSendBuffer( SERIALSTRUCT *pUart, SYSTEM_INFOMATION *psys )
57 {
58 1 BYTE *pbuffer;
59 1
60 1 pbuffer = pUart->SendBuffer;
61 1 pUart->SendLength = 0;
62 1
63 1 *pbuffer++ = SYNCHR1_0X7E;
64 1 *pbuffer++ = SYNCHR2_0X81;
65 1
66 1 switch( psys->sendrc7017 )
67 1 {
68 2 case SETCMDSERIAL:
69 2 EncapsulationSetCommand( pUart, psys );
70 2 break;
71 2
72 2 case ALARMSERIAL:
73 2 EncapsulationAlarmCommand( pUart );
74 2 break;
75 2
76 2 case VALARSERIAL:
77 2 EncapsulationValarCommand( pUart );
78 2 break;
79 2
80 2 default :
81 2 psys->sendrc7017= ALARMSERIAL;
82 2 break;
83 2 }
84 1 pUart->SendCounter = 0;
85 1 }
86
87
88 void serial_set_command( SYSTEM_INFOMATION *psys )
89 {
90 1 psys->SetCommandCounter ++;
91 1 if( psys->SetCommandCounter == COMMAND_SET_COUNTER )
92 1 {
93 2 psys->sendrc7017 = ALARMSERIAL;
94 2 psys->SetCommandCounter = 0;
95 2 }
96 1 }
97
98 void alarm_check_first_status( SYSTEM_DEVICE_STATUS *psdev, BYTE status )
99 {
100 1 if( status&BIT2 )
101 1 {
102 2 psdev->remote.alarm_hook &= HOOK_ON;
103 2 psdev->remote.alarm_hook |= HOOK_OFF;
104 2 }
105 1 else
106 1 psdev->remote.alarm_hook &= HOOK_ON;
107 1
108 1 if( status&BIT0 )
109 1 {
110 2 psdev->local.alarm_hook &= HOOK_ON;
111 2 psdev->local.alarm_hook |= PHONE_TALK;
112 2 psdev->remote.alarm_hook &= HOOK_ON;
113 2 psdev->remote.alarm_hook |= PHONE_TALK;
114 2 }
115 1 }
116
C51 COMPILER V7.20 RC7017UART 02/20/2006 10:13:55 PAGE 3
117 void alarm_check_local_e1_alarm_status( SYSTEM_DEVICE_STATUS *psdev, SYSTEM_INFOMATION *psys )
118 {
119 1 BYTE counter;
120 1
121 1 for( counter=0; counter<psys->max_system_e1; counter++ )
122 1 {
123 2 psdev->local.e1_status[counter] &= E1_NOALARM;
124 2 if( ((psys->alarm[4]>>counter)&BIT0) && ((psys->e1_use>>counter)&BIT0) )
125 2 {
126 3 psdev->local.e1_status[counter] |= E1_ALARM;
127 3 }
128 2 }
129 1 }
130
131 BYTE get_use_fiber( BYTE *fiber_status )
132 {
133 1 BYTE counter;
134 1
135 1 for( counter=0; counter<MAX_FIBER_NOMBER; counter++ )
136 1 if( !(fiber_status[counter]&FIBER_NOUSE) )
137 1 break;
138 1
139 1 return counter;
140 1 }
141
142 void alarm_check_remote_e1_alarm_status( SYSTEM_DEVICE_STATUS *psdev, SYSTEM_INFOMATION *psys )
143 {
144 1 BYTE counter;
145 1
146 1 if( check_remote_status() == ALARM )
147 1 return;
148 1
149 1 if( disable_remote_alarm_status() == ALARM )
150 1 return;
151 1
152 1 for( counter=0; counter<psys->max_system_e1; counter++ )
153 1 {
154 2 psdev->remote.e1_status[counter] &= E1_NOALARM;
155 2 if( ((psys->alarm[7]>>counter)&BIT0) && ((psys->valar[4]>>counter)&BIT0) )
156 2 {
157 3 psdev->remote.e1_status[counter] |= E1_ALARM;
158 3 }
159 2 }
160 1 }
161
162 BYTE fiber_status_form_chip( BYTE chip_status )
163 {
164 1 static BYTE xdata los_time[MAX_FIBER_NOMBER] = {0,0};
165 1 static BYTE xdata get_time[MAX_FIBER_NOMBER] = {17,17};
166 1 static BYTE xdata fiber_status = 0xff;
167 1 /* static BYTE xdata preview_chip_status = 0xff;*/
168 1 BYTE xdata fiber;
169 1
170 1 /*
171 1 if( preview_chip_status != chip_status )
172 1 {
173 1 for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
174 1 if( ((preview_chip_status>>fiber)&BIT0)
175 1 && ( !((chip_status>>fiber)&BIT0)) )
176 1 {
177 1 los_time[fiber] = 0;
178 1 get_time[fiber] = 0;
C51 COMPILER V7.20 RC7017UART 02/20/2006 10:13:55 PAGE 4
179 1 }
180 1 preview_chip_status = chip_status;
181 1 }
182 1 */
183 1 for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
184 1 {
185 2 get_time[fiber] = ( get_time[fiber] + 1 )%FIBER_LOS_TIME;
186 2 if( !((chip_status>>fiber)&BIT0) )
187 2 los_time[fiber] ++;
188 2 if( !get_time[fiber] )
189 2 {
190 3 if( los_time[fiber] >= FIBER_LOS_OK_TIME )
191 3 fiber_status &= ~(BIT0<<fiber);
192 3 else
193 3 {
194 4 if( los_time[fiber] != 0 )
195 4 gSystemInfo.remote_fiber_status[fiber] = ALARM;
196 4 else
197 4 gSystemInfo.remote_fiber_status[fiber] = NOALARM;
198 4 fiber_status |= (BIT0<<fiber);
199 4 }
200 3 los_time[fiber] = 0;
201 3 }
202 2 }
203 1 return fiber_status;
204 1 }
205
206 BYTE fiber_status_form_var( BYTE chip_status )
207 {
208 1 static BYTE xdata los_time[MAX_FIBER_NOMBER] = {0,0};
209 1 static BYTE xdata get_time[MAX_FIBER_NOMBER] = {17,17};
210 1 static BYTE xdata fiber_status = 0xff;
211 1 /* static BYTE xdata preview_chip_status = 0xff;*/
212 1 BYTE xdata fiber;
213 1
214 1 /*
215 1 if( preview_chip_status != chip_status )
216 1 {
217 1 for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
218 1 if( ((preview_chip_status>>fiber)&BIT0)
219 1 && ( !((chip_status>>fiber)&BIT0)) )
220 1 {
221 1 los_time[fiber] = 0;
222 1 get_time[fiber] = 0;
223 1 }
224 1 preview_chip_status = chip_status;
225 1 }
226 1 */
227 1 for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
228 1 {
229 2 get_time[fiber] = ( get_time[fiber] + 1 )%FIBER_LOS_TIME;
230 2 if( !(chip_status&(BIT7>>fiber)) )
231 2 los_time[fiber] ++;
232 2 if( !get_time[fiber] )
233 2 {
234 3 if( los_time[fiber] >= FIBER_LOS_OK_TIME )
235 3 fiber_status &= ~(BIT0<<fiber);
236 3 else
237 3 fiber_status |= (BIT0<<fiber);
238 3 los_time[fiber] = 0;
239 3 }
240 2 }
C51 COMPILER V7.20 RC7017UART 02/20/2006 10:13:55 PAGE 5
241 1
242 1 return fiber_status;
243 1 }
244
245 void remote_alarm_check( BYTE chip_status, BYTE status )
246 {
247 1 SYSTEM_DEVICE_STATUS *psdev = &gsystemStauts;
248 1 BYTE xdata fiber;
249 1
250 1 if( check_remote_status() == ALARM )
251 1 {
252 2 psdev->remote.fiber_status[0] &= FIBER_NOALARM;
253 2 psdev->remote.fiber_status[1] &= FIBER_NOALARM;
254 2 return;
255 2 }
256 1 for( fiber=0; fiber<MAX_FIBER_NOMBER; fiber++ )
257 1 {
258 2 psdev->remote.fiber_status[fiber] &= FIBER_NOALARM;
259 2 if( !((chip_status>>fiber)&BIT0) )
260 2 psdev->remote.fiber_status[fiber] |= FIBER_LOS;
261 2 }
262 1 fiber = get_use_fiber( psdev->remote.fiber_status );
263 1 if( (psdev->remote.fiber_status[fiber] & FIBER_ALARM_STATUS) == FIBER_OK )
264 1 {
265 2 if( status&BIT5 )
266 2 psdev->remote.fiber_status[fiber] |= FIBER_LFA;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -