Page 1 of 1

Sharing hardware controlled by pigpio daemon

Posted: Fri Jun 14, 2019 6:26 pm
by guym
I wish to share hardware attached to a rpi host running pigpiod among several remote clients. I know this is a bad idea in general as any client can clobber the values written to the gpio pins: Client A writes gpio17 high, client B writes gpio17 low. However, what I'd like to accomplish is sending a message on a gpio pin after which another message from a different client can be sent. Ideally, having a lock/release mechanism on each client's socket interface would solve the problem but that doesn't exist. So my question is, has anyone accomplished a means of sharing hardware using pigpio in a client server configuration?

Could the use of a script be a possible solution? Client runs a script on pigpiod by calling the script ID and passing the message as a parameter. Does a pigpio script run 'atomically' or will it be preempted by other commands (requests from socket interface) ? Note, the script would be something along these lines:

Code: Select all

// start of critical section
gpioWaveAddGeneric(message);
ID = gpioWaveCreate();
// end of critical section
gpioWaveTxSend(ID);
while(gpioWaveTxBusy());
gpioWaveDelete(ID);