So I’ve had a literal shower thought with regards to speeding up reading from the TXi…
First a little background, when an op runs on the teletype it gets given access to 3 variables of type:
-
scene_state_t: where the scripts, patterns, variables, etc are stored
-
exec_state_t: at the moment only holds the status of if/elif/else, but will eventually be used for dealing with recursion
-
command_state_t: contains the value stack
command_state_t only lives for as long as it takes to run a single command (a.k.a line of script), whereas exec_state_t lives for a single script. (When a command is run from live mode, it will run as though it’s a script with one line.)
So we could use exec_state_t to cache values returned from a TXi, they’d only be cached for as long as the exec_state_t lasts (i.e. running a script).
Furthermore if we wanted to rewrite things a little, we could return all the IN and PARAM values from a TXi, i.e. 8 values, any time a single value is requested. We’d have to rewrite all the MAP, SCALE, etc ops to run on the teletype though. This only really works if the overhead to send an I2C message is such that requesting 8 values back isn’t that much slower that just getting 1 value.
It’s probably a bit much to deal with now, but maybe in a few months we could have a go doing it, or someone could point out the fatal flaw in my idea…