Linux dvb usb adapter frontend
Hi
Iam currently developing a DVB driver for a usb device. I have to provided get and set properties calls. For the testing purpose in 'get parameter' i am setting "dtv_frontend_properties" ---------------------------------- c->code_rate_HP = FEC_3_5; c->code_rate_LP = FEC_5_6; c->modulation = QAM_256; c->transmission_mode = TRANSMISSION_MODE_4K; c->guard_interval = GUARD_INTERVAL_19_128; c->hierarchy = HIERARCHY_NONE; c->frequency = state->frequency; c->bandwidth_hz = state->bandwidth; c->inversion = INVERSION_AUTO; ---------------------------------- and in 'set parameter' I'm printing same values ---------------------------------- printk("frequency %x\n",c->frequency ); printk("code_rate_HP %x\n",c->code_rate_HP ); printk("code_rate_LP %x\n",c->code_rate_LP ); printk("modulation %x\n",c->modulation ); printk("transmission_mode %x\n",c->transmission_mode ); printk("guard_interval %x\n",c->guard_interval ); printk("hierarchy %x\n",c->hierarchy ); printk("bandwidth_hz %x\n",c->bandwidth_hz ); printk("inversion %x\n",c->inversion ); ---------------------------------- now when iam calling ioctl from application as following ---------------------------------- struct dtv_property prop[8]; struct dtv_properties props; int dev,err; memset(prop,0,sizeof(struct dtv_property)*8); dev=open(DEVICE,O_RDWR); if(dev < 0){ perror("Error in opening device"); return -1; } prop[0].cmd = DTV_MODULATION; prop[1].cmd = DTV_BANDWIDTH_HZ; prop[2].cmd = DTV_INVERSION; prop[3].cmd = DTV_CODE_RATE_HP; prop[4].cmd = DTV_CODE_RATE_LP; prop[5].cmd = DTV_GUARD_INTERVAL; prop[6].cmd = DTV_TRANSMISSION_MODE; prop[7].cmd = DTV_FREQUENCY; prop[0].u.data = QPSK; prop[1].u.data = 8000000; prop[2].u.data = INVERSION_AUTO; prop[3].u.data = FEC_NONE ; prop[4].u.data = FEC_NONE ; prop[5].u.data = GUARD_INTERVAL_1_32; prop[6].u.data = TRANSMISSION_MODE_2K; prop[7].u.data = 57000000; props.num = 8; props.props = prop; if((err=ioctl(dev, FE_SET_FRONTEND , &props)) < 0){ printf("ioctl error"); return -1; } ---------------------------------------------- these values must update in cache according to my understanding. but next ioctl call with FE_GET_FRONTEND ,as follows, returns all values as zeros ---------------------------------------------- memset(prop,0,sizeof(struct dtv_property)*8); prop[0].cmd = DTV_MODULATION; prop[1].cmd = DTV_BANDWIDTH_HZ; prop[2].cmd = DTV_INVERSION; prop[3].cmd = DTV_CODE_RATE_HP; prop[4].cmd = DTV_CODE_RATE_LP; prop[5].cmd = DTV_GUARD_INTERVAL; prop[6].cmd = DTV_TRANSMISSION_MODE; prop[7].cmd = DTV_FREQUENCY; props.num = 8; props.props = prop; if((err=ioctl(dev, FE_GET_FRONTEND , &props)) < 0){ printf("ioctl error"); return -1; } printf("prop[0] %u\n",prop[0].u.data); printf("prop[1] %u\n",prop[1].u.data); printf("prop[2] %u\n",prop[2].u.data); printf("prop[3] %u\n",prop[3].u.data); printf("prop[4] %u\n",prop[4].u.data); printf("prop[5] %u\n",prop[5].u.data); printf("prop[6] %u\n",prop[6].u.data); printf("prop[7] %u\n",prop[7].u.data); close(dev); ------------------------------------------------- what am I doing wrong or is there anything i have misunderstood in dvb for linux? |
All times are GMT -5. The time now is 06:09 AM. |