1 /*
2  * Copyright (C) 2008 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef btk_SDK_EM_H
18 #define btk_SDK_EM_H
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 /**
25  *  Visual Sensing SDK
26  *  SDK Context object
27  */
28 
29 /* ---- includes ----------------------------------------------------------- */
30 
31 #include "Types.h"
32 #include <sys/types.h>
33 
34 /* ---- related objects  --------------------------------------------------- */
35 
36 /** SDK context object */
37 struct btk_SDK;
38 
39 /* ---- typedefs ----------------------------------------------------------- */
40 
41 /** handle for SDK context */
42 typedef struct btk_SDK* btk_HSDK;
43 
44 /** malloc function pointer */
45 typedef void* ( *btk_fpMalloc )( size_t sizeA );
46 
47 /** free function pointer */
48 typedef void ( *btk_fpFree )( void* memPtrA );
49 
50 /** error handler function pointer */
51 typedef void ( *btk_fpError )( btk_HSDK hsdkA );
52 
53 /** SDK creation parameters */
54 typedef struct
55 {
56 	/** (optional) handler to error-handler function */
57 	btk_fpError  fpError;
58 
59 	/** handler to malloc function */
60 	btk_fpMalloc fpMalloc;
61 
62 	/** handler to free function */
63 	btk_fpFree   fpFree;
64 
65 	/** pointer to preallocated exclusive (=persistent) memory (alternative to fpMalloc) */
66 	void* pExMem;
67 
68 	/** size of external memory */
69 	u32 sizeExMem;
70 
71 	/** pointer to preallocated shared memory (alternative to fpMalloc) */
72 	void* pShMem;
73 
74 	/** size of external memory */
75 	u32 sizeShMem;
76 
77 	/** pointer to 0-terminated license key string */
78 	const char* licenseKey;
79 
80 	/** maximum image witdh used */
81 	u32 maxImageWidth;
82 
83 	/** maximum image height used */
84 	u32 maxImageHeight;
85 
86 } btk_SDKCreateParam;
87 
88 /* ---- constants ---------------------------------------------------------- */
89 
90 /* ---- functions ---------------------------------------------------------- */
91 
92 /** returns default SDK parameters */
93 btk_DECLSPEC
94 btk_SDKCreateParam btk_SDK_defaultParam( void );
95 
96 /** creates an SDK context using dynamic memory management */
97 btk_DECLSPEC
98 btk_Status btk_SDK_create( const btk_SDKCreateParam* pCreateParamA,
99 						   btk_HSDK* hpsdkA );
100 
101 /** closes an SDK context */
102 btk_DECLSPEC
103 btk_Status btk_SDK_close( btk_HSDK hsdkA );
104 
105 /** returns last occurred error and removes it from the error stack */
106 btk_DECLSPEC
107 btk_Error btk_SDK_getError( btk_HSDK hsdkA,
108 						    char* msgBufA,
109 							u32 msgBufSizeA );
110 
111 /** returns amount of allocated exclusive memory in bytes */
112 btk_DECLSPEC
113 u32 btk_SDK_exAllocSize( btk_HSDK hsdkA );
114 
115 /** returns amount of allocated shared memory in bytes */
116 btk_DECLSPEC
117 u32 btk_SDK_shAllocSize( btk_HSDK hsdkA );
118 
119 /** returns total amount of allocated memory in bytes */
120 btk_DECLSPEC
121 u32 btk_SDK_allocSize( btk_HSDK hsdkA );
122 
123 #ifdef __cplusplus
124 }
125 #endif
126 
127 #endif /* btk_SDK_EM_H */
128