Power on of GPRS shield from software

I found that the above posted code will both turn the shield or off, depending on the current condition of the shield.
The problem could come into play that you reset a already powered up and running arduino, and the powerup code, presumably in your setup routine, would execute again and turn off the shield.

I noticed with my V2.0 shield, that a much longer physical button press is required to turn the shield off than to turn it on.

I tinkered with the code, and I am now using this timing, which will turn the shield on, but will not turn it off if it is already on.

I suppose one could use AT commands to detect the current power-state of the SIM900, but this was easier for me.

  Serial.println("Powering Up SIM900");
  pinMode(9, OUTPUT);
  digitalWrite(9,LOW);
  delay(100);
  digitalWrite(9,HIGH);
  delay(500);
  digitalWrite(9,LOW);
  delay(100);
  Serial.println("SIM900 Powered Up");