Every access to those variables has to be protected by a mutex of some description, the easiest thing is just disable interrupts I suppose. For a quick read or write that shouldn't cause any drama unless there's some serious time-dependent code running.
Anyway, the mutex handling will also consume some resources (active polling, etc). Disabling interrupts for a quick "memcpy" should do the job in most cases. But yes, there are some time-dependent code that require more attention.
Can't you just have a macro to set and clear the interrupt flag?
I am hoping for a standardized API from the Arduino stack for interrupt disable/enable. Are you aware of something like this? Otherwise, hardware dependent macros can be written, but I think it is not very elegant for a high level communication library.
As I assume the whole process is asynchronous so you can't guarantee to get every different value for "variables" anyway can you?
The read & write requests from the NetworkViewer are async requests, and based on the (soft real-time) scheduling of variables from the PC. It is true that you cannot guarantee to get every different value for "variables". You sample them at a determined frequency (+ some jitter). However, one module can transmit its state in a periodic manner (based on a timer for instance) or when a change occurs (event based).
Variable update frequency is mostly limited by the bandwidth you have on your communication channel and the MCU performance.
How do I get that? I got the exe from sourceforge but that svn link just has links to a 100 files. I assume they are the Qt source files, do I download them separately?
First, you have to build NetworkViewer from the sources :
https://sourceforge.net/apps/mediawiki/openecosys/index.php?title=NetworkViewer:BuildFromSourcesLet's hope you can get through the first compilation steps easily so we can start working on your plugin.
Regards,
Dominic