dio.h
上传用户:dahaojd
上传日期:2008-01-29
资源大小:14357k
文件大小:3k
源码类别:

DSP编程

开发平台:

C/C++

  1. /*
  2.  *  Copyright 2003 by Texas Instruments Incorporated.
  3.  *  All rights reserved. Property of Texas Instruments Incorporated.
  4.  *  Restricted rights to use, duplicate or disclose this code are
  5.  *  granted through contract.
  6.  *  
  7.  */
  8. /* "@(#) DDK 1.11.00.00 11-04-03 (ddk-b13)" */
  9. /*
  10.  *  ======== dio.h ========
  11.  *
  12.  */
  13. #ifndef DIO_
  14. #define DIO_
  15. #include <std.h>
  16. #include <dev.h>
  17. #include <sem.h>
  18. #include <iom.h>
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. /*
  23.  * Function table to be use with dynamically created TSK
  24.  */
  25. extern DEV_Fxns DIO_tskDynamicFxns;
  26. /*
  27.  * Function table to be use with statically created TSK
  28.  */
  29. extern DEV_Fxns DIO_tskStaticFxns;
  30. /*
  31.  * Function table to be use with dynamically created callback thread
  32.  */
  33. extern DEV_Fxns DIO_cbDynamicFxns;
  34. /*
  35.  * Function table to be use with statically created callback thread
  36.  */
  37. extern DEV_Fxns DIO_cbStaticFxns;
  38. /*
  39.  *  ======== DIO_Params ========
  40.  */
  41. typedef struct DIO_Params {
  42.     String      name;           /* name of mini driver */
  43.     Ptr         chanParams;     /* optional mini driver create argument */
  44. } DIO_Params;
  45. /*
  46.  * ======== DIO_Obj ========
  47.  * In TSK version, there will contain a complete and ready semaphore.
  48.  * In callback version, there will be a DEV_Callback object which
  49.  * contains a function and two arguments
  50.  */
  51. typedef struct DIO_Obj {        
  52.     IOM_Fxns    *fxns;                  /* mini-driver function table */
  53.     Ptr         chanp;                  /* mini-driver handle */
  54.     union context {
  55.         struct sems {
  56.             SEM_Handle  complete;       /* tasks wait for I/O here */
  57.             SEM_Handle  ready;          /* used by DIO_ready */
  58.         } sems; 
  59.         DEV_Callback    cb;             /* use by callback version */
  60.     } context;
  61. } DIO_Obj;
  62. typedef DIO_Obj *DIO_Handle;            /* device object handle */
  63. extern Void DIO_init(Void);
  64. extern Int  DIO_ctrl(DEV_Handle device, Uns cmd, Arg arg);
  65. extern Int  DIO_cbIdle(DEV_Handle device, Bool flush);
  66. extern Int  DIO_cbIssue(DEV_Handle device);
  67. extern Bool DIO_cbReady(DEV_Handle device, SEM_Handle sem);
  68. extern Int  DIO_cbReclaim(DEV_Handle device);
  69. extern Void DIO_cbCallback(Ptr devp, DEV_Frame *frame);
  70. extern Int  DIO_tskIdle(DEV_Handle device, Bool flush);
  71. extern Int  DIO_tskIssue(DEV_Handle device);
  72. extern Bool DIO_tskReady(DEV_Handle device, SEM_Handle sem);
  73. extern Int  DIO_tskReclaim(DEV_Handle device);
  74. extern Void DIO_tskCallback(Ptr devp, DEV_Frame *frame);
  75. #ifdef __cplusplus
  76. }
  77. #endif /* extern "C" */
  78. #endif /* DIO_ */