FVID的一些函數說明


FVID 函數:


FVID_create()作用:是分配並初始化FVID通道對象;


語法:fvidChan = FVID_create (name, mode, *status, optArgs, *attrs);

參數定義:

String name            /* handle to an instance of the device */

Int mode               /* pointer to buffer allocated by driver */

Int *status            /* pointer to size of buffer pointed to by */

Ptr optArgs            /* */

FVID_Attrs *attrs      /* */

其中:

name是設備實例的句柄,是一個字符串mode 是選擇的模式,只有兩個值:IOM_INPUT 設置採集模式,IOM_OUTPUT設置顯示模式。

status是由下層mini driver返回的狀態值。

attrs 是指向FVID_Attrs結構的指針:

FVID_Attrs的定義如下:

typedef struct FVID_Attrs {

                          Uns timeout;
                           } FVID_Attrs;


timeout成員用來指定旗語同步,它的值可以是:

SYS_FOREVER:會讓FVID_alloc, FVID_free and FVID_exchange的調用不確定的等待到這個調用完成.

數字的timeout值會讓這些APIs阻塞一段指定的時間(以系統時鐘). 0值會讓APIs不阻塞,他們會立刻返回,這種情況下,應用程序會檢查返回的status值來保證調用已經成功完成.

備註:FVID_alloc, FVID_free 和 FVID_exchange 的調用只能在 DSP/BIOS task (TSK).

FVID_create的返回值:

如果通道成功的打開了,那麼FVID_create返回一個指向通道的句柄.這個句柄可以用來讓後來的模塊調用這個通道.

實列:

/* Initialize the attributes */

FVID_ATTRS dispAttrs = FVID_ATTRS;

/* Create an instance to a video display device */ chan-

Handle = FVID_create(“\display0”, IOM_INPUT, NULL, NULL,&dispAttrs);




FVID_control()作用是:發送一個控制命令給下層的mini_driver

語法: status = FVID_control (fvidChan, cmd, args);

參數定義:

   FVID_Handle fvidChan    /* handle to an instance of the device */

      Int cmd                 /* control command */

      Ptr args                /* pointer to control command arguments */

      Return Value Int status /* returns IOM_COMPLETED if successful */

參數說明:

    fvidChan 是FVID_create()創建的指向通道的句柄。

    cmd有兩個值:IOM_ABORT----作用是中止所以的未定的I/O工作。

                     IOM_FLUSH----作用是所以採集口的工作被丟棄,所以顯示I/O的工作正常進行。

    Args 是要傳遞的命令(參數或者結構體)的指針。

    返回值:如果調用成功,FVID_control返回IOM_COMPLETED .如果有錯誤產生,這個調用會返回一個負值。

實例:

/* abort all pending video driver I/O jobs */

FVID_control(fvidChan, IOM_ABORT, NULL);

FVID-alloc()作用:申請獲得驅動程序緩存單元。

語法:status = FVID_alloc (fvidChan, bufp);

參數定義:

       FVID_Handle fvidChan /* handle to an instance of the device */

       Ptr bufp /* pointer to buffer allocated by driver */

       Return Value Int status /* returns IOM_COMPLETED if successful */

參數說明:

       fvidChan 是FVID_create()創建的指向通道的句柄。

       bufp 是輸出參數,指向所申請的驅動緩存空間的指針。

       返回值:如果調用成功,FVID_alloc()返回IOM_COMPLETED,如果有錯誤產生,這個調用會返回一個負值。

       備註:這個函數只能是在外設已經加載和初始化之後才能調用。其中的句柄應該由FVID_create()函數提供。

       實例:

/* allocate a buffer from the device */

status = FVID_alloc(chanHandle, dispBuf);




FVID_exchange()作用:交換應用程序和驅動程序緩存空間,實際作用相當於FVID_free()和FVID_alloc()函數的組合。

語法: status = FVID_exchange (fvidChan, bufp);

參數定義:

      FVID_Handle fvidChan /* handle to an instance of the device */

      Ptr bufp /* pointer to buffer exchanged by driver */

      LgUns *pSize /* pointer to size of buffer pointed to by bufp */

參數說明:

      fvidChan 是FVID_create()創建的指向通道的句柄。

      bufp 是輸入輸出參數,剛開始指向的是應用程序需要交換的緩存空間,交換後,指向與驅動程序進行緩存空間交換後的內存空間。

      pSize 是指向bufp內存大小的指針。

返回值:如果調用成功,FVID_exchange()返回IOM_COMPLETED,如果有錯誤產生,這個調用會返回一個負值。

      備註:這個函數只能是在外設已經加載和初始化之後才能調用。其中的句柄應該由FVID_create()函數提供。

實例:

/* allocate a buffer from the device */

status = FVID_exchange(chanHandle, dispBuf);




FVID_free()作用:釋放返回應用程序申請的緩存給驅動程序

語法: status = FVID_free (fvidChan, bufp);

參數定義:

       FVID_Handle fvidChan /* handle to an instance of the device */

       Ptr bufp /* pointer to buffer to be relinquished to driver */

       LgUns *pSize /* pointer to size of buffer pointed to by bufp */

參數說明:

      fvidChan 是FVID_create()創建的指向通道的句柄。

      bufp 是輸入參數,指向的是應用程序需要釋放返回的緩存空間。

      pSize 是指向bufp內存大小的指針。

返回值:如果調用成功,FVID_free()返回IOM_COMPLETED,如果有錯誤產生,這個調用會返回一個負值。

備註:這個函數只能是在外設已經加載和初始化之後才能調用。其中的句柄應該由FVID_create()函數提供。

實例:

Example /* free a buffer back to the device */

status = FVID_free(chanHandle, dispBuf);




FVID_delete()作用: 申請關閉一個FVID channel 對象。

語法: status = FVID_delete (fvidChan);

參數定義:

       FVID_Handle fvidChan /* handle to an instance of the device */

參說說明:

       fvidChan 是FVID_create()創建的指向通道的句柄。

返回值:如果調用成功,FVID_delete()返回IOM_COMPLETED,如果有錯誤產生,這個調用會返回一個負值。

備註:這個函數只能是在外設已經加載和初始化之後才能調用。其中的句柄應該由FVID_create()函數提供。

實例:

Example /* allocate a buffer from the device */


status = FVID_delete(chanHandle);
發佈了13 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章