static int yas530_ext_read(void *mlsl_handle, struct ext_slave_descr *slave, struct ext_slave_platform_data *pdata, unsigned char *data) { int result = INV_SUCCESS; int raw[3] = {0,}; int xyz[3] = {0,}; int accuracy = 0; int i = 0; short xyz_scaled[3] = {0,}; geomagnetic_api_read(xyz, raw, NULL, &accuracy); xyz_scaled[0] = (short)(xyz[0]/100); xyz_scaled[1] = (short)(xyz[1]/100); xyz_scaled[2] = (short)(xyz[2]/100); data[0] = xyz_scaled[0] >> 8; data[1] = xyz_scaled[0] & 0xFF; data[2] = xyz_scaled[1] >> 8; data[3] = xyz_scaled[1] & 0xFF; data[4] = xyz_scaled[2] >> 8; data[5] = xyz_scaled[2] & 0xFF; data[6] = (unsigned char)accuracy; return result; }
static int yas530_read ( void *mlsl_handle, struct ext_slave_descr *slave, struct ext_slave_platform_data *pdata, unsigned char *data ) { int xyz[3]; int raw[3]; short rawfixed[3]; int xy1y2[3]; int accuracy; geomagnetic_api_read(xyz, raw, xy1y2, &accuracy); rawfixed[0] = (short) (xyz[0]/100); rawfixed[1] = (short) (xyz[1]/100); rawfixed[2] = (short) (xyz[2]/100); data[0] = rawfixed[0] >> 8; data[1] = rawfixed[0] & 0xFF; data[2] = rawfixed[1] >> 8; data[3] = rawfixed[1] & 0xFF; data[4] = rawfixed[2] >> 8; data[5] = rawfixed[2] & 0xFF; return ML_SUCCESS; }
static int yas530_read ( void *mlsl_handle, struct ext_slave_descr *slave, struct ext_slave_platform_data *pdata, unsigned char *data ) { int result = ML_SUCCESS; int xyz[3]; int raw[3]; short rawfixed[3]; int xy1y2[3]; int accuracy; static short pre_data[3]={0,}; geomagnetic_api_read(xyz,raw,xy1y2,&accuracy); /* printk("@@@yas530_read@@@ x: %d, y: %d, z: %d accuracy : %d \n", xyz[0]/1000, xyz[1]/1000, xyz[2]/1000, accuracy ); */ // if(accuracy>0) { rawfixed[0] = (short) (xyz[0]/100); rawfixed[1] = (short) (xyz[1]/100); rawfixed[2] = (short) (xyz[2]/100); pre_data[0] = rawfixed[0]; pre_data[1] = rawfixed[1]; pre_data[2] = rawfixed[2]; data[0] = rawfixed[0]>>8; data[1] = rawfixed[0] & 0xFF; data[2] = rawfixed[1]>>8; data[3] = rawfixed[1] & 0xFF; data[4] = rawfixed[2]>>8; data[5] = rawfixed[2] & 0xFF; //data[6] = accuracy; // printk("@@@yas530_read@@@ + accuracy: %d, predata[0]:%d\n", accuracy, pre_data[0]); } data[6] = accuracy; if(0/*!accuracy&&!pre_data[0]*/) { printk("@@@yas530_read@@@ - accuracy: %d, predata[0]:%d\n", accuracy, pre_data[0]); return ML_ERROR; } return result; }