Re: [PATCH] Multi protocol support (stage #1)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Yeasah Pell wrote:
Manu Abraham wrote:

Yeasah Pell wrote:

Hmm. I dunno, I see the argument both ways.

Well, we've got a situation where we have a collection of 'n' drivers, 'm' applications, and 2 APIs. API #1 (the older API) has a certain set of functionality, and API #2 (the multistandard API) is a proper superset of this functionality -- it includes everything the first API had, plus has significant additional flexibility to allow the multistandard stuff, etc.

As far as I can tell from looking at multiproto7.diff, right now it'd be a straight mapping of stuff for the API. Assume for a minute you have access to the following set of conversion functions:

int to_old_params(const struct dvbfe_params* new_p, struct dvb_frontend_parameters* old_p); int to_new_params(const struct dvb_frontend_parameters* old_p, struct dvbfe_params* new_p); int to_old_info(const struct dvbfe_info* new_p, struct dvb_frontend_info* old_p); int to_new_info(const struct dvb_frontend_info* old_p, struct dvbfe_info* new_p);
int delsys_to_caps(enum dvbfe_delsys new_p, fe_caps_t* old_p);
int caps_to_delsys(fe_caps_t old_p, enum dvbfe_delsys new_p);


Having bidirectional compatibility will cause people to be stuck with the compatibility layer itself, rather than to use the new API, which will be just another half baked approach. Anyway there should be ideally compatibility in one direction only as we decided to move eventually.(ie compatibility to applications)

It will be nice to have this featureset (ie, bidirectional compatibility), but will need to handle swzigzag and inversion handling etc. IMHO, this will be a bit too much duplication inside dvb_frontend.


Manu


Yeah, I agree that bidirectional support is probably too much, anything that can be done to discourage the future use of the old API is welcome :-) I only specified bidirectional conversion because the structures would need to be converted both ways (i.e. params is used as an in for tuning, as well as an out for status), my comment about using it to support bidirectional API conversion was off-the-cuff and not very well thought out.

Really all I'm trying to suggest is that once the new API is made available, every card should be accessible through it.

Yes, it will be that way. I think the confusion came in because i mentioned the implementation of tuning algorithms, which need more time to be implemented.

Anyway, will keep that thing separate, since i found that to cause confusion as well.

If that means having a translation layer in the short term (i.e. until all the drivers are updated), I think it might be a good idea -- unless of course it's going to be almost as much work as just updating all the old drivers, in which case it makes more sense to just do that. But I'm not really fond of the idea of a lengthy period of time wherein drivers slowly migrate from the old API to the new one.

Regarding app. backward compatibility, we don't need a huge translation, i will post those changes soon. But yet needed to know whather the previous API changes were acceptable, waiting for JS's ACK on that.

I think having the new API be fully capable will speed its adoption by application developers, and I'm thinking it adds more benefit (when you think about the linux DVB system as a whole, including the API, the drivers and the applications) than it costs.

ACK


Manu


_______________________________________________

linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux