2
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 | File: vsi_drv.c
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 +------------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 | Copyright 2002 Texas Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 | All rights reserved.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 | This file is confidential and a trade secret of Texas
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 | Instruments Berlin, AG
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 | The receipt of or possession of this file does not convey
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 | any rights to reproduce or disclose its contents or to
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 | manufacture, use, or sell anything it may describe, in
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 | whole, or in part, without the specific written consent of
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 | Texas Instruments Berlin, AG.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 | Purpose : This Module defines the virtual system interface part
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 | for driver access.
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 +-----------------------------------------------------------------------------
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 #ifndef __VSI_DRV_C__
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 #define __VSI_DRV_C__
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 /*==== INCLUDES ===================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 #include "string.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 #include "stdio.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 #include "typedefs.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 #include "vsi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 #include "gdi.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 #include "os.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 #include "drvconf.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 #include "frm_defs.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 #include "frm_types.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 #include "frm_glob.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 #include "frame.h"
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 /*==== TYPES ======================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 typedef struct
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 char Name[RESOURCE_NAMELEN];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 char Process[RESOURCE_NAMELEN];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 char DrvConfig[80];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
51 } _T_DRV_LIST_ENTRY;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 typedef struct
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 _T_DRV_LIST_ENTRY DrvEntry [ 5 ];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 } _T_DRV_LIST;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 /*==== CONSTANTS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 /*==== EXTERNALS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 /* -------------- S H A R E D - BEGIN ---------------- */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 #pragma data_seg("FRAME_SHARED")
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 extern T_DRV_TABLE_ENTRY DrvTable [];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 /*==== VARIABLES ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 #undef EXTR_SEND_CONTROL
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 T_DRV_LIST *DriverConfigList; /* pointer to start of driver cinfiguration list */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 static T_DRV_LIST *DriverList; /* pointer to selected driver list */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 #ifdef EXTR_SEND_CONTROL
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 FILE *fp;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 _T_DRV_LIST _DrvList={0};
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 T_DRV_LIST DrvList={0};
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 #pragma data_seg()
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 #endif /* _TOOLS_ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 /* -------------- S H A R E D - END ---------------- */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 /*==== FUNCTIONS ==================================================*/
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 void ClearDriverTable ( void );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 | STATE : code ROUTINE : vsi_d_create |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
105 PURPOSE : enter a new driver in the driver list
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
107 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
108 int vsi_d_create ( T_HANDLE caller, T_TST_DRV_ENTRY *drv_info )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
109 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
110 T_HANDLE drv_handle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
111
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
112 drv_handle = drv_info->drv_pos;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
113 vsi_d_exit ( caller, 0 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
114 DriverList->DrvEntry[drv_handle].drv_Init = drv_info->entry.drv_Init;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
115 DriverList->DrvEntry[drv_handle].Name = drv_info->entry.Name;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
116 DriverList->DrvEntry[drv_handle].Process = drv_info->entry.Process;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
117 DriverList->DrvEntry[drv_handle].DrvConfig = drv_info->entry.DrvConfig;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
118
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
119 ClearDriverTable();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
120 vsi_d_init ( caller );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
121 vsi_d_setsignal ( caller, 0, DRV_SIGTYPE_READ|DRV_SIGTYPE_CONNECT|DRV_SIGTYPE_DISCONNECT);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
122 vsi_d_setconfig ( caller, 0, NULL );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
123 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
124 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
125 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 | STATE : code ROUTINE : vsi_d_callback |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 PURPOSE : callback from a driver
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 void vsi_d_callback ( T_DRV_SIGNAL *Signal )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 T_HANDLE Caller;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
140 T_HANDLE DrvHandle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
141 int sts;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 #ifdef EXTR_SEND_CONTROL
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 OS_TIME time;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 T_PRIM_HEADER *p;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 static int cnt = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 int bytes;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 Caller = Signal->DrvHandle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 DrvHandle = DrvTable[Caller].UpperDrv;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 if ( DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
153 if ( DrvTable[DrvHandle].DrvInfo->DrvFunc.drv_Callback != NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
154 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 #if defined _TARGET_ && defined _NUCLEUS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 if ( DrvTable[Caller].DrvInfo->Flags & CALLED_FROM_ISR )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 os_ExecuteCallback ( Caller, DrvTable[DrvHandle].DrvInfo->DrvFunc.drv_Callback, Signal );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
158 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
159 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
160 (DrvTable[DrvHandle].DrvInfo->DrvFunc.drv_Callback)( Signal );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
161 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
162 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
163 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
164 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
165 if ( DrvTable[Caller].ProcessHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
166 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
167 OS_QDATA Msg;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
168 OS_TIME time;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
169 Msg.data16 = MSG_SIGNAL;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
170 Msg.data32 = Signal->SignalType;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
171 Msg.ptr = Signal->UserData;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
172 os_GetTime ( 0, &time );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
173 Msg.time = (ULONG)time;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
174 Msg.e_id = DrvTable[Caller].ProcessHandle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
175 #ifdef EXTR_SEND_CONTROL
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
176 if ( Msg.ptr )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
177 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
178 os_GetTime(0,&time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
179 fp = fopen("test.txt", "a");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
180 p = (T_PRIM_HEADER*)((T_PRIM_X*)Msg.ptr)->prim_ptr;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 if ( p->opc == 0x8000 )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 printf("EXTR: Start sending %s, time %d, %d\n", (char*)P2D(p),time, cnt & 1023 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 bytes = fprintf(fp, "EXTR: Start sending %s, time %d, %d\n", (char*)P2D(p),time, cnt & 1023 );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
187 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
188 printf("EXTR: Start sending primitive, time %d, %d\n", time, cnt & 1023);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
189 bytes = fprintf(fp, "EXTR: Start sending primitive, time %d, %d\n", time, cnt & 1023);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
190 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 fclose(fp);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 sts = os_SendToQueue (NO_TASK, DrvTable[Caller].ProcessHandle, OS_NORMAL, OS_SUSPEND, &Msg );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 sts = os_SendToQueue (NO_TASK, pf_TaskTable[DrvTable[Caller].ProcessHandle].QueueHandle, OS_NORMAL, OS_SUSPEND, &Msg );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 #ifdef EXTR_SEND_CONTROL
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
200 os_GetTime(0,&time);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
201 fp = fopen("test.txt", "a");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
202 printf("EXTR: Complete sending, time %d %d\n", time, cnt & 1023);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
203 bytes = fprintf(fp,"EXTR: Complete sending, time %d %d\n", time, cnt++ & 1023);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
204 fclose(fp);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
205 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
206 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
207 * This is a dirty patch, but due to the missing return value there is no other choice
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
208 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
209 if ( sts == OS_TIMEOUT || sts == OS_ERROR )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
210 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
211 T_PRIM_X *sys_prim;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
212
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
213 sys_prim = (T_PRIM_X*)Signal->UserData;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
214 PFREE(P2D(sys_prim->prim_ptr));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
215 PFREE(P2D(sys_prim));
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
216 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
217 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
218 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
219 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
220 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
221
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
222 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
223 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
224 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
225 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
226 | STATE : code ROUTINE : vsi_d_init |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
227 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
228
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
229 PURPOSE : initialize drivers
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
230
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
231 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
232 /*lint -esym(644,DrvInfo) */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
233 int vsi_d_init ( T_HANDLE Caller )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
234 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
235 T_DRV_EXPORT const *DrvInfo;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
236 USHORT i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
237 SHORT sts;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
238
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
239 #ifdef EXTR_SEND_CONTROL
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
240 fp = fopen("test.txt", "a");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
241 fprintf(fp,"=========================================================\n");
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
242 fclose (fp);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
243 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
244 for ( i = 1; i < MAX_TST_DRV; i++ )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
245 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
246 sts = DRV_NOTCONFIGURED;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
247 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
248 if ( DrvTable[i].DrvInfo )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
249 sts = (SHORT)(DrvTable[i].DrvInfo->DrvFunc.drv_Init)(i,vsi_d_callback,&DrvInfo);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
250 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
251 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
252 if ( DriverList->DrvEntry[i].drv_Init )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
253 sts = (SHORT)(DriverList->DrvEntry[i].drv_Init)(i,vsi_d_callback,&DrvInfo);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
254 if ( sts == DRV_OK )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
255 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
256 if ( DriverList->DrvEntry[i].Process )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
257 DrvTable[i].ProcessHandle = vsi_c_open ( Caller, (char*)DriverList->DrvEntry[i].Process );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
258 DrvTable[i].UpperDrv = i-1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
259 DrvTable[i-1].LowerDrv = i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
260 DrvTable[i].DrvInfo = DrvInfo;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
261 #if defined _TARGET_ && defined _NUCLEUS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
262 if ( DrvTable[i].DrvInfo->Flags & CALLED_FROM_ISR )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
263 if ( os_CreateCallback() == OS_ERROR )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
264 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
265 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
266 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
267 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
268 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
269 if ( sts != DRV_NOTCONFIGURED )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
270 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
271 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
272 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
273 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
274 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
275 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
276 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
277 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
278
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
279 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
280 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
281 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
282 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
283 | STATE : code ROUTINE : vsi_d_exit |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
284 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
285
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
286 PURPOSE : exit drivers
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
287
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
288 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
289 int vsi_d_exit ( T_HANDLE Caller, T_HANDLE DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
290 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
291 T_HANDLE Handle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
292 T_HANDLE min, max;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
293
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
294 if ( DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
295 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
296 min = DrvHandle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
297 max = DrvHandle+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
298 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
299 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
300 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
301 min = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
302 max = MAX_TST_DRV;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
303 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
304
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
305 for ( Handle = min; Handle < max; Handle++ )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
306 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
307 if ( DrvTable[Handle].DrvInfo )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
308 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
309 if ( DrvTable[Handle].DrvInfo->DrvFunc.drv_Exit != NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
310 (DrvTable[Handle].DrvInfo->DrvFunc.drv_Exit)();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
311 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
312 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
313 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
314 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
315 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
316
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
317 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
318 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
319 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
320 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
321 | STATE : code ROUTINE : vsi_d_open |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
322 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
323
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
324 PURPOSE : open a drivers
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
325
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
326 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
327 int vsi_d_open ( T_HANDLE Caller, char *Name )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
328 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
329 int i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
330
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
331 for ( i = 1; i <= MAX_TST_DRV; i++ )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
332 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
333 if ( DrvTable[i].DrvInfo && DrvTable[i].DrvInfo->Name )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
334 if ( !strcmp ( DrvTable[i].DrvInfo->Name, Name ) )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
335 return (i);
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
336 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
337 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
338 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
339 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
340
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
341 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
342 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
343 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
344 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
345 | STATE : code ROUTINE : vsi_d_close |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
346 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
347
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
348 PURPOSE : close a driver
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
349
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
350 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
351 /*lint -esym(715,DrvHandle) suppress Info -- Symbol 'DrvHandle' not referenced */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
352 int vsi_d_close ( T_HANDLE Caller, T_HANDLE DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
353 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
354
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
355 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
356 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
357 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
358
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
359 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
360 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
361 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
362 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
363 | STATE : code ROUTINE : vsi_d_read |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
364 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
365
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
366 PURPOSE : read data from a driver
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
367
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
368 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
369 int vsi_d_read ( T_HANDLE Caller, T_HANDLE DrvHandle, void *Buffer, ULONG *Size )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
370 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
371 T_HANDLE Handle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
372
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
373 if ( DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
374 Handle = DrvHandle; /* Caller TST: opened driver with vsi_d_open() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
375 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
376 Handle = DrvTable[Caller].LowerDrv; /* Caller drv: handle defined by ConfigSring */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
377
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
378 if ( DrvTable[Handle].DrvInfo->DrvFunc.drv_Read != NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
379 if ( (DrvTable[Handle].DrvInfo->DrvFunc.drv_Read)( (void*)Buffer, Size ) == DRV_OK )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
380 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
381
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
382 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
383 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
384 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
385
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
386 #ifndef RUN_FLASH
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
387 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
388 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
389 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
390 | STATE : code ROUTINE : vsi_d_write |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
391 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
392
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
393 PURPOSE : write data to a driver
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
394
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
395 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
396 int vsi_d_write ( T_HANDLE Caller, T_HANDLE DrvHandle, void *Buffer, ULONG Size )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
397 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
398 T_HANDLE Handle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
399 ULONG TotalBytesToWrite = Size;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
400 ULONG BytesToWrite = Size;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
401 ULONG TotalBytesWritten = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
402 ULONG BytesWritten = 0;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
403 char *ptr = (char*)Buffer;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
404
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
405 if ( DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
406 Handle = DrvHandle; /* Caller TST: opened driver with vsi_d_open() */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
407 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
408 Handle = DrvTable[Caller].LowerDrv; /* Caller drv: handle defined by ConfigSring */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
409
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
410 if ( DrvTable[Handle].DrvInfo->DrvFunc.drv_Write != NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
411 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
412 while ( TotalBytesWritten < TotalBytesToWrite )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
413 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
414 BytesWritten = BytesToWrite;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
415 if ( (DrvTable[Handle].DrvInfo->DrvFunc.drv_Write)( (void*)ptr, &BytesWritten ) != DRV_OK )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
416 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
417 ptr += BytesWritten;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
418 TotalBytesWritten += BytesWritten;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
419 BytesToWrite = TotalBytesToWrite - TotalBytesWritten;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
420 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
421 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
422 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
423 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
424 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
425
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
426 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
427 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
428 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
429 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
430 | STATE : code ROUTINE : vsi_d_flush |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
431 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
432
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
433 PURPOSE : flush the internal buffers of a driver
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
434
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
435 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
436 int vsi_d_flush ( T_HANDLE Caller, T_HANDLE DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
437 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
438 T_HANDLE Handle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
439 T_HANDLE min, max;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
440
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
441 if ( DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
442 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
443 min = DrvHandle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
444 max = DrvHandle+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
445 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
446 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
447 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
448 min = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
449 max = MAX_TST_DRV;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
450 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
451
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
452 for ( Handle = min; Handle < max; Handle++ )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
453 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
454 if ( DrvTable[Handle].DrvInfo )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
455 if ( DrvTable[Handle].DrvInfo->DrvFunc.drv_Flush != NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
456 if ( (DrvTable[Handle].DrvInfo->DrvFunc.drv_Flush)() != DRV_OK )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
457 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
458 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
459 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
460 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
461 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
462
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
463 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
464 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
465 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
466 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
467 | STATE : code ROUTINE : vsi_d_setsignal |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
468 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
469
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
470 PURPOSE : enable a signal in a driver
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
471
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
472 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
473 int vsi_d_setsignal ( T_HANDLE Caller, T_HANDLE DrvHandle, USHORT SignalType )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
474 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
475 T_HANDLE Handle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
476 T_HANDLE min, max;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
477
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
478 if ( DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
479 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
480 min = DrvHandle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
481 max = DrvHandle+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
482 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
483 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
484 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
485 min = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
486 max = MAX_TST_DRV;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
487 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
488
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
489 for ( Handle = min; Handle < max; Handle++ )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
490 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
491 if ( DrvTable[Handle].DrvInfo )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
492 if ( DrvTable[Handle].DrvInfo->DrvFunc.drv_SetSignal != NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
493 if ( (DrvTable[Handle].DrvInfo->DrvFunc.drv_SetSignal)( SignalType ) != DRV_OK )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
494 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
495 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
496 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
497 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
498 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
499
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
500 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
501 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
502 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
503 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
504 | STATE : code ROUTINE : vsi_d_resetsignal |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
505 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
506
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
507 PURPOSE : disable a signal in a driver
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
508
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
509 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
510 int vsi_d_resetsignal ( T_HANDLE Caller, T_HANDLE DrvHandle, USHORT SignalType )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
511 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
512 T_HANDLE Handle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
513 T_HANDLE min, max;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
514
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
515 if ( DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
516 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
517 min = DrvHandle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
518 max = DrvHandle+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
519 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
520 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
521 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
522 min = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
523 max = MAX_TST_DRV;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
524 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
525
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
526 for ( Handle = min; Handle < max; Handle++ )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
527 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
528 if ( DrvTable[Handle].DrvInfo )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
529 if ( DrvTable[Handle].DrvInfo->DrvFunc.drv_ResetSignal != NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
530 if ( (DrvTable[Handle].DrvInfo->DrvFunc.drv_ResetSignal)( SignalType ) != DRV_OK )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
531 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
532 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
533 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
534 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
535 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
536
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
537 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
538 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
539 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
540 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
541 | STATE : code ROUTINE : vsi_d_setconfig |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
542 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
543
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
544 PURPOSE : configure a driver
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
545
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
546 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
547 int vsi_d_setconfig ( T_HANDLE Caller, T_HANDLE DrvHandle, char *Config )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
548 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
549 T_HANDLE Handle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
550
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
551 if ( Config && DrvHandle != 0)
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
552 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
553 if ( DrvTable[DrvHandle].DrvInfo->DrvFunc.drv_SetConfig != NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
554 if ( (DrvTable[DrvHandle].DrvInfo->DrvFunc.drv_SetConfig)( Config ) != DRV_OK )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
555 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
556 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
557 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
558 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
559 T_HANDLE min, max;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
560
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
561 if ( DrvHandle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
562 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
563 min = DrvHandle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
564 max = DrvHandle+1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
565 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
566 else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
567 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
568 min = 1;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
569 max = MAX_TST_DRV;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
570 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
571
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
572 for ( Handle = min; Handle < max; Handle++ )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
573 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
574 if ( DriverList->DrvEntry[Handle].DrvConfig )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
575 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
576 if ( DrvTable[Handle].DrvInfo->DrvFunc.drv_SetConfig != NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
577 if ( (DrvTable[Handle].DrvInfo->DrvFunc.drv_SetConfig)( (char*)DriverList->DrvEntry[Handle].DrvConfig ) != DRV_OK )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
578 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
579 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
580 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
581 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
582 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
583 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
584 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
585
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
586 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
587 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
588 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
589 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
590 | STATE : code ROUTINE : vsi_d_getconfig |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
591 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
592
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
593 PURPOSE : read configuration data from a driver
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
594
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
595 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
596
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
597 int vsi_d_getconfig ( T_HANDLE Caller, T_HANDLE DrvHandle, char *Config )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
598 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
599 T_HANDLE Handle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
600 char Buffer[40];
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
601 char *ptr = Config;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
602
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
603 Handle = DrvHandle;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
604 while ( Handle )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
605 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
606 if ( DrvTable[Handle].DrvInfo )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
607 if ( DrvTable[Handle].DrvInfo->DrvFunc.drv_GetConfig != NULL )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
608 if ( (DrvTable[Handle].DrvInfo->DrvFunc.drv_GetConfig)( Buffer ) != DRV_OK )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
609 return VSI_ERROR;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
610
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
611 sprintf ( ptr, "%s:%s;",DrvTable[Handle].DrvInfo->Name,Buffer );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
612 ptr = ptr + strlen(DrvTable[Handle].DrvInfo->Name) + strlen(Buffer) + 2;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
613 Handle = DrvTable[Handle].LowerDrv;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
614 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
615 return VSI_OK;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
616 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
617 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
618
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
619 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
620 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
621 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
622 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
623 | STATE : code ROUTINE : InitializeDriverTable |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
624 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
625
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
626 PURPOSE : Initialize the driver table
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
627
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
628 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
629 void InitializeDriverConfig ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
630 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
631 #ifdef _TOOLS_
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
632 USHORT j;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
633
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
634 for ( j = 1; j < MAX_TST_DRV ; j++ )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
635 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
636 if ( DriverConfigList->DrvEntry[j].Name )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
637 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
638 strcpy ( _DrvList.DrvEntry[j].Name, DriverConfigList->DrvEntry[j].Name );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
639 DrvList.DrvEntry[j].Name = _DrvList.DrvEntry[j].Name;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
640 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
641
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
642 if ( DriverConfigList->DrvEntry[j].drv_Init )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
643 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
644 DrvList.DrvEntry[j].drv_Init = DriverConfigList->DrvEntry[j].drv_Init;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
645 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
646
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
647 if ( DriverConfigList->DrvEntry[j].Process )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
648 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
649 strcpy ( _DrvList.DrvEntry[j].Process, DriverConfigList->DrvEntry[j].Process );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
650 DrvList.DrvEntry[j].Process = _DrvList.DrvEntry[j].Process;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
651 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
652
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
653 if ( DriverConfigList->DrvEntry[j].DrvConfig )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
654 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
655 strcpy ( _DrvList.DrvEntry[j].DrvConfig, DriverConfigList->DrvEntry[j].DrvConfig );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
656 DrvList.DrvEntry[j].DrvConfig = _DrvList.DrvEntry[j].DrvConfig;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
657 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
658 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
659
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
660 DriverList = &DrvList;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
661 #else
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
662 DriverList = DriverConfigList;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
663 #endif /* _TOOLS_ */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
664 ClearDriverTable();
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
665 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
666 #endif
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
667
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
668 #ifndef RUN_INT_RAM
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
669 /*
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
670 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
671 | PROJECT : GSM-Frame (8415) MODULE : VSI_DRV |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
672 | STATE : code ROUTINE : ClearDriverTable |
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
673 +--------------------------------------------------------------------+
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
674
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
675 PURPOSE : Clear the driver table
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
676
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
677 */
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
678 void ClearDriverTable ( void )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
679 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
680 char i;
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
681
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
682 for ( i = 1; i <= MAX_TST_DRV; i++ )
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
683 {
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
684 memset ( &DrvTable[i], 0, sizeof(T_DRV_TABLE_ENTRY) );
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
685 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
686
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
687 }
|
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
688 #endif
|