1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
|
/******************************************************************************
* LEGAL NOTICE *
* *
* USE OF THIS SOFTWARE (including any copy or compiled version thereof) AND *
* DOCUMENTATION IS SUBJECT TO THE SOFTWARE LICENSE AND RESTRICTIONS AND THE *
* WARRANTY DISLCAIMER SET FORTH IN LEGAL_NOTICE.TXT FILE. IF YOU DO NOT *
* FULLY ACCEPT THE TERMS, YOU MAY NOT INSTALL OR OTHERWISE USE THE SOFTWARE *
* OR DOCUMENTATION. *
* NOTWITHSTANDING ANYTHING TO THE CONTRARY IN THIS NOTICE, INSTALLING OR *
* OTHERISE USING THE SOFTWARE OR DOCUMENTATION INDICATES YOUR ACCEPTANCE OF *
* THE LICENSE TERMS AS STATED. *
* *
******************************************************************************/
/* Version: 1.8.9\3686 */
/* Build : 13 */
/* Date : 12/08/2012 */
/**
\file
\brief CellGuide CGsnap driver OS depended prototypes
\attention This file should not be modified.
If you think something is wrong here, please contact CellGuide
\addtogroup CGX_DRIVER_OS_API
\@{
*/
#ifndef CGX_DRIVR_OS_H
#define CGX_DRIVR_OS_H
#include "CgReturnCodes.h"
/**
Get driver allocated buffer and convert it for application
\param[in] pSource Map pointer passed from application to the driver space
\param[in] aLength Length allocated (bytes)
\return Mapped pointer
\retval NULL on error
*/
void *CgxDriverGetInternalBuff(void *pSource, U32 aLength);
/**
Allocate a kernel buffer
\param[in] pDriver Pointer to driver global structure
\param[in] aLength Length to allocate (bytes)
\param[out] apBuffer allocated buffer address
\param[in] aProcessID process id
\return System wide return code
*/
TCgReturnCode CgxDriverAllocInternalBuff(void *pDriver, U32 aLength, void **apBuffer, U32 aProcessID);
/**
Free a kernel buffer
\param[in] pDriver Pointer to drivers global data
\param[in] aProcessId process id
\return System wide return code
*/
TCgReturnCode CgxDriverFreeInternalBuff(void *pDriver, U32 aProcessId);
/**
Copy Memory from User Space
\param[in] to Target address (Kernel Space)
\param[in] fromuser Source address (User Space)
\param[in] n Length to copy
\return Number of bytes NOT copied (0=success)
*/
unsigned long CgxCopyFromUser(
void *to,
const void *fromuser,
unsigned long n );
/**
Create transfer end signaling object.
the object will be used for blocking the application until transfer is finished.
\param[in] pDriver Global driver structure pointer
\return System wide return code
\retval ECgOk if data ready is 0 (low active)
*/
TCgReturnCode CgxDriverTransferEndCreate(
void *pDriver);
/**
Destroy transfer end signaling object.
\param[in] pDriver Global driver structure pointer
\return System wide return code
\retval ECgOk if data ready is 0 (low active)
*/
TCgReturnCode CgxDriverTransferEndDestroy(
void *pDriver);
/**
Signal transfer end object
\param[in] pDriver Global driver structure pointer
\return System wide return code
\retval ECgOk if data ready is 0 (low active)
*/
TCgReturnCode CgxDriverTransferEndSignal(
void *pDriver);
/**
Wait for transfer end object
\param pDriver Global driver structure pointer
\param aTimeoutMS timeout for the wait, in mili seconds.
if the object is not singled after this time, the function will
return with ECgTimeout error code.
\return System wide return code
\retval ECgOk if data ready is 0 (low active)
*/
TCgReturnCode CgxDriverTransferEndWait(
void *pDriver,
U32 aTimeoutMS);
/**
Start data ready interrupt handle
\param[in] pDriver Global driver structure pointer
\return System wide return code
\retval ECgOk if data ready is 0 (low active)
*/
TCgReturnCode CgxDriverDataReadyInterruptHandlerStart(
void *pDriver);
/**
Start general interrupt handler
\param[in] pDriver Global driver structure pointer
\return System wide return code
\retval ECgOk if data ready is 0 (low active)
*/
TCgReturnCode CgxDriverGpsInterruptHandlerStart(
void *pDriver);
/**
Initialize the driver.
This function is called as a result of GPSenseEngine specific CGX_IOCTL_INIT request,
and is used to initialize the driver and hardware for the first time.
\param pDriver Global driver structure pointer
\return System wide return code
\retval ECgOk if data ready is 0 (low active)
*/
TCgReturnCode CgxDriverInit(
void *pDriver);
#endif
/**
\@}
*/
|