Re: [RFC PATCH] [media] rc: filter out not allowed protocols when decoding

2012-09-06 Thread Changbin Du
Sean , many thanks for your help. I know much more about IR framwork
now. I'll try to
work out a patch to remove allowed_protocols.

Thanks again!
[Du, Changbin]

2012/9/4 Sean Young s...@mess.org:
 On Tue, Sep 04, 2012 at 11:06:07AM +0800, Changbin Du wrote:
 mutex_lock(ir_raw_handler_lock);
   - list_for_each_entry(handler, ir_raw_handler_list, list)
   - handler-decode(raw-dev, ev);
   + list_for_each_entry(handler, ir_raw_handler_list, list) {
   + /* use all protocol by default */
   + if (raw-dev-allowed_protos == RC_TYPE_UNKNOWN ||
   + raw-dev-allowed_protos  handler-protocols)
   + handler-decode(raw-dev, ev);
   + }
 
  Each IR protocol decoder already checks whether it is enabled or not;
  should it not be so that only allowed protocols can be enabled rather
  than checking both enabled_protocols and allowed_protocols?
 
  Just from reading store_protocols it looks like decoders which aren't
  in allowed_protocols can be enabled, which makes no sense. Also
  ir_raw_event_register all protocols are enabled rather than the
  allowed ones.
 
 
  Lastely I don't know why raw ir drivers should dictate which protocols
  can be enabled. Would it not be better to remove it entirely?


 I agree with you. I just thought that the only thing a decoder should care
 is its decoding logic, but not including decoder management. My idaea is:
  1) use enabled_protocols to select decoders in ir_raw.c, but not
 placed in decoders to do the judgement.
  2) remove  allowed_protocols or just use it to set the default
 decoder (also should rename allowed_protocols  to default_protocol).

 The default decoder should be the one set by the rc keymap.

 I also have a question:
  Is there a requirement that one more decoders are enabled for a
 IR device at the same time?

 Yes, you want to be able to multiple remotes on the IR device (which
 you can do as long as the scancodes don't overlap, I think), and the
 lirc device is implemented as a decoder, so you might want to see the
 raw IR as well as have it decoded.

 And if that will lead to a issue that each decoder may decode a
 same pulse sequence to different evnets since their protocol is
 different?

 At the moment, no. David Hardeman has sent a patch for this:

 http://patchwork.linuxtv.org/patch/11388/


 Sean
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH] [media] rc: filter out not allowed protocols when decoding

2012-09-04 Thread Sean Young
On Tue, Sep 04, 2012 at 11:06:07AM +0800, Changbin Du wrote:
 mutex_lock(ir_raw_handler_lock);
   - list_for_each_entry(handler, ir_raw_handler_list, list)
   - handler-decode(raw-dev, ev);
   + list_for_each_entry(handler, ir_raw_handler_list, list) {
   + /* use all protocol by default */
   + if (raw-dev-allowed_protos == RC_TYPE_UNKNOWN ||
   + raw-dev-allowed_protos  handler-protocols)
   + handler-decode(raw-dev, ev);
   + }
 
  Each IR protocol decoder already checks whether it is enabled or not;
  should it not be so that only allowed protocols can be enabled rather
  than checking both enabled_protocols and allowed_protocols?
 
  Just from reading store_protocols it looks like decoders which aren't
  in allowed_protocols can be enabled, which makes no sense. Also
  ir_raw_event_register all protocols are enabled rather than the
  allowed ones.
 
 
  Lastely I don't know why raw ir drivers should dictate which protocols
  can be enabled. Would it not be better to remove it entirely?
 
 
 I agree with you. I just thought that the only thing a decoder should care
 is its decoding logic, but not including decoder management. My idaea is:
  1) use enabled_protocols to select decoders in ir_raw.c, but not
 placed in decoders to do the judgement.
  2) remove  allowed_protocols or just use it to set the default
 decoder (also should rename allowed_protocols  to default_protocol).

The default decoder should be the one set by the rc keymap.

 I also have a question:
  Is there a requirement that one more decoders are enabled for a
 IR device at the same time?

Yes, you want to be able to multiple remotes on the IR device (which
you can do as long as the scancodes don't overlap, I think), and the 
lirc device is implemented as a decoder, so you might want to see the
raw IR as well as have it decoded.

 And if that will lead to a issue that each decoder may decode a
 same pulse sequence to different evnets since their protocol is
 different?

At the moment, no. David Hardeman has sent a patch for this:

http://patchwork.linuxtv.org/patch/11388/


Sean
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH] [media] rc: filter out not allowed protocols when decoding

2012-09-03 Thread Sean Young
On Sat, Sep 01, 2012 at 09:57:09AM +0800, Du, Changbin wrote:
 From: Du, Changbin changbin...@gmail.com
 
 Each rc-raw device has a property allowed_protos stored in structure
 ir_raw_event_ctrl. But it didn't work because all decoders would be
 called when decoding. This path makes only allowed protocol decoders
 been invoked.
 
 Signed-off-by: Du, Changbin changbin...@gmail.com
 ---
  drivers/media/rc/ir-raw.c |8 ++--
  1 file changed, 6 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/media/rc/ir-raw.c b/drivers/media/rc/ir-raw.c
 index a820251..198b6d8 100644
 --- a/drivers/media/rc/ir-raw.c
 +++ b/drivers/media/rc/ir-raw.c
 @@ -63,8 +63,12 @@ static int ir_raw_event_thread(void *data)
   spin_unlock_irq(raw-lock);
  
   mutex_lock(ir_raw_handler_lock);
 - list_for_each_entry(handler, ir_raw_handler_list, list)
 - handler-decode(raw-dev, ev);
 + list_for_each_entry(handler, ir_raw_handler_list, list) {
 + /* use all protocol by default */
 + if (raw-dev-allowed_protos == RC_TYPE_UNKNOWN ||
 + raw-dev-allowed_protos  handler-protocols)
 + handler-decode(raw-dev, ev);
 + }

Each IR protocol decoder already checks whether it is enabled or not; 
should it not be so that only allowed protocols can be enabled rather 
than checking both enabled_protocols and allowed_protocols?

Just from reading store_protocols it looks like decoders which aren't
in allowed_protocols can be enabled, which makes no sense. Also 
ir_raw_event_register all protocols are enabled rather than the 
allowed ones.

Lastely I don't know why raw ir drivers should dictate which protocols
can be enabled. Would it not be better to remove it entirely?


   raw-prev_ev = ev;
   mutex_unlock(ir_raw_handler_lock);
   }
 -- 
 1.7.9.5
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-media in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC PATCH] [media] rc: filter out not allowed protocols when decoding

2012-09-03 Thread Changbin Du
mutex_lock(ir_raw_handler_lock);
  - list_for_each_entry(handler, ir_raw_handler_list, list)
  - handler-decode(raw-dev, ev);
  + list_for_each_entry(handler, ir_raw_handler_list, list) {
  + /* use all protocol by default */
  + if (raw-dev-allowed_protos == RC_TYPE_UNKNOWN ||
  + raw-dev-allowed_protos  handler-protocols)
  + handler-decode(raw-dev, ev);
  + }

 Each IR protocol decoder already checks whether it is enabled or not;
 should it not be so that only allowed protocols can be enabled rather
 than checking both enabled_protocols and allowed_protocols?

 Just from reading store_protocols it looks like decoders which aren't
 in allowed_protocols can be enabled, which makes no sense. Also
 ir_raw_event_register all protocols are enabled rather than the
 allowed ones.


 Lastely I don't know why raw ir drivers should dictate which protocols
 can be enabled. Would it not be better to remove it entirely?


I agree with you. I just thought that the only thing a decoder should care
is its decoding logic, but not including decoder management. My idaea is:
 1) use enabled_protocols to select decoders in ir_raw.c, but not
placed in decoders to do the judgement.
 2) remove  allowed_protocols or just use it to set the default
decoder (also should rename allowed_protocols  to default_protocol).

I also have a question:
 Is there a requirement that one more decoders are enabled for a
IR device at the same time?
And if that will lead to a issue that each decoder may decode a
same pulse sequence to different evnets since their protocol is
different?

[Du, Changbin]


raw-prev_ev = ev;
mutex_unlock(ir_raw_handler_lock);
}
  --
  1.7.9.5
 
  --
  To unsubscribe from this list: send the line unsubscribe linux-media in
  the body of a message to majord...@vger.kernel.org
  More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RFC PATCH] [media] rc: filter out not allowed protocols when decoding

2012-08-31 Thread Du, Changbin
From: Du, Changbin changbin...@gmail.com

Each rc-raw device has a property allowed_protos stored in structure
ir_raw_event_ctrl. But it didn't work because all decoders would be
called when decoding. This path makes only allowed protocol decoders
been invoked.

Signed-off-by: Du, Changbin changbin...@gmail.com
---
 drivers/media/rc/ir-raw.c |8 ++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/media/rc/ir-raw.c b/drivers/media/rc/ir-raw.c
index a820251..198b6d8 100644
--- a/drivers/media/rc/ir-raw.c
+++ b/drivers/media/rc/ir-raw.c
@@ -63,8 +63,12 @@ static int ir_raw_event_thread(void *data)
spin_unlock_irq(raw-lock);
 
mutex_lock(ir_raw_handler_lock);
-   list_for_each_entry(handler, ir_raw_handler_list, list)
-   handler-decode(raw-dev, ev);
+   list_for_each_entry(handler, ir_raw_handler_list, list) {
+   /* use all protocol by default */
+   if (raw-dev-allowed_protos == RC_TYPE_UNKNOWN ||
+   raw-dev-allowed_protos  handler-protocols)
+   handler-decode(raw-dev, ev);
+   }
raw-prev_ev = ev;
mutex_unlock(ir_raw_handler_lock);
}
-- 
1.7.9.5

--
To unsubscribe from this list: send the line unsubscribe linux-media in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html