Engine.h

Go to the documentation of this file.
00001 /* 
00002  * Copyright (c) 2010, Texas Instruments Incorporated
00003  * All rights reserved.
00004  *
00005  * Redistribution and use in source and binary forms, with or without
00006  * modification, are permitted provided that the following conditions
00007  * are met:
00008  *
00009  * *  Redistributions of source code must retain the above copyright
00010  *    notice, this list of conditions and the following disclaimer.
00011  *
00012  * *  Redistributions in binary form must reproduce the above copyright
00013  *    notice, this list of conditions and the following disclaimer in the
00014  *    documentation and/or other materials provided with the distribution.
00015  *
00016  * *  Neither the name of Texas Instruments Incorporated nor the names of
00017  *    its contributors may be used to endorse or promote products derived
00018  *    from this software without specific prior written permission.
00019  *
00020  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00021  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
00022  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
00023  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
00024  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00025  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
00026  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
00027  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
00028  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
00029  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
00030  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00031  * 
00032  */
00033 /*
00034  *  ======== Engine.h ========
00035  */
00036 
00049 #ifndef Engine_
00050 #define Engine_
00051 
00052 #ifdef __cplusplus
00053 extern "C" {
00054 #endif
00055 
00056 
00057 #include <ti/sdo/ce/Server.h>
00058 #include <ti/sdo/ce/ipc/Comm.h>
00059 #include <ti/xdais/ialg.h>
00060 #include <ti/sdo/ce/node/node.h>
00061 
00062 #include <stddef.h> /* def of size_t */
00063 #include <stdio.h>  /* def of FILE * */
00064 
00067 
00071 #define Engine_GTNAME "CE"
00072 
00076 typedef struct Engine_Obj *Engine_Handle;
00077 
00081 typedef Int Engine_Error;
00082 
00083 #define Engine_EOK          0   
00084 #define Engine_EEXIST       1   
00085 #define Engine_ENOMEM       2   
00086 #define Engine_EDSPLOAD     3   
00087 #define Engine_ENOCOMM      4   
00090 #define Engine_ENOSERVER    5   
00091 #define Engine_ECOMALLOC    6   
00092 #define Engine_ERUNTIME     7   
00093 #define Engine_ECODECCREATE 8   
00094 #define Engine_ECODECSTART  9   
00099 #define Engine_EINVAL       10  
00100 #define Engine_EBADSERVER   11  
00101 #define Engine_ENOTAVAIL    12  
00102 #define Engine_EWRONGSTATE  13  
00103 #define Engine_EINUSE       14  
00106 #define Engine_ENOTFOUND    15  
00107 #define Engine_ETIMEOUT     16  
00114 typedef struct Engine_NodeObj *Engine_Node;
00115 
00119 #define Engine_FOREVER Comm_FOREVER
00120 
00128 typedef struct Engine_Attrs {
00129     String procId;  
00133 } Engine_Attrs;
00134 
00140 typedef struct Engine_AlgInfo {
00141     Int         algInfoSize;    
00142     String      name;           
00143     String      *typeTab;       
00144     Bool        isLocal;        
00145 } Engine_AlgInfo;
00146 
00157 typedef struct Engine_AlgInfo2 {
00158     Int         algInfoSize;    
00159     String      name;           
00160     String      types;          
00161     Bool        isLocal;        
00162 } Engine_AlgInfo2;
00163 
00167 extern Engine_Attrs Engine_ATTRS;    
00171 typedef Int Engine_Ctrl;
00172 
00173 #define Engine_CEXIT    0
00174 #define Engine_MAXSEGNAMELENGTH 32
00175 
00181 typedef enum Engine_CachedMemType {
00182     Engine_USECACHEDMEM_DEFAULT = -1,  
00183     Engine_USECACHEDMEM_NONCACHED = 0, 
00184     Engine_USECACHEDMEM_CACHED = 1     
00185 } Engine_CachedMemType;
00186 
00187 
00188 /*
00189  *  ======== Engine_AlgDesc ========
00190  */
00191 typedef struct Engine_AlgDesc {
00192     String      name;           
00193     NODE_Uuid   uuid;           
00194     IALG_Fxns   *fxns;          
00195     Ptr         idmaFxns;       
00196     String      *typeTab;       
00197     Bool        isLocal;        
00198     Int         groupId;        
00199     Int         rpcProtocolVersion; 
00200     Ptr         iresFxns;       
00201     Void        *codecClassConfig; 
00202     Engine_CachedMemType memType;  
00212     String      types;
00213 } Engine_AlgDesc;
00214 
00215 /*
00216  *  ======== Engine_AlgCreateAttrs ========
00217  */
00218 typedef struct Engine_AlgCreateAttrs {
00219     Bool            useExtHeap; 
00224     Int             priority;   
00226 } Engine_AlgCreateAttrs;
00227 
00228 /*
00229  *  ======== Engine_Desc ========
00230  */
00231 typedef struct Engine_Desc {
00232     String          name;       
00233     Engine_AlgDesc  *algTab;    
00234     String          remoteName; 
00235     String          linkCfg;    
00236     Int             numAlgs;    
00238 } Engine_Desc;
00239 
00240 /*
00241  *  ======== Engine_Config ========
00242  */
00243 typedef struct Engine_Config {
00244     Engine_Desc *engineTab;
00245     String      localEngine;
00246 } Engine_Config;
00247 
00248 /*
00249  *  ======== Engine_MemStat ========
00250  *  This structure must match Server_MemStat.
00251  */
00252 typedef struct Engine_MemStat {
00253     Char   name[Engine_MAXSEGNAMELENGTH + 1]; /* Name of memory segment */
00254     Uint32 base;           /* Base address of memory segment */
00255     Uint32 size;           /* Original size of the memory segment. */
00256     Uint32 used;           /* Number of bytes used. */
00257     Uint32 maxBlockLen;    /* Size of the largest contiguous free block. */
00258 } Engine_MemStat;
00259 
00260 /* Default alg create attributes */
00261 extern Engine_AlgCreateAttrs Engine_ALGCREATEATTRS;
00262 
00263 /*
00264  *  ======== Engine_config ========
00265  */
00266 extern Engine_Config Engine_config;
00267 
00268 /*
00269  *  ======== Engine_addStubFxns ========
00270  */
00282 extern Engine_Error Engine_addStubFxns(String fxnsName, IALG_Fxns *fxns);
00283 
00284 /*
00285  *  ======== Engine_call ========
00286  */
00287 extern Int Engine_call(Engine_Node node, Comm_Msg *msg);
00288 
00289 /*
00290  *  ======== Engine_callAsync ========
00291  */
00292 extern Int Engine_callAsync(Engine_Node node, Comm_Msg *msg);
00293 
00294 /*
00295  *  ======== Engine_callWait ========
00296  */
00297 extern Int Engine_callWait(Engine_Node node, Comm_Msg *msg, UInt timeout);
00298 
00299 /*
00300  *  ======== Engine_initFromServer ========
00301  */
00302 extern Engine_Error Engine_initFromServer(Engine_Handle engine);
00303 
00304 /*
00305  *  ======== Engine_ctrlNode ========
00306  */
00307 extern Int Engine_ctrlNode(Engine_Node node, Comm_Msg *msg, Engine_Ctrl code);
00308 
00311 /*
00312  *  ======== Engine_close ========
00313  */
00328 extern Void Engine_close(Engine_Handle engine);
00329 
00331 /*
00332  *  ======== Engine_createNode ========
00333  */
00359 extern Engine_Node Engine_createNode(Engine_Handle engine, String name,
00360     size_t msgSize, IALG_Params *nodeAttrs, Engine_AlgCreateAttrs *attrs);
00361 
00362 
00363 /*
00364  *  ======== Engine_createNode2 ========
00365  */
00396 extern Engine_Node Engine_createNode2(Engine_Handle engine, String name,
00397     size_t msgSize, IALG_Params *nodeAttrs, Int nodeAttrsSize,
00398     Engine_AlgCreateAttrs *attrs);
00399 
00400 
00401 /*
00402  *  ======== Engine_deleteNode ========
00403  */
00404 extern Void Engine_deleteNode(Engine_Node node);
00405 
00406 /*
00407  *  ======== Engine_getAlgMemRecs ========
00408  */
00422 extern Engine_Error Engine_getAlgMemRecs(Engine_Node node, IALG_MemRec *memTab, Int size,
00423         Int *numRecs);
00424 
00425 /*
00426  *  ======== Engine_getAlgNumRecs ========
00427  */
00439 extern Engine_Error Engine_getAlgNumRecs(Engine_Node node, Int *numRecs);
00440 
00441 /*
00442  *  ======== Engine_getConstName ========
00443  */
00444 extern String Engine_getConstName(Engine_Handle engine, String name,
00445     String type);
00446 
00447 /*
00448  *  ======== Engine_getFxns ========
00449  */
00450 extern IALG_Fxns *Engine_getFxns(Engine_Handle svr, String name, String type,
00451         Bool *isLocal, Ptr *idmaFxns, Ptr *iresFxns, Int *groupId,
00452         Engine_CachedMemType *memType);
00453 
00454 /*
00455  *  ======== Engine_getMemId ========
00456  */
00457 extern Int Engine_getMemId(Engine_Handle engine);
00458 
00459 /*
00460  *  ======== Engine_getLocalEngine ========
00461  */
00462 extern Engine_Handle Engine_getLocalEngine(Void);
00463 
00464 /*
00465  *  ======== Engine_getEngine ========
00466  */
00467 extern Engine_Handle Engine_getEngine(Engine_Node node);
00468 
00469 /*
00470  *  ======== Engine_getMemStat ========
00471  */
00472 extern Engine_Error Engine_getMemStat(Server_Handle server, Int segNum,
00473     Engine_MemStat *stat);
00474 
00475 /*
00476  *  ======== Engine_getNumServerAlgs ========
00477  */
00478 extern Engine_Error Engine_getNumServerAlgs(Server_Handle server, Int *nAlgs);
00479 
00480 /*
00481  *  ======== Engine_getServerAlgInfo ========
00482  */
00483 extern Engine_Error Engine_getServerAlgInfo(Server_Handle server, Int algNum,
00484         Engine_AlgInfo *algInfo);
00485 
00486 /*
00487  *  ======== Engine_getNumMemSegs ========
00488  */
00489 extern Engine_Error Engine_getNumMemSegs(Server_Handle server, Int *numSegs);
00490 
00491 /*
00492  *  ======== Engine_hasServer ========
00493  */
00494 extern Bool Engine_hasServer(Engine_Handle engine);
00495 
00496 /*
00497  *  ======== Engine_init ========
00498  */
00499 extern Void Engine_init(Void);
00500 
00501 /*
00502  *  ======== Engine_getRemoteVisa ========
00503  */
00504 extern UInt32 Engine_getRemoteVisa(Engine_Node node);
00505 
00506 /*
00507  *  ======== Engine_getCodecClassConfig ========
00508  */
00509 extern Ptr Engine_getCodecClassConfig(Engine_Handle engine, String name,
00510     String type);
00511 
00512 /*
00513  *  ======== Engine_getNodeQueues ========
00514  */
00515 extern Void Engine_getNodeQueues(Engine_Node node, Comm_Queue *stdIn,
00516         Comm_Queue *stdOut);
00517 
00518 /*
00519  *  ======== Engine_redefineHeap ========
00520  */
00521 extern Engine_Error Engine_redefineHeap(Server_Handle server, String name,
00522         Uint32 base, Uint32 size);
00523 
00524 /*
00525  *  ======== Engine_releaseTraceToken ========
00526  */
00527 extern Bool Engine_releaseTraceToken(Server_Handle server);
00528 
00529 /*
00530  *  ======== Engine_requestTraceToken ========
00531  */
00532 extern Engine_Error Engine_requestTraceToken(Server_Handle server);
00533 
00534 /*
00535  *  ======== Engine_restoreHeap ========
00536  */
00537 extern Engine_Error Engine_restoreHeap(Server_Handle server, String name);
00538 
00541 /*
00542  *  ======== Engine_open ========
00543  */
00586 extern Engine_Handle Engine_open(String name, Engine_Attrs *attrs,
00587     Engine_Error *ec);
00588 
00589 /*
00590  *  ======== Engine_fwriteTrace ========
00591  */
00617 extern Int Engine_fwriteTrace(Engine_Handle engine, String prefix, FILE *out);
00618 
00619 /*
00620  *  ======== Engine_getAlgInfo ========
00621  */
00656 extern Engine_Error Engine_getAlgInfo(String name, Engine_AlgInfo *algInfo,
00657         Int index);
00658 
00659 /*
00660  *  ======== Engine_getAlgInfo2 ========
00661  */
00707 extern Engine_Error Engine_getAlgInfo2(String name, Engine_Handle engine,
00708         Engine_AlgInfo2 *algInfo2, Int index);
00709 
00710 /*
00711  *  ======== Engine_getCpuLoad ========
00712  */
00741 extern Int Engine_getCpuLoad(Engine_Handle engine);
00742 
00743 /*
00744  *  ======== Engine_getLastError ========
00745  */
00757 extern Engine_Error Engine_getLastError(Engine_Handle engine);
00758 
00759 /*
00760  *  ======== Engine_getName ========
00761  */
00770 extern String Engine_getName(Engine_Handle engine);
00771 
00772 
00773 /*
00774  *  ======== Engine_getNumAlgs ========
00775  */
00799 extern Engine_Error Engine_getNumAlgs(String name, Int *numAlgs);
00800 
00801 /*
00802  *  ======== Engine_getNumAlgs2 ========
00803  */
00844 extern Engine_Error Engine_getNumAlgs2(String name, Engine_Handle engine,
00845         Int *numAlgs);
00846 
00847 /*
00848  *  ======== Engine_getServer ========
00849  */
00864 extern Server_Handle Engine_getServer(Engine_Handle engine);
00865 
00866 
00867 /*
00868  *  ======== Engine_getUsedMem ========
00869  */
00896 extern UInt32 Engine_getUsedMem(Engine_Handle engine);
00897 
00898 
00899 /*
00900  *  ======== Engine_setTrace ========
00901  */
00921 extern Int Engine_setTrace(Engine_Handle engine, String mask);
00922 
00925 #ifdef __cplusplus
00926 }
00927 #endif
00928 
00929 #endif
00930 /*
00931  *  @(#) ti.sdo.ce; 1, 0, 6,432; 12-2-2010 21:19:07; /db/atree/library/trees/ce/ce-r11x/src/ xlibrary
00932 
00933  */
00934 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines

Copyright 2010, Texas Instruments Incorporated