Wire Problem for Arduino MEGA ADK

I'm using Wire protocol to get three signal from a I2C RSSI module. I used Wire Library in my code. You can see them below:

#include <Wire.h>

int rssi1 = 0;
int rssi2 = 0;
int rssi3 = 0;

void setup() {
  // put your setup code here, to run once:
  Wire.begin();
  Serial.begin(9600);
}

int getRssi1()
{
  Wire.beginTransmission(0x40);
  Wire.write(byte(0x10));
  Wire.endTransmission();
  
  Wire.requestFrom(0x40, 2);
  
  if(2 <= Wire.available())
  {
    rssi1 = Wire.read();
    rssi1 = rssi1 << 8;
    rssi1 |= Wire.read();
    rssi1 &= 0xff;
    Serial.print("rssi1:");
    Serial.print(rssi1);
    Serial.print("\n");
  }
  return rssi1;
}

int getRssi2()
{
  Wire.beginTransmission(0x40);
  Wire.write(byte(0x11));
  Wire.endTransmission();
  
  Wire.requestFrom(0x40, 2);
  
  if(2 <= Wire.available())
  {
    rssi2 = Wire.read();
    rssi2 = rssi2 << 8;
    rssi2 |= Wire.read();
    rssi2 &= 0xff;
    Serial.print("rssi2:");
    Serial.print(rssi2);
    Serial.print("\n");
  }
  return rssi2;
}

int getRssi3()
{
  Wire.beginTransmission(0x40);
  Wire.write(byte(0x12));
  Wire.endTransmission();
  
  Wire.requestFrom(0x40, 2);
  
  if(2 <= Wire.available())
  {
    rssi3 = Wire.read();
    rssi3 = rssi3 << 8;
    rssi3 |= Wire.read();
    rssi3 &= 0xff;
    Serial.print("rssi3:");
    Serial.print(rssi3);
    Serial.print("\n");
  }
  return rssi3;
}

void loop() {
  // put your main code here, to run repeatedly:
  getRssi1();
  getRssi2();
//  getRssi3();
  delay(500);
}

If I comment getRssi3(), it work very well. I could get Rssi1 and Rssi2's value.
But when uncomment getRssi3(), the whole program seems stopped somewhere. Just could see rssi1 and rssi2 's value, could not see the ressi3's value in terminal. The cursor just stop there.
I don't know what the problem is. Could someone please help me?
thanks.