Ignore:
Timestamp:
12/06/17 19:54:38 (5 years ago)
Author:
gost
Message:

[titan] DTV_ENUM_DELSYSDTV_ENUM_DELSYS

File:
1 edited

Legend:

Unmodified
Added
Removed
  • titan/titan/frontenddev.h

    r41330 r41355  
    21482148}
    21492149
     2150#if defined DTV_ENUM_DELSYS
     2151int fesetDeliverySystem(fe_delivery_system_t delsys, int fd)
     2152{
     2153        struct dtv_property p[2];
     2154        memset(p, 0, sizeof(p));
     2155        struct dtv_properties cmdseq;
     2156        cmdseq.props = p;
     2157        cmdseq.num = 2;
     2158        p[0].cmd = DTV_CLEAR;
     2159        p[1].cmd = DTV_DELIVERY_SYSTEM;
     2160        p[1].u.data = delsys;
     2161        if (ioctl(fd, FE_SET_PROPERTY, &cmdseq) == -1)
     2162        {
     2163                perr("[DTV_ENUM_DELSYS] FE_SET_PROPERTY failed");
     2164                return 0;
     2165        }
     2166        return 1;
     2167}
     2168#endif
     2169
    21502170int fegetdev()
    21512171{
     
    21692189        }
    21702190
     2191#if defined DTV_ENUM_DELSYS     
     2192        if(getconfig("tempnim", NULL) == NULL)
     2193                addconfig("tempnim", "/tmp/tempnim");
     2194        if(file_exist(getconfig("tempnim", NULL)) == 1)
     2195                unlink(getconfig("tempnim", NULL));
     2196#endif
     2197       
    21712198        for(i = 0; i < MAXDVBADAPTER; i++)
    21722199        {
     
    21772204                        if(fd >= 0)
    21782205                        {
     2206                               
     2207#if defined DTV_ENUM_DELSYS
     2208                                struct dtv_property p[1];
     2209                                memset(p, 0, sizeof(p));
     2210                                p[0].cmd = DTV_ENUM_DELSYS;
     2211                                struct dtv_properties cmdseq;
     2212                                cmdseq.num = 1;
     2213                                cmdseq.props = p;
     2214                                int type = -1;
     2215                                int mz = -1;
     2216                                struct dvb_frontend_info* t_feinfo = NULL;
     2217                                       
     2218                                //tricky... temporäre nim_sockets bauen da ansonsten viel im code geändert werden müßte
     2219                                free(tmpstr); tmpstr= NULL;
     2220                                free(tmpstr1); tmpstr1= NULL;
     2221                                tmpstr = ostrcat("NIM Socket " , oitoa(y), 0, 1);
     2222                                tmpstr = ostrcat(tmpstr , ":\n", 1, 0);
     2223                               
     2224                                t_feinfo = (struct dvb_frontend_info*)malloc(sizeof(struct dvb_frontend_info));
     2225                                if (ioctl(fd, FE_GET_PROPERTY, &cmdseq) >= 0)
     2226                                {
     2227                                        for (; p[0].u.buffer.len > 0; p[0].u.buffer.len--)
     2228                                        {
     2229                                                memset(t_feinfo, 0, sizeof(struct dvb_frontend_info));
     2230                                                fe_delivery_system_t delsys = (fe_delivery_system_t)p[0].u.buffer.data[p[0].u.buffer.len - 1];
     2231                                                printf("--------> delsys %d devive: %d\n", delsys, y);
     2232                                                fesetDeliverySystem(delsys, fd);
     2233                                                if (ioctl(fd, FE_GET_INFO, t_feinfo) < 0)
     2234                                                {
     2235                                                perr("[DTV_ENUM_DELSYS] ioctl FE_GET_INFO failed");
     2236                                        }
     2237                                        else
     2238                                        {
     2239                                                printf("------> name %s %d\n", t_feinfo->name, t_feinfo->type);
     2240                                                if(type != t_feinfo->type)
     2241                                                {
     2242                                                        type = t_feinfo->type;
     2243                                                        mz = mz + 1;
     2244                                                        switch (type)
     2245                                                                {
     2246                                                                        case FE_QPSK:
     2247                                                                        {
     2248                                                                                tmpstr = ostrcat(tmpstr , "        Mode ", 1, 0);
     2249                                                                                tmpstr = ostrcat(tmpstr , oitoa(feSatellite), 1, 1);
     2250                                                                                tmpstr = ostrcat(tmpstr , ": DVB-S/S2\n", 1, 0);
     2251                                                                                //tmpstr1 = ostrcat(tmpstr1 , oitoa(feSatellite), 1, 1);
     2252                                                                                //tmpstr1 = ostrcat(tmpstr1 , "\n", 1, 0);
     2253                                                                                               
     2254                                                                                break;
     2255                                                                        }
     2256                                                                        case FE_QAM:
     2257                                                                        {
     2258                                                                                tmpstr = ostrcat(tmpstr , "        Mode ", 1, 0);
     2259                                                                                tmpstr = ostrcat(tmpstr , oitoa(feCable), 1, 1);
     2260                                                                                tmpstr = ostrcat(tmpstr , ": DVB-C\n", 1, 0);
     2261                                                                                //tmpstr1 = ostrcat(tmpstr1 , oitoa(feCable), 1, 1);
     2262                                                                                //tmpstr1 = ostrcat(tmpstr1 , "\n", 1, 0);
     2263                                                                                break;
     2264                                                                        }
     2265                                                                        case FE_OFDM:
     2266                                                                        {
     2267                                                                                tmpstr = ostrcat(tmpstr , "        Mode ", 1, 0);
     2268                                                                                tmpstr = ostrcat(tmpstr , oitoa(feTerrestrial), 1, 1);
     2269                                                                                tmpstr = ostrcat(tmpstr , ": DVB-T/T2\n", 1, 0);
     2270                                                                                //tmpstr1 = ostrcat(tmpstr1 , oitoa(feTerrestrial), 1, 1);
     2271                                                                                //tmpstr1 = ostrcat(tmpstr1 , "\n", 1, 0);
     2272                                                                                break;
     2273                                                                        }
     2274                                                        }
     2275                                                }
     2276                                                }
     2277                                        }
     2278                                        if(mz > 0)
     2279                                        {
     2280                                                tmpstr = ostrcat(tmpstr , "        Frontend_Device: ", 1, 0);   
     2281                                                tmpstr = ostrcat(tmpstr , oitoa(y), 1, 1);
     2282                                                tmpstr = ostrcat(tmpstr , "\n", 1, 0);         
     2283                                                tmpstr = ostrcat(tmpstr , "        I2C_Device: x\n", 1, 0);     
     2284                                                writesys(getconfig("tempnim", NULL), tmpstr, 2);
     2285                                                //fehyprid = ostrcat(tmpstr1 , NULL, 0, 0);     
     2286                                        }
     2287                                        free(tmpstr); tmpstr = NULL;
     2288                                        free(tmpstr1); tmpstr1 = NULL;
     2289                                }
     2290                                else
     2291                                {
     2292                                        perr("[DTV_ENUM_DELSYS] ioctl FE_GET_PROPERTY failed");
     2293                                }
     2294                                free(t_feinfo); t_feinfo = NULL;
     2295#endif                         
     2296                               
    21792297                                fehyprid = gethypridtunerchoicesvalue(y);
     2298                               
    21802299                                if(fehyprid != NULL)
    21812300                                {
     
    21982317                               
    21992318                                feinfo = fegetinfo(NULL, fd);
     2319
    22002320                                if(feinfo != NULL)
    22012321                                {
     
    23112431       
    23122432        if(tuner->fd == -1)
    2313                 tuner->fd = feopen(tuner, NULL);
     2433        {
     2434                if(feopen(tuner, NULL) < 0)
     2435                        err("open tuner dev");
     2436        }
    23142437        else
    23152438                wasopen = 1;
     
    23382461                        //to do set voltage --> wenn der Tuner es kann
    23392462                        //fesetvoltage(tuner, SEC_VOLTAGE_13, 10);
    2340                         if(realname != NULL && ostrstr(realname, "DVB-T2") != NULL)
     2463                        //if(realname != NULL && ostrstr(realname, "DVB-T2") != NULL)
     2464                        /*if(realname != NULL && ostrstr(realname, "T2") != NULL)
    23412465                                p[1].u.data = SYS_DVBT2;
    2342                         else
     2466                        else*/
    23432467                                p[1].u.data = SYS_DVBT;
    23442468                        break;
     
    23662490        }
    23672491        debug(200, "data %d",p[1].u.data );
     2492        ret = 0;
    23682493        if (ioctl(tuner->fd, FE_SET_PROPERTY, &cmdseq) == -1)
    23692494        {
    23702495                perr("FE_SET_PROPERTY");
    23712496                err("FE_SET_PROPERTY failed -> use procfs to switch delivery system tuner %d mode %s type %d",tuner->devnr ,value, type);
    2372         }
     2497                ret = -1;
     2498        }
     2499        else
     2500        {
     2501                printf("fe set property value %s data %d ... RC:%i\n", value, p[1].u.data, ret);
     2502        }
     2503       
    23732504                if(wasopen != 1)
    23742505                        feclose(tuner, -1);
     
    23972528                }
    23982529                else
    2399                         err("set system tuner to %d ... file not found -> %s", value, buf);
     2530                        printf("set system tuner to %s ... file not found -> %s\n", value, buf);
    24002531                free(buf); buf = NULL;
     2532       
     2533        if(ret > -1)
    24012534                return 1; //true
    2402        
    2403         return 0; //true
     2535        else
     2536                return 0; //false
    24042537
    24052538#else //if DVB_API_VERSION < 5
Note: See TracChangeset for help on using the changeset viewer.