www.pudn.com > motiotest.rar > icell.h
/* * Copyright 2003 by Texas Instruments Incorporated. * All rights reserved. Property of Texas Instruments Incorporated. * Restricted rights to use, duplicate or disclose this code are * granted through contract. * */ /* "@(#) ReferenceFrameworks 2.20.00.08 07-18-03 (swat-f02)" */ /* * ======== icell.h ======== * This file defines the cell interface. A cell is an encapsulation * of an algorithm. It allows a standard interface to the algorithms * runtime execution functions (e.g. apply(), decode(), etc.). */ #ifndef _ICELL_ #define _ICELL_ #include#include #ifdef __cplusplus extern "C" { #endif typedef struct ICELL_Obj *ICELL_Handle; /* * ICELL_Fxns * ---------- * This structure defines the functions that must be supplied for * all cells. * * cellClose() - Used to clean-up or de-allocate resources used by * the cell (e.g. DMA resources, statistics, etc.). * This function does not free the algorithm. This * function should be called before the algorithm is * freed. This is an optional function. * * cellControl() - Used to call the control functions of the * algorithm. This is an optional function. * * cellExecute() - Used to call the runtime execution functions of the * algorithm. This is an required function. * * cellOpen() - Used to initialize or allocate resources used by * the cell (e.g. DMA resources, statistics, etc.). * This function does not allocate the algorithm. This * function should be called after the algorithm is * allocated. This is an optional function. */ typedef struct ICELL_Fxns { Bool (*cellClose )(ICELL_Handle handle); Int (*cellControl)(ICELL_Handle handle, IALG_Cmd cmd, IALG_Status *status); Bool (*cellExecute)(ICELL_Handle handle, Arg arg); Bool (*cellOpen )(ICELL_Handle handle); } ICELL_Fxns; /* * ICELL_Obj * --------- * This structure is used to define a cell. */ typedef struct ICELL_Obj { Int size; /* Number of MAU in the structure */ String name; /* User chosen name. */ ICELL_Fxns *cellFxns; /* Ptr to cell v-table function. */ Ptr cellEnv; /* Ptr to user defined cell env. struct */ IALG_Fxns *algFxns; /* Ptr to alg v-table functions. */ IALG_Params *algParams; /* Ptr to alg parameters. */ IALG_Handle algHandle; /* Handle of alg managed by cell. */ Uns scrBucketIndex; /* Scratch bucket for XDAIS scratch mem. */ ICC_Handle *inputIcc; /* Array of input ICC objects */ Uns inputIccCnt; /* # of ICC objects in the input array */ ICC_Handle *outputIcc; /* Array of output ICC objects */ Uns outputIccCnt; /* # of ICC objects in the output array */ } ICELL_Obj; #define ICELL_DEFAULT { \ sizeof(ICELL_Obj), /* Number of MAU in the structure */ \ "", /* User chosen name. */ \ NULL, /* Ptr to cell v-table function. */ \ NULL, /* Ptr to user defined cell env. struct */ \ NULL, /* Ptr to alg v-table functions. */ \ NULL, /* Ptr to alg parameters. */ \ NULL, /* Handle of alg managed by cell. */ \ 0, /* Scratch bucket for XDAIS scratch mem. */ \ NULL, /* Array of input ICC objects */ \ 0, /* # of ICC objects in the input array */ \ NULL, /* Array of output ICC objects */ \ 0 /* # of ICC objects in the output array */ \ } #ifdef __cplusplus } #endif // extern "C" #endif // _ICELL_