FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/g23m-aci/uart/uart_rxf.c @ 932:79657f9c5772
compal-flash-boot-for-fc created
author | Mychaela Falconia <falcon@ivan.Harhan.ORG> |
---|---|
date | Sat, 31 Oct 2015 03:04:03 +0000 |
parents | f54080301c98 |
children |
rev | line source |
---|---|
775
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
1 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
2 +----------------------------------------------------------------------------- |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
3 | Project : |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
4 | Modul : |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
5 +----------------------------------------------------------------------------- |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
6 | Copyright 2002 Texas Instruments Berlin, AG |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
7 | All rights reserved. |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
8 | |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
9 | This file is confidential and a trade secret of Texas |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
10 | Instruments Berlin, AG |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
11 | The receipt of or possession of this file does not convey |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
12 | any rights to reproduce or disclose its contents or to |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
13 | manufacture, use, or sell anything it may describe, in |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
14 | whole, or in part, without the specific written consent of |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
15 | Texas Instruments Berlin, AG. |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
16 +----------------------------------------------------------------------------- |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
17 | Purpose : This modul is part of the entity UART and implements all |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
18 | procedures and functions as described in the |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
19 | SDL-documentation (RX-statemachine) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
20 +----------------------------------------------------------------------------- |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
21 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
22 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
23 #ifndef UART_RXF_C |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
24 #define UART_RXF_C |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
25 #endif /* !UART_RXF_C */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
26 |
779
f54080301c98
UART protocol stack entity compiles
Michael Spacefalcon <falcon@ivan.Harhan.ORG>
parents:
775
diff
changeset
|
27 #include "config.h" |
f54080301c98
UART protocol stack entity compiles
Michael Spacefalcon <falcon@ivan.Harhan.ORG>
parents:
775
diff
changeset
|
28 #include "fixedconf.h" |
f54080301c98
UART protocol stack entity compiles
Michael Spacefalcon <falcon@ivan.Harhan.ORG>
parents:
775
diff
changeset
|
29 #include "condat-features.h" |
f54080301c98
UART protocol stack entity compiles
Michael Spacefalcon <falcon@ivan.Harhan.ORG>
parents:
775
diff
changeset
|
30 |
775
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
31 #define ENTITY_UART |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
32 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
33 #ifndef FF_MULTI_PORT |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
34 /*==== INCLUDES =============================================================*/ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
35 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
36 #ifdef WIN32 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
37 #include "nucleus.h" |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
38 #endif /* WIN32 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
39 #include "typedefs.h" /* to get Condat data types */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
40 #include "vsi.h" /* to get a lot of macros */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
41 #include "macdef.h" /* to get a lot of macros */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
42 #include "custom.h" |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
43 #include "gsm.h" /* to get a lot of macros */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
44 #include "cnf_uart.h" /* to get cnf-definitions */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
45 #include "mon_uart.h" /* to get mon-definitions */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
46 #include "prim.h" /* to get the definitions of used SAP and directions */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
47 #ifdef DTILIB |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
48 #include "dti.h" /* to get dti lib */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
49 #endif /* DTILIB */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
50 #include "pei.h" /* to get PEI interface */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
51 #ifdef _TARGET_ |
779
f54080301c98
UART protocol stack entity compiles
Michael Spacefalcon <falcon@ivan.Harhan.ORG>
parents:
775
diff
changeset
|
52 #include "../../serial/serialswitch.h" |
f54080301c98
UART protocol stack entity compiles
Michael Spacefalcon <falcon@ivan.Harhan.ORG>
parents:
775
diff
changeset
|
53 #include "../../serial/traceswitch.h" |
775
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
54 #else /* _TARGET_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
55 #include "serial_dat.h" /* to get definitions of serial driver */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
56 #endif /* _TARGET_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
57 #include "uart.h" /* to get the global entity definitions */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
58 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
59 #ifdef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
60 #include <stdio.h> /* to get sprintf */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
61 #endif /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
62 #include <string.h> /* JK, delete warnings: to get memcpy */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
63 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
64 /*==== CONST ================================================================*/ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
65 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
66 /*==== LOCAL VARS ===========================================================*/ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
67 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
68 /*==== PRIVATE FUNCTIONS ====================================================*/ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
69 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
70 /*==== PUBLIC FUNCTIONS =====================================================*/ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
71 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
72 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
73 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
74 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
75 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
76 | Function : rx_proc_input |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
77 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
78 | Description : The function rx_proc_input() is the actual callback function |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
79 | to read data from the receive buffer. |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
80 | |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
81 | Parameters : uart_device - database for the affected UART device |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
82 | |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
83 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
84 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
85 LOCAL void rx_proc_input (T_UART_DATA* uart_device) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
86 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
87 USHORT i, len; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
88 T_DLC *dlc; /* used Data Link Connection */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
89 UBYTE *source; /* Data source pointer */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
90 UBYTE *destination; /* Data destination pointer */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
91 UBYTE temp_field; /* multi purpose value */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
92 BOOL channels_complete; /* indicator of complete reception */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
93 SHORT error_code; /* error code returned from a function */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
94 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
95 TRACE_FUNCTION( "rx_proc_input" ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
96 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
97 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
98 * read data only if we have read permission |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
99 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
100 if(uart_device->rx.read_permission) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
101 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
102 if(uart_device->rx.dlc_instance EQ UART_EMPTY_INSTANCE) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
103 dlc = &uart_device->dlc_table[UART_CONTROL_INSTANCE]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
104 else |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
105 dlc = &uart_device->dlc_table[uart_device->rx.dlc_instance]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
106 destination = &dlc->receive_data->buffer[dlc->receive_pos]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
107 #ifdef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
108 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
109 char buf[80]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
110 sprintf(buf,"uart_device->rx.dlc_instance: %d", uart_device->rx.dlc_instance); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
111 TRACE_EVENT(buf); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
112 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
113 #endif /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
114 if(uart_device->rx.dlc_instance EQ UART_EMPTY_INSTANCE) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
115 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
116 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
117 * Raw data |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
118 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
119 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
120 * Is a data descriptor allocated and |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
121 * is the channel ready to receive |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
122 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
123 if((dlc->receive_process EQ UART_RX_PROCESS_READY) && |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
124 (dlc->receive_data)) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
125 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
126 for (i=0; i < uart_device->rx.nsource; i++) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
127 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
128 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
129 * are there still data in the ring buffer segment and |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
130 * are there still space in the data descriptor |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
131 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
132 if ((uart_device->rx.size[i] > 0) && |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
133 (dlc->receive_size > dlc->receive_pos)) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
134 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
135 len = dlc->receive_size - dlc->receive_pos; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
136 if (len > uart_device->rx.size[i]) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
137 len = uart_device->rx.size[i]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
138 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
139 memcpy(&dlc->receive_data->buffer[dlc->receive_pos], |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
140 uart_device->rx.source[i], |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
141 len); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
142 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
143 uart_device->rx.size[i] -= len; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
144 dlc->receive_pos += len; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
145 dlc->receive_data->len = dlc->receive_pos; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
146 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
147 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
148 dlc->receive_process = UART_RX_PROCESS_COMPLETE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
149 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
150 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
151 else |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
152 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
153 channels_complete = FALSE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
154 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
155 * for each fragment |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
156 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
157 for (i=0; i < uart_device->rx.nsource; i++) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
158 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
159 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
160 * while there is still data in buffer and |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
161 * not yet all channels are processed |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
162 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
163 source = uart_device->rx.source[i]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
164 while((uart_device->rx.size[i] > 0) && (channels_complete NEQ TRUE)) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
165 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
166 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
167 * detect HDLC flag |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
168 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
169 if(*source EQ UART_HDLC_FLAG) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
170 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
171 switch(uart_device->rx.analyze_state) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
172 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
173 case UART_RX_ERROR: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
174 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
175 * begin of frame detected |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
176 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
177 uart_device->rx.analyze_state = UART_RX_BEGIN; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
178 /* fall through */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
179 case UART_RX_BEGIN: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
180 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
181 * initialize new packet |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
182 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
183 uart_device->rx.stored_len = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
184 uart_device->rx.address_field = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
185 uart_device->rx.fcs = UART_INITFCS; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
186 uart_device->rx.escape = FALSE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
187 uart_device->rx.analyze_state = UART_RX_ADDRESS; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
188 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
189 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
190 default: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
191 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
192 * detect HDLC flag |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
193 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
194 if(uart_device->rx.stored_len > 0) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
195 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
196 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
197 * determine whether FCS already calculated |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
198 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
199 if(uart_device->rx.analyze_state NEQ UART_RX_FCS) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
200 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
201 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
202 * UART_RX_INFORMATION_... |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
203 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
204 destination--; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
205 #ifdef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
206 uart_device->rx.fcs = *destination; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
207 #else /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
208 uart_device->rx.fcs = uart_device-> |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
209 fcstab[uart_device->rx.fcs ^ *destination]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
210 #endif /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
211 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
212 * remove FCS from data stream |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
213 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
214 dlc->receive_pos--; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
215 uart_data->rx.stored_len--; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
216 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
217 if(uart_device->rx.fcs EQ UART_GOODFCS) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
218 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
219 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
220 * no error occured, frame complete |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
221 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
222 dlc->receive_data->len = dlc->receive_pos; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
223 dlc->receive_process = UART_RX_PROCESS_COMPLETE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
224 uart_device->rx.analyze_state = UART_RX_END; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
225 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
226 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
227 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
228 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
229 * remove receiced frame because of an error |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
230 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
231 switch(uart_device->rx.analyze_state) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
232 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
233 case UART_RX_INFORMATION: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
234 case UART_RX_FCS: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
235 if(uart_data->rx.dlc_instance EQ UART_CONTROL_INSTANCE) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
236 dlc->receive_pos-= 2; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
237 dlc->receive_pos -= uart_data->rx.stored_len; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
238 dlc->receive_process = UART_RX_PROCESS_READY; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
239 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
240 default: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
241 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
242 * Other states are not handeled here |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
243 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
244 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
245 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
246 uart_device->rx.analyze_state = UART_RX_END; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
247 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
248 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
249 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
250 else if((*source EQ UART_HDLC_ESCAPE) && |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
251 (uart_device->rx.escape NEQ TRUE)) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
252 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
253 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
254 * detect Control Escape octet |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
255 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
256 uart_device->rx.escape = TRUE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
257 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
258 else |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
259 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
260 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
261 * bit 5 complement for the octet followed by Control Escape |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
262 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
263 if(uart_device->rx.escape EQ TRUE) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
264 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
265 *source ^= 0x20; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
266 uart_device->rx.escape = FALSE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
267 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
268 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
269 * store the packet and determine the protocol |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
270 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
271 switch(uart_device->rx.analyze_state) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
272 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
273 case UART_RX_ERROR: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
274 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
275 * wait for next HDLC flag |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
276 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
277 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
278 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
279 case UART_RX_ADDRESS: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
280 if((*source & UART_EA) EQ UART_EA) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
281 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
282 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
283 * FCS calculation |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
284 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
285 #ifdef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
286 uart_device->rx.fcs = *source; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
287 #else /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
288 uart_device->rx.fcs = uart_device-> |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
289 fcstab[uart_device->rx.fcs ^ *source]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
290 #endif /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
291 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
292 * store Address field |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
293 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
294 uart_device->rx.address_field = *source; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
295 uart_device->rx.analyze_state = UART_RX_CONTROL; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
296 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
297 else |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
298 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
299 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
300 * invalid frame detected |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
301 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
302 uart_device->rx.analyze_state = UART_RX_ERROR; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
303 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
304 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
305 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
306 case UART_RX_CONTROL: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
307 switch(*source) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
308 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
309 case UART_UIH_DATA_FRAME: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
310 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
311 * Data frame detected |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
312 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
313 temp_field = uart_device->rx.address_field >> UART_DLCI_POS; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
314 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
315 * if it is an existing channel, but not control channel |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
316 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
317 if((temp_field NEQ UART_DLCI_CONTROL) && |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
318 (uart_device->dlc_instance[temp_field] NEQ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
319 UART_EMPTY_INSTANCE)) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
320 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
321 uart_device->rx.dlc_instance = |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
322 uart_device->dlc_instance[temp_field]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
323 dlc = &uart_device->dlc_table[uart_device->rx.dlc_instance]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
324 #ifdef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
325 TRACE_EVENT_P2("Addressfield found DLCI: 0x%02X \ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
326 (dlc_instance 0x%02X)", |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
327 temp_field, uart_device->rx.dlc_instance); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
328 #endif /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
329 if(dlc->receive_process EQ UART_RX_PROCESS_READY) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
330 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
331 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
332 * reception Data channel found |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
333 * FCS calculation |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
334 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
335 #ifdef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
336 uart_device->rx.fcs = *source; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
337 #else /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
338 uart_device->rx.fcs = uart_device-> |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
339 fcstab[uart_device-> |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
340 rx.fcs ^ *source]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
341 #endif /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
342 destination = &dlc->receive_data-> |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
343 buffer[dlc->receive_pos]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
344 uart_device->rx.analyze_state = UART_RX_INFORMATION; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
345 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
346 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
347 else if(dlc->receive_process EQ UART_RX_PROCESS_COMPLETE) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
348 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
349 channels_complete = TRUE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
350 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
351 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
352 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
353 /* fall through */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
354 case UART_SABM_FRAME: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
355 case UART_UA_FRAME: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
356 case UART_DM_DATA_FRAME: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
357 case UART_DM_CONTROL_FRAME: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
358 case UART_DISC_FRAME: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
359 case UART_UIH_CONTROL_FRAME: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
360 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
361 * Control frame detected |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
362 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
363 dlc = &uart_device->dlc_table[UART_CONTROL_INSTANCE]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
364 uart_device->rx.dlc_instance = UART_CONTROL_INSTANCE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
365 if(dlc->receive_process EQ UART_RX_PROCESS_READY) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
366 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
367 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
368 * reception Control channel found |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
369 * FCS calculation |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
370 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
371 #ifdef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
372 uart_device->rx.fcs = *source; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
373 #else /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
374 uart_device->rx.fcs = uart_device-> |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
375 fcstab[uart_device-> |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
376 rx.fcs ^ *source]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
377 #endif /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
378 destination = &dlc->receive_data-> |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
379 buffer[dlc->receive_pos]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
380 uart_device->rx.analyze_state = UART_RX_INFORMATION; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
381 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
382 * store Address and Control field |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
383 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
384 *destination = uart_device->rx.address_field; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
385 destination++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
386 dlc->receive_pos++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
387 *destination = *source; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
388 destination++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
389 dlc->receive_pos++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
390 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
391 else if(dlc->receive_process EQ UART_RX_PROCESS_COMPLETE) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
392 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
393 channels_complete = TRUE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
394 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
395 else |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
396 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
397 * discard frame, because it is unexpected |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
398 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
399 uart_device->rx.analyze_state = UART_RX_ERROR; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
400 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
401 default: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
402 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
403 * invalid frame detected |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
404 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
405 uart_device->rx.analyze_state = UART_RX_ERROR; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
406 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
407 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
408 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
409 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
410 case UART_RX_INFORMATION: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
411 if(uart_device->rx.stored_len < uart_device->n1) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
412 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
413 *destination = *source; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
414 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
415 * increase destination pointer |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
416 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
417 destination++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
418 uart_device->rx.stored_len++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
419 dlc->receive_pos++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
420 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
421 else |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
422 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
423 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
424 * FCS calculation |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
425 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
426 #ifdef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
427 uart_device->rx.fcs = *source; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
428 #else /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
429 uart_device->rx.fcs = uart_device-> |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
430 fcstab[uart_device->rx.fcs ^ *source]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
431 #endif /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
432 uart_device->rx.analyze_state = UART_RX_FCS; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
433 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
434 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
435 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
436 case UART_RX_FCS: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
437 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
438 * remove receiced packet because its to long |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
439 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
440 if(uart_data->rx.dlc_instance EQ UART_CONTROL_INSTANCE) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
441 dlc->receive_pos-= 2; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
442 dlc->receive_pos -= uart_data->rx.stored_len; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
443 dlc->receive_process = UART_RX_PROCESS_READY; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
444 uart_device->rx.analyze_state = UART_RX_ERROR; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
445 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
446 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
447 default: |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
448 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
449 * wrong analyze state |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
450 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
451 uart_device->rx.analyze_state = UART_RX_ERROR; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
452 break; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
453 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
454 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
455 if(uart_device->rx.analyze_state EQ UART_RX_END) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
456 uart_device->rx.analyze_state = UART_RX_BEGIN; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
457 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
458 * don't move source pointer |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
459 * if each possible channel was processed |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
460 * In this case analyze_state should be UART_RX_CONTROL. |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
461 * The Control field must be analyzed again in next call of |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
462 * this function. |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
463 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
464 else if(channels_complete NEQ TRUE) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
465 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
466 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
467 * increase source pointer |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
468 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
469 source++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
470 uart_device->rx.size[i]--; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
471 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
472 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
473 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
474 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
475 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
476 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
477 PSIGNAL(hCommUART, UART_DRIVER_RECEIVED_IND, uart_device); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
478 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
479 *uart_device->rx.reInstall = rm_noInstall; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
480 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
481 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
482 * update pointer in UART driver |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
483 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
484 if((error_code = UF_InpAvail (uart_device->device)) < 0 ) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
485 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
486 TRACE_ERROR_P2("UF Driver: DataPointerUpdate failed, [%d], uart_rxf.c(%d)", |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
487 error_code, __LINE__); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
488 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
489 } /* rx_proc_input() */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
490 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
491 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
492 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
493 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
494 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
495 | Function : rx_init |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
496 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
497 | Description : The function rx_init() initializes the RX service |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
498 | |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
499 | Parameters : no parameters |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
500 | |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
501 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
502 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
503 GLOBAL void rx_init () |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
504 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
505 #ifndef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
506 #ifdef WIN32 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
507 #ifndef _TARGET_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
508 char buf[80]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
509 #endif /* !_TARGET_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
510 STATUS sts; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
511 #endif /* WIN32 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
512 #endif /* !_SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
513 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
514 TRACE_FUNCTION( "rx_init" ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
515 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
516 #ifndef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
517 #ifdef WIN32 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
518 sts = NU_Create_HISR (&uart_data->rx.rx_HISR, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
519 "RX_HISR", |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
520 rx_proc_input, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
521 2, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
522 uart_data->HISR_stack, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
523 HISR_STACK_SIZE); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
524 #ifndef _TARGET_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
525 sprintf (buf, "NU_Create_HISR(RX) = %d", sts); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
526 TRACE_EVENT (buf); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
527 #endif /* _TARGET_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
528 #endif /* WIN32 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
529 #endif /* !_SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
530 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
531 uart_data->rx.read_permission = FALSE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
532 uart_data->rx.prev_lines = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
533 uart_data->rx.dlc_instance = UART_EMPTY_INSTANCE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
534 uart_data->rx.escape = FALSE; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
535 uart_data->rx.analyze_state = UART_RX_ERROR; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
536 uart_data->rx.receive_state = UART_RX_NOT_RECEIVING; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
537 uart_data->rx.fcs = UART_INITFCS; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
538 uart_data->rx.address_field = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
539 uart_data->rx.stored_len = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
540 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
541 INIT_STATE( UART_SERVICE_RX , RX_DEAD ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
542 } /* rx_init() */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
543 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
544 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
545 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
546 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
547 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
548 | Function : rx_readOutFunc_0 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
549 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
550 | Description : The function rx_readOutFunc_0() is the official callback |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
551 | function to read data from the receive buffer of UART device 0. |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
552 | It just copies the parameters and calls then the actual |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
553 | function. |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
554 | |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
555 | Parameters : cldFromIrq - called from interrupt |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
556 | reInstall - reinstallation mode |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
557 | nsource - number of source pointers |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
558 | source - array of source pointers |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
559 | size - array of sizes for every source pointer |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
560 | state - state of V.24 lines |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
561 | |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
562 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
563 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
564 GLOBAL void rx_readOutFunc_0 (BOOL cldFromIrq, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
565 T_reInstMode *reInstall, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
566 UBYTE nsource, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
567 UBYTE *source[], |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
568 USHORT *size, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
569 ULONG state) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
570 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
571 #ifndef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
572 #ifndef _TARGET_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
573 char buf[40]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
574 #endif /* !_TARGET_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
575 #endif /* !_SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
576 T_UART_DATA* uart_device; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
577 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
578 TRACE_FUNCTION( "rx_readOutFunc_0" ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
579 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
580 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
581 * select UART device 0 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
582 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
583 uart_device = &(uart_data_base[0]); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
584 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
585 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
586 * store parameters |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
587 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
588 uart_device->rx.cldFromIrq = cldFromIrq; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
589 uart_device->rx.nsource = nsource; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
590 uart_device->rx.source[0] = source[0]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
591 uart_device->rx.source[1] = source[1]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
592 uart_device->rx.size = size; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
593 uart_device->rx.lines = state; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
594 uart_device->rx.reInstall = reInstall; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
595 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
596 #ifndef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
597 #ifdef WIN32 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
598 if (cldFromIrq) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
599 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
600 STATUS sts; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
601 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
602 * interrupt context of the UART driver -> activate the HISR |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
603 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
604 sts = NU_Activate_HISR (&uart_device->rx.rx_HISR); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
605 #ifndef _TARGET_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
606 sprintf (buf, "NU_Activate_HISR(RX) = %d", sts); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
607 TRACE_EVENT (buf); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
608 #endif /* !_TARGET_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
609 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
610 else |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
611 #endif /* WIN32 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
612 #endif /* !_SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
613 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
614 #ifdef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
615 UBYTE* trace_source[2]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
616 USHORT trace_size[2]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
617 USHORT i; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
618 USHORT pos; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
619 char buf[90]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
620 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
621 trace_source[0] = source[0]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
622 trace_source[1] = source[1]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
623 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
624 trace_size[0] = size[0]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
625 trace_size[1] = size[1]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
626 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
627 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
628 * trace input |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
629 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
630 if((nsource) && |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
631 (uart_device->rx.read_permission)) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
632 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
633 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
634 TRACE_EVENT("==== INRAW"); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
635 i = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
636 pos = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
637 while(pos < trace_size[0]) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
638 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
639 i+= sprintf(&buf[i], "0x%02x, ", trace_source[0][pos]); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
640 pos++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
641 if(i > 80) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
642 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
643 TRACE_EVENT( buf ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
644 i = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
645 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
646 else if(pos >= trace_size[0]) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
647 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
648 TRACE_EVENT( buf ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
649 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
650 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
651 if(nsource > 1) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
652 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
653 i = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
654 pos = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
655 while(pos < trace_size[1]) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
656 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
657 i+= sprintf(&buf[i], "0x%02x, ", trace_source[1][pos]); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
658 pos++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
659 if(i > 80) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
660 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
661 TRACE_EVENT( buf ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
662 i = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
663 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
664 else if(pos >= trace_size[1]) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
665 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
666 TRACE_EVENT( buf ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
667 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
668 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
669 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
670 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
671 #endif /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
672 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
673 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
674 * normal callback from UF_ReadData |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
675 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
676 rx_proc_input(uart_device); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
677 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
678 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
679 } /* rx_readOutFunc_0() */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
680 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
681 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
682 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
683 #ifdef FF_TWO_UART_PORTS |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
684 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
685 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
686 | Function : rx_readOutFunc_1 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
687 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
688 | Description : The function rx_readOutFunc_1() is the official callback |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
689 | function to read data from the receive buffer of UART device 1. |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
690 | It just copies the parameters and calls then the actual |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
691 | function. |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
692 | |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
693 | Parameters : cldFromIrq - called from interrupt |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
694 | reInstall - reinstallation mode |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
695 | nsource - number of source pointers |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
696 | source - array of source pointers |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
697 | size - array of sizes for every source pointer |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
698 | state - state of V.24 lines |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
699 | |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
700 +------------------------------------------------------------------------------ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
701 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
702 GLOBAL void rx_readOutFunc_1 (BOOL cldFromIrq, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
703 T_reInstMode *reInstall, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
704 UBYTE nsource, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
705 UBYTE *source[], |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
706 USHORT *size, |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
707 ULONG state) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
708 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
709 #ifndef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
710 #ifndef _TARGET_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
711 char buf[40]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
712 #endif /* !_TARGET_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
713 #endif /* !_SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
714 T_UART_DATA* uart_device; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
715 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
716 TRACE_FUNCTION( "rx_readOutFunc_1" ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
717 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
718 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
719 * select UART device 1 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
720 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
721 uart_device = &(uart_data_base[1]); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
722 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
723 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
724 * store parameters |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
725 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
726 uart_device->rx.cldFromIrq = cldFromIrq; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
727 uart_device->rx.nsource = nsource; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
728 uart_device->rx.source[0] = source[0]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
729 uart_device->rx.source[1] = source[1]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
730 uart_device->rx.size = size; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
731 uart_device->rx.lines = state; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
732 uart_device->rx.reInstall = reInstall; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
733 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
734 #ifndef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
735 #ifdef WIN32 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
736 if (cldFromIrq) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
737 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
738 STATUS sts; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
739 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
740 * interrupt context of the UART driver -> activate the HISR |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
741 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
742 sts = NU_Activate_HISR (&uart_device->rx.rx_HISR); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
743 #ifndef _TARGET_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
744 sprintf (buf, "NU_Activate_HISR(RX) = %d", sts); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
745 TRACE_EVENT (buf); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
746 #endif /* !_TARGET_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
747 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
748 else |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
749 #endif /* WIN32 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
750 #endif /* !_SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
751 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
752 #ifdef _SIMULATION_ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
753 UBYTE* trace_source[2]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
754 USHORT trace_size[2]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
755 USHORT i; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
756 USHORT pos; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
757 char buf[90]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
758 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
759 trace_source[0] = source[0]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
760 trace_source[1] = source[1]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
761 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
762 trace_size[0] = size[0]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
763 trace_size[1] = size[1]; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
764 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
765 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
766 * trace input |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
767 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
768 if((nsource) && |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
769 (uart_device->rx.read_permission)) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
770 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
771 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
772 TRACE_EVENT("==== INRAW"); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
773 i = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
774 pos = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
775 while(pos < trace_size[0]) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
776 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
777 i+= sprintf(&buf[i], "0x%02x, ", trace_source[0][pos]); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
778 pos++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
779 if(i > 80) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
780 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
781 TRACE_EVENT( buf ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
782 i = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
783 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
784 else if(pos >= trace_size[0]) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
785 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
786 TRACE_EVENT( buf ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
787 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
788 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
789 if(nsource > 1) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
790 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
791 i = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
792 pos = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
793 while(pos < trace_size[1]) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
794 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
795 i+= sprintf(&buf[i], "0x%02x, ", trace_source[1][pos]); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
796 pos++; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
797 if(i > 80) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
798 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
799 TRACE_EVENT( buf ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
800 i = 0; |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
801 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
802 else if(pos >= trace_size[1]) |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
803 { |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
804 TRACE_EVENT( buf ); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
805 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
806 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
807 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
808 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
809 #endif /* _SIMULATION_ */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
810 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
811 /* |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
812 * normal callback from UF_ReadData |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
813 */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
814 rx_proc_input(uart_device); |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
815 } |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
816 |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
817 } /* rx_readOutFunc_1() */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
818 #endif /* FF_TWO_UART_PORTS */ |
eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
|
819 #endif /* !FF_MULTI_PORT */ |