OpenNI 1.5.7
XnOS.h
Go to the documentation of this file.
00001 /*****************************************************************************
00002 *                                                                            *
00003 *  OpenNI 1.x Alpha                                                          *
00004 *  Copyright (C) 2012 PrimeSense Ltd.                                        *
00005 *                                                                            *
00006 *  This file is part of OpenNI.                                              *
00007 *                                                                            *
00008 *  Licensed under the Apache License, Version 2.0 (the "License");           *
00009 *  you may not use this file except in compliance with the License.          *
00010 *  You may obtain a copy of the License at                                   *
00011 *                                                                            *
00012 *      http://www.apache.org/licenses/LICENSE-2.0                            *
00013 *                                                                            *
00014 *  Unless required by applicable law or agreed to in writing, software       *
00015 *  distributed under the License is distributed on an "AS IS" BASIS,         *
00016 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  *
00017 *  See the License for the specific language governing permissions and       *
00018 *  limitations under the License.                                            *
00019 *                                                                            *
00020 *****************************************************************************/
00021 #ifndef __XN_OS_H__
00022 #define __XN_OS_H__
00023 
00024 //---------------------------------------------------------------------------
00025 // Includes
00026 //---------------------------------------------------------------------------
00027 #include "XnPlatform.h"
00028 #include "XnMacros.h"
00029 #include "XnStatusCodes.h"
00030 #include "XnOSStrings.h"
00031 #include "XnOSMemory.h"
00032 
00033 //---------------------------------------------------------------------------
00034 // Defines
00035 //---------------------------------------------------------------------------
00036 #define XN_MASK_OS "xnOS"
00037 
00038 // uncomment next line to activate memory profiling
00039 //#define XN_MEM_PROFILING
00040 
00041 //---------------------------------------------------------------------------
00042 // OS Identifier 
00043 //---------------------------------------------------------------------------
00044 #if (XN_PLATFORM == XN_PLATFORM_WIN32)
00045     #include "Win32/XnOSWin32.h"
00046 #elif (XN_PLATFORM == XN_PLATFORM_LINUX_X86 || XN_PLATFORM == XN_PLATFORM_LINUX_ARM || XN_PLATFORM == XN_PLATFORM_MACOSX || XN_PLATFORM == XN_PLATFORM_ANDROID_ARM)
00047     #include "Linux-x86/XnOSLinux-x86.h"
00048 #elif defined(_ARC)
00049     #include "ARC/XnOSARC.h"
00050 #else
00051     #error OpenNI OS Abstraction Layer - Unsupported Platform!
00052 #endif
00053 
00054 //---------------------------------------------------------------------------
00055 // Types
00056 //---------------------------------------------------------------------------
00057 #define XN_MAX_OS_NAME_LENGTH 255
00058 
00059 typedef struct xnOSInfo
00060 {
00061     XnChar csOSName[XN_MAX_OS_NAME_LENGTH];
00062     XnChar csCPUName[XN_MAX_OS_NAME_LENGTH];
00063     XnUInt32 nProcessorsCount;
00064     XnUInt64 nTotalMemory;
00065 } xnOSInfo;
00066 
00067 typedef XnBool (XN_CALLBACK_TYPE* XnConditionFunc)(void* pConditionData);
00068 
00069 //---------------------------------------------------------------------------
00070 // Global Variables
00071 //---------------------------------------------------------------------------
00073 extern XnOSTimer g_xnOSHighResGlobalTimer;
00074 
00075 //---------------------------------------------------------------------------
00076 // Files
00077 //---------------------------------------------------------------------------
00078 // File open modes
00080 #define XN_OS_FILE_READ             0x01
00081 
00082 #define XN_OS_FILE_WRITE            0x02
00083 
00084 #define XN_OS_FILE_CREATE_NEW_ONLY  0x04
00085 
00086 #define XN_OS_FILE_TRUNCATE         0x08
00087 
00088 #define XN_OS_FILE_APPEND           0x10
00089 
00090 #define XN_OS_FILE_AUTO_FLUSH       0x20
00091 
00092 // Seek types
00094 typedef enum {
00096     XN_OS_SEEK_SET = 0,
00098     XN_OS_SEEK_CUR,
00100     XN_OS_SEEK_END
00101 } XnOSSeekType;
00102 
00103 //---------------------------------------------------------------------------
00104 // Network
00105 //---------------------------------------------------------------------------
00106 // Network socket type
00108 typedef enum {
00110     XN_OS_UDP_SOCKET = 0,
00112     XN_OS_TCP_SOCKET
00113 } XnOSSocketType;
00114 
00115 #define XN_OS_NETWORK_LOCAL_HOST    "127.0.0.1"
00116 
00117 //---------------------------------------------------------------------------
00118 // Macros
00119 //---------------------------------------------------------------------------
00120 // Memory
00122 #define XN_VALIDATE_INPUT_PTR(x) XN_VALIDATE_PTR(x, XN_STATUS_NULL_INPUT_PTR)
00123 
00125 #define XN_VALIDATE_OUTPUT_PTR(x) XN_VALIDATE_PTR(x, XN_STATUS_NULL_OUTPUT_PTR)
00126 
00127 #define XN_VALIDATE_ALLOC_PTR(x) XN_VALIDATE_PTR(x, XN_STATUS_ALLOC_FAILED)
00128 
00130 #define XN_VALIDATE_ALLOC(x,y)          \
00131         x = (y*)xnOSMalloc(sizeof(y));  \
00132         XN_VALIDATE_ALLOC_PTR(x);
00133 
00135 #define XN_VALIDATE_CALLOC(x,y,z)           \
00136         x = (y*)xnOSCalloc(z, sizeof(y));   \
00137         XN_VALIDATE_ALLOC_PTR(x);
00138 
00140 #define XN_VALIDATE_ALIGNED_ALLOC(x,y,w)            \
00141         x = (y*)xnOSMallocAligned(sizeof(y), w);    \
00142         XN_VALIDATE_ALLOC_PTR(x);
00143 
00145 #define XN_VALIDATE_ALIGNED_CALLOC(x,y,z,w)         \
00146         x = (y*)xnOSCallocAligned(z, sizeof(y), w); \
00147         XN_VALIDATE_ALLOC_PTR(x);
00148 
00150 #define XN_FREE_AND_NULL(x)     \
00151         if (x != NULL)          \
00152         {                       \
00153             xnOSFree(x);        \
00154             x = NULL;           \
00155         }
00156 
00157 #define XN_ALIGNED_FREE_AND_NULL(x)     \
00158         if (x != NULL)          \
00159         {                       \
00160             xnOSFreeAligned(x); \
00161             x = NULL;           \
00162         }
00163 
00164 
00166 #if XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_WIN32_VAARGS_STYLE
00167     #define XN_VALIDATE_NEW(ptr, type, ...)                     \
00168         {                                                       \
00169             (ptr) = XN_NEW(type, __VA_ARGS__);                  \
00170             if ((ptr) == NULL)                                  \
00171             {                                                   \
00172                 return (XN_STATUS_ALLOC_FAILED);                \
00173             }                                                   \
00174         }
00175 
00176 #elif XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_GCC_VAARGS_STYLE
00177     #define XN_VALIDATE_NEW(ptr, type, ...)                     \
00178         {                                                       \
00179             (ptr) = XN_NEW(type, ##__VA_ARGS__);                \
00180             if ((ptr) == NULL)                                  \
00181             {                                                   \
00182                 return (XN_STATUS_ALLOC_FAILED);                \
00183             }                                                   \
00184         } 
00185 #elif XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_ARC_VAARGS_STYLE
00186     #define XN_VALIDATE_NEW(ptr, type...)                       \
00187         {                                                       \
00188             (ptr) = XN_NEW(type);                               \
00189             if ((ptr) == NULL)                                  \
00190             {                                                   \
00191                 return (XN_STATUS_ALLOC_FAILED);                \
00192             }                                                   \
00193         } 
00194 #else
00195     #define XN_VALIDATE_NEW(ptr, type)                          \
00196         {                                                       \
00197             (ptr) = XN_NEW(type);                               \
00198             if ((ptr) == NULL)                                  \
00199             {                                                   \
00200                 return (XN_STATUS_ALLOC_FAILED);                \
00201             }                                                   \
00202         }
00203 #endif
00204 
00206 #if XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_WIN32_VAARGS_STYLE
00207     #define XN_VALIDATE_NEW_AND_INIT(ptr, type, ...)            \
00208         {                                                       \
00209             XN_VALIDATE_NEW(ptr, type, __VA_ARGS__);            \
00210             XnStatus rc = (ptr)->Init();                        \
00211             if (rc != XN_STATUS_OK)                             \
00212             {                                                   \
00213                 XN_DELETE(ptr);                                 \
00214                 return (rc);                                    \
00215             }                                                   \
00216         } 
00217 #elif XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_GCC_VAARGS_STYLE
00218     #define XN_VALIDATE_NEW_AND_INIT(ptr, type, ...)            \
00219         {                                                       \
00220             XN_VALIDATE_NEW(ptr, type, ##__VA_ARGS__);          \
00221             XnStatus rc = (ptr)->Init();                        \
00222             if (rc != XN_STATUS_OK)                             \
00223             {                                                   \
00224                 XN_DELETE(ptr);                                 \
00225                 return (rc);                                    \
00226             }                                                   \
00227         } 
00228 #elif XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_ARC_VAARGS_STYLE
00229     #define XN_VALIDATE_NEW_AND_INIT(ptr, type...)              \
00230         {                                                       \
00231             XN_VALIDATE_NEW(ptr, type);                         \
00232             XnStatus rc = (ptr)->Init();                        \
00233             if (rc != XN_STATUS_OK)                             \
00234             {                                                   \
00235                 XN_DELETE(ptr);                                 \
00236                 return (rc);                                    \
00237             }                                                   \
00238         } 
00239 #else
00240     #define XN_VALIDATE_NEW_AND_INIT(ptr, type)                 \
00241         {                                                       \
00242             XN_VALIDATE_NEW(ptr, type);                         \
00243             XnStatus rc = (ptr)->Init();                        \
00244             if (rc != XN_STATUS_OK)                             \
00245             {                                                   \
00246                 XN_DELETE(ptr);                                 \
00247                 return (rc);                                    \
00248             }                                                   \
00249         } 
00250 #endif
00251 
00252 // Strings
00254 #define XN_VALIDATE_STR_APPEND(w,x,y,z) \
00255     z = xnOSStrAppend(w, x, y);         \
00256     XN_IS_STATUS_OK(z);
00257 
00259 #define XN_VALIDATE_STR_PREFIX(w,x,y,z) \
00260     z = xnOSStrPrefix(w, x, y);         \
00261     XN_IS_STATUS_OK(z);
00262 
00263 #define XN_VALIDATE_STR_COPY(w,x,y,z)   \
00264     z = xnOSStrCopy(w, x, y);           \
00265     XN_IS_STATUS_OK(z);
00266 
00267 #define XN_VALIDATE_STRN_COPY(v,w,x,y,z)    \
00268     z = xnOSStrNCopy(v, w, x, y);           \
00269     XN_IS_STATUS_OK(z);
00270 
00271 // INI
00273 #define XN_VALIDATE_READ_INI_STR(u,v,w,x,y,z)       \
00274         z = xnOSReadStringFromINI(u, v, w, x, y);   \
00275         XN_IS_STATUS_OK(z);
00276 
00278 #define XN_VALIDATE_READ_INI_INT(v,w,x,y,z)     \
00279         z = xnOSReadIntFromINI(v, w, x, y);     \
00280         XN_IS_STATUS_OK(z);
00281 
00283 #define XN_VALIDATE_READ_INI_FLOAT(v,w,x,y,z)   \
00284         z = xnOSReadFloatFromINI(v, w, x, y);   \
00285         XN_IS_STATUS_OK(z);
00286 
00288 #define XN_VALIDATE_READ_INI_DOUBLE(v,w,x,y,z)  \
00289         z = xnOSReadDoubleFromINI(v, w, x, y);  \
00290         XN_IS_STATUS_OK(z);
00291 
00292 // Mutex
00294 #define XN_VALIDATE_LOCK_MUTEX(x,y,z)   \
00295         z = xnOSLockMutex(x, y);        \
00296         XN_IS_STATUS_OK(z);
00297 
00299 #define XN_VALIDATE_UNLOCK_MUTEX(x,z)   \
00300         z = xnOSUnLockMutex(x);         \
00301         XN_IS_STATUS_OK(z);
00302 
00303 // Files
00305 #define XN_VALIDATE_FILE_EXISTS_RET(x,y,z,w)    \
00306         y = xnOSDoesFileExist(x, &z);               \
00307         XN_IS_STATUS_OK(y);                     \
00308         if (z == FALSE)                         \
00309         {                                       \
00310             return (w);                         \
00311         }
00312 #define XN_VALIDATE_FILE_EXISTS(x,y,z)  \
00313         XN_VALIDATE_FILE_EXISTS_RET(x,y,z,XN_STATUS_OS_FILE_NOT_FOUND)
00314 
00315 //---------------------------------------------------------------------------
00316 // Exported Function Declaration
00317 //---------------------------------------------------------------------------
00318 // Common
00319 XN_C_API XnStatus XN_C_DECL xnOSInit();
00320 XN_C_API XnStatus XN_C_DECL xnOSShutdown();
00321 XN_C_API XnStatus XN_C_DECL xnOSGetInfo(xnOSInfo* pOSInfo);
00322 
00323 
00324 #if XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_WIN32_VAARGS_STYLE
00325     #define XN_NEW(type, ...)       new type(__VA_ARGS__)
00326 #elif XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_GCC_VAARGS_STYLE
00327     #define XN_NEW(type, ...)       new type(__VA_ARGS__)
00328 #elif XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_ARC_VAARGS_STYLE
00329     #define XN_NEW(type, arg...)    new type(arg)
00330 #else
00331     #define XN_NEW(type, arg)       new type(arg)
00332 #endif
00333 
00334 #define XN_NEW_ARR(type, count)     new type[count]
00335 #define XN_DELETE(p)                delete (p)
00336 #define XN_DELETE_ARR(p)            delete[] (p)
00337 
00338 typedef enum
00339 {
00340     XN_ALLOCATION_MALLOC,
00341     XN_ALLOCATION_MALLOC_ALIGNED,
00342     XN_ALLOCATION_CALLOC,
00343     XN_ALLOCATION_CALLOC_ALIGNED,
00344     XN_ALLOCATION_NEW,
00345     XN_ALLOCATION_NEW_ARRAY
00346 } XnAllocationType;
00347 
00351 XN_C_API void* XN_C_DECL xnOSLogMemAlloc(void* pMemBlock, XnAllocationType nAllocType, XnUInt32 nBytes, const XnChar* csFunction, const XnChar* csFile, XnUInt32 nLine, const XnChar* csAdditional);
00352 
00356 XN_C_API void XN_C_DECL xnOSLogMemFree(const void* pMemBlock);
00357 
00361 XN_C_API void XN_C_DECL xnOSWriteMemoryReport(const XnChar* csFileName);
00362 
00363 // for memory profiling, replace all malloc/calloc/free/new/delete calls
00364 #if (defined XN_MEM_PROFILING) && (!defined(XN_OS_IMPL))
00365     #ifdef _MSC_VER 
00366         #pragma message("Compiling with Memory Profiling!")
00367     #elif defined(__INTEL_COMPILER)
00368         #warning "Compiling with Memory Profiling!"
00369     //TODO: Add warning for linux compiler(s)
00370     #endif
00371 
00372     #ifdef __cplusplus
00373         #include <new>
00374         static void* operator new(size_t size)
00375         {
00376             void* p = xnOSMalloc(size);
00377             return xnOSLogMemAlloc(p, XN_ALLOCATION_NEW, size, "", "", 0, "");
00378         }
00379         static void* operator new[](size_t size)
00380         {
00381             void* p = xnOSMalloc(size);
00382             return xnOSLogMemAlloc(p, XN_ALLOCATION_NEW, size, "", "", 0, "");
00383         }
00384         static void* operator new(size_t size, const XnChar* csFunction, const XnChar* csFile, XnUInt32 nLine, const XnChar* csAdditional)
00385         {
00386             void* p = xnOSMalloc(size);
00387             return xnOSLogMemAlloc(p, XN_ALLOCATION_NEW, size, csFunction, csFile, nLine, csAdditional);
00388         }
00389 
00390         // called only if ctor threw exception
00391         static void operator delete(void* p, const XnChar* /*csFunction*/, const XnChar* /*csFile*/, XnUInt32 /*nLine*/, const XnChar* /*csAdditional*/)
00392         {
00393             xnOSLogMemFree(p);
00394             xnOSFree(p);
00395         }
00396 
00397         static void operator delete(void* p)
00398         {
00399             xnOSLogMemFree(p);
00400             xnOSFree(p);
00401         }
00402 
00403         static void* operator new[](size_t size, const XnChar* csFunction, const XnChar* csFile, XnUInt32 nLine, const XnChar* csAdditional)
00404         {
00405             void* p = xnOSMalloc(size);
00406             return xnOSLogMemAlloc(p, XN_ALLOCATION_NEW_ARRAY, size, csFunction, csFile, nLine, csAdditional);
00407         }
00408 
00409         // called only if ctor threw exception
00410         static void operator delete[](void* p, const XnChar* /*csFunction*/, const XnChar* /*csFile*/, XnUInt32 /*nLine*/, const XnChar* /*csAdditional*/)
00411         {
00412             xnOSLogMemFree(p);
00413             xnOSFree(p);
00414         }
00415 
00416         static void operator delete[](void* p)
00417         {
00418             xnOSLogMemFree(p);
00419             xnOSFree(p);
00420         }
00421 
00422         #define xnOSMalloc(nAllocSize)                                  xnOSLogMemAlloc(xnOSMalloc(nAllocSize), XN_ALLOCATION_MALLOC, nAllocSize, __FUNCTION__, __FILE__, __LINE__, NULL)
00423         #define xnOSMallocAligned(nAllocSize, nAlignment)               xnOSLogMemAlloc(xnOSMallocAligned(nAllocSize, nAlignment), XN_ALLOCATION_MALLOC_ALIGNED, nAllocSize, __FUNCTION__, __FILE__, __LINE__, "Aligned to " XN_STRINGIFY(nAlignment))
00424         #define xnOSCalloc(nAllocNum, nAllocSize)                       xnOSLogMemAlloc(xnOSCalloc(nAllocNum, nAllocSize), XN_ALLOCATION_CALLOC, nAllocNum*nAllocSize, __FUNCTION__, __FILE__, __LINE__, NULL)
00425         #define xnOSCallocAligned(nAllocNum, nAllocSize, nAlignment)    xnOSLogMemAlloc(xnOSCallocAligned(nAllocNum, nAllocSize, nAlignment), XN_ALLOCATION_CALLOC_ALIGNED, nAllocNum*nAllocSize, __FUNCTION__, __FILE__, __LINE__, "Aligned to " XN_STRINGIFY(nAlignment))
00426         #define xnOSFree(pMemBlock)                                     { xnOSLogMemFree(pMemBlock); xnOSFree(pMemBlock); }
00427         #define xnOSFreeAligned(pMemBlock)                              { xnOSLogMemFree(pMemBlock); xnOSFreeAligned(pMemBlock); }
00428 
00429         #undef XN_NEW
00430         #undef XN_NEW_ARR
00431 
00432         #if XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_WIN32_VAARGS_STYLE
00433             #define XN_NEW(type, ...)       new (__FUNCTION__, __FILE__, __LINE__, XN_STRINGIFY(type)) type(__VA_ARGS__)
00434         #elif XN_PLATFORM_VAARGS_TYPE == XN_PLATFORM_USE_GCC_VAARGS_STYLE
00435             #define XN_NEW(type, arg...)    new (__FUNCTION__, __FILE__, __LINE__, XN_STRINGIFY(type)) type(arg)
00436         #else
00437             #define XN_NEW(type, arg)       new (__FUNCTION__, __FILE__, __LINE__, XN_STRINGIFY(type)) type(arg)
00438         #endif
00439 
00440         #define XN_NEW_ARR(type, count)     new (__FUNCTION__, __FILE__, __LINE__, XN_STRINGIFY(count) " " XN_STRINGIFY(type)) type[count]
00441 
00442     #endif
00443 #endif
00444 
00445 // Files
00446 XN_C_API XnStatus XN_C_DECL xnOSGetFileList(const XnChar* cpSearchPattern, const XnChar* cpPrefixPath, XnChar cpFileList[][XN_FILE_MAX_PATH], const XnUInt32 nMaxFiles, XnUInt32* pnFoundFiles);
00447 XN_C_API XnStatus XN_C_DECL xnOSOpenFile(const XnChar* cpFileName, const XnUInt32 nFlags, XN_FILE_HANDLE* pFile);
00448 XN_C_API XnStatus XN_C_DECL xnOSCloseFile(XN_FILE_HANDLE* pFile);
00449 XN_C_API XnStatus XN_C_DECL xnOSReadFile(const XN_FILE_HANDLE File, void* pBuffer, XnUInt32* pnBufferSize);
00450 XN_C_API XnStatus XN_C_DECL xnOSWriteFile(const XN_FILE_HANDLE File, const void* pBuffer, const XnUInt32 nBufferSize);
00451 XN_C_API XnStatus XN_API_DEPRECATED("Use xnOSSeekFile64() instead") XN_C_DECL 
00452                 xnOSSeekFile  (const XN_FILE_HANDLE File, const XnOSSeekType SeekType, const XnInt32 nOffset);
00453 XN_C_API XnStatus XN_C_DECL xnOSSeekFile64(const XN_FILE_HANDLE File, const XnOSSeekType SeekType, const XnInt64 nOffset);
00454 XN_C_API XnStatus XN_API_DEPRECATED("Use xnOSTellFile64() instead") XN_C_DECL 
00455                 xnOSTellFile  (const XN_FILE_HANDLE File, XnUInt32* nFilePos);
00456 XN_C_API XnStatus XN_C_DECL xnOSTellFile64(const XN_FILE_HANDLE File, XnUInt64* nFilePos);
00457 XN_C_API XnStatus XN_C_DECL xnOSFlushFile(const XN_FILE_HANDLE File);
00458 XN_C_API XnStatus XN_C_DECL xnOSDoesFileExist(const XnChar* cpFileName, XnBool* pbResult);
00459 XN_C_API XnStatus XN_C_DECL xnOSDoesDirecotyExist(const XnChar* cpDirName, XnBool* pbResult);
00460 XN_C_API XnStatus XN_C_DECL xnOSLoadFile(const XnChar* cpFileName, void* pBuffer, const XnUInt32 nBufferSize);
00461 XN_C_API XnStatus XN_C_DECL xnOSSaveFile(const XnChar* cpFileName, const void* pBuffer, const XnUInt32 nBufferSize);
00462 XN_C_API XnStatus XN_C_DECL xnOSAppendFile(const XnChar* cpFileName, const void* pBuffer, const XnUInt32 nBufferSize);
00463 XN_C_API XnStatus XN_API_DEPRECATED("Use xnOSGetFileSize64() instead") XN_C_DECL 
00464                 xnOSGetFileSize  (const XnChar* cpFileName, XnUInt32* pnFileSize);
00465 XN_C_API XnStatus XN_C_DECL xnOSGetFileSize64(const XnChar* cpFileName, XnUInt64* pnFileSize);
00466 XN_C_API XnStatus XN_C_DECL xnOSCreateDirectory(const XnChar* cpDirName);
00467 XN_C_API XnStatus XN_C_DECL xnOSGetDirName(const XnChar* cpFilePath, XnChar* cpDirName, const XnUInt32 nBufferSize);
00468 XN_C_API XnStatus XN_C_DECL xnOSGetFileName(const XnChar* cpFilePath, XnChar* cpFileName, const XnUInt32 nBufferSize);
00469 XN_C_API XnStatus XN_C_DECL xnOSGetFullPathName(const XnChar* strFilePath, XnChar* strFullPath, XnUInt32 nBufferSize);
00470 XN_C_API XnStatus XN_C_DECL xnOSGetCurrentDir(XnChar* cpDirName, const XnUInt32 nBufferSize);
00471 XN_C_API XnStatus XN_C_DECL xnOSSetCurrentDir(const XnChar* cpDirName);
00472 XN_C_API XnStatus XN_C_DECL xnOSDeleteFile(const XnChar* cpFileName);
00473 XN_C_API XnStatus XN_C_DECL xnOSDeleteEmptyDirectory(const XnChar* strDirName);
00474 XN_C_API XnStatus XN_C_DECL xnOSDeleteDirectoryTree(const XnChar* strDirName);
00475 #ifdef XN_PLATFORM_ANDROID_ARM
00476 XN_C_API XnStatus XN_C_DECL xnOSGetApplicationFilesDir(XnChar* cpDirName, const XnUInt32 nBufferSize);
00477 XN_C_API XnStatus XN_C_DECL xnOSGetApplicationLibDir(XnChar* cpDirName, const XnUInt32 nBufferSize);
00478 #endif
00479 
00480 // INI
00481 XN_C_API XnStatus XN_C_DECL xnOSReadStringFromINI(const XnChar* cpINIFile, const XnChar* cpSection, const XnChar* cpKey, XnChar* cpDest, const XnUInt32 nDestLength);
00482 XN_C_API XnStatus XN_C_DECL xnOSReadFloatFromINI(const XnChar* cpINIFile, const XnChar* cpSection, const XnChar* cpKey, XnFloat* fDest);
00483 XN_C_API XnStatus XN_C_DECL xnOSReadDoubleFromINI(const XnChar* cpINIFile, const XnChar* cpSection, const XnChar* cpKey, XnDouble* fDest);
00484 XN_C_API XnStatus XN_C_DECL xnOSReadIntFromINI(const XnChar* cpINIFile, const XnChar* cpSection, const XnChar* cpKey, XnUInt32* nDest);
00485 XN_C_API XnStatus XN_C_DECL xnOSWriteStringToINI(const XnChar* cpINIFile, const XnChar* cpSection, const XnChar* cpKey, const XnChar* cpSrc);
00486 XN_C_API XnStatus XN_C_DECL xnOSWriteFloatToINI(const XnChar* cpINIFile, const XnChar* cpSection, const XnChar* cpKey, const XnFloat fSrc);
00487 XN_C_API XnStatus XN_C_DECL xnOSWriteDoubleToINI(const XnChar* cpINIFile, const XnChar* cpSection, const XnChar* cpKey, const XnDouble fSrc);
00488 XN_C_API XnStatus XN_C_DECL xnOSWriteIntToINI(const XnChar* cpINIFile, const XnChar* cpSection, const XnChar* cpKey, const XnUInt32 nSrc);
00489 
00490 // Shared libraries
00491 XN_C_API XnStatus XN_C_DECL xnOSLoadLibrary(const XnChar* cpFileName, XN_LIB_HANDLE* pLibHandle);
00492 XN_C_API XnStatus XN_C_DECL xnOSFreeLibrary(const XN_LIB_HANDLE LibHandle);
00493 XN_C_API XnStatus XN_C_DECL xnOSGetProcAddress(const XN_LIB_HANDLE LibHandle, const XnChar* cpProcName, XnFarProc* pProcAddr);
00494 
00495 struct timespec;
00496     
00497 // Time
00498 XN_C_API XnStatus XN_C_DECL xnOSGetEpochTime(XnUInt32* nEpochTime);
00499 XN_C_API XnStatus XN_C_DECL xnOSGetTimeStamp(XnUInt64* nTimeStamp);
00500 XN_C_API XnStatus XN_C_DECL xnOSGetHighResTimeStamp(XnUInt64* nTimeStamp);
00501 XN_C_API XnStatus XN_C_DECL xnOSSleep(XnUInt32 nMilliseconds);
00502 XN_C_API XnStatus XN_C_DECL xnOSStartTimer(XnOSTimer* pTimer);
00503 XN_C_API XnStatus XN_C_DECL xnOSStartHighResTimer(XnOSTimer* pTimer);
00504 XN_C_API XnStatus XN_C_DECL xnOSQueryTimer(XnOSTimer Timer, XnUInt64* pnTimeSinceStart);
00505 XN_C_API XnStatus XN_C_DECL xnOSStopTimer(XnOSTimer* pTimer);
00506 XN_C_API XnStatus XN_C_DECL xnOSGetMonoTime(struct timespec* pTime);
00507 XN_C_API XnStatus XN_C_DECL xnOSGetTimeout(struct timespec* pTime, XnUInt32 nMilliseconds);
00508 XN_C_API XnStatus XN_C_DECL xnOSGetAbsTimeout(struct timespec* pTime, XnUInt32 nMilliseconds);
00509 
00510 // Threads
00511 typedef enum XnThreadPriority
00512 {
00513     XN_PRIORITY_LOW,
00514     XN_PRIORITY_NORMAL,
00515     XN_PRIORITY_HIGH,
00516     XN_PRIORITY_CRITICAL
00517 } XnThreadPriority;
00518 
00519 XN_C_API XnStatus XN_C_DECL xnOSCreateThread(XN_THREAD_PROC_PROTO pThreadProc, const XN_THREAD_PARAM pThreadParam, XN_THREAD_HANDLE* pThreadHandle);
00520 XN_C_API XnStatus XN_C_DECL xnOSTerminateThread(XN_THREAD_HANDLE* pThreadHandle);
00521 XN_C_API XnStatus XN_C_DECL xnOSCloseThread(XN_THREAD_HANDLE* pThreadHandle);
00522 XN_C_API XnStatus XN_C_DECL xnOSWaitForThreadExit(XN_THREAD_HANDLE ThreadHandle, XnUInt32 nMilliseconds);
00523 XN_C_API XnStatus XN_C_DECL xnOSSetThreadPriority(XN_THREAD_HANDLE ThreadHandle, XnThreadPriority nPriority);
00524 XN_C_API XnStatus XN_C_DECL xnOSGetCurrentThreadID(XN_THREAD_ID* pThreadID);
00525 XN_C_API XnStatus XN_C_DECL xnOSWaitAndTerminateThread(XN_THREAD_HANDLE* pThreadHandle, XnUInt32 nMilliseconds);
00526 
00527 // Processes
00528 XN_C_API XnStatus XN_C_DECL xnOSGetCurrentProcessID(XN_PROCESS_ID* pProcID);
00529 XN_C_API XnStatus XN_C_DECL xnOSCreateProcess(const XnChar* strExecutable, XnUInt32 nArgs, const XnChar** pstrArgs, XN_PROCESS_ID* pProcID);
00530 
00531 // Mutex
00532 XN_C_API XnStatus XN_C_DECL xnOSCreateMutex(XN_MUTEX_HANDLE* pMutexHandle);
00533 XN_C_API XnStatus XN_C_DECL xnOSCreateNamedMutex(XN_MUTEX_HANDLE* pMutexHandle, const XnChar* cpMutexName);
00534 XN_C_API XnStatus XN_C_DECL xnOSCreateNamedMutexEx(XN_MUTEX_HANDLE* pMutexHandle, const XnChar* cpMutexName, XnBool bAllowOtherUsers);
00535 XN_C_API XnStatus XN_C_DECL xnOSCloseMutex(XN_MUTEX_HANDLE* pMutexHandle);
00536 XN_C_API XnStatus XN_C_DECL xnOSLockMutex(const XN_MUTEX_HANDLE MutexHandle, XnUInt32 nMilliseconds);
00537 XN_C_API XnStatus XN_C_DECL xnOSUnLockMutex(const XN_MUTEX_HANDLE MutexHandle);
00538 
00539 // Critical Sections
00540 XN_C_API XnStatus XN_C_DECL xnOSCreateCriticalSection(XN_CRITICAL_SECTION_HANDLE* pCriticalSectionHandle);
00541 XN_C_API XnStatus XN_C_DECL xnOSCloseCriticalSection(XN_CRITICAL_SECTION_HANDLE* pCriticalSectionHandle);
00542 XN_C_API XnStatus XN_C_DECL xnOSEnterCriticalSection(XN_CRITICAL_SECTION_HANDLE* pCriticalSectionHandle);
00543 XN_C_API XnStatus XN_C_DECL xnOSLeaveCriticalSection(XN_CRITICAL_SECTION_HANDLE* pCriticalSectionHandle);
00544 
00545 // Events
00546 XN_C_API XnStatus XN_C_DECL xnOSCreateEvent(XN_EVENT_HANDLE* pEventHandle, XnBool bManualReset);
00547 XN_C_API XnStatus XN_C_DECL xnOSCreateNamedEvent(XN_EVENT_HANDLE* pEventHandle, const XnChar* cpEventName, XnBool bManualReset);
00548 XN_C_API XnStatus XN_C_DECL xnOSCreateNamedEventEx(XN_EVENT_HANDLE* pEventHandle, const XnChar* cpEventName, XnBool bManualReset, XnBool bAllowOtherUsers);
00549 XN_C_API XnStatus XN_C_DECL xnOSOpenNamedEvent(XN_EVENT_HANDLE* pEventHandle, const XnChar* cpEventName);
00550 XN_C_API XnStatus XN_C_DECL xnOSOpenNamedEventEx(XN_EVENT_HANDLE* pEventHandle, const XnChar* cpEventName, XnBool bAllowOtherUsers);
00551 XN_C_API XnStatus XN_C_DECL xnOSCloseEvent(XN_EVENT_HANDLE* pEventHandle);
00552 XN_C_API XnStatus XN_C_DECL xnOSSetEvent(const XN_EVENT_HANDLE EventHandle);
00553 XN_C_API XnStatus XN_C_DECL xnOSResetEvent(const XN_EVENT_HANDLE EventHandle);
00554 XN_C_API XnStatus XN_C_DECL xnOSWaitEvent(const XN_EVENT_HANDLE EventHandle, XnUInt32 nMilliseconds);
00555 XN_C_API XnBool XN_C_DECL xnOSIsEventSet(const XN_EVENT_HANDLE EventHandle);
00556 
00557 // Semaphores
00558 XN_C_API XnStatus XN_C_DECL xnOSCreateSemaphore(XN_SEMAPHORE_HANDLE* pSemaphoreHandle, XnUInt32 nInitialCount);
00559 XN_C_API XnStatus XN_C_DECL xnOSLockSemaphore(XN_SEMAPHORE_HANDLE hSemaphore, XnUInt32 nMilliseconds);
00560 XN_C_API XnStatus XN_C_DECL xnOSUnlockSemaphore(XN_SEMAPHORE_HANDLE hSemaphore);
00561 XN_C_API XnStatus XN_C_DECL xnOSCloseSemaphore(XN_SEMAPHORE_HANDLE* pSemaphoreHandle);
00562 
00571 XN_C_API XnStatus XN_C_DECL xnOSWaitForCondition(const XN_EVENT_HANDLE EventHandle, XnUInt32 nMilliseconds, XnConditionFunc pConditionFunc, void* pConditionData);
00572 
00573 // Network
00574 struct xnOSSocket;
00575 typedef struct xnOSSocket* XN_SOCKET_HANDLE;
00576 
00577 #define XN_SOCKET_DEFAULT_TIMEOUT 0xFFFEFFFE
00578 
00579 XN_C_API XnStatus XN_C_DECL xnOSInitNetwork();
00580 XN_C_API XnStatus XN_C_DECL xnOSShutdownNetwork();
00581 XN_C_API XnStatus XN_C_DECL xnOSCreateSocket(const XnOSSocketType SocketType, const XnChar* cpIPAddress, const XnUInt16 nPort, XN_SOCKET_HANDLE* SocketPtr);
00582 XN_C_API XnStatus XN_C_DECL xnOSCloseSocket(XN_SOCKET_HANDLE Socket);
00583 XN_C_API XnStatus XN_C_DECL xnOSBindSocket(XN_SOCKET_HANDLE Socket);
00584 XN_C_API XnStatus XN_C_DECL xnOSListenSocket(XN_SOCKET_HANDLE Socket);
00585 XN_C_API XnStatus XN_C_DECL xnOSAcceptSocket(XN_SOCKET_HANDLE ListenSocket, XN_SOCKET_HANDLE* AcceptSocketPtr, XnUInt32 nMillisecsTimeout);
00586 XN_C_API XnStatus XN_C_DECL xnOSConnectSocket(XN_SOCKET_HANDLE Socket, XnUInt32 nMillisecsTimeout);
00587 XN_C_API XnStatus XN_C_DECL xnOSSetSocketBufferSize(XN_SOCKET_HANDLE Socket, const XnUInt32 nSocketBufferSize);
00588 XN_C_API XnStatus XN_C_DECL xnOSSendNetworkBuffer(XN_SOCKET_HANDLE Socket, const XnChar* cpBuffer, const XnUInt32 nBufferSize);
00589 XN_C_API XnStatus XN_C_DECL xnOSSendToNetworkBuffer(XN_SOCKET_HANDLE Socket, const XnChar* cpBuffer, const XnUInt32 nBufferSize, XN_SOCKET_HANDLE SocketTo);
00590 XN_C_API XnStatus XN_C_DECL xnOSReceiveNetworkBuffer(XN_SOCKET_HANDLE Socket, XnChar* cpBuffer, XnUInt32* pnBufferSize, XnUInt32 nMillisecsTimeout);
00591 XN_C_API XnStatus XN_C_DECL xnOSReceiveFromNetworkBuffer(XN_SOCKET_HANDLE Socket, XnChar* cpBuffer, XnUInt32* pnBufferSize, XN_SOCKET_HANDLE* SocketFrom);
00592 
00593 // Shared Memory
00594 typedef struct XnOSSharedMemory XnOSSharedMemory, *XN_SHARED_MEMORY_HANDLE;
00595 
00604 XN_C_API XnStatus XN_C_DECL xnOSCreateSharedMemory(const XnChar* strName, XnUInt32 nSize, XnUInt32 nAccessFlags, XN_SHARED_MEMORY_HANDLE* phSharedMem);
00605 
00606 XN_C_API XnStatus XN_C_DECL xnOSCreateSharedMemoryEx(const XnChar* strName, XnUInt32 nSize, XnUInt32 nAccessFlags, XnBool bAllowOtherUsers, XN_SHARED_MEMORY_HANDLE* phSharedMem);
00607 
00615 XN_C_API XnStatus XN_C_DECL xnOSOpenSharedMemory(const XnChar* strName, XnUInt32 nAccessFlags, XN_SHARED_MEMORY_HANDLE* phSharedMem);
00616 
00617 XN_C_API XnStatus XN_C_DECL xnOSOpenSharedMemoryEx(const XnChar* strName, XnUInt32 nAccessFlags, XnBool bAllowOtherUsers, XN_SHARED_MEMORY_HANDLE* phSharedMem);
00618 
00624 XN_C_API XnStatus XN_C_DECL xnOSCloseSharedMemory(XN_SHARED_MEMORY_HANDLE hSharedMem);
00625 
00632 XN_C_API XnStatus XN_C_DECL xnOSSharedMemoryGetAddress(XN_SHARED_MEMORY_HANDLE hSharedMem, void** ppAddress);
00633 
00634 // Keyboard
00635 XN_C_API XnBool XN_C_DECL xnOSWasKeyboardHit();
00636 XN_C_API XnChar XN_C_DECL xnOSReadCharFromInput();
00637 
00638 // Debug Utilities
00639 XN_C_API XnStatus XN_C_DECL xnOSGetCurrentCallStack(XnUInt32 nFramesToSkip, XnChar** astrFrames, XnUInt32 nMaxNameLength, XnUInt32* pnFrames);
00640 
00641 XN_STATUS_MESSAGE_MAP_START(XN_ERROR_GROUP_OS)
00642 XN_STATUS_MESSAGE(XN_STATUS_ALLOC_FAILED, "Memory allocation failed!")
00643 XN_STATUS_MESSAGE(XN_STATUS_OS_ALREADY_INIT, "Xiron OS already initialized!")
00644 XN_STATUS_MESSAGE(XN_STATUS_OS_NOT_INIT, "Xiron OS was not initialized!")
00645 XN_STATUS_MESSAGE(XN_STATUS_OS_FILE_NOT_FOUND, "File not found!")
00646 XN_STATUS_MESSAGE(XN_STATUS_OS_INI_FILE_NOT_FOUND, "INI file not found!")
00647 XN_STATUS_MESSAGE(XN_STATUS_OS_FILE_ALREDY_EXISTS, "File already exists!")
00648 XN_STATUS_MESSAGE(XN_STATUS_OS_FILE_OPEN_FAILED, "Failed to open the file!")
00649 XN_STATUS_MESSAGE(XN_STATUS_OS_FILE_CLOSE_FAILED, "Failed to close the file!")
00650 XN_STATUS_MESSAGE(XN_STATUS_OS_FILE_READ_FAILED, "Failed to read from the file!")
00651 XN_STATUS_MESSAGE(XN_STATUS_OS_FILE_WRITE_FAILED, "Failed to write to the file!")
00652 XN_STATUS_MESSAGE(XN_STATUS_OS_FILE_SEEK_FAILED, "File seek failed!")
00653 XN_STATUS_MESSAGE(XN_STATUS_OS_FILE_TELL_FAILED, "File Tell failed!")
00654 XN_STATUS_MESSAGE(XN_STATUS_OS_FILE_FLUSH_FAILED, "File Flush failed!")
00655 XN_STATUS_MESSAGE(XN_STATUS_OS_FILE_GET_SIZE_FAILED, "Get File Size failed!")
00656 XN_STATUS_MESSAGE(XN_STATUS_OS_INI_READ_FAILED, "Failed to read from INI file!")
00657 XN_STATUS_MESSAGE(XN_STATUS_OS_INI_WRITE_FAILED, "Failed to write into INI file!")
00658 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_SEEK_TYPE, "Invalid seek type!")
00659 XN_STATUS_MESSAGE(XN_STATUS_OS_THREAD_CREATION_FAILED, "Xiron OS failed to create a thread!")
00660 XN_STATUS_MESSAGE(XN_STATUS_OS_THREAD_TERMINATION_FAILED, "Xiron OS failed to terminate a thread!")
00661 XN_STATUS_MESSAGE(XN_STATUS_OS_THREAD_CLOSE_FAILED, "Xiron OS failed to close a thread!")
00662 XN_STATUS_MESSAGE(XN_STATUS_OS_THREAD_TIMEOUT, "Xiron OS got a thread timeout while waiting for a thread to exit!")
00663 XN_STATUS_MESSAGE(XN_STATUS_OS_THREAD_WAIT_FAILED, "Xiron OS failed to wait for a thread to exit!")
00664 XN_STATUS_MESSAGE(XN_STATUS_OS_THREAD_SET_PRIORITY_FAILED, "Xiron OS failed to set priority of a thread!")
00665 XN_STATUS_MESSAGE(XN_STATUS_OS_THREAD_UNSUPPORTED_PRIORITY, "Thread priority is unsupported by Xiron OS!")
00666 XN_STATUS_MESSAGE(XN_STATUS_OS_MUTEX_CREATION_FAILED, "Xiron OS failed to create a mutex!")
00667 XN_STATUS_MESSAGE(XN_STATUS_OS_MUTEX_CLOSE_FAILED, "Xiron OS failed to close a mutex!")
00668 XN_STATUS_MESSAGE(XN_STATUS_OS_MUTEX_LOCK_FAILED, "Xiron OS failed to lock a mutex!")
00669 XN_STATUS_MESSAGE(XN_STATUS_OS_MUTEX_TIMEOUT, "Xiron OS got a mutex timeout!")
00670 XN_STATUS_MESSAGE(XN_STATUS_OS_MUTEX_UNLOCK_FAILED, "Xiron OS failed to unlock a mutex!")
00671 XN_STATUS_MESSAGE(XN_STATUS_OS_EVENT_CREATION_FAILED, "Xiron OS failed to create an event!")
00672 XN_STATUS_MESSAGE(XN_STATUS_OS_EVENT_CLOSE_FAILED, "Xiron OS failed to close an event!")
00673 XN_STATUS_MESSAGE(XN_STATUS_OS_EVENT_SET_FAILED, "Xiron OS failed to set an event!")
00674 XN_STATUS_MESSAGE(XN_STATUS_OS_EVENT_RESET_FAILED, "Xiron OS failed to reset an event!")
00675 XN_STATUS_MESSAGE(XN_STATUS_OS_EVENT_TIMEOUT, "Xiron OS got an event timeout!")
00676 XN_STATUS_MESSAGE(XN_STATUS_OS_EVENT_WAIT_FAILED, "Xiron OS failed to wait on event!")
00677 XN_STATUS_MESSAGE(XN_STATUS_OS_EVENT_CANCELED, "This Xiron OS event was canceled!")
00678 XN_STATUS_MESSAGE(XN_STATUS_OS_CANT_LOAD_LIB, "Xiron OS failed to load shared library!")
00679 XN_STATUS_MESSAGE(XN_STATUS_OS_CANT_FREE_LIB, "Xiron OS failed to free shared library!")
00680 XN_STATUS_MESSAGE(XN_STATUS_OS_PROC_NOT_FOUND, "Xiron OS failed to get procedure address from shared library!")
00681 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_INIT_FAILED, "Xiron OS failed to initialize the network subsystem!")
00682 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_SHUTDOWN_FAILED, "Xiron OS failed to shutdown the network subsystem!")
00683 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_SOCKET_CREATION_FAILED, "Xiron OS failed to create a network socket!")
00684 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_INVALID_SOCKET_TYPE, "Invalid Xiron OS socket type!")
00685 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_SOCKET_BUFFER_FAILED, "Failed to change the Xiron OS socket buffer size!")
00686 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_SEND_FAILED, "Xiron OS failed to send a network buffer!")
00687 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_RECEIVE_FAILED, "Xiron OS failed to receive a network buffer!")
00688 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_SOCKET_BIND_FAILED, "Xiron OS failed to bind a network socket!")
00689 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_SOCKET_LISTEN_FAILED, "Xiron OS failed to listen on a network socket!")
00690 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_SOCKET_ACCEPT_FAILED, "Xiron OS failed to accept a network socket!")
00691 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_SOCKET_CONNECT_FAILED, "Xiron OS failed to connect to a network socket!")
00692 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_BAD_HOST_NAME, "Failed to resolve the host name!")
00693 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_TIMEOUT, "Got a timeout while waiting for a network command to complete!")
00694 XN_STATUS_MESSAGE(XN_STATUS_OS_TIMER_CREATION_FAILED, "Xiron OS failed to create a timer!")
00695 XN_STATUS_MESSAGE(XN_STATUS_OS_TIMER_QUERY_FAILED, "Xiron OS failed to query a timer!")
00696 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_TIMER, "This Xiron OS timer is invalid!")
00697 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_FILE, "This Xiron OS file is invalid!")
00698 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_SOCKET, "This Xiron OS socket is invalid!")
00699 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_MUTEX, "This Xiron OS mutex is invalid!")
00700 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_THREAD, "This Xiron OS thread is invalid!")
00701 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_EVENT, "This Xiron OS event is invalid!")
00702 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_LIBRARY, "This Xiron OS shared library is invalid!")
00703 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_CRITICAL_SECTION, "This Xiron OS critical section is invalid!")
00704 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_FORMAT_STRING, "Xiron OS got an invalid format string!")
00705 XN_STATUS_MESSAGE(XN_STATUS_OS_UNSUPPORTED_FUNCTION, "This Xiron OS function is not supported!")
00706 XN_STATUS_MESSAGE(XN_STATUS_OS_FAILED_TO_CREATE_DIR, "Failed to create a directory!")
00707 XN_STATUS_MESSAGE(XN_STATUS_OS_FAILED_TO_DELETE_FILE, "Failed to delete a file!")
00708 XN_STATUS_MESSAGE(XN_STATUS_OS_FAILED_TO_CREATE_SHARED_MEMORY, "Failed to create shared memory!")
00709 XN_STATUS_MESSAGE(XN_STATUS_OS_FAILED_TO_OPEN_SHARED_MEMORY, "Failed to open shared memory!")
00710 XN_STATUS_MESSAGE(XN_STATUS_OS_FAILED_TO_CLOSE_SHARED_MEMORY, "Failed to close shared memory!")
00711 XN_STATUS_MESSAGE(XN_STATUS_USB_ALREADY_INIT, "The Xiron USB subsystem was already initialize!")
00712 XN_STATUS_MESSAGE(XN_STATUS_USB_NOT_INIT, "The Xiron USB subsystem was not initialized!")
00713 XN_STATUS_MESSAGE(XN_STATUS_USB_INIT_FAILED, "The Xiron USB subsystem failed to initialize!")
00714 XN_STATUS_MESSAGE(XN_STATUS_USB_SHUTDOWN_FAILED, "The Xiron USB subsystem failed to shutdown!")
00715 XN_STATUS_MESSAGE(XN_STATUS_USB_ENUMERATE_FAILED, "The Xiron USB subsystem failed to enumerate devices!")
00716 XN_STATUS_MESSAGE(XN_STATUS_USB_LOAD_FAILED, "The Xiron USB subsystem failed to load!")
00717 XN_STATUS_MESSAGE(XN_STATUS_USB_FREE_FAILED, "The Xiron USB subsystem failed to free!")
00718 XN_STATUS_MESSAGE(XN_STATUS_USB_REGISTER_FAILED, "The Xiron USB subsystem failed to register the device!")
00719 XN_STATUS_MESSAGE(XN_STATUS_USB_UNREGISTER_FAILED, "The Xiron USB subsystem failed to unregister the device!")
00720 XN_STATUS_MESSAGE(XN_STATUS_USB_DEVICE_NOT_VALID, "Invalid Xiron USB device handle!")
00721 XN_STATUS_MESSAGE(XN_STATUS_USB_ENDPOINT_NOT_VALID, "Invalid Xiron USB endpoint handle!")
00722 XN_STATUS_MESSAGE(XN_STATUS_USB_DRIVER_NOT_FOUND, "USB driver not found!")
00723 XN_STATUS_MESSAGE(XN_STATUS_USB_DEVICE_NOT_FOUND, "USB device not found!")
00724 XN_STATUS_MESSAGE(XN_STATUS_USB_DEVICE_OPEN_FAILED, "Failed to open the USB device!")
00725 XN_STATUS_MESSAGE(XN_STATUS_USB_DEVICE_CLOSE_FAILED, "Failed to close the USB device!")
00726 XN_STATUS_MESSAGE(XN_STATUS_USB_DEVICE_GETINFO_FAILED, "Failed to get information about the USB device!")
00727 XN_STATUS_MESSAGE(XN_STATUS_USB_CONFIG_QUERY_FAILED, "USB config query failed!")
00728 XN_STATUS_MESSAGE(XN_STATUS_USB_INTERFACE_QUERY_FAILED, "USB interface query failed!")
00729 XN_STATUS_MESSAGE(XN_STATUS_USB_ENDPOINT_QUERY_FAILED, "USB endpoint query failed!")
00730 XN_STATUS_MESSAGE(XN_STATUS_USB_SET_ENDPOINT_POLICY_FAILED, "Failed to set USB endpoint policy!")
00731 XN_STATUS_MESSAGE(XN_STATUS_USB_UNKNOWN_ENDPOINT_TYPE, "Unknown USB endpoint type!")
00732 XN_STATUS_MESSAGE(XN_STATUS_USB_UNKNOWN_ENDPOINT_DIRECTION, "Unknown USB endpoint direction!")
00733 XN_STATUS_MESSAGE(XN_STATUS_USB_GET_SPEED_FAILED, "Failed to get the device speed!")
00734 XN_STATUS_MESSAGE(XN_STATUS_USB_GET_DRIVER_VERSION, "Failed to get the USB driver version!")
00735 XN_STATUS_MESSAGE(XN_STATUS_USB_UNKNOWN_DEVICE_SPEED, "Unknown USB device speed!")
00736 XN_STATUS_MESSAGE(XN_STATUS_USB_CONTROL_SEND_FAILED, "Failed to send a USB control request!")
00737 XN_STATUS_MESSAGE(XN_STATUS_USB_CONTROL_RECV_FAILED, "Failed to receive a USB control request!")
00738 XN_STATUS_MESSAGE(XN_STATUS_USB_ENDPOINT_READ_FAILED, "Failed to read from a USB endpoint!")
00739 XN_STATUS_MESSAGE(XN_STATUS_USB_ENDPOINT_WRITE_FAILED, "Failed to write into a USB endpoint!")
00740 XN_STATUS_MESSAGE(XN_STATUS_USB_TRANSFER_TIMEOUT, "USB transfer timeout!")
00741 XN_STATUS_MESSAGE(XN_STATUS_USB_TRANSFER_STALL, "USB transfer stall!")
00742 XN_STATUS_MESSAGE(XN_STATUS_USB_TRANSFER_MICRO_FRAME_ERROR, "USB transfer micro frame error!")
00743 XN_STATUS_MESSAGE(XN_STATUS_USB_TRANSFER_UNKNOWN_ERROR, "Unknown USB transfer error!")
00744 XN_STATUS_MESSAGE(XN_STATUS_USB_ENDPOINT_NOT_FOUND, "USB endpoint not found on device!")
00745 XN_STATUS_MESSAGE(XN_STATUS_USB_WRONG_ENDPOINT_TYPE, "Wrong USB endpoint type requested!")
00746 XN_STATUS_MESSAGE(XN_STATUS_USB_WRONG_ENDPOINT_DIRECTION, "Wrong USB endpoint direction requested!")
00747 XN_STATUS_MESSAGE(XN_STATUS_USB_WRONG_CONTROL_TYPE, "Wrong USB control type requested!")
00748 XN_STATUS_MESSAGE(XN_STATUS_USB_UNSUPPORTED_ENDPOINT_TYPE, "Unsupported USB endpoint type!")
00749 XN_STATUS_MESSAGE(XN_STATUS_USB_GOT_UNEXPECTED_BYTES, "Got unexpected bytes in USB transfer!")
00750 XN_STATUS_MESSAGE(XN_STATUS_USB_TOO_MUCH_DATA, "Got too much data in USB transfer!")
00751 XN_STATUS_MESSAGE(XN_STATUS_USB_NOT_ENOUGH_DATA, "Didn't get enough data in USB transfer!")
00752 XN_STATUS_MESSAGE(XN_STATUS_USB_BUFFER_TOO_SMALL, "USB Buffer is too small!")
00753 XN_STATUS_MESSAGE(XN_STATUS_USB_OVERLAPIO_FAILED, "USB Overlapped I/O operation failed!")
00754 XN_STATUS_MESSAGE(XN_STATUS_USB_ABORT_FAILED, "Failed to abort USB endpoint!")
00755 XN_STATUS_MESSAGE(XN_STATUS_USB_FLUSH_FAILED, "Failed to flush USB endpoint!")
00756 XN_STATUS_MESSAGE(XN_STATUS_USB_RESET_FAILED, "Failed to reset USB endpoint!")
00757 XN_STATUS_MESSAGE(XN_STATUS_USB_SET_INTERFACE_FAILED, "Failed to set USB interface!")
00758 XN_STATUS_MESSAGE(XN_STATUS_USB_GET_INTERFACE_FAILED, "Failed to get USB interface!")
00759 XN_STATUS_MESSAGE(XN_STATUS_USB_READTHREAD_NOT_INIT, "Read thread is not initialized for this USB end point!")
00760 XN_STATUS_MESSAGE(XN_STATUS_USB_READTHREAD_ALREADY_INIT, "Read thread is already initialized for this USB end point!")
00761 XN_STATUS_MESSAGE(XN_STATUS_USB_READTHREAD_SHUTDOWN_FAILED, "Read thread failed to shutdown properly!")
00762 XN_STATUS_MESSAGE(XN_STATUS_USB_IS_BUSY, "USB is busy!")
00763 XN_STATUS_MESSAGE(XN_STATUS_USB_NOT_BUSY, "USB is not busy!")
00764 XN_STATUS_MESSAGE(XN_STATUS_USB_SET_CONFIG_FAILED, "Failed to set USB config!")
00765 XN_STATUS_MESSAGE(XN_STATUS_USB_GET_CONFIG_FAILED, "Failed to get USB config!")
00766 XN_STATUS_MESSAGE(XN_STATUS_USB_OPEN_ENDPOINT_FAILED, "Failed to open an USB endpoint!")
00767 XN_STATUS_MESSAGE(XN_STATUS_USB_CLOSE_ENDPOINT_FAILED, "Failed to close an USB endpoint!")
00768 XN_STATUS_MESSAGE(XN_STATUS_USB_ALREADY_OPEN, "A device is already opened!")
00769 XN_STATUS_MESSAGE(XN_STATUS_USB_TRANSFER_PENDING, "USB transfer is still pending!")
00770 XN_STATUS_MESSAGE(XN_STATUS_USB_INTERFACE_NOT_SUPPORTED, "USB interface is not supported!")
00771 XN_STATUS_MESSAGE(XN_STATUS_USB_FAILED_TO_REGISTER_CALLBACK, "Failed to register the USB device callback!")
00772 XN_STATUS_MESSAGE(XN_STATUS_OS_NETWORK_CONNECTION_CLOSED, "The network connection has been closed!")
00773 XN_STATUS_MESSAGE(XN_STATUS_OS_EVENT_OPEN_FAILED, "Xiron OS failed to open an event!")
00774 XN_STATUS_MESSAGE(XN_STATUS_OS_PROCESS_CREATION_FAILED, "Xiron OS failed to create a process!")
00775 XN_STATUS_MESSAGE(XN_STATUS_OS_SEMAPHORE_CREATION_FAILED, "Xiron OS Failed to create a semaphore!")
00776 XN_STATUS_MESSAGE(XN_STATUS_OS_SEMAPHORE_CLOSE_FAILED, "Xiron OS failed to close a semaphore!")
00777 XN_STATUS_MESSAGE(XN_STATUS_OS_SEMAPHORE_LOCK_FAILED, "Xiron OS failed to lock a semaphore!")
00778 XN_STATUS_MESSAGE(XN_STATUS_OS_SEMAPHORE_UNLOCK_FAILED, "Xiron OS failed to unlock a semaphore!")
00779 XN_STATUS_MESSAGE(XN_STATUS_OS_SEMAPHORE_TIMEOUT, "Xiron OS got a semaphore timeout!")
00780 XN_STATUS_MESSAGE(XN_STATUS_OS_INVALID_SEMAPHORE, "This Xiron OS semaphore is invalid!")
00781 XN_STATUS_MESSAGE(XN_STATUS_OS_ENV_VAR_NOT_FOUND, "The environment variable could not be found!")
00782 XN_STATUS_MESSAGE(XN_STATUS_USB_NO_REQUEST_PENDING, "There is no request pending!")
00783 XN_STATUS_MESSAGE(XN_STATUS_OS_FAILED_TO_DELETE_DIR, "Failed to delete a directory!")
00784 XN_STATUS_MESSAGE_MAP_END(XN_ERROR_GROUP_OS)
00785 
00786 #endif //__XN_OS_H__
00787