In this case, it's not the low level interrupt handler. It's essentially the "callback" routine that's registered to the generic PIO irq handler. I think!
I had hoped that the actually irq state (edge/level/whatever) existed in a struct/argument/whatever and I just hadn't spotted it. I should be able to use the usual poll_waiter stuff if I want to let users know via the UI - but the important thing, realistically, is to shut down USB Host power quickly! >-----Original Message----- >From: Gregory Nutt <spudan...@gmail.com> >Sent: 27 January 2023 18:47 >To: dev@nuttx.apache.org >Subject: Re: Pass interrupt status to handler > >Typically, if you want to pass a small amount of information from an >interrupt handler to a task, you would use a normal IPC like sigqueue() >(https://pubs.opengroup.org/onlinepubs/7908799/xsh/sigqueue.html) which >allows to send a type union sigval to the task. > >The task would have to catch the signal with something like >sigwaitinfo() >(https://pubs.opengroup.org/onlinepubs/7908799/xsh/sigwaitinfo.html). > >Originally, you could use mq_send() from interrupt handlers to send >interrupt status to tasks, but unfortunately that feature was lost with >some recent commits that redesigned the message handler that were >apparently done without knowledge of that requirement. NOTE that the >documentation is now wrong, it says that you can still messages from >interrupt handlers. That is not true. > >On 1/27/2023 12:15 PM, Nathan Hartman wrote: >> Is there a global structure where you retain state information where >> it would be appropriate to save the most refent known state in a >> volatile variable? >> >> On Fri, Jan 27, 2023 at 1:00 PM Tim Hardisty <t...@hardisty.co.uk> >wrote: >> >>> Think this is an easy one but it's stumped me so far... >>> >>> I am setting up the USB Overcurrent interrupt and can't find any >>> fully implemented examples. >>> >>> The interrupt is set to both edges as I want to know when the over >>> current state is first set and later hopefully cleared. >>> >>> I can obviously read the state of the input pin, but I sort of feel I >>> should be able to pass the state as an arg to the handler (via xcpt_t >>> handler). >>> >>> Is that possible and, if so, how? >>>