how to send data from slave arduino uno to master arduino via I2c communication

currently iam working with a token queue management system. i have two arduinos- one master which displays data and one arduino for the voice announcement with a df player mini. they connected togeteher via i2c protocol.

normally the working is like when the master receives data from transmitters, it displays the the data in seven segmented display simultaneously the master send the data to the slave arduino player for the announcement. the master to slave communication is working like a charm but-

the problem for me is that when one announce session finishes i need to send some sort of data from the slave to the master arduino to make sure the announce session finished. how to do it via i2c.

according to my limited knowledge- for the slave to communicate with the the master, the master has to send a request to the slave, and upon recieving the request the slave communicates with the master. but here the problem is that the master doesnt know when to send the request as it doesnt know when the announce session by slave gets finish.

pls help friends...any ideas to send data from slave to master in this scenario..

  1. The master can ask the slave regularly if the session is already finished.

  2. Alternatively, you can also have 2 or more masters (mulit-master) on the bus, but this is an unusual solution. If the masters want to talk, they have to agree who is the actual master. The other masters will temporarily put themselves into slave mode.

Probably it it also possible to create an I2C participant, who normally is a slave. Only in urgent cases, he will announce that he is master, and then wait for the main master to acknowledge that the main master will act as slave.
The clock will always have to come from one source only.

  1. Option: run a separate interrupt wire from the slave to the master, which has nothing to do with the I2C bus. with this wire, the slave can ask for attention.

Thomas