Files
SyncHome/trunk/Arduino/libraries/Gamebuino_Classic/examples/3.Advanced/PongMulti/master.ino
2023-03-17 11:59:21 +00:00

69 lines
1.5 KiB
C++

///////////////////////////////////// SETUP MASTER
void setupMaster(){
Wire.begin();
}
///////////////////////////////////// UPDATE MASTER
void updateMaster(){
//read from slave
masterRead();
updateGame();
masterWrite();
}
///////////////////////////////////// MASTER READ
void masterRead(){
if(Wire.requestFrom(2, SLAVE_DATA_BUFFER_LENGTH)){ // request 6 bytes from slave device #2
disconnected = false;
paused = false;
while(Wire.available()){ // slave may send less than requested
char data_in = Wire.read(); // receive byte per byte
switch(data_in){
case PLAYER_Y:
oponent_y = Wire.read();
break;
case SLAVE_PAUSED:
gb.popup(F("Slave paused"),2);
paused = true;
break;
case I_AM_MASTER:
gb.popup(F("1 master max"),2);
paused = true;
break;
default:
gb.popup(F("Wrong slave data"),2);
paused = true;
break;
}
}
}
else{
gb.popup(F("Slave disconnected"),2);
paused = true;
disconnected = true;
}
}
///////////////////////////////////// MASTER WRITE
void masterWrite(){
Wire.beginTransmission(2); // transmit to device #2
Wire.write(PLAYER_Y); //identifier
Wire.write(player_y); //variable
Wire.write(BALL_X);
Wire.write(ball_x);
Wire.write(BALL_Y);
Wire.write(ball_y);
Wire.write(PLAYER_SCORE);
Wire.write(player_score);
Wire.write(OPONENT_SCORE);
Wire.write(oponent_score);
Wire.endTransmission(); // stop transmitting
}