Ejemplo n.º 1
0
void
ccnet_processor_send_request (CcnetProcessor *processor,
                              const char *request)
{
    ccnet_peer_send_request (processor->peer, REQUEST_ID (processor->id), 
                             request);
}
Ejemplo n.º 2
0
void
ccnet_processor_send_request (CcnetProcessor *processor,
                              const char *request)
{
    ccnet_client_send_request (processor->session,
                               REQUEST_ID (processor->id),
                               request);
}
Ejemplo n.º 3
0
void
ccnet_processor_send_request_l (CcnetProcessor *processor, ...)
{
    va_list ap;
    GString *buf = g_string_new(NULL);
    char *arg;
    
    va_start (ap, processor);
    arg = va_arg (ap, char *);
    while (arg) {
        g_string_append (buf, arg);
        arg = va_arg (ap, char *);        
    }
    va_end (ap);

    ccnet_peer_send_request (processor->peer,
                             REQUEST_ID (processor->id), buf->str); 
    g_string_free (buf, TRUE);
}
Ejemplo n.º 4
0
int vid_cmd_proc(tcpc_t c) 
{
    struct wcamcli  *wc     = c->arg;
    struct vid      *v      = wc->srv->vid;
    __u8            *req    = wc->req;
    __u8            *rsp    = wc->rsp;
    __u8            id      = req[CMD1_POS];
    __u8            status  = ERR_SUCCESS;
    __u8            dat[FRAME_DAT_MAX];
    __u32           pos, len, size;

    switch (id) {
    case REQUEST_ID(VID_GET_UCTL):
        vid_get_uctl(v, &req[DAT_POS], dat);
        build_and_send_rsp(c, (TYPE_SRSP << TYPE_BIT_POS) | SUBS_VID,
                           id, 4, dat);
		break;
    case REQUEST_ID(VID_GET_UCTLS):
        /*   
         * 应答帧结构: 字节 / 字段名称
         * 1    | 2    | 4                      | 长度由4字节数据部分指定
         * 长度 | 命令 | 数据(控制项列表大小)   | 控制项列表
         */
        len = sizeof(__u32);
        pos = FRAME_HDR_SZ + len;
        size = vid_get_uctls(v, &rsp[pos]);
        build_rsp(rsp, (TYPE_SRSP << TYPE_BIT_POS) | SUBS_VID, id, len, (__u8*)&size);
        tcpc_send(c, rsp, pos + size);
		break;
    case REQUEST_ID(VID_SET_UCTL):
        vid_set_uctl(v, &req[DAT_POS]);
        break;
    case REQUEST_ID(VID_SET_UCS2DEF):
        v4l2_set_uctls2def(v->cam);
        break;

    case REQUEST_ID(VID_GET_FMT):
        vid_get_fmt(v, dat);
        build_and_send_rsp(c, (TYPE_SRSP << TYPE_BIT_POS) | SUBS_VID,
                           id, 4, dat);
		break;

    case REQUEST_ID(VID_GET_FRMSIZ):
        vid_get_frmsiz(v, dat);
        build_and_send_rsp(c, (TYPE_SRSP << TYPE_BIT_POS) | SUBS_VID,
                           id, 8, dat);
		break;

#if 0
    case REQUEST_ID(VID_GET_FMTS):
        /*   
         * 应答帧结构: 字节 / 字段名称
         * 1    | 2    | 4                          | 长度由4字节数据部分指定
         * 长度 | 命令 | 数据(格式分辨率列表大小)   | 格式分辨率列表
         */
        len = sizeof(__u32);
        pos = FRAME_HDR_SZ + len;
        size = vid_get_fmts(v, &rsp[pos]);
        build_rsp(rsp, (TYPE_SRSP << TYPE_BIT_POS) | SUBS_VID, id, len, (__u8*)&size);
        send_func(c, rsp, pos + size);
        break;
    case REQUEST_ID(VID_SET_FMT):
        vid_set_fmt(v, &req[DAT_POS]);
        break;
#endif

    case REQUEST_ID(VID_REQ_FRAME):
        /*   
         * 应答帧结构: 字节 / 字段名称
         * 1    | 2    | 4                  | 长度由4字节数据部分指定
         * 长度 | 命令 | 数据(图像帧大小)   | 图像帧
         */
        len = sizeof(__u32);
        pos = FRAME_HDR_SZ + len;

        pthread_mutex_lock(&v->tran_frm_mutex);
        if (v->tran_frm_index != wc->last_frm_index) {
            size = vid_get_trans_frame(v, &rsp[pos]);
            wc->last_frm_index = v->tran_frm_index; 
        } else {
            size = 0;
        }
        pthread_mutex_unlock(&v->tran_frm_mutex);

        build_rsp(rsp, (TYPE_SRSP << TYPE_BIT_POS) | SUBS_VID, id, len, (__u8*)&size);
        tcpc_send(c, rsp, pos + size);
        break;

    default:
        status = ERR_CMD_ID;
        break;
    }
	
    return status;
}