Lines Matching refs:obj

66 static cy_rslt_t _cyhal_keyscan_init_resources(cyhal_keyscan_t *obj, uint8_t num_columns, const cyh…
68 static cy_rslt_t _cyhal_keyscan_init_hw(cyhal_keyscan_t *obj, const cy_stc_ks_config_t *cfg);
107 cyhal_keyscan_t *obj = _cyhal_keyscan_config_structs[0]; in _cyhal_keyscan_irq_handler() local
114 Cy_Keyscan_Interrupt_Handler(obj->base, &(obj->context)); in _cyhal_keyscan_irq_handler()
126 cyhal_keyscan_t *obj = _cyhal_keyscan_config_structs[0]; in _cyhal_keyscan_cb_wrapper() local
128 …((obj->context.curNumElements == obj->context.maxNumElements) ? CYHAL_KEYSCAN_EVENT_BUFFER_FULL : … in _cyhal_keyscan_cb_wrapper()
129 cyhal_keyscan_event_t anded_events = (cyhal_keyscan_event_t)(obj->irq_cause & hal_event); in _cyhal_keyscan_cb_wrapper()
132 …cyhal_keyscan_event_callback_t callback = (cyhal_keyscan_event_callback_t) obj->callback_data.call… in _cyhal_keyscan_cb_wrapper()
133 callback(obj->callback_data.callback_arg, anded_events); in _cyhal_keyscan_cb_wrapper()
143 cyhal_keyscan_t *obj = _cyhal_keyscan_config_structs[0]; in _cyhal_keyscan_pm_callback() local
144 Cy_Keyscan_GetInterruptMask(obj->base, &readMask); in _cyhal_keyscan_pm_callback()
150 Cy_Keyscan_EnableClockStayOn(obj->base); in _cyhal_keyscan_pm_callback()
151 Cy_Keyscan_SetInterruptMask(obj->base, readMask & ~MXKEYSCAN_INTR_KEY_EDGE_DONE); in _cyhal_keyscan_pm_callback()
159 Cy_Keyscan_DisableClockStayOn(obj->base); in _cyhal_keyscan_pm_callback()
160 Cy_Keyscan_SetInterruptMask(obj->base, readMask | MXKEYSCAN_INTR_KEY_EDGE_DONE); in _cyhal_keyscan_pm_callback()
175 static cy_rslt_t _cyhal_keyscan_init_resources(cyhal_keyscan_t *obj, uint8_t num_columns, const cyh… in _cyhal_keyscan_init_resources() argument
179 obj->resource.type = CYHAL_RSC_INVALID; in _cyhal_keyscan_init_resources()
180 obj->irq_cause = CYHAL_KEYSCAN_EVENT_NONE; in _cyhal_keyscan_init_resources()
181 for (uint8_t idx=0; idx < _CYHAL_KEYSCAN_MAX_COLS; idx++) obj->columns[idx] = NC; in _cyhal_keyscan_init_resources()
182 for (uint8_t idx=0; idx < _CYHAL_KEYSCAN_MAX_ROWS; idx++) obj->rows[idx] = NC; in _cyhal_keyscan_init_resources()
198 if(CYHAL_RSC_INVALID == obj->resource.type) in _cyhal_keyscan_init_resources()
200 obj->resource.type = CYHAL_RSC_KEYSCAN; in _cyhal_keyscan_init_resources()
201 obj->resource.block_num = column_map->block_num; in _cyhal_keyscan_init_resources()
202 obj->resource.channel_num = 0; in _cyhal_keyscan_init_resources()
203 result = cyhal_hwmgr_reserve(&(obj->resource)); in _cyhal_keyscan_init_resources()
208 else if (obj->resource.block_num != column_map->block_num) in _cyhal_keyscan_init_resources()
229 obj->columns[idx] = columns[idx]; in _cyhal_keyscan_init_resources()
246 if (result == CY_RSLT_SUCCESS && (obj->resource.block_num != row_map->block_num)) in _cyhal_keyscan_init_resources()
267 obj->rows[idx] = rows[idx]; in _cyhal_keyscan_init_resources()
281 obj->is_clock_owned = true; in _cyhal_keyscan_init_resources()
282 obj->clock = clock_keyscan; in _cyhal_keyscan_init_resources()
288 obj->clock = *clock; in _cyhal_keyscan_init_resources()
299 static cy_rslt_t _cyhal_keyscan_init_hw(cyhal_keyscan_t *obj, const cy_stc_ks_config_t *cfg) in _cyhal_keyscan_init_hw() argument
301 obj->base = _cyhal_keyscan_base[obj->resource.block_num]; in _cyhal_keyscan_init_hw()
303 cy_rslt_t result = Cy_Keyscan_Init(obj->base, cfg, &(obj->context)); in _cyhal_keyscan_init_hw()
306 _cyhal_keyscan_config_structs[0] = obj; in _cyhal_keyscan_init_hw()
309 obj->callback_data.callback = NULL; in _cyhal_keyscan_init_hw()
310 obj->callback_data.callback_arg = NULL; in _cyhal_keyscan_init_hw()
311 obj->irq_cause = CYHAL_KEYSCAN_EVENT_NONE; in _cyhal_keyscan_init_hw()
317 Cy_Keyscan_SetInterruptMask(obj->base, MXKEYSCAN_INTR_FIFO_THRESH_DONE); in _cyhal_keyscan_init_hw()
319 result = Cy_Keyscan_Register_Callback(_cyhal_keyscan_cb_wrapper, &(obj->context)); in _cyhal_keyscan_init_hw()
327 result = Cy_Keyscan_FlushEvents(obj->base, &(obj->context)); in _cyhal_keyscan_init_hw()
332 result = Cy_Keyscan_Enable(obj->base, &(obj->context)); in _cyhal_keyscan_init_hw()
338 cy_rslt_t cyhal_keyscan_init(cyhal_keyscan_t *obj, uint8_t num_columns, const cyhal_gpio_t *columns, in cyhal_keyscan_init() argument
341 CY_ASSERT(NULL != obj); in cyhal_keyscan_init()
342 memset(obj, 0, sizeof(cyhal_keyscan_t)); in cyhal_keyscan_init()
344 obj->dc_configured = false; in cyhal_keyscan_init()
346 …cy_rslt_t result = _cyhal_keyscan_init_resources(obj, num_columns, columns, num_rows, rows, clock); in cyhal_keyscan_init()
353 result = _cyhal_keyscan_init_hw(obj, &config); in cyhal_keyscan_init()
358 cyhal_keyscan_free(obj); in cyhal_keyscan_init()
364 cy_rslt_t cyhal_keyscan_init_cfg(cyhal_keyscan_t *obj, const cyhal_keyscan_configurator_t *cfg) in cyhal_keyscan_init_cfg() argument
366 CY_ASSERT(NULL != obj); in cyhal_keyscan_init_cfg()
369 memset(obj, 0, sizeof(cyhal_keyscan_t)); in cyhal_keyscan_init_cfg()
371 obj->resource = *cfg->resource; in cyhal_keyscan_init_cfg()
372 obj->clock = *cfg->clock; in cyhal_keyscan_init_cfg()
373 obj->is_clock_owned = false; in cyhal_keyscan_init_cfg()
374 obj->dc_configured = true; in cyhal_keyscan_init_cfg()
376 for (uint8_t idx=0; idx < _CYHAL_KEYSCAN_MAX_COLS; idx++) obj->columns[idx] = NC; in cyhal_keyscan_init_cfg()
377 for (uint8_t idx=0; idx < _CYHAL_KEYSCAN_MAX_ROWS; idx++) obj->rows[idx] = NC; in cyhal_keyscan_init_cfg()
379 cy_rslt_t result = _cyhal_keyscan_init_hw(obj, cfg->config); in cyhal_keyscan_init_cfg()
383 cyhal_keyscan_free(obj); in cyhal_keyscan_init_cfg()
389 void cyhal_keyscan_free(cyhal_keyscan_t *obj) in cyhal_keyscan_free() argument
391 CY_ASSERT(NULL != obj); in cyhal_keyscan_free()
393 if (obj->resource.type != CYHAL_RSC_INVALID) in cyhal_keyscan_free()
398 if (obj->base != NULL) in cyhal_keyscan_free()
400 Cy_Keyscan_SetInterruptMask(obj->base, 0); in cyhal_keyscan_free()
401 Cy_Keyscan_Disable(obj->base, &(obj->context)); in cyhal_keyscan_free()
402 Cy_Keyscan_DeInit(obj->base, &(obj->context)); in cyhal_keyscan_free()
405 if (false == obj->dc_configured) in cyhal_keyscan_free()
407 cyhal_hwmgr_free(&(obj->resource)); in cyhal_keyscan_free()
411 if (obj->is_clock_owned) in cyhal_keyscan_free()
413 cyhal_clock_free(&(obj->clock)); in cyhal_keyscan_free()
416 if (false == obj->dc_configured) in cyhal_keyscan_free()
421 _cyhal_utils_release_if_used(&(obj->columns[idx])); in cyhal_keyscan_free()
426 _cyhal_utils_release_if_used(&(obj->rows[idx])); in cyhal_keyscan_free()
431 cy_rslt_t cyhal_keyscan_read(cyhal_keyscan_t *obj, uint8_t* count, cyhal_keyscan_action_t* keys) in cyhal_keyscan_read() argument
440 status = Cy_Keyscan_EventsPending(obj->base, &hasPending, &(obj->context)); in cyhal_keyscan_read()
443 status = Cy_Keyscan_GetNextEvent(obj->base, &eventNext, &(obj->context)); in cyhal_keyscan_read()
470 void cyhal_keyscan_register_callback(cyhal_keyscan_t *obj, cyhal_keyscan_event_callback_t callback,… in cyhal_keyscan_register_callback() argument
473 obj->callback_data.callback = (cy_israddress) callback; in cyhal_keyscan_register_callback()
474 obj->callback_data.callback_arg = callback_arg; in cyhal_keyscan_register_callback()
478 void cyhal_keyscan_enable_event(cyhal_keyscan_t *obj, cyhal_keyscan_event_t event, uint8_t intr_pri… in cyhal_keyscan_enable_event() argument
482 obj->irq_cause |= event; in cyhal_keyscan_enable_event()
486 obj->irq_cause &= ~event; in cyhal_keyscan_enable_event()