ii.set_address sets the address that is submitted to ii_find_command, but it appears that the filtering of messages on the I2C bus is done at the HAL level, so the address set by ii.set_address isn't actually used to differentiate between individual crows.
I think the only place where the HAL layer's idea of address is set is in the call to ii_init(II_CROW) in main (obviously hard-coding the CROW1 identity, and happening before the REPL is initialized so there is no way for it to reference a value set by the user). Can I2C_Init be safely called from I2C_SetAddress so that a user can set the address by putting a call to ii.set_address inside their init script?
Following up on a comment by Justmat on //// (https://llllllll.co/t/crow-v3-0-1/46585/6) and then my own spelunking in the source code (https://llllllll.co/t/crow-v3-0-1/46585/7?u=3-foot-1) it looks like there may be no way for a user to change a crow's I2C address.
ii.set_address
sets the address that is submitted toii_find_command
, but it appears that the filtering of messages on the I2C bus is done at the HAL level, so the address set byii.set_address
isn't actually used to differentiate between individual crows.I think the only place where the HAL layer's idea of address is set is in the call to
ii_init(II_CROW)
inmain
(obviously hard-coding the CROW1 identity, and happening before the REPL is initialized so there is no way for it to reference a value set by the user). CanI2C_Init
be safely called fromI2C_SetAddress
so that a user can set the address by putting a call toii.set_address
inside theirinit
script?