Exemplo n.º 1
0
/*
** ===================================================================
**     Method      :  TSS1_Configure (component TSS_Library)
**     This method can be used also under name "Configure"
**
**     Description :
**         Whole TSS initialization and configuration of registers.
**         Contains main TSS_Init() function, TSS System Config
**         registers and all Control Config registers initialization
**         according to setting of Component properties. The user have
**         to place this function into the proper location in the
**         source code.
**     Parameters  : None
**     Returns     :
**         ---             - Error status code of Configure method. If
**                           the configuration is successful the
**                           TSS_STATUS_OK is reported, otherwise is
**                           reported one of error status codes
**                           described in TSSAPIRM document.
** ===================================================================
*/
byte TSS1_Configure(void)
{
  byte u8Result = TSS_STATUS_OK;

  /* Main TSS Initialization */
  (void) TSS_Init();

  /* Configure the Analog Slider Control to report the touch and release events */
  u8Result |= TSS_SetASliderConfig(AnalogSlider.ControlId, ASlider_Events_Register, TSS_ASLIDER_MOVEMENT_EVENT_EN_MASK | TSS_ASLIDER_INITIAL_TOUCH_EVENT_EN_MASK);
  /* Configure the Analog Slider Auto-Repeat Rate Register */
  u8Result |= TSS_SetASliderConfig(AnalogSlider.ControlId, ASlider_AutoRepeatRate_Register, 0x00);
  /* Configure the Analog Slider Movement Timeout Register */
  u8Result |= TSS_SetASliderConfig(AnalogSlider.ControlId, ASlider_MovementTimeout_Register, 0x02);
  /* Configure the Analog Slider Range Register */
  u8Result |= TSS_SetASliderConfig(AnalogSlider.ControlId, ASlider_Range_Register, 0x20);
  /* Configure ASlider Control configuration registers */
  u8Result |= TSS_SetASliderConfig(AnalogSlider.ControlId, ASlider_ControlConfig_Register, TSS_ASLIDER_CONTROL_EN_MASK | TSS_ASLIDER_CALLBACK_EN_MASK | 0x00);

  /* Enables all electrodes */
  u8Result |= TSS_SetSystemConfig(System_ElectrodeEnablers_Register+0, 0x03);
  /* Sets Trigger Mode */
  u8Result |= TSS_SetSystemConfig(System_SystemTrigger_Register, TSS_TRIGGER_MODE_ALWAYS);
  /* Sets the Number of samples for all electrodes */
  u8Result |= TSS_SetSystemConfig(System_NSamples_Register, 0x08);
  /* Configures the DC Tracker value */
  u8Result |= TSS_SetSystemConfig(System_DCTrackerRate_Register, 0x64);
  /* Configures the Response Time */
  u8Result |= TSS_SetSystemConfig(System_ResponseTime_Register, 0x04);
  /* Configures the Stuck-key Timeout */
  u8Result |= TSS_SetSystemConfig(System_StuckKeyTimeout_Register, 0x00);
  /* Configures System SystemConfig Register */
  u8Result |= TSS_SetSystemConfig(System_SystemConfig_Register, TSS_SYSTEM_EN_MASK);

  return u8Result;
}
bool TSSASlider::set(TSSControlConfig config, uint8_t value)
{
  /* only RW flags can be set */
  if (!(config & (TSSControlConfig)TSS_READ_ONLY_SHIFT) && (config & (TSS_CONTROL_SET_SHIFT | TSS_POSITION_DEC_SET_SHIFT | TSS_ANALOG_SET_SHIFT)))
  {
    uint8_t set_flag;
    TSS_CSASlider const *aslider_struct = getControlStruct();

    set_flag = (uint8_t)(config & 0x1F);
    if (TSS_SetASliderConfig(aslider_struct->ControlId, set_flag, value) == TSS_STATUS_OK)
    {
      return true;
    }
  }
  return false;
}
bool TSSASlider::enable(TSSControlFlag flag)
{
  if (flag & (TSS_CONTROL_EN_SHIFT | TSS_POSITION_DEC_SHIFT))
  {
    uint8_t enable_flag;
    uint16_t config_register;
    uint8_t  aslider_event;
    TSS_CSASlider const *aslider_struct = getControlStruct();

    enable_flag = (uint8_t)(flag & 0x1F);
    (enable_flag > 4) ? aslider_event = 1 : aslider_event = 4;
    config_register = TSS_GetASliderConfig(aslider_struct->ControlId, aslider_event);
    config_register |= (uint16_t)(1 << enable_flag);
    if (TSS_SetASliderConfig(aslider_struct->ControlId, aslider_event, config_register) == TSS_STATUS_OK)
    {
      return true;
    }
  }
  return false;
}