Synergy Software Package User's Manual

RTOS-integrated touch panel V2 Framework implementation touch chips. More...

Data Structures

struct  sf_touch_panel_v2_instance_ctrl_t
 

Macros

#define SF_TOUCH_PANEL_V2_STACK_SIZE   (SF_TOUCH_PANEL_V2_CFG_THREAD_STACK_SIZE)
 
#define SF_TOUCH_PANEL_V2_ERROR_RETURN(a, err)   SSP_ERROR_RETURN((a), (err), &g_module_name[0], &g_version)
 
#define SF_TOUCH_PANEL_V2_OPEN   (0x54504e4cU)
 

Functions

ssp_err_t SF_TOUCH_PANEL_V2_Open (sf_touch_panel_v2_ctrl_t *const p_api_ctrl, sf_touch_panel_v2_cfg_t const *const p_cfg)
 Implements sf_touch_panel_v2_api_t::open. More...
 
ssp_err_t SF_TOUCH_PANEL_V2_Calibrate (sf_touch_panel_v2_ctrl_t *const p_api_ctrl, sf_touch_panel_v2_calibrate_t const *const p_display, sf_touch_panel_v2_calibrate_t const *const p_touchscreen, ULONG const timeout)
 Implements sf_touch_panel_v2_api_t::calibrate. More...
 
ssp_err_t SF_TOUCH_PANEL_V2_Start (sf_touch_panel_v2_ctrl_t *const p_api_ctrl)
 Implements sf_touch_panel_v2_api_t::start. More...
 
ssp_err_t SF_TOUCH_PANEL_V2_TouchDataGet (sf_touch_panel_v2_ctrl_t *const p_api_ctrl, sf_touch_panel_v2_payload_t *p_payload, ULONG const timeout)
 Implements sf_touch_panel_v2_api_t::touchDataGet. More...
 
ssp_err_t SF_TOUCH_PANEL_V2_Stop (sf_touch_panel_v2_ctrl_t *const p_api_ctrl)
 Implements sf_touch_panel_v2_api_t::stop. More...
 
ssp_err_t SF_TOUCH_PANEL_V2_Reset (sf_touch_panel_v2_ctrl_t *const p_api_ctrl)
 Implements sf_touch_panel_v2_api_t::reset. More...
 
ssp_err_t SF_TOUCH_PANEL_V2_Close (sf_touch_panel_v2_ctrl_t *const p_api_ctrl)
 Implements sf_touch_panel_v2_api_t::close. More...
 
ssp_err_t SF_TOUCH_PANEL_V2_VersionGet (ssp_version_t *const p_version)
 Implements sf_touch_panel_v2_api_t::versionGet. More...
 

Detailed Description

RTOS-integrated touch panel V2 Framework implementation touch chips.

Summary

This is a ThreadX touch panel framework implemented for external touch controllers with IRQ pins used to notify the application when new data is available.

Macro Definition Documentation

◆ SF_TOUCH_PANEL_V2_ERROR_RETURN

#define SF_TOUCH_PANEL_V2_ERROR_RETURN (   a,
  err 
)    SSP_ERROR_RETURN((a), (err), &g_module_name[0], &g_version)

Macro for error logger.

◆ SF_TOUCH_PANEL_V2_OPEN

#define SF_TOUCH_PANEL_V2_OPEN   (0x54504e4cU)

"TPNL" in ASCII, used to identify touch panel handle

◆ SF_TOUCH_PANEL_V2_STACK_SIZE

#define SF_TOUCH_PANEL_V2_STACK_SIZE   (SF_TOUCH_PANEL_V2_CFG_THREAD_STACK_SIZE)

Stack size for touch panel thread.

Function Documentation

◆ SF_TOUCH_PANEL_V2_Calibrate()

ssp_err_t SF_TOUCH_PANEL_V2_Calibrate ( sf_touch_panel_v2_ctrl_t *const  p_api_ctrl,
sf_touch_panel_v2_calibrate_t const *const  p_display,
sf_touch_panel_v2_calibrate_t const *const  p_touchscreen,
ULONG const  timeout 
)

Implements sf_touch_panel_v2_api_t::calibrate.

Return values
SSP_SUCCESSTouch panel calibrated successfully.
SSP_ERR_ASSERTIONA pointer parameter was NULL.
SSP_ERR_CALIBRATE_FAILEDFailed to calibrate
SSP_ERR_NOT_OPENTouch panel is not configured. Call SF_TOUCH_PANEL_V2_Open.
SSP_ERR_INVALID_ARGUMENTSet of display or touch screen coordinates passed are invalid.
Returns
See Common Error Codes or lower level drivers for other possible return codes.
Note
This function is reentrant for any panel.

Timeout not used in this implementation.

◆ SF_TOUCH_PANEL_V2_Close()

ssp_err_t SF_TOUCH_PANEL_V2_Close ( sf_touch_panel_v2_ctrl_t *const  p_api_ctrl)

Implements sf_touch_panel_v2_api_t::close.

Return values
SSP_SUCCESSTouch panel instance successfully closed.
SSP_ERR_ASSERTIONParameter p_api_ctrl was NULL, or a lower level driver reported this error.
SSP_ERR_NOT_OPENTouch panel is not configured. Call SF_TOUCH_PANEL_V2_Open.
Note
This function is reentrant.

Close the lower level driver.

Suspend internal thread.

Delete RTOS services used

Mark control block close

◆ SF_TOUCH_PANEL_V2_Open()

ssp_err_t SF_TOUCH_PANEL_V2_Open ( sf_touch_panel_v2_ctrl_t *const  p_api_ctrl,
sf_touch_panel_v2_cfg_t const *const  p_cfg 
)

Implements sf_touch_panel_v2_api_t::open.

Return values
SSP_SUCCESSTouch panel thread created and lower level drivers opened successfully.
SSP_ERR_ASSERTIONA pointer parameter was NULL, or a lower level driver reported this error.
SSP_ERR_INTERNALThe touch panel thread or event flags could not be created, or a lower level driver reported this error.
SSP_ERR_ALREADY_OPENTouch panel framework is already configured.
Returns
See Common Error Codes or lower level drivers for other possible return codes. This function calls:
Note
This function is reentrant for any panel.

Store user configurations in control block.

Create a mutex to protect access to the control structure and the lower level hardware.

Open the lower level driver.

Delete RTOS services used and log the error

Reset the touch chip.

Delete RTOS services used and log the error

Create event flags for internal communication.

Create semaphore for use with touchDataGet function

Delete RTOS services used

Create main touch panel thread.

Delete RTOS services used

Mark control block open so other tasks know it is valid

◆ SF_TOUCH_PANEL_V2_Reset()

ssp_err_t SF_TOUCH_PANEL_V2_Reset ( sf_touch_panel_v2_ctrl_t *const  p_api_ctrl)

Implements sf_touch_panel_v2_api_t::reset.

Return values
SSP_SUCCESSTouch chip reset successful.
SSP_ERR_ASSERTIONParameter p_api_ctrl was NULL, or a lower level driver reported this error.
SSP_ERR_IN_USEMutex was not available, or a lower level driver reported this error.
SSP_ERR_NOT_OPENTouch panel is not configured. Use Open API to configure.
Returns
See Common Error Codes or lower level drivers for other possible return codes. This function calls:
Note
This function is reentrant for any panel.

Obtain mutex since this accesses shared resources.

Call hardware specific reset function.

Release mutex.

◆ SF_TOUCH_PANEL_V2_Start()

ssp_err_t SF_TOUCH_PANEL_V2_Start ( sf_touch_panel_v2_ctrl_t *const  p_api_ctrl)

Implements sf_touch_panel_v2_api_t::start.

Return values
SSP_SUCCESSEnabled touch panel thread to scan for new touch events.
SSP_ERR_ASSERTIONA pointer parameter was NULL.
SSP_ERR_NOT_OPENTouch panel is not configured. Call SF_TOUCH_PANEL_V2_Open.
Note
This function is reentrant for any panel.

Set start flag.

◆ SF_TOUCH_PANEL_V2_Stop()

ssp_err_t SF_TOUCH_PANEL_V2_Stop ( sf_touch_panel_v2_ctrl_t *const  p_api_ctrl)

Implements sf_touch_panel_v2_api_t::stop.

Return values
SSP_SUCCESSDisabled touch panel thread from scanning the touch events.
SSP_ERR_ASSERTIONA pointer parameter was NULL.
SSP_ERR_NOT_OPENTouch panel is not configured. Call SF_TOUCH_PANEL_V2_Open.
Note
This function is reentrant for any panel.

Set stop flag.

◆ SF_TOUCH_PANEL_V2_TouchDataGet()

ssp_err_t SF_TOUCH_PANEL_V2_TouchDataGet ( sf_touch_panel_v2_ctrl_t *const  p_api_ctrl,
sf_touch_panel_v2_payload_t p_payload,
ULONG const  timeout 
)

Implements sf_touch_panel_v2_api_t::touchDataGet.

Return values
SSP_SUCCESSTouch panel data read successfully.
SSP_ERR_ASSERTIONA pointer parameter was NULL.
SSP_ERR_NOT_OPENTouch panel is not configured. Call SF_TOUCH_PANEL_V2_Open.
SSP_ERR_TIMEOUTTime out occurs while waiting for semaphore.
SSP_ERR_WAIT_ABORTEDSuspension was aborted by another thread.
Note
This function is reentrant for any panel.
The function will pend until new touch event data is available or it will timeout.

◆ SF_TOUCH_PANEL_V2_VersionGet()

ssp_err_t SF_TOUCH_PANEL_V2_VersionGet ( ssp_version_t *const  p_version)

Implements sf_touch_panel_v2_api_t::versionGet.

Return values
SSP_SUCCESSVersion returned successfully.
SSP_ERR_ASSERTIONParameter p_version was null.