zoukankan      html  css  js  c++  java
  • 【DM642学习笔记五】FVID驱动模型 API函数

    1、FVID_control

    作用:发送一个控制命令到mini_driver

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

    参数:

    FVID_HandlefvidChan           

                Intcmd                        

                 Ptrargs                       

                 Return Value Int status

    参数说明:

    fvidChan是FVID_create()创建的指向通道的句柄.

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

                  IOM_FLUSH----作用是所以采集口的工作被丢弃,所以显示I/O的工作正常进行.

    返回值:

       如果调用成功,FVID_control返回IOM_COMPLETED .如果有错误产生,这个调用会返回一个负值.

    Example:

     

    FVID_control(fvidChan,IOM_ABORT, NULL);

    2、FVID_create()

       作用:分配并初始化FVID通道对象;

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

    Stringname                 

    Intmode                    

    Int*status                 

    PtroptArgs                 

    FVID_Attrs*attrs           

    其中:name是设备实例的句柄,是一个字符串

    mode 是选择的模式,只有两个值:IOM_INPUT设置采集模式,IOM_OUTPUT设置显示模式.

    status是The status argument isan out parameter that this function fills with a pointer to thestatus that was returned by the mini-driver.

    attrs 是指向FVID_Attrs结构的指针:

    FVID_Attrs的定义如下:typedefstruct FVID_Attrs

                  {

                                                           Uns timeout;

                                                          } FVID_Attrs;

    timeout成员用来指定旗语同步,它的值可以是:

    1.     >SYS_FOREVER:会让FVID_alloc, FVID_free andFVID_exchange的调用不确定的等待到这个调用完成.

    2.     >数字的timeout值会让这些APIs阻塞一段指定的时间(以系统时钟).

    3.     >0值会让APIs不阻塞,他们会立刻返回,这种情况下,应用程序会检查返回的status值来保证调用已经成功完成.

    备注:FVID_alloc, FVID_free andFVID_exchange 的调用只能在 DSP/BIOS task (TSK).

    ·        FVID_create的返回值:

    如果通道成功的打开了,那么FVID_create返回一个指向通道的句柄.这个句柄可以用来让后来的模块调用这个通道.

    Example

    FVID_ATTRS dispAttrs =FVID_ATTRS;

    chan-

    Handle =FVID_create(“display0”, IOM_INPUT, NULL, NULL,

    &dispAttrs);

    3、FVID.h的定义

     

    #defineFVID_BASE      IOM_USER

    #defineFVID_ALLOC     (FVID_BASE + 0)
      #defineFVID_FREE      (FVID_BASE + 1)
      #define FVID_EXCHANGE  (FVID_BASE + 2)

    typedef GIO_HandleFVID_Handle;

    typedef struct FVID_IFrame{
        Char*y1;
        Char*cb1;
        Char*cr1;
        Char*y2;
        Char*cb2;
        Char*cr2;
    }FVID_IFrame;


    typedef struct FVID_PFrame {
        Char*y;
        Char*cb;
        Char*cr;
    } FVID_PFrame;



    typedef struct FVID_RawIFrame{
        Char*buf1;   
        Char*buf2;   
    } FVID_RawIFrame;

    typedef structFVID_RawPFrame{
        Char*buf;   
    } FVID_RawPFrame;


    typedef struct FVID_Frame {
       QUE_Elem       queElement;
        union{
           FVID_IFrame    iFrm;    
           FVID_PFrame    pFrm;    
           FVID_RawIFrame riFrm;   
           FVID_RawPFrame rpFrm;   
        }frame;   
    } FVID_Frame;


    #define FVID_alloc(gioChan, bufp)
           GIO_submit(gioChan, FVID_ALLOC, bufp, NULL, NULL)



    #define FVID_control(gioChan, cmd, args)
           GIO_control(gioChan, cmd, args)



    #define  FVID_create(name, mode, status, optArgs,attrs)
           GIO_create(name, mode, status, optArgs, attrs)



    #define FVID_delete(gioChan)
           GIO_delete(gioChan)



    #define FVID_exchange(gioChan, bufp)
           GIO_submit(gioChan, FVID_EXCHANGE, bufp, NULL, NULL)

     


    #define FVID_free(gioChan, bufp)
           GIO_submit(gioChan, FVID_FREE, bufp, NULL, NULL)


    #ifdef __cplusplus
    }
    #endif

    #endif

  • 相关阅读:
    修复跨站攻击 php
    nginx 网站目录重写
    centos Linux 统计某个文件夹占用空间大小
    FCKeditor使用方法技术详解
    使用stl超时的问题
    __int64 和long long
    POJ1426 Find The Multiple
    搜索BFS---hdu2717
    memset的用法
    汉诺塔 HDU2064 (递归)注意类型!!longlong
  • 原文地址:https://www.cnblogs.com/eaglediao/p/7136535.html
Copyright © 2011-2022 走看看