Arduino + BMA180 Accelerometer

Hi, I recently got the BMA180 breakout from sparkfun: Triple Axis Accelerometer Breakout - BMA180 - SEN-09723 - SparkFun Electronics
but i can't seem to figure it out. I have it hooked up like in the picture below:


So I'm pretty sure I have it hooked up right.
However, when I run the following really simple code, to just check the chip ID and set some values, I don't get proper results for the CHIP ID, it should be 3.

#include <Wire.h>

#define DEVICE 0x40
#define CHIP_ID 0x00
#define R_ACC_X_LSB      0x02
#define R_ACC_X_MSB      0x03
#define R_ACC_Y_LSB      0x04
#define R_ACC_Y_MSB      0x05
#define R_ACC_Z_LSB      0x06
#define R_ACC_Z_MSB      0x07
#define R_CTRL_REG0      0x0D
#define R_BW_TCS         0x20
#define R_CUST_DATA1     0x2C
#define R_OFFSET_LSB1    0x35

int temp, result, error;

void setup()
{
  Wire.begin();
  Serial.begin(115200);
  initializeBMA180();
}

void loop()
{
  //getXAccel();
}

void initializeBMA180()
{
  checkID();
  enableWrite();
  setFilter();
  setRange();
}

void checkID()
{
  Wire.beginTransmission(DEVICE);
  Wire.send(0x00);
  Wire.requestFrom(DEVICE, 1);
  while(Wire.available())
  {
    temp = Wire.receive();
  }
  error = Wire.endTransmission();
  Serial.print("Chip ID:  ");
  Serial.print(temp);
  Serial.print("    Result:  ");
  Serial.println(error);
}

void enableWrite()
{
  //Connect to the ctrl_reg0 register and set the ee_w bit to enable writing
    Wire.beginTransmission(DEVICE);
    Wire.send(0x0D);
    Wire.send(B0001);
    result = Wire.endTransmission();
    Serial.print("Enable Write Result:  ");
    Serial.println(result);
    delay(10);
}

void setFilter()
{
  // Connect to the bw_tcs register and set the filtering level to 10hz
    Wire.beginTransmission(DEVICE);
    Wire.send(0x20);
    Wire.send(B00001000);
    result = Wire.endTransmission();
    Serial.print("Set Filter Result:  ");
    Serial.println(result);
    delay(10);
}

void setRange()
{
    Wire.beginTransmission(DEVICE);
    Wire.send(0x35);
    Wire.send(B0100);
    result = Wire.endTransmission();
    Serial.print("Set Range Result:  ");
    Serial.println(result);
    delay(10);
}

inline int getXAccel()
{
  byte msb = getRegister(R_ACC_X_MSB); 
  byte lsb = getRegister(R_ACC_X_LSB);
  Serial.println((((msb << 8) | lsb) >>2)); 
}

int getRegister(byte registerAddr)
{
  Wire.beginTransmission(DEVICE);
  Wire.send(registerAddr);
  Wire.endTransmission();
  Wire.requestFrom(DEVICE,1); // request numbytes bytes
  
  int n=Wire.available();
  if (n==0) {
    Serial.println("getRegister: error: 0 bytes available");
  }
  //printRegisterOperation(true,registerAddr,val);   
  return Wire.receive();
}

But, if I run that same code but with initializeBMA180() as:

void initializeBMA180()
{
  checkID();
  //enableWrite();
  //setFilter();
  //setRange();
}

I get the proper chip id. What would be causing this?

Thanks for all and any help!!

Wire.beginTransmission(DEVICE);
Wire.send(0x00);
Wire.requestFrom(DEVICE, 1);

You forgot your Wire.endTransmission() after send.