10c0d06caSMauro Carvalho Chehab /* 20c0d06caSMauro Carvalho Chehab * 30c0d06caSMauro Carvalho Chehab * 40c0d06caSMauro Carvalho Chehab * Copyright (C) 2005 Mike Isely <isely@pobox.com> 50c0d06caSMauro Carvalho Chehab * 60c0d06caSMauro Carvalho Chehab * This program is free software; you can redistribute it and/or modify 70c0d06caSMauro Carvalho Chehab * it under the terms of the GNU General Public License as published by 80c0d06caSMauro Carvalho Chehab * the Free Software Foundation; either version 2 of the License 90c0d06caSMauro Carvalho Chehab * 100c0d06caSMauro Carvalho Chehab * This program is distributed in the hope that it will be useful, 110c0d06caSMauro Carvalho Chehab * but WITHOUT ANY WARRANTY; without even the implied warranty of 120c0d06caSMauro Carvalho Chehab * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 130c0d06caSMauro Carvalho Chehab * GNU General Public License for more details. 140c0d06caSMauro Carvalho Chehab * 150c0d06caSMauro Carvalho Chehab * You should have received a copy of the GNU General Public License 160c0d06caSMauro Carvalho Chehab * along with this program; if not, write to the Free Software 170c0d06caSMauro Carvalho Chehab * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 180c0d06caSMauro Carvalho Chehab * 190c0d06caSMauro Carvalho Chehab */ 200c0d06caSMauro Carvalho Chehab #ifndef __PVRUSB2_CTRL_H 210c0d06caSMauro Carvalho Chehab #define __PVRUSB2_CTRL_H 220c0d06caSMauro Carvalho Chehab 230c0d06caSMauro Carvalho Chehab struct pvr2_ctrl; 240c0d06caSMauro Carvalho Chehab 250c0d06caSMauro Carvalho Chehab enum pvr2_ctl_type { 260c0d06caSMauro Carvalho Chehab pvr2_ctl_int = 0, 270c0d06caSMauro Carvalho Chehab pvr2_ctl_enum = 1, 280c0d06caSMauro Carvalho Chehab pvr2_ctl_bitmask = 2, 290c0d06caSMauro Carvalho Chehab pvr2_ctl_bool = 3, 300c0d06caSMauro Carvalho Chehab }; 310c0d06caSMauro Carvalho Chehab 320c0d06caSMauro Carvalho Chehab 330c0d06caSMauro Carvalho Chehab /* Set the given control. */ 340c0d06caSMauro Carvalho Chehab int pvr2_ctrl_set_value(struct pvr2_ctrl *,int val); 350c0d06caSMauro Carvalho Chehab 360c0d06caSMauro Carvalho Chehab /* Set/clear specific bits of the given control. */ 370c0d06caSMauro Carvalho Chehab int pvr2_ctrl_set_mask_value(struct pvr2_ctrl *,int mask,int val); 380c0d06caSMauro Carvalho Chehab 390c0d06caSMauro Carvalho Chehab /* Get the current value of the given control. */ 400c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_value(struct pvr2_ctrl *,int *valptr); 410c0d06caSMauro Carvalho Chehab 420c0d06caSMauro Carvalho Chehab /* Retrieve control's type */ 430c0d06caSMauro Carvalho Chehab enum pvr2_ctl_type pvr2_ctrl_get_type(struct pvr2_ctrl *); 440c0d06caSMauro Carvalho Chehab 450c0d06caSMauro Carvalho Chehab /* Retrieve control's maximum value (int type) */ 460c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_max(struct pvr2_ctrl *); 470c0d06caSMauro Carvalho Chehab 480c0d06caSMauro Carvalho Chehab /* Retrieve control's minimum value (int type) */ 490c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_min(struct pvr2_ctrl *); 500c0d06caSMauro Carvalho Chehab 510c0d06caSMauro Carvalho Chehab /* Retrieve control's default value (any type) */ 520c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_def(struct pvr2_ctrl *, int *valptr); 530c0d06caSMauro Carvalho Chehab 540c0d06caSMauro Carvalho Chehab /* Retrieve control's enumeration count (enum only) */ 550c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_cnt(struct pvr2_ctrl *); 560c0d06caSMauro Carvalho Chehab 570c0d06caSMauro Carvalho Chehab /* Retrieve control's valid mask bits (bit mask only) */ 580c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_mask(struct pvr2_ctrl *); 590c0d06caSMauro Carvalho Chehab 600c0d06caSMauro Carvalho Chehab /* Retrieve the control's name */ 610c0d06caSMauro Carvalho Chehab const char *pvr2_ctrl_get_name(struct pvr2_ctrl *); 620c0d06caSMauro Carvalho Chehab 630c0d06caSMauro Carvalho Chehab /* Retrieve the control's desc */ 640c0d06caSMauro Carvalho Chehab const char *pvr2_ctrl_get_desc(struct pvr2_ctrl *); 650c0d06caSMauro Carvalho Chehab 660c0d06caSMauro Carvalho Chehab /* Retrieve a control enumeration or bit mask value */ 670c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_valname(struct pvr2_ctrl *,int,char *,unsigned int, 680c0d06caSMauro Carvalho Chehab unsigned int *); 690c0d06caSMauro Carvalho Chehab 700c0d06caSMauro Carvalho Chehab /* Return true if control is writable */ 710c0d06caSMauro Carvalho Chehab int pvr2_ctrl_is_writable(struct pvr2_ctrl *); 720c0d06caSMauro Carvalho Chehab 730c0d06caSMauro Carvalho Chehab /* Return V4L flags value for control (or zero if there is no v4l control 740c0d06caSMauro Carvalho Chehab actually under this control) */ 750c0d06caSMauro Carvalho Chehab unsigned int pvr2_ctrl_get_v4lflags(struct pvr2_ctrl *); 760c0d06caSMauro Carvalho Chehab 770c0d06caSMauro Carvalho Chehab /* Return V4L ID for this control or zero if none */ 780c0d06caSMauro Carvalho Chehab int pvr2_ctrl_get_v4lid(struct pvr2_ctrl *); 790c0d06caSMauro Carvalho Chehab 800c0d06caSMauro Carvalho Chehab /* Return true if control has custom symbolic representation */ 810c0d06caSMauro Carvalho Chehab int pvr2_ctrl_has_custom_symbols(struct pvr2_ctrl *); 820c0d06caSMauro Carvalho Chehab 830c0d06caSMauro Carvalho Chehab /* Convert a given mask/val to a custom symbolic value */ 840c0d06caSMauro Carvalho Chehab int pvr2_ctrl_custom_value_to_sym(struct pvr2_ctrl *, 850c0d06caSMauro Carvalho Chehab int mask,int val, 860c0d06caSMauro Carvalho Chehab char *buf,unsigned int maxlen, 870c0d06caSMauro Carvalho Chehab unsigned int *len); 880c0d06caSMauro Carvalho Chehab 890c0d06caSMauro Carvalho Chehab /* Convert a symbolic value to a mask/value pair */ 900c0d06caSMauro Carvalho Chehab int pvr2_ctrl_custom_sym_to_value(struct pvr2_ctrl *, 910c0d06caSMauro Carvalho Chehab const char *buf,unsigned int len, 920c0d06caSMauro Carvalho Chehab int *maskptr,int *valptr); 930c0d06caSMauro Carvalho Chehab 940c0d06caSMauro Carvalho Chehab /* Convert a given mask/val to a symbolic value */ 950c0d06caSMauro Carvalho Chehab int pvr2_ctrl_value_to_sym(struct pvr2_ctrl *, 960c0d06caSMauro Carvalho Chehab int mask,int val, 970c0d06caSMauro Carvalho Chehab char *buf,unsigned int maxlen, 980c0d06caSMauro Carvalho Chehab unsigned int *len); 990c0d06caSMauro Carvalho Chehab 1000c0d06caSMauro Carvalho Chehab /* Convert a symbolic value to a mask/value pair */ 1010c0d06caSMauro Carvalho Chehab int pvr2_ctrl_sym_to_value(struct pvr2_ctrl *, 1020c0d06caSMauro Carvalho Chehab const char *buf,unsigned int len, 1030c0d06caSMauro Carvalho Chehab int *maskptr,int *valptr); 1040c0d06caSMauro Carvalho Chehab 1050c0d06caSMauro Carvalho Chehab /* Convert a given mask/val to a symbolic value - must already be 1060c0d06caSMauro Carvalho Chehab inside of critical region. */ 1070c0d06caSMauro Carvalho Chehab int pvr2_ctrl_value_to_sym_internal(struct pvr2_ctrl *, 1080c0d06caSMauro Carvalho Chehab int mask,int val, 1090c0d06caSMauro Carvalho Chehab char *buf,unsigned int maxlen, 1100c0d06caSMauro Carvalho Chehab unsigned int *len); 1110c0d06caSMauro Carvalho Chehab 1120c0d06caSMauro Carvalho Chehab #endif /* __PVRUSB2_CTRL_H */ 1130c0d06caSMauro Carvalho Chehab 1140c0d06caSMauro Carvalho Chehab /* 1150c0d06caSMauro Carvalho Chehab Stuff for Emacs to see, in order to encourage consistent editing style: 1160c0d06caSMauro Carvalho Chehab *** Local Variables: *** 1170c0d06caSMauro Carvalho Chehab *** mode: c *** 1180c0d06caSMauro Carvalho Chehab *** fill-column: 75 *** 1190c0d06caSMauro Carvalho Chehab *** tab-width: 8 *** 1200c0d06caSMauro Carvalho Chehab *** c-basic-offset: 8 *** 1210c0d06caSMauro Carvalho Chehab *** End: *** 1220c0d06caSMauro Carvalho Chehab */ 123