FreeCalypso > hg > freecalypso-sw
annotate gsm-fw/L1/stand/forwarder.c @ 618:0c736bd8385e
L1 standalone: forwarder entity implemented
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sun, 31 Aug 2014 00:06:00 +0000 |
parents | |
children |
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 ==========================================================*/ |