/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef btk_SDK_EM_H
#define btk_SDK_EM_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* Visual Sensing SDK
* SDK Context object
*/
/* ---- includes ----------------------------------------------------------- */
#include "Types.h"
#include <sys/types.h>
/* ---- related objects --------------------------------------------------- */
/** SDK context object */
struct btk_SDK;
/* ---- typedefs ----------------------------------------------------------- */
/** handle for SDK context */
typedef struct btk_SDK* btk_HSDK;
/** malloc function pointer */
typedef void* ( *btk_fpMalloc )( size_t sizeA );
/** free function pointer */
typedef void ( *btk_fpFree )( void* memPtrA );
/** error handler function pointer */
typedef void ( *btk_fpError )( btk_HSDK hsdkA );
/** SDK creation parameters */
typedef struct
{
/** (optional) handler to error-handler function */
btk_fpError fpError;
/** handler to malloc function */
btk_fpMalloc fpMalloc;
/** handler to free function */
btk_fpFree fpFree;
/** pointer to preallocated exclusive (=persistent) memory (alternative to fpMalloc) */
void* pExMem;
/** size of external memory */
u32 sizeExMem;
/** pointer to preallocated shared memory (alternative to fpMalloc) */
void* pShMem;
/** size of external memory */
u32 sizeShMem;
/** pointer to 0-terminated license key string */
const char* licenseKey;
/** maximum image witdh used */
u32 maxImageWidth;
/** maximum image height used */
u32 maxImageHeight;
} btk_SDKCreateParam;
/* ---- constants ---------------------------------------------------------- */
/* ---- functions ---------------------------------------------------------- */
/** returns default SDK parameters */
btk_DECLSPEC
btk_SDKCreateParam btk_SDK_defaultParam( void );
/** creates an SDK context using dynamic memory management */
btk_DECLSPEC
btk_Status btk_SDK_create( const btk_SDKCreateParam* pCreateParamA,
btk_HSDK* hpsdkA );
/** closes an SDK context */
btk_DECLSPEC
btk_Status btk_SDK_close( btk_HSDK hsdkA );
/** returns last occurred error and removes it from the error stack */
btk_DECLSPEC
btk_Error btk_SDK_getError( btk_HSDK hsdkA,
char* msgBufA,
u32 msgBufSizeA );
/** returns amount of allocated exclusive memory in bytes */
btk_DECLSPEC
u32 btk_SDK_exAllocSize( btk_HSDK hsdkA );
/** returns amount of allocated shared memory in bytes */
btk_DECLSPEC
u32 btk_SDK_shAllocSize( btk_HSDK hsdkA );
/** returns total amount of allocated memory in bytes */
btk_DECLSPEC
u32 btk_SDK_allocSize( btk_HSDK hsdkA );
#ifdef __cplusplus
}
#endif
#endif /* btk_SDK_EM_H */