<p></p>
<blockquote>
<p>I think low-level operations being blocking should be no problem. (Set state, wait for state change to complete)</p>
</blockquote>
<p>It would be problematic if we want to have a single thread attending other work as well. And from the driver-implementation point of view this is not so natural as well. I would expect <code>set_trx_state(IDLE)</code> to be implemented something like this:</p>
<ol>
<li>Configure transceiver to signal when PLL lock is reached</li>
<li>Send command(s) to bring the transceiver in IDLE state</li>
<li>Block the thread (e.g. via <code>mutex_lock()</code> on a locked mutex)</li>
<li>Unblock the thread from the ISR (e.g. via <code>mutex_unlock()</code>)</li>
</ol>
<p>By dropping step 3. and instead signaling an event in step 4 we would have an async API, which could be turned into a blocking API with a slim layer above. I expect this would result in a minor reduction of code duplication and a few bytes more ROM in case of the slim layer above being used. But it could reduce RAM requirements hugely, if a network stack can be run in a single thread - even with multiple network devices being used.</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/pull/13943#issuecomment-628231390">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABE7WYGHY5VDR27H3Z435H3RRL77PANCNFSM4MQHPSVA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/ABE7WYCZ3JBBWS27SSHKZB3RRL77PA5CNFSM4MQHPSVKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEVZAZXQ.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/pull/13943#issuecomment-628231390",
"url": "https://github.com/RIOT-OS/RIOT/pull/13943#issuecomment-628231390",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>