static int bma250_read_accel_z(struct i2c_client *client, short *a_z) { int comres; unsigned char data[2]; comres = bma250_smbus_read_byte_block(client, BMA250_ACC_Z_LSB__REG, data, 2); *a_z = BMA250_GET_BITSLICE(data[0], BMA250_ACC_Z_LSB) | BMA250_GET_BITSLICE(data[1], BMA250_ACC_Z_MSB) <<BMA250_ACC_Z_LSB__LEN; *a_z = *a_z << (sizeof(short)*8 -(BMA250_ACC_Z_LSB__LEN+BMA250_ACC_Z_MSB__LEN)); *a_z = *a_z >> (sizeof(short)*8 -(BMA250_ACC_Z_LSB__LEN+BMA250_ACC_Z_MSB__LEN)); return comres; }
unsigned char bma250_get_cal_ready(struct i2c_client *client) { unsigned char data; data = SENSOR_READ_DAT(client,BMA250_OFFSET_CTRL_REG); data = BMA250_GET_BITSLICE(data, BMA250_FAST_COMP_RDY_S); return data; }
unsigned char bma250_get_offset_target_z(struct i2c_client *client) { unsigned char data; data = SENSOR_READ_DAT( client,BMA250_OFFSET_PARAMS_REG); data = BMA250_GET_BITSLICE(data, BMA250_COMP_TARGET_OFFSET_Z); return data; }
static int bma250_read_accel_xyz(struct i2c_client *client, struct bmasensoracc *acc) { int comres; unsigned char data[6]; comres = bma250_smbus_read_byte_block(client, BMA250_ACC_X_LSB__REG, data, 6); acc->x = BMA250_GET_BITSLICE(data[0], BMA250_ACC_X_LSB) |(BMA250_GET_BITSLICE(data[1], BMA250_ACC_X_MSB)<<BMA250_ACC_X_LSB__LEN); acc->x = acc->x << (sizeof(short)*8-(BMA250_ACC_X_LSB__LEN + BMA250_ACC_X_MSB__LEN)); acc->x = acc->x >> (sizeof(short)*8-(BMA250_ACC_X_LSB__LEN + BMA250_ACC_X_MSB__LEN)); acc->y = BMA250_GET_BITSLICE(data[2], BMA250_ACC_Y_LSB) | (BMA250_GET_BITSLICE(data[3], BMA250_ACC_Y_MSB)<<BMA250_ACC_Y_LSB__LEN); acc->y = acc->y << (sizeof(short)*8-(BMA250_ACC_Y_LSB__LEN + BMA250_ACC_Y_MSB__LEN)); acc->y = acc->y >> (sizeof(short)*8-(BMA250_ACC_Y_LSB__LEN + BMA250_ACC_Y_MSB__LEN)); acc->z = BMA250_GET_BITSLICE(data[4], BMA250_ACC_Z_LSB) | (BMA250_GET_BITSLICE(data[5], BMA250_ACC_Z_MSB)<<BMA250_ACC_Z_LSB__LEN); acc->z = acc->z << (sizeof(short)*8-(BMA250_ACC_Z_LSB__LEN+ BMA250_ACC_Z_MSB__LEN)); acc->z = acc->z >> (sizeof(short)*8-(BMA250_ACC_Z_LSB__LEN+ BMA250_ACC_Z_MSB__LEN)); return comres; }
static int bma250_get_eeprom_writing_status(struct i2c_client *client, unsigned char *eewrite) { int comres = 0; unsigned char data; comres = bma250_smbus_read_byte(client, BMA250_EEPROM_CTRL_REG, &data); data = BMA250_GET_BITSLICE(data, BMA250_EE_WRITE_SETTING_S); *eewrite = data; return comres; }
static int bma250_get_cal_ready(struct i2c_client *client, unsigned char *calrdy) { int comres = 0 ; unsigned char data; comres = bma250_smbus_read_byte(client, BMA250_OFFSET_CTRL_REG, &data); data = BMA250_GET_BITSLICE(data, BMA250_FAST_COMP_RDY_S); *calrdy = data; return comres; }
static int bma250_get_offset_target_z(struct i2c_client *client, unsigned char *offsettarget) { int comres = 0 ; unsigned char data; comres = bma250_smbus_read_byte(client, BMA250_OFFSET_PARAMS_REG, &data); data = BMA250_GET_BITSLICE(data, BMA250_COMP_TARGET_OFFSET_Z); *offsettarget = data; return comres; }
static int bma250_get_range(struct i2c_client *client, unsigned char *Range) { int comres = 0; unsigned char data = '\0'; if (client == NULL) { comres = -1; } else { comres = bma250_smbus_read_byte(client, BMA250_RANGE_SEL__REG, &data); data = BMA250_GET_BITSLICE(data, BMA250_RANGE_SEL); *Range = data; } return comres; }
static int bma250_get_bandwidth(struct i2c_client *client, unsigned char *BW) { int comres = 0; unsigned char data; if (client == NULL) { comres = -1; } else{ comres = bma250_smbus_read_byte(client, BMA250_BANDWIDTH__REG, &data); data = BMA250_GET_BITSLICE(data, BMA250_BANDWIDTH); if (data < BMA250_BW_7_81HZ) *BW = BMA250_BW_7_81HZ; else if (data > BMA250_BW_1000HZ) *BW = BMA250_BW_1000HZ; else *BW = data; } return comres; }
static int bma250_get_bandwidth(struct i2c_client *client, unsigned char *BW) { int comres = 0; unsigned char data = '\0'; if (client == NULL) { comres = -1; } else { comres = bma250_smbus_read_byte(client, BMA250_BANDWIDTH__REG, &data); data = BMA250_GET_BITSLICE(data, BMA250_BANDWIDTH); if (data <= 8) { *BW = 0; } else { if (data >= 0x0F) *BW = 7; else *BW = data - 8; } } return comres; }