pio.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.  *  ======== pio.h ========
  11.  * 
  12.  *  Header file for pio.c, which allows a PIP to interface to an
  13.  *  IOM. As implemented only one IOM driver may be used, and may only be
  14.  *  used with a single input and single output channel. You may modify
  15.  *  this code to enable more channels and drivers.
  16.  *
  17.  *  See the comments below for how to configure a DSP/BIOS application
  18.  *  which uses this code.
  19.  */
  20. #ifndef PIO_
  21. #define PIO_
  22. #include <pip.h>
  23. #include <que.h>
  24. #include <iom.h>
  25. #ifdef __cplusplus
  26. extern "C" {
  27. #endif
  28. #define PIO_MAXPACKETS  2
  29. typedef struct PIO_Attrs {
  30.     Ptr openArgs;
  31. } PIO_Attrs;
  32. extern PIO_Attrs PIO_ATTRS;     // default PIO_Attrs structure
  33. typedef struct PIO_Obj
  34. {
  35.     Uns         submitCount;    // keep track of frames submitted
  36.     IOM_Fxns    *fxns;          // pointer to mini-driver function table
  37.     Uns         mode;           // IOM_INPUT, IOM_OUTPUT or IOM_INOUT
  38.     PIP_Curdesc *curdesc;       // used to access pipe on submit side
  39.     PIP_Handle  pip;            // pointer to associated pipe
  40.     Ptr         mdChan;         // pointer to mini-driver state object
  41.     QUE_Obj     freeList;       
  42.     IOM_Packet  packet[PIO_MAXPACKETS]; // available frames for I/O operations
  43. } PIO_Obj, *PIO_Handle;
  44. /*
  45.  * PIO_ctrl() passes parameters straight through to the mini-driver
  46.  */
  47. #define PIO_ctrl(pio, cmd, args) 
  48.         (pio)->fxns->mdControlChan((pio)->mdChan, cmd, args)
  49. /*
  50.  *  PIO module initialization   
  51.  */
  52. extern Void PIO_init(Void);
  53. /*
  54.  * PIO_new() must be called to initialize the I/O prior to any
  55.  * transfers occuring. Pass in the pointer to the PIO object and pointer
  56.  * to PIP object to associate with that channel. The last argument is for
  57.  * various attributes including a generic argument to be passed to IOM 
  58.  * create, it may be NULL. You would typically call PIO_new() from main.
  59.  */
  60. extern Void PIO_new(PIO_Handle pio, PIP_Handle pip, String name, Int mode,
  61.                         PIO_Attrs *attrs);
  62. /*
  63.  *  PIO_txPrime should be configured as the reader notify
  64.  *  function for output pipes.
  65.  *  PIO_rxPrime should be configured as the writer notify
  66.  *  function of input pipes.
  67.  */
  68. extern Void PIO_rxPrime(PIO_Handle pio);
  69. extern Void PIO_rxStart (PIO_Handle pio, Uns frameCount);
  70. extern Void PIO_txPrime(PIO_Handle pio);
  71. extern Void PIO_txStart (PIO_Handle pio, Uns frameCount, Uns initialValue);
  72. #ifdef __cplusplus
  73. }
  74. #endif /* extern "C" */
  75. #endif /* PIO_ */