annotate gsm-fw/L1/stand/forwarder.c @ 923:10b4bed10192

gsm-fw/L1: fix for the DSP patch corruption bug The L1 code we got from the LoCosto fw contains a feature for DSP CPU load measurement. This feature is a LoCosto-ism, i.e., not applicable to earlier DBB chips (Calypso) with their respective earlier DSP ROMs. Most of the code dealing with that feature is conditionalized as #if (DSP >= 38), but one spot was missed, and the MCU code was writing into an API word dealing with this feature. In TCS211 this DSP API word happens to be used by the DSP code patch, hence that write was corrupting the patched DSP code.
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Mon, 19 Oct 2015 17:13:56 +0000
parents 0c736bd8385e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
618
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
1 /*
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
2 * This module implements the special "forwarder" (L1IF) GPF entity
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
3 * for L1 standalone operation described in README.
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
4 */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
5
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
6 /*==== INCLUDES =============================================================*/
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
7
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
8 #include <string.h>
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
9 #include "typedefs.h" /* to get Condat data types */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
10 #include "vsi.h" /* to get a lot of macros */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
11 #include "pei.h" /* to get PEI interface */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
12 #include "tools.h" /* to get common tools */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
13 #include "header.h"
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
14 #include "os.h"
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
15 #include "../../gpf/frame/route.h"
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
16
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
17 /*==== LOCALS ================================================================*/
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
18
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
19 static T_HANDLE Our_Handle;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
20
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
21 #define VSI_CALLER Our_Handle,
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
22
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
23 static T_HANDLE hCommTST = VSI_ERROR;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
24
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
25 /*==== PRIVATE FUNCTIONS =====================================================*/
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
26
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
27
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
28 /*
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
29 +------------------------------------------------------------------------------
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
30 | Function : pei_init
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
31 +------------------------------------------------------------------------------
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
32 | Description : Initialize Protocol Stack Entity
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
33 |
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
34 | Parameters : handle - task handle
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
35 |
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
36 | Return : PEI_OK - entity initialised
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
37 | PEI_ERROR - entity not (yet) initialised
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
38 +------------------------------------------------------------------------------
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
39 */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
40 LOCAL SHORT pei_init ( T_HANDLE Handle )
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
41 {
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
42 Our_Handle = Handle;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
43
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
44 if (hCommTST < VSI_OK)
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
45 {
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
46 if ((hCommTST = vsi_c_open (VSI_CALLER "TST")) < VSI_OK)
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
47 return PEI_ERROR;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
48 }
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
49
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
50 return PEI_OK;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
51 }
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
52
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
53 LOCAL SHORT pei_primitive (void *primitive)
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
54 {
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
55 OS_QDATA OS_Msg = { 0 };
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
56 T_VOID_STRUCT *prim = (T_VOID_STRUCT *) primitive;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
57
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
58 OS_Msg.data16 = MSG_PRIMITIVE;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
59 OS_Msg.e_id = Our_Handle;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
60 OS_Msg.ptr = prim;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
61 OS_Msg.data32 = P_OPC(prim);
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
62 os_GetTime(0, &OS_Msg.time);
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
63
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
64 rt_ExtPrimitive(Our_Handle, hCommTST, Our_Handle, "EXT", &OS_Msg);
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
65
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
66 return PEI_OK;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
67 }
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
68
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
69
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
70 /*==== PUBLIC FUNCTIONS =====================================================*/
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
71
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
72 /*
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
73 +------------------------------------------------------------------------------
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
74 | Function : pei_create
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
75 +------------------------------------------------------------------------------
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
76 | Description : Create the Protocol Stack Entity.
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
77 |
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
78 | Parameters : info - Pointer to the structure of entity parameters
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
79 |
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
80 | Return : PEI_OK - entity created successfully
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
81 |
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
82 +------------------------------------------------------------------------------
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
83 */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
84 GLOBAL SHORT l1stand_fwd_pei_create ( T_PEI_INFO **info )
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
85 {
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
86 static T_PEI_INFO pei_info =
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
87 {
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
88 "L1IF",
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
89 {
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
90 pei_init,
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
91 NULL,
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
92 pei_primitive,
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
93 NULL, /* no timeout function */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
94 NULL, /* no signal function */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
95 NULL, /* no run function */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
96 NULL, /* no config function */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
97 NULL, /* no monitor function */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
98 },
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
99 1000, /* Stack Size */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
100 50, /* Queue Entries */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
101 20, /* Priority */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
102 0, /* number of timer */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
103 PASSIVE_BODY | COPY_BY_REF | TRC_NO_SUSPEND /* flags */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
104 };
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
105
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
106 /*
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
107 * export startup configuration data
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
108 */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
109 *info = &pei_info;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
110 /*
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
111 * Initialize entity data
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
112 */
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
113
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
114 return PEI_OK;
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
115 }
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
116
0c736bd8385e L1 standalone: forwarder entity implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
117 /*==== END OF FILE ==========================================================*/