[linux-dvb] High Level CI and MMI

Henrik Kurelid henke at kurelid.se
Thu Jan 22 23:28:22 CET 2009


Hi all,

I am currently implementing CA support for the FireDTV/FloppyDTV cards. This driver follows the high level API as described in
Documentation/dvb/ci.txt. Most parts are now implemented and working fairly well. There are however a number of issues that I am currently wrestling
with. Mostly regarding usage that I feel could do with some clarification in the documentation.

The issues are regarding CA_SEND/GET_MSG and e.g. MMI.
When retrieving an APDU from the driver, the CA_GET_MSG ioctl is used. This seems to be used somewhat differently by different applications (e.g.
mythtv, dst_test, kaffeine). Some applications set the tag of the message in order to (I guess) tell the driver what message it wants to receive.
Since this is not done by all applications, I guess the driver can not rely on this. Hence the SEND and GET messages need to be used a
request-response fashion. E.g.
CA_SEND_MSG(CA_INFO_ENQ)
CA_GET_MSG(CA_INFO)
CA_SEND_MSG(APP_INFO_ENQ)
CA_GET_MSG(APP_INFO)

This is all well for CA_INFO, APP_INFO and others. However, when it comes to MMI this is not possible for all cases. In the menu case, we still have
a request-response procedure, e.g.
CA_SEND_MSG(ENTER_MENU)
CA_GET_MSG(MENU_MORE)
CA_GET_MSG(MENU_LAST)
CA_SEND_MSG(MENU_ANSW)
CA_GET_MSG(MMI_CLOSE)

Other MMI situations (many related to where TEST_MORE/LAST is used), may be initiated from the driver instead of the application. In those cases I
don't see how the application should know that the driver has APU(s) ready for retrieval.

How is this meant to be supported? Or is it not? Am I missing something in my reasoning or perhaps this is documented somewhere else?

If someone could help me with some input I would gladly appreciate it

Regards,
Henrik Kurelid



More information about the linux-dvb mailing list