<p></p>
<blockquote>
<p>"1 sender to n receivers" pattern</p>
</blockquote>
<p>That is a good point, but as I've outlined msg is probably unsuitable. That may illustrate that there is some need for a more generic "dispatch to multiple handlers" tool that's not limited to using the message bus -- or we're just seeing the single instance where that's needed, hard to tell.</p>
<blockquote>
<blockquote>
<p>As I understand, we already plan on having a thread that polls any sensors for which there are subscribers.<br>
To me, this notification makes only sense for sensors like a motion sensor, a button, etc. which does create IRQs that are translated into higher level event notifications.</p>
</blockquote>
</blockquote>
<p>Ok, I thought that this interrupt-based thing would be an afterthought only -- fine if it's the main mode of operation. That definitely makes things easier on the side of later obtaining the most recent value from the sensor -- as that's then just a read from the memory location that gets updated in the interrupt.</p>
<p>So a sensor that doesn't push values in interrupts would just not accept subscriptions? That would be the most lightweight thing -- provided it fits the use case for eSAUL.</p>
<blockquote>
<p>Or do we want the subscribers to be potentially run in IRQ context?</p>
</blockquote>
<p>The xtimer / sock_async approach would in allow the subscriber to run something in the IRQ context, but it would very much be recommended that it'll be only "Release the given mutex", "Set the given thread flag", "Wake the given thread", "Set the given event" or "Send the given message" or a similarly small one. (In xtimer, the arbitrary-callback has <a href="https://riot-os.org/api/group__sys__xtimer.html#gadcc4acdd5b781fe1e8760503cfb635bb" rel="nofollow">big red warnigns</a>; in sock_async, the async API has no large warnings but the expectation seems to be that you use the event-based one which executes the "set the given event" callback).</p>
<blockquote>
<p>All the IPC mechanisms available should be more than fast enough for whatever events</p>
</blockquote>
<p>The speed of the IPC mechanisms is not what's worrying me. The application's ability to use them reliably in light of fast notification streams compared to the application's update rate is what concerns me, and where approaches that have the message bus as the only way out of an event fall short.</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/RIOT-OS/RIOT/issues/14121#issuecomment-634653735">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABE7WYELUC4XLBQGGZDYGZTRTUHL5ANCNFSM4NIOMK5Q">unsubscribe</a>.<img src="https://github.com/notifications/beacon/ABE7WYCQTROSMZRYURHO7TDRTUHL5A5CNFSM4NIOMK52YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEXKAYJY.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/RIOT-OS/RIOT/issues/14121#issuecomment-634653735",
"url": "https://github.com/RIOT-OS/RIOT/issues/14121#issuecomment-634653735",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>