TSSASlider::TSSASlider(UINT8 control_num)
  : _callbacks()
{
  TSS_SetControlPrivateData(control_num, static_cast<void *>(this));
  setControlStruct(static_cast<TSS_CSASlider*>(TSS_GetControlStruct(control_num)));

  /* Explicit call, no virtual inside ctor */
  TSSASlider::enable(TSS_MOVEMENT);
  TSSASlider::enable(TSS_CONTROL);
  TSSASlider::enable(TSS_CALLBACK);
}
Example #2
0
/*FUNCTION*----------------------------------------------------------------
*
* Function Name    : hmi_tss_get_value
* Returned Value   : bool
* Comments         :
*   This function gets value of requested TSS element.
*
*END*--------------------------------------------------------------------*/
static bool hmi_tss_get_value(HMI_PROVIDER_STRUCT_PTR provider_struct, uint32_t uid, uint32_t *value)
{    /* get context structure */
    HMI_TSS_CONTEXT_STRUCT_PTR  context_struct = (HMI_TSS_CONTEXT_STRUCT_PTR) provider_struct->CONTEXT_PTR;

    uint8_t      i;
    bool     result = FALSE;
    uint8_t      electrodes_status;
    uint8_t      electrode_index;
    /* get TSS control structure */
    uint8_t     *tss_control_struct_ptr = (uint8_t *)TSS_GetControlStruct(context_struct->CONTROL_NUMBER);

    if (tss_control_struct_ptr == NULL || context_struct == NULL)
    {
        return result;
    }
    if ((((TSS_CSRotary *)tss_control_struct_ptr)->ControlId.ControlType) == TSS_CT_ROTARY)        /* rotary */
    {
        if (context_struct->TSS_TABLE[0].UID == uid)
        {
            *value = (*(TSS_CSRotary *)tss_control_struct_ptr).StaticStatus.Position;            /* actual absolute position */
            result = TRUE;
        }
    }
    else if ((((TSS_CSSlider *)tss_control_struct_ptr)->ControlId.ControlType) == TSS_CT_SLIDER)    /* slider */
    {
        if (context_struct->TSS_TABLE[0].UID == uid)
        {
            *value = (*(TSS_CSSlider *)tss_control_struct_ptr).StaticStatus.Position;            /* actual absolute position */
            result = TRUE;
        }
    }
    else if ((((TSS_CSKeypad *)tss_control_struct_ptr)->ControlId.ControlType) == TSS_CT_KEYPAD)    /* keypad */
    {
        for (i=0; i<context_struct->TSS_COUNT; i++)
        {
            if (context_struct->TSS_TABLE[i].UID == uid)
            {
                /* get index */
                electrode_index = (TSS_GetControlFirstElectrodeIndex(context_struct->CONTROL_NUMBER) + i);
                /* electrodes status */
                electrodes_status = TSS_GetSystemConfig(System_ElectrodeStatus_Register + (electrode_index/8u));
                /* status of requested electrode */
                *value = (uint32_t)(electrodes_status >> (electrode_index % 8u)) & 0x1;
                result = TRUE;
                break;
            }
        }
    }
Example #3
0
/*FUNCTION*----------------------------------------------------------------
*
* Function Name    : hmi_tss_slider_callback
* Returned Value   : void
* Comments         :
*   This function is slider callback.
*
*END*--------------------------------------------------------------------*/
void hmi_tss_slider_callback(TSS_CONTROL_ID u8ControlId)
{    /* get provider struct from TSS private data */
    HMI_PROVIDER_STRUCT_PTR     provider_struct = (HMI_PROVIDER_STRUCT_PTR)TSS_GetControlPrivateData(u8ControlId.ControlNumber);
    /* get context data */
    HMI_TSS_CONTEXT_STRUCT_PTR  context_struct = (HMI_TSS_CONTEXT_STRUCT_PTR) provider_struct->CONTEXT_PTR;

    /* check if client is attached to provider */
    if (context_struct == NULL || context_struct->CLIENT_HANDLE == NULL)
    {
        return;
    }

    if ((*(TSS_CSSlider *)TSS_GetControlStruct(context_struct->CONTROL_NUMBER)).DynamicStatus.Movement)
    {
        context_struct->CLIENT_HANDLE->ON_CHANGE(context_struct->CLIENT_HANDLE, context_struct->TSS_TABLE[0].UID, HMI_VALUE_MOVEMENT);
    }
}
Example #4
0
/*FUNCTION*----------------------------------------------------------------
*
* Function Name    : hmi_tss_keypad_callback
* Returned Value   : void
* Comments         :
*   This function is callback for TSS buttons.
*
*END*--------------------------------------------------------------------*/
void hmi_tss_keypad_callback(TSS_CONTROL_ID u8ControlId)
{    /* get provider structure from TSS private data */
    HMI_PROVIDER_STRUCT_PTR     provider_struct = (HMI_PROVIDER_STRUCT_PTR)TSS_GetControlPrivateData(u8ControlId.ControlNumber);
    /* get context data */
    HMI_TSS_CONTEXT_STRUCT_PTR  context_struct = (HMI_TSS_CONTEXT_STRUCT_PTR)provider_struct->CONTEXT_PTR;
    /* get keypad structure pointer */
    TSS_CSKeypad               *keypad_structure = ((TSS_CSKeypad *)TSS_GetControlStruct(context_struct->CONTROL_NUMBER));
    uint8_t                      u8Event;    /* 8 bits local variable used to store the event information */
    uint8_t                      flag;       /* push / release flag */

    /* check if client is attached to provider */
    if (context_struct == NULL || context_struct->CLIENT_HANDLE == NULL)
    {
        return;
    }
    /* While unread events are in the buffer */
    while (!TSS_KEYPAD_BUFFER_EMPTY( *keypad_structure))
    {
        /* Read the buffer and store the event in the u8Event variable */
        TSS_KEYPAD_BUFFER_READ(u8Event, * keypad_structure);

        if (u8Event & TSS_KEYPAD_BUFFER_RELEASE_FLAG)
        {
            u8Event = (uint8_t)(u8Event & TSS_KEYPAD_BUFFER_KEY_MASK);    /* Get key index */
            flag = HMI_VALUE_RELEASE;
        }
        else
        {
            flag = HMI_VALUE_PUSH;
        }
        /* check if key index is registered in provider */
        if (u8Event >= context_struct->TSS_COUNT)
        {
            return;
        }
        context_struct->CLIENT_HANDLE->ON_CHANGE(context_struct->CLIENT_HANDLE, context_struct->TSS_TABLE[u8Event].UID, flag);
    }
}