source: rtems/c/src/lib/libbsp/m68k/mvme167/console/console-recording.h @ c499856

4.115
Last change on this file since c499856 was c499856, checked in by Chris Johns <chrisj@…>, on Mar 20, 2014 at 9:10:47 PM

Change all references of rtems.com to rtems.org.

  • Property mode set to 100644
File size: 21.8 KB
Line 
1/*
2 *  Copyright (c) 2000, National Research Council of Canada
3 *
4 *  The license and distribution terms for this file may be
5 *  found in the file LICENSE in this distribution or at
6 *  http://www.rtems.org/license/LICENSE.
7 */
8
9/* CD2401 CONSOLE DRIVER DEBUG INFO RECORDING */
10
11#ifdef CD2401_RECORD_DEBUG_INFO
12
13/* Control individual recording here. That way, we don't clutter console.c */
14#define CD2401_RECORD_WRITE
15#define CD2401_RECORD_TX_ISR
16#define CD2401_RECORD_RX_ISR
17#define CD2401_RECORD_RE_ISR
18#define CD2401_RECORD_MODEM_ISR
19#define CD2401_RECORD_SET_ATTRIBUTE
20#define CD2401_RECORD_FIRST_OPEN
21#define CD2401_RECORD_LAST_CLOSE
22#define CD2401_RECORD_START_REMOTE_TX
23#define CD2401_RECORD_STOP_REMOTE_TX
24#define CD2401_RECORD_DRAIN_OUTPUT
25#define CD2401_RECORD_DELAY
26
27/* Call the data recording functions */
28#ifdef CD2401_RECORD_WRITE
29#define CD2401_RECORD_WRITE_INFO( args )              cd2401_record_write_info args
30#else
31#define CD2401_RECORD_WRITE_INFO( args )
32#endif
33
34#ifdef CD2401_RECORD_TX_ISR
35#define CD2401_RECORD_TX_ISR_INFO( args )             cd2401_record_tx_isr_info args
36#define CD2401_RECORD_TX_ISR_SPURIOUS_INFO( args )    cd2401_record_tx_isr_spurious_info args
37#define CD2401_RECORD_TX_ISR_BUSERR_INFO( args )      cd2401_record_tx_isr_buserr_info args
38#else
39#define CD2401_RECORD_TX_ISR_INFO( args )
40#define CD2401_RECORD_TX_ISR_SPURIOUS_INFO( args )
41#define CD2401_RECORD_TX_ISR_BUSERR_INFO( args )
42#endif
43
44#ifdef CD2401_RECORD_RX_ISR
45#define CD2401_RECORD_RX_ISR_INFO( args )             cd2401_record_rx_isr_info args
46#define CD2401_RECORD_RX_ISR_SPURIOUS_INFO( args )    cd2401_record_rx_isr_spurious_info args
47#else
48#define CD2401_RECORD_RX_ISR_INFO( args )
49#define CD2401_RECORD_RX_ISR_SPURIOUS_INFO( args )
50#endif
51
52#ifdef CD2401_RECORD_RE_ISR
53#define CD2401_RECORD_RE_ISR_SPURIOUS_INFO( args )    cd2401_record_re_isr_spurious_info args
54#else
55#define CD2401_RECORD_RE_ISR_SPURIOUS_INFO( args )
56#endif
57
58#ifdef CD2401_RECORD_MODEM_ISR
59#define CD2401_RECORD_MODEM_ISR_SPURIOUS_INFO( args ) cd2401_record_modem_isr_spurious_info args
60#else
61#define CD2401_RECORD_MODEM_ISR_SPURIOUS_INFO( args )
62#endif
63
64#ifdef CD2401_RECORD_SET_ATTRIBUTES
65#define CD2401_RECORD_SET_ATTRIBUTES_INFO( args )     cd2401_record_set_attributes_info args
66#else
67#define CD2401_RECORD_SET_ATTRIBUTES_INFO( args )
68#endif
69
70#ifdef CD2401_RECORD_FIRST_OPEN
71#define CD2401_RECORD_FIRST_OPEN_INFO( args )         cd2401_record_first_open_info args
72#else
73#define CD2401_RECORD_FIRST_OPEN_INFO( args )
74#endif
75
76#ifdef CD2401_RECORD_LAST_CLOSE
77#define CD2401_RECORD_LAST_CLOSE_INFO( args )         cd2401_record_last_close_info args
78#else
79#define CD2401_RECORD_LAST_CLOSE_INFO( args )
80#endif
81
82#ifdef CD2401_RECORD_START_REMOTE_TX
83#define CD2401_RECORD_START_REMOTE_TX_INFO( args )    cd2401_record_start_remote_tx_info args
84#else
85#define CD2401_RECORD_START_REMOTE_TX_INFO( args )
86#endif
87
88#ifdef CD2401_RECORD_STOP_REMOTE_TX
89#define CD2401_RECORD_STOP_REMOTE_TX_INFO( args )     cd2401_record_stop_remote_tx_info args
90#else
91#define CD2401_RECORD_STOP_REMOTE_TX_INFO( args )
92#endif
93
94#ifdef CD2401_RECORD_DRAIN_OUTPUT
95#define CD2401_RECORD_DRAIN_OUTPUT_INFO( args )       cd2401_record_drain_output_info args
96#else
97#define CD2401_RECORD_DRAIN_OUTPUT_INFO( args )
98#endif
99
100#ifdef CD2401_RECORD_DELAY
101#define CD2401_RECORD_DELAY_INFO( args )              cd2401_record_delay_info args
102#else
103#define CD2401_RECORD_DELAY_INFO( args )
104#endif
105
106/* Define the data and the recording functions */
107#define CD2401_DEBUG_BUFFER_SIZE     256
108#define CD2401_DEBUG_CHAR_BUFSIZE     64
109#define CD2401_WRITE_INFO              1
110#define CD2401_TX_ISR_INFO             2
111#define CD2401_TX_ISR_SPURIOUS_INFO    3
112#define CD2401_TX_ISR_BUSERR_INFO      4
113#define CD2401_RX_ISR_INFO             5
114#define CD2401_RX_ISR_SPURIOUS_INFO    6
115#define CD2401_RE_ISR_SPURIOUS_INFO    7
116#define CD2401_MODEM_ISR_SPURIOUS_INFO 8
117#define CD2401_FIRST_OPEN_INFO         9
118#define CD2401_LAST_CLOSE_INFO        10
119#define CD2401_START_REMOTE_TX_INFO   11
120#define CD2401_STOP_REMOTE_TX_INFO    12
121#define CD2401_SET_ATTRIBUTE_INFO     13
122#define CD2401_DRAIN_OUTPUT_INFO      14
123#define CD2401_DELAY_INFO             15
124
125struct cd2401_debug_info {
126  short discriminant;
127  short record_size;
128  union {
129    struct cd2401_write_info {
130      int length;
131      char buffer[CD2401_DEBUG_CHAR_BUFSIZE];
132      char dmabuf;
133    } write_info;
134    struct cd2401_tx_isr_info {
135      unsigned char channel;
136      unsigned char status;
137      unsigned char initial_ier;
138      unsigned char final_ier;
139      uint8_t         txEmpty;
140    } tx_isr_info;
141    struct cd2401_tx_isr_spurious_info {
142      unsigned char channel;
143      unsigned char status;
144      unsigned char initial_ier;
145      unsigned char final_ier;
146      unsigned long spurdev;
147      unsigned long spurcount;
148    } tx_isr_spurious_info;
149    struct cd2401_tx_isr_buserr_info {
150      unsigned char channel;
151      unsigned char status;
152      unsigned char initial_ier;
153      unsigned char buserr;
154      unsigned long type;
155      unsigned long addr;
156    } tx_isr_buserr_info;
157    struct cd2401_rx_isr_info {
158      unsigned char channel;
159      int length;
160      char buffer[CD2401_DEBUG_CHAR_BUFSIZE];
161    } rx_isr_info;
162    struct cd2401_rx_isr_spurious_info {
163      unsigned char channel;
164      unsigned char status;
165      unsigned long spurdev;
166      unsigned long spurcount;
167    } rx_isr_spurious_info;
168    struct cd2401_re_isr_spurious_info {
169      unsigned char channel;
170      unsigned long spurdev;
171      unsigned long spurcount;
172    } re_isr_spurious_info;
173    struct cd2401_modem_isr_spurious_info {
174      unsigned char channel;
175      unsigned long spurdev;
176      unsigned long spurcount;
177    } modem_isr_spurious_info;
178    struct cd2401_first_open_info {
179      unsigned char channel;
180      uint8_t         init_count;
181    } first_open_info;
182    struct cd2401_last_close_info {
183      unsigned char channel;
184      uint8_t         init_count;
185    } last_close_info;
186    struct cd2401_start_remote_tx_info {
187      unsigned char channel;
188    } start_remote_tx_info;
189    struct cd2401_stop_remote_tx_info {
190      unsigned char channel;
191    } stop_remote_tx_info;
192    struct cd2401_set_attribute_info {
193      int minor;
194      uint8_t         need_reinit;
195      uint8_t         txEmpty;
196      uint8_t         csize;
197      uint8_t         cstopb;
198      uint8_t         parodd;
199      uint8_t         parenb;
200      uint8_t         ignpar;
201      uint8_t         inpck;
202      uint8_t         hw_flow_ctl;
203      uint8_t         sw_flow_ctl;
204      uint8_t         extra_flow_ctl;
205      uint8_t         icrnl;
206      uint8_t         igncr;
207      uint8_t         inlcr;
208      uint8_t         brkint;
209      uint8_t         ignbrk;
210      uint8_t         parmrk;
211      uint8_t         istrip;
212      uint16_t         tx_period;
213      uint16_t         rx_period;
214      uint32_t         out_baud;
215      uint32_t         in_baud;
216    } set_attribute_info;
217    struct cd2401_drain_output_info {
218      uint8_t         txEmpty;
219      uint8_t         own_buf_A;
220      uint8_t         own_buf_B;
221    } drain_output_info;
222    struct cd2401_delay_info {
223      rtems_interval start;
224      rtems_interval end;
225      rtems_interval current;
226      unsigned long loop_count;
227    } delay_info;
228  } u;
229};
230
231struct cd2401_debug_info cd2401_debug_buffer[CD2401_DEBUG_BUFFER_SIZE];
232int cd2401_debug_index = 0;
233
234#include <string.h>
235
236int cd2401_get_record_size(
237  int size
238)
239{
240  /* Not the best way to do this */
241  return size + 4;
242}
243
244void cd2401_record_write_info(
245  int len,
246  const char * buf,
247  char dmabuf
248)
249{
250  int max_length;
251
252  max_length = (len < CD2401_DEBUG_CHAR_BUFSIZE ) ? len : CD2401_DEBUG_CHAR_BUFSIZE;
253
254  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
255  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_WRITE_INFO;
256  cd2401_debug_buffer[cd2401_debug_index].record_size =
257      cd2401_get_record_size( sizeof( struct cd2401_write_info ) );
258  cd2401_debug_buffer[cd2401_debug_index].u.write_info.length = len;
259  memcpy ( &(cd2401_debug_buffer[cd2401_debug_index].u.write_info.buffer), buf, max_length );
260  cd2401_debug_buffer[cd2401_debug_index].u.write_info.dmabuf = dmabuf;
261
262  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
263}
264
265void cd2401_record_tx_isr_info(
266  unsigned char ch,
267  unsigned char status,
268  unsigned char initial_ier,
269  unsigned char final_ier,
270  uint8_t         txEmpty
271)
272{
273  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
274  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_TX_ISR_INFO;
275  cd2401_debug_buffer[cd2401_debug_index].record_size =
276      cd2401_get_record_size( sizeof( struct cd2401_tx_isr_info ) );
277  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_info.channel = ch;
278  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_info.status = status;
279  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_info.initial_ier = initial_ier;
280  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_info.final_ier = final_ier;
281  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_info.txEmpty = txEmpty;
282
283  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
284}
285
286void cd2401_record_tx_isr_spurious_info(
287  unsigned char ch,
288  unsigned char status,
289  unsigned char initial_ier,
290  unsigned char final_ier,
291  unsigned char spur_dev,
292  unsigned char spur_cnt
293)
294{
295  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
296  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_TX_ISR_SPURIOUS_INFO;
297  cd2401_debug_buffer[cd2401_debug_index].record_size =
298      cd2401_get_record_size( sizeof( struct cd2401_tx_isr_spurious_info ) );
299  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_spurious_info.channel = ch;
300  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_spurious_info.status = status;
301  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_spurious_info.initial_ier = initial_ier;
302  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_spurious_info.final_ier = final_ier;
303  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_spurious_info.spurdev = spur_dev;
304  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_spurious_info.spurcount = spur_cnt;
305
306  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
307}
308
309void cd2401_record_tx_isr_buserr_info(
310  unsigned char ch,
311  unsigned char status,
312  unsigned char initial_ier,
313  unsigned char buserr,
314  unsigned long buserr_type,
315  unsigned long buserr_addr
316)
317{
318  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
319  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_TX_ISR_BUSERR_INFO;
320  cd2401_debug_buffer[cd2401_debug_index].record_size =
321    cd2401_get_record_size( sizeof( struct cd2401_tx_isr_buserr_info ) );
322  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_buserr_info.channel = ch;
323  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_buserr_info.status = status;
324  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_buserr_info.initial_ier = initial_ier;
325  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_buserr_info.buserr = buserr;
326  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_buserr_info.type = buserr_type;
327  cd2401_debug_buffer[cd2401_debug_index].u.tx_isr_buserr_info.addr = buserr_addr;
328
329  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
330}
331
332void cd2401_record_rx_isr_info(
333  unsigned char ch,
334  unsigned char total,
335  char * buffer
336)
337{
338  int max_length;
339
340  max_length = (total < CD2401_DEBUG_CHAR_BUFSIZE ) ? total : CD2401_DEBUG_CHAR_BUFSIZE;
341
342  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
343  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_RX_ISR_INFO;
344  cd2401_debug_buffer[cd2401_debug_index].record_size =
345      cd2401_get_record_size( sizeof( struct cd2401_rx_isr_info ) );
346  cd2401_debug_buffer[cd2401_debug_index].u.rx_isr_info.length = max_length;
347 memcpy ( &(cd2401_debug_buffer[cd2401_debug_index].u.rx_isr_info.buffer), buffer, max_length );
348
349  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
350}
351
352void cd2401_record_rx_isr_spurious_info(
353  unsigned char ch,
354  unsigned char status,
355  uint32_t         spur_dev,
356  uint32_t         spur_cnt
357)
358{
359  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
360  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_RX_ISR_SPURIOUS_INFO;
361  cd2401_debug_buffer[cd2401_debug_index].record_size =
362      cd2401_get_record_size( sizeof( struct cd2401_rx_isr_spurious_info ) );
363  cd2401_debug_buffer[cd2401_debug_index].u.rx_isr_spurious_info.channel = ch;
364  cd2401_debug_buffer[cd2401_debug_index].u.rx_isr_spurious_info.status = status;
365  cd2401_debug_buffer[cd2401_debug_index].u.rx_isr_spurious_info.spurdev = spur_dev;
366  cd2401_debug_buffer[cd2401_debug_index].u.rx_isr_spurious_info.spurcount = spur_cnt;
367
368  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
369}
370
371void cd2401_record_re_isr_spurious_info(
372  unsigned char ch,
373  uint32_t         spur_dev,
374  uint32_t         spur_cnt
375)
376{
377  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
378  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_RE_ISR_SPURIOUS_INFO;
379  cd2401_debug_buffer[cd2401_debug_index].record_size =
380      cd2401_get_record_size( sizeof( struct cd2401_re_isr_spurious_info ) );
381  cd2401_debug_buffer[cd2401_debug_index].u.re_isr_spurious_info.channel = ch;
382  cd2401_debug_buffer[cd2401_debug_index].u.re_isr_spurious_info.spurdev = spur_dev;
383  cd2401_debug_buffer[cd2401_debug_index].u.re_isr_spurious_info.spurcount = spur_cnt;
384
385  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
386}
387
388void cd2401_record_modem_isr_spurious_info(
389  unsigned char ch,
390  uint32_t         spur_dev,
391  uint32_t         spur_cnt
392)
393{
394  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
395  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_MODEM_ISR_SPURIOUS_INFO;
396  cd2401_debug_buffer[cd2401_debug_index].record_size =
397      cd2401_get_record_size( sizeof( struct cd2401_modem_isr_spurious_info ) );
398  cd2401_debug_buffer[cd2401_debug_index].u.modem_isr_spurious_info.channel = ch;
399  cd2401_debug_buffer[cd2401_debug_index].u.modem_isr_spurious_info.spurdev = spur_dev;
400  cd2401_debug_buffer[cd2401_debug_index].u.modem_isr_spurious_info.spurcount = spur_cnt;
401
402  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
403}
404
405void cd2401_record_first_open_info(
406  unsigned char ch,
407  uint8_t         init_count
408)
409{
410  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
411  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_FIRST_OPEN_INFO;
412  cd2401_debug_buffer[cd2401_debug_index].record_size =
413      cd2401_get_record_size( sizeof( struct cd2401_first_open_info ) );
414  cd2401_debug_buffer[cd2401_debug_index].u.first_open_info.channel = ch;
415  cd2401_debug_buffer[cd2401_debug_index].u.first_open_info.init_count = init_count;
416
417  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
418}
419
420void cd2401_record_last_close_info(
421  unsigned char ch,
422  uint8_t         init_count
423)
424{
425  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
426  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_LAST_CLOSE_INFO;
427  cd2401_debug_buffer[cd2401_debug_index].record_size =
428      cd2401_get_record_size( sizeof( struct cd2401_last_close_info ) );
429  cd2401_debug_buffer[cd2401_debug_index].u.last_close_info.channel = ch;
430  cd2401_debug_buffer[cd2401_debug_index].u.last_close_info.init_count = init_count;
431
432  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
433}
434
435void cd2401_record_start_remote_tx_info(
436  unsigned char ch
437)
438{
439  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
440  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_START_REMOTE_TX_INFO;
441  cd2401_debug_buffer[cd2401_debug_index].record_size =
442      cd2401_get_record_size( sizeof( struct cd2401_start_remote_tx_info ) );
443  cd2401_debug_buffer[cd2401_debug_index].u.start_remote_tx_info.channel = ch;
444
445  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
446}
447
448void cd2401_record_stop_remote_tx_info(
449  unsigned char ch
450)
451{
452  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
453  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_STOP_REMOTE_TX_INFO;
454  cd2401_debug_buffer[cd2401_debug_index].record_size =
455      cd2401_get_record_size( sizeof( struct cd2401_stop_remote_tx_info ) );
456  cd2401_debug_buffer[cd2401_debug_index].u.stop_remote_tx_info.channel = ch;
457
458  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
459}
460
461void cd2401_record_set_attributes_info(
462  int minor,
463  uint8_t         need_reinit,
464  uint8_t         csize,
465  uint8_t         cstopb,
466  uint8_t         parodd,
467  uint8_t         parenb,
468  uint8_t         ignpar,
469  uint8_t         inpck,
470  uint8_t         hw_flow_ctl,
471  uint8_t         sw_flow_ctl,
472  uint8_t         extra_flow_ctl,
473  uint8_t         icrnl,
474  uint8_t         igncr,
475  uint8_t         inlcr,
476  uint8_t         brkint,
477  uint8_t         ignbrk,
478  uint8_t         parmrk,
479  uint8_t         istrip,
480  uint16_t         tx_period,
481  uint16_t         rx_period,
482  uint32_t         out_baud,
483  uint32_t         in_baud
484)
485{
486  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
487  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_SET_ATTRIBUTE_INFO;
488  cd2401_debug_buffer[cd2401_debug_index].record_size =
489  cd2401_get_record_size( sizeof( struct cd2401_set_attribute_info ) );
490  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.minor = minor;
491  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.need_reinit = need_reinit;
492  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.txEmpty = CD2401_Channel_Info[minor].txEmpty;
493  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.csize = csize;
494  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.cstopb = cstopb;
495  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.parodd = parodd;
496  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.parenb = parenb;
497  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.ignpar = ignpar;
498  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.inpck = inpck;
499  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.hw_flow_ctl = hw_flow_ctl;
500  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.sw_flow_ctl = sw_flow_ctl;
501  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.extra_flow_ctl = extra_flow_ctl;
502  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.icrnl = icrnl;
503  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.igncr = igncr;
504  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.inlcr = inlcr;
505  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.brkint = brkint;
506  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.ignbrk = ignbrk;
507  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.parmrk = parmrk;
508  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.istrip = istrip;
509  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.tx_period = tx_period;
510  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.rx_period = rx_period;
511  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.out_baud = out_baud;
512  cd2401_debug_buffer[cd2401_debug_index].u.set_attribute_info.in_baud = in_baud;
513
514  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
515}
516
517void cd2401_record_drain_output_info(
518  uint8_t         txEmpty,
519  uint8_t         own_buf_A,
520  uint8_t         own_buf_B
521)
522{
523  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
524  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_DRAIN_OUTPUT_INFO;
525  cd2401_debug_buffer[cd2401_debug_index].record_size =
526      cd2401_get_record_size( sizeof( struct cd2401_drain_output_info ) );
527  cd2401_debug_buffer[cd2401_debug_index].u.drain_output_info.txEmpty = txEmpty;
528  cd2401_debug_buffer[cd2401_debug_index].u.drain_output_info.own_buf_A = own_buf_A;
529  cd2401_debug_buffer[cd2401_debug_index].u.drain_output_info.own_buf_B = own_buf_B;
530
531  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
532}
533
534void cd2401_record_delay_info(
535  rtems_interval start,
536  rtems_interval end,
537  rtems_interval current,
538  unsigned long loop_count
539)
540{
541  memset( &(cd2401_debug_buffer[cd2401_debug_index]), '\0', sizeof( struct cd2401_debug_info )  );
542  cd2401_debug_buffer[cd2401_debug_index].discriminant = CD2401_DELAY_INFO;
543  cd2401_debug_buffer[cd2401_debug_index].record_size =
544      cd2401_get_record_size( sizeof( struct cd2401_delay_info ) );
545  cd2401_debug_buffer[cd2401_debug_index].u.delay_info.start = start;
546  cd2401_debug_buffer[cd2401_debug_index].u.delay_info.end = end;
547  cd2401_debug_buffer[cd2401_debug_index].u.delay_info.current = current;
548  cd2401_debug_buffer[cd2401_debug_index].u.delay_info.loop_count = loop_count;
549
550  cd2401_debug_index = (cd2401_debug_index + 1 ) % CD2401_DEBUG_BUFFER_SIZE;
551}
552
553#else
554
555/* Do not call the data recording functions */
556#define CD2401_RECORD_WRITE_INFO( args )
557#define CD2401_RECORD_TX_ISR_INFO( args )
558#define CD2401_RECORD_TX_ISR_SPURIOUS_INFO( args )
559#define CD2401_RECORD_TX_ISR_BUSERR_INFO( args )
560#define CD2401_RECORD_RX_ISR_INFO( args )
561#define CD2401_RECORD_RX_ISR_SPURIOUS_INFO( args )
562#define CD2401_RECORD_RE_ISR_SPURIOUS_INFO( args )
563#define CD2401_RECORD_MODEM_ISR_SPURIOUS_INFO( args )
564#define CD2401_RECORD_FIRST_OPEN_INFO( args )
565#define CD2401_RECORD_LAST_CLOSE_INFO( args )
566#define CD2401_RECORD_START_REMOTE_TX_INFO( args )
567#define CD2401_RECORD_STOP_REMOTE_TX_INFO( args )
568#define CD2401_RECORD_SET_ATTRIBUTES_INFO( args )
569#define CD2401_RECORD_DRAIN_OUTPUT_INFO( args )
570#define CD2401_RECORD_DELAY_INFO( args )
571
572#endif
Note: See TracBrowser for help on using the repository browser.