/*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); } }
/*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); } }
TSSControl* TSSControlFactory::createTSSControl(uint8_t control_number) { void *control = TSS_GetControlPrivateData(control_number); /* retrieve this pointer as void* */ if (control != NULL) { return static_cast<TSSControl*>NULL; /* control was already created */ } switch (control_number) { #if (TSS_N_CONTROLS > 0) case 0: return new TSS_C0_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 1) case 1: return new TSS_C1_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 2) case 2: return new TSS_C2_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 3) case 3: return new TSS_C3_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 4) case 4: return new TSS_C4_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 5) case 5: return new TSS_C5_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 6) case 6: return new TSS_C6_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 7) case 7: return new TSS_C7_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 8) case 8: return new TSS_C8_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 9) case 9: return new TSS_C9_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 10) case 10: return new TSS_C10_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 11) case 11: return new TSS_C11_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 12) case 12: return new TSS_C12_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 13) case 13: return new TSS_C13_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 14) case 14: return new TSS_C14_CLASS(control_number); #endif #if (TSS_N_CONTROLS > 15) case 15: return new TSS_C15_CLASS(control_number); #endif } return static_cast<TSSControl*>NULL; }
TSSControl* TSSControlFactory::getTSSControl(uint8_t control_number) { return static_cast<TSSControl*>(TSS_GetControlPrivateData(control_number)); }