/* Scheduling:
 *
 *
 *
 * Usage guide:
 *
 *
 * Remarks:
 *
 ******************************************************************************/
int bma222_set_range(unsigned char Range)
{
   int comres=C_Zero_U8X ;
   unsigned char data1;

   if (p_bma222 == C_Zero_U8X)
   {
      comres = E_SMB_NULL_PTR;
   }
   else
   {
      if (Range < C_Four_U8X)
      {
         comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_RANGE_SEL_REG, &data1, C_One_U8X );
         switch (Range)
         {
            case C_Zero_U8X:
               data1  = BMA222_SET_BITSLICE(data1, BMA222_RANGE_SEL, C_Three_U8X);
               break;
            case C_One_U8X:
               data1  = BMA222_SET_BITSLICE(data1, BMA222_RANGE_SEL, C_Five_U8X);
               break;
            case C_Two_U8X:
               data1  = BMA222_SET_BITSLICE(data1, BMA222_RANGE_SEL, C_Eight_U8X);
               break;
            case C_Three_U8X:
               data1  = BMA222_SET_BITSLICE(data1, BMA222_RANGE_SEL, C_Twelve_U8X);
               break;
            default:
               break;
         }
         comres += p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_RANGE_SEL_REG, &data1, C_One_U8X);
      }
      else
      {
         comres = E_OUT_OF_RANGE ;
      }
   }
   return comres;
}
int bma222_set_cal_trigger(unsigned char caltrigger)
{
	int comres=C_Zero_U8X;
	unsigned char data;
	if (p_bma222==C_Zero_U8X)
	{
	comres = E_SMB_NULL_PTR;
	}
	else
	{
		comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_EN_FAST_COMP__REG, &data, C_One_U8X );
	 	data = BMA222_SET_BITSLICE(data, BMA222_EN_FAST_COMP, caltrigger );
		comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_EN_FAST_COMP__REG, &data, C_One_U8X);
	}
	return comres;
}
int bma222_set_ee_w(unsigned char eew)
{
	unsigned char data;
	int comres;
	if (p_bma222==C_Zero_U8X)
	{
		comres = E_SMB_NULL_PTR ;
	}
	else
	{
		comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_UNLOCK_EE_WRITE_SETTING__REG,&data, C_One_U8X);
		data = BMA222_SET_BITSLICE(data, BMA222_UNLOCK_EE_WRITE_SETTING, eew);
		comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_UNLOCK_EE_WRITE_SETTING__REG, &data, C_One_U8X);
	}
	return comres;
}
Beispiel #4
0
/* Scheduling:
 *
 *
 *
 * Usage guide:
 *
 *
 * Remarks:
 *
 ******************************************************************************/
int bma222_set_nvprog_trig(unsigned char trig)
{
   unsigned char data;
         int comres;
   if (p_bma222==C_Zero_U8X)
   {
      comres = E_SMB_NULL_PTR ;
   }
   else
   {
      comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_START_EE_PROG_TRIG__REG,&data, C_One_U8X);
      data = BMA222_SET_BITSLICE(data, BMA222_START_EE_PROG_TRIG, trig);
      comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_START_EE_PROG_TRIG__REG, &data, C_One_U8X);
   }
   return comres;
}
/* Scheduling:
 *
 *
 *
 * Usage guide:
 *
 *
 * Remarks:
 *
 ******************************************************************************/
int bma222_set_offset_target_z(unsigned char offsettarget)
{
   int comres=C_Zero_U8X;
   unsigned char data;
   if (p_bma222==C_Zero_U8X)
   {
      comres = E_SMB_NULL_PTR;
   }
   else
   {
      comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_COMP_TARGET_OFFSET_Z__REG, &data, C_One_U8X );
      data = BMA222_SET_BITSLICE(data, BMA222_COMP_TARGET_OFFSET_Z, offsettarget );
      comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_COMP_TARGET_OFFSET_Z__REG, &data, C_One_U8X);
   }
   return comres;
}
Beispiel #6
0
/* Scheduling:
 *
 *
 *
 * Usage guide:
 *
 *
 * Remarks:
 *
 ******************************************************************************/
int bma222_set_nvmprog_mode(unsigned char prgmode)
{
   unsigned char data;
         int comres;
   if (p_bma222==C_Zero_U8X)
   {
      comres = E_SMB_NULL_PTR ;
   }
   else
   {
      comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_UNLOCK_EE_PROG_MODE__REG,&data, C_One_U8X);
      data = BMA222_SET_BITSLICE(data, BMA222_UNLOCK_EE_PROG_MODE, prgmode);
      comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_UNLOCK_EE_PROG_MODE__REG, &data, C_One_U8X);
   }
   return comres;
}
Beispiel #7
0
/* Scheduling:
 *
 *
 *
 * Usage guide:
 *
 *
 * Remarks:
 *
 ******************************************************************************/
int bma222_set_Int_Mode(unsigned char Mode )
{
   int comres=C_Zero_U8X;
   unsigned char data;
   if (p_bma222==C_Zero_U8X)
   {
      comres = E_SMB_NULL_PTR;
   }
   else
   {
      comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_INT_MODE_SEL__REG, &data, C_One_U8X );
      data = BMA222_SET_BITSLICE(data, BMA222_INT_MODE_SEL, Mode );
      comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_INT_MODE_SEL__REG, &data, C_One_U8X);
   }
   return comres;
}
Beispiel #8
0
/* Scheduling:
 *
 *
 *
 * Usage guide:
 *
 *
 * Remarks:
 *
 ******************************************************************************/
int bma222_reset_interrupt(void)
{
   int comres=C_Zero_U8X;
   unsigned char data;
   if (p_bma222==C_Zero_U8X)
   {
      comres = E_SMB_NULL_PTR;
   }
   else
   {
      comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_INT_RESET_LATCHED__REG, &data, C_One_U8X );
      data = BMA222_SET_BITSLICE(data, BMA222_INT_RESET_LATCHED, C_One_U8X );
      comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_INT_RESET_LATCHED__REG, &data, C_One_U8X);
   }
   return comres;
}
Beispiel #9
0
/* Scheduling:
 *
 *
 *
 * Usage guide:
 *
 *
 * Remarks:
 *
 ******************************************************************************/
int bma222_update_image(void)
{
   int comres;
   unsigned char data=0;
   if (p_bma222==C_Zero_U8X)
   {
      comres = E_SMB_NULL_PTR;
   }
   else
   {
      comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_UPDATE_IMAGE__REG, &data, C_One_U8X);
      data = BMA222_SET_BITSLICE(data, BMA222_UPDATE_IMAGE, C_One_U8X);
      comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_UPDATE_IMAGE__REG, &data,C_One_U8X);
   }
   return comres;
}
int bma222_set_ee_prog_trig(void)
{
	int comres=C_Zero_U8X;
	unsigned char data;
	unsigned char eeprog;
	eeprog = 0x01;
	if (p_bma222==C_Zero_U8X)
	{
		comres = E_SMB_NULL_PTR;
	}
	else
	{
		comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_START_EE_WRITE_SETTING__REG, &data, C_One_U8X );
		data = BMA222_SET_BITSLICE(data, BMA222_START_EE_WRITE_SETTING, eeprog );
		comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_START_EE_WRITE_SETTING__REG, &data, C_One_U8X);
	}
	return comres;
}
/* Scheduling:
 *
 *
 *
 * Usage guide:
 *
 *
 * Remarks:
 *
 ******************************************************************************/
unsigned char bma222_set_mode(unsigned char Mode)
{
   int comres=C_Zero_U8X ;
   unsigned char data1;

   if (p_bma222 == C_Zero_U8X)
   {
      comres = E_SMB_NULL_PTR;
   }
   else
   {
      if (Mode < C_Three_U8X)
      {
         comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_EN_LOW_POWER__REG, &data1, C_One_U8X );
         switch (Mode)
         {
            case BMA222_MODE_NORMAL:
               data1  = BMA222_SET_BITSLICE(data1, BMA222_EN_LOW_POWER, C_Zero_U8X);
               data1  = BMA222_SET_BITSLICE(data1, BMA222_EN_SUSPEND, C_Zero_U8X);
               break;
            case BMA222_MODE_LOWPOWER:
               data1  = BMA222_SET_BITSLICE(data1, BMA222_EN_LOW_POWER, C_One_U8X);
               data1  = BMA222_SET_BITSLICE(data1, BMA222_EN_SUSPEND, C_Zero_U8X);
               break;
            case BMA222_MODE_SUSPEND:
               data1  = BMA222_SET_BITSLICE(data1, BMA222_EN_LOW_POWER, C_Zero_U8X);
               data1  = BMA222_SET_BITSLICE(data1, BMA222_EN_SUSPEND, C_One_U8X);
               break;
            default:
               break;
         }
         comres += p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_EN_LOW_POWER__REG, &data1, C_One_U8X);
         p_bma222->mode = Mode;
      }
      else
      {
         comres = E_OUT_OF_RANGE ;
      }
   }

   return comres;
}
/* Scheduling:
 *
 *
 *
 * Usage guide:
 *
 *
 * Remarks:
 *
 ******************************************************************************/
int bma222_set_bandwidth(unsigned char BW)
{
   int comres = C_Zero_U8X ;
   unsigned char data;
   int Bandwidth ;

   if (p_bma222 == C_Zero_U8X)
   {
      comres = E_SMB_NULL_PTR;
   }
   else
   {
      if (BW < C_Eight_U8X)
      {
         switch (BW)
         {
            case C_Zero_U8X:
               Bandwidth = BMA222_BW_7_81HZ;
               
               /*  7.81 Hz      64000 uS   */
               break;
            case C_One_U8X:
               Bandwidth = BMA222_BW_15_63HZ;
               
               /*  15.63 Hz     32000 uS   */
               break;
            case C_Two_U8X:
               Bandwidth = BMA222_BW_31_25HZ;
               
               /*  31.25 Hz     16000 uS   */
               break;
            case C_Three_U8X:
               Bandwidth = BMA222_BW_62_50HZ;
               
               /*  62.50 Hz     8000 uS   */
               break;
            case C_Four_U8X:
               Bandwidth = BMA222_BW_125HZ;
               
               /*  125 Hz       4000 uS   */
               break;
            case C_Five_U8X:
               Bandwidth = BMA222_BW_250HZ;
               
               /*  250 Hz       2000 uS   */
               break;
            case C_Six_U8X:
               Bandwidth = BMA222_BW_500HZ;
               
               /*  500 Hz       1000 uS   */
               break;
            case C_Seven_U8X:
               Bandwidth = BMA222_BW_1000HZ;
               
               /*  1000 Hz      500 uS   */
               break;
            default:
               break;
         }
         comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_BANDWIDTH__REG, &data, C_One_U8X );
         data = BMA222_SET_BITSLICE(data, BMA222_BANDWIDTH, Bandwidth );
         comres += p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_BANDWIDTH__REG, &data, C_One_U8X );
      }
      else
      {
         comres = E_OUT_OF_RANGE ;
      }
   }
   return comres;
}
/* Scheduling:
 *
 *
 *
 * Usage guide:
 *
 *
 * Remarks:
 *
 ******************************************************************************/
int bma222_set_Int_Enable(unsigned char InterruptType , unsigned char value )
{
   int comres=C_Zero_U8X;
   unsigned char data1,data2;

   if (p_bma222==C_Zero_U8X)
   {
      comres = E_SMB_NULL_PTR;
   }
   else
   {
      comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_INT_ENABLE1_REG, &data1, C_One_U8X );
      comres = p_bma222->BMA222_BUS_READ_FUNC(p_bma222->dev_addr, BMA222_INT_ENABLE2_REG, &data2, C_One_U8X );
      
      value = value & C_One_U8X;
      switch (InterruptType)
      {
         case C_Zero_U8X:
            /* Low G Interrupt  */
            data2 = BMA222_SET_BITSLICE(data2, BMA222_EN_LOWG_INT, value );
            break;
         case C_One_U8X:
            /* High G X Interrupt */
            data2 = BMA222_SET_BITSLICE(data2, BMA222_EN_HIGHG_X_INT, value );
            break;
         case C_Two_U8X:
            /* High G Y Interrupt */
            data2 = BMA222_SET_BITSLICE(data2, BMA222_EN_HIGHG_Y_INT, value );
            break;
         case C_Three_U8X:
            /* High G Z Interrupt */
            data2 = BMA222_SET_BITSLICE(data2, BMA222_EN_HIGHG_Z_INT, value );
            break;
         case C_Four_U8X:
            /* New Data Interrupt  */
            data2 = BMA222_SET_BITSLICE(data2, BMA222_EN_NEW_DATA_INT, value );
            break;
         case C_Five_U8X:
            /* Slope X Interrupt */
            data1 = BMA222_SET_BITSLICE(data1, BMA222_EN_SLOPE_X_INT, value );
            break;
         case C_Six_U8X:
            /* Slope Y Interrupt */
            data1 = BMA222_SET_BITSLICE(data1, BMA222_EN_SLOPE_Y_INT, value );
            break;
         case C_Seven_U8X:
            /* Slope Z Interrupt */
            data1 = BMA222_SET_BITSLICE(data1, BMA222_EN_SLOPE_Z_INT, value );
            break;
         case C_Eight_U8X:
            /* Single Tap Interrupt */
            data1 = BMA222_SET_BITSLICE(data1, BMA222_EN_SINGLE_TAP_INT, value );
            break;
         case C_Nine_U8X:
            /* Double Tap Interrupt */
            data1 = BMA222_SET_BITSLICE(data1, BMA222_EN_DOUBLE_TAP_INT, value );
            break;
         case C_Ten_U8X:
            /* Orient Interrupt  */
            data1 = BMA222_SET_BITSLICE(data1, BMA222_EN_ORIENT_INT, value );
            break;
         case C_Eleven_U8X:
            /* Flat Interrupt */
            data1 = BMA222_SET_BITSLICE(data1, BMA222_EN_FLAT_INT, value );
            break;
         default:
            break;
      }
      comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_INT_ENABLE1_REG, &data1, C_One_U8X );
      comres = p_bma222->BMA222_BUS_WRITE_FUNC(p_bma222->dev_addr, BMA222_INT_ENABLE2_REG, &data2, C_One_U8X );
   }
   return comres;
}