FVID 函數:
FVID_create()作用:是分配並初始化FVID通道對象;
參數定義:
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);
語法: 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);