Lines Matching refs:p_cb

139 static bool xfer_completeness_check(NRF_TWI_Type * p_twi, twi_control_block_t const * p_cb)  in xfer_completeness_check()  argument
147 if (p_cb->bytes_transferred != p_cb->curr_length) in xfer_completeness_check()
183 twi_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_twi_init() local
186 if (p_cb->state != NRFX_DRV_STATE_UNINITIALIZED) in nrfx_twi_init()
214 p_cb->handler = event_handler; in nrfx_twi_init()
215 p_cb->p_context = p_context; in nrfx_twi_init()
216 p_cb->int_mask = 0; in nrfx_twi_init()
217 p_cb->prev_suspend = TWI_NO_SUSPEND; in nrfx_twi_init()
218 p_cb->repeated = false; in nrfx_twi_init()
219 p_cb->busy = false; in nrfx_twi_init()
223 p_cb->hold_bus_uninit = p_config->hold_bus_uninit; in nrfx_twi_init()
224 p_cb->skip_gpio_cfg = p_config->skip_gpio_cfg; in nrfx_twi_init()
239 p_cb->state = NRFX_DRV_STATE_INITIALIZED; in nrfx_twi_init()
251 twi_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_twi_reconfigure() local
253 if (p_cb->state == NRFX_DRV_STATE_UNINITIALIZED) in nrfx_twi_reconfigure()
257 if (p_cb->busy) in nrfx_twi_reconfigure()
262 p_cb->hold_bus_uninit = p_config->hold_bus_uninit; in nrfx_twi_reconfigure()
270 twi_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_twi_uninit() local
272 NRFX_ASSERT(p_cb->state != NRFX_DRV_STATE_UNINITIALIZED); in nrfx_twi_uninit()
274 if (p_cb->handler) in nrfx_twi_uninit()
284 if (!p_cb->skip_gpio_cfg && !p_cb->hold_bus_uninit) in nrfx_twi_uninit()
290 p_cb->state = NRFX_DRV_STATE_UNINITIALIZED; in nrfx_twi_uninit()
296 twi_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_twi_init_check() local
298 return (p_cb->state != NRFX_DRV_STATE_UNINITIALIZED); in nrfx_twi_init_check()
303 twi_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_twi_enable() local
305 NRFX_ASSERT(p_cb->state == NRFX_DRV_STATE_INITIALIZED); in nrfx_twi_enable()
310 p_cb->state = NRFX_DRV_STATE_POWERED_ON; in nrfx_twi_enable()
316 twi_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_twi_disable() local
318 NRFX_ASSERT(p_cb->state != NRFX_DRV_STATE_UNINITIALIZED); in nrfx_twi_disable()
325 p_cb->state = NRFX_DRV_STATE_INITIALIZED; in nrfx_twi_disable()
326 p_cb->busy = false; in nrfx_twi_disable()
331 twi_control_block_t * p_cb) in twi_send_byte() argument
333 if (p_cb->bytes_transferred < p_cb->curr_length) in twi_send_byte()
335 nrf_twi_txd_set(p_twi, p_cb->p_curr_buf[p_cb->bytes_transferred]); in twi_send_byte()
339 if (p_cb->curr_tx_no_stop) in twi_send_byte()
344 else if(TWI_FLAG_SUSPEND(p_cb->flags)) in twi_send_byte()
347 p_cb->prev_suspend = TWI_SUSPEND_TX; in twi_send_byte()
359 twi_control_block_t * p_cb) in twi_receive_byte() argument
361 if (p_cb->bytes_transferred < p_cb->curr_length) in twi_receive_byte()
363 p_cb->p_curr_buf[p_cb->bytes_transferred] = nrf_twi_rxd_get(p_twi); in twi_receive_byte()
365 ++(p_cb->bytes_transferred); in twi_receive_byte()
367 if ((p_cb->bytes_transferred == p_cb->curr_length - 1) && (!TWI_FLAG_SUSPEND(p_cb->flags))) in twi_receive_byte()
371 else if (p_cb->bytes_transferred == p_cb->curr_length && (!TWI_FLAG_SUSPEND(p_cb->flags))) in twi_receive_byte()
375 else if (p_cb->bytes_transferred == p_cb->curr_length && TWI_FLAG_SUSPEND(p_cb->flags)) in twi_receive_byte()
377 p_cb->prev_suspend = TWI_SUSPEND_RX; in twi_receive_byte()
387 twi_control_block_t * p_cb) in twi_transfer() argument
403 if (p_cb->error) in twi_transfer()
414 p_cb->error = true; in twi_transfer()
421 ++(p_cb->bytes_transferred); in twi_transfer()
428 p_cb->error = true; in twi_transfer()
432 if (!twi_send_byte(p_twi, p_cb)) in twi_transfer()
447 p_cb->error = true; in twi_transfer()
451 if (!twi_receive_byte(p_twi, p_cb)) in twi_transfer()
461 p_cb->prev_suspend = TWI_NO_SUSPEND; in twi_transfer()
462 if (!p_cb->error) in twi_transfer()
464 p_cb->error = !xfer_completeness_check(p_twi, p_cb); in twi_transfer()
473 twi_control_block_t * p_cb) in twi_tx_start_transfer() argument
486 p_cb->bytes_transferred = 0; in twi_tx_start_transfer()
487 p_cb->error = false; in twi_tx_start_transfer()
492 if (p_cb->prev_suspend != TWI_SUSPEND_TX) in twi_tx_start_transfer()
497 (void)twi_send_byte(p_twi, p_cb); in twi_tx_start_transfer()
499 if (p_cb->handler) in twi_tx_start_transfer()
501 p_cb->int_mask = NRF_TWI_INT_STOPPED_MASK | in twi_tx_start_transfer()
506 nrf_twi_int_enable(p_twi, p_cb->int_mask); in twi_tx_start_transfer()
511 twi_transfer(p_twi, p_cb)) in twi_tx_start_transfer()
516 if (p_cb->error) in twi_tx_start_transfer()
542 twi_control_block_t * p_cb) in twi_rx_start_transfer() argument
554 p_cb->bytes_transferred = 0; in twi_rx_start_transfer()
555 p_cb->error = false; in twi_rx_start_transfer()
557 if ((p_cb->curr_length == 1) && (!TWI_FLAG_SUSPEND(p_cb->flags))) in twi_rx_start_transfer()
568 if (p_cb->prev_suspend != TWI_SUSPEND_RX) in twi_rx_start_transfer()
573 if (p_cb->handler) in twi_rx_start_transfer()
575 p_cb->int_mask = NRF_TWI_INT_STOPPED_MASK | in twi_rx_start_transfer()
579 nrf_twi_int_enable(p_twi, p_cb->int_mask); in twi_rx_start_transfer()
584 twi_transfer(p_twi, p_cb)) in twi_rx_start_transfer()
589 if (p_cb->error) in twi_rx_start_transfer()
613 twi_control_block_t * p_cb, in twi_xfer() argument
619 if ((p_cb->prev_suspend == TWI_SUSPEND_TX) && (p_xfer_desc->type == NRFX_TWI_XFER_RX)) in twi_xfer()
624 else if ((p_cb->prev_suspend == TWI_SUSPEND_RX) && (p_xfer_desc->type != NRFX_TWI_XFER_RX)) in twi_xfer()
633 if (p_cb->busy) in twi_xfer()
635 nrf_twi_int_enable(p_twi, p_cb->int_mask); in twi_xfer()
644 p_cb->busy = (TWI_FLAG_NO_HANDLER_IN_USE(flags)) ? false : true; in twi_xfer()
647 p_cb->flags = flags; in twi_xfer()
648 p_cb->xfer_desc = *p_xfer_desc; in twi_xfer()
649 p_cb->curr_length = p_xfer_desc->primary_length; in twi_xfer()
650 p_cb->p_curr_buf = p_xfer_desc->p_primary_buf; in twi_xfer()
655 p_cb->curr_tx_no_stop = ((p_xfer_desc->type == NRFX_TWI_XFER_TX) && in twi_xfer()
658 err_code = twi_tx_start_transfer(p_twi, p_cb); in twi_xfer()
662 err_code = twi_rx_start_transfer(p_twi, p_cb); in twi_xfer()
664 if (p_cb->handler == NULL) in twi_xfer()
666 p_cb->busy = false; in twi_xfer()
673 twi_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_twi_is_busy() local
674 NRFX_ASSERT(p_cb->state != NRFX_DRV_STATE_UNINITIALIZED); in nrfx_twi_is_busy()
676 return p_cb->busy; in nrfx_twi_is_busy()
684 twi_control_block_t * p_cb = &m_cb[p_instance->drv_inst_idx]; in nrfx_twi_xfer() local
686 NRFX_ASSERT(p_cb->state == NRFX_DRV_STATE_POWERED_ON); in nrfx_twi_xfer()
691 NRFX_ASSERT( !((p_cb->handler == NULL) && (p_xfer_desc->type == NRFX_TWI_XFER_TXRX))); in nrfx_twi_xfer()
692 NRFX_ASSERT( !((p_cb->handler == NULL) && (p_xfer_desc->type == NRFX_TWI_XFER_TXTX))); in nrfx_twi_xfer()
705 err_code = twi_xfer((NRF_TWI_Type *)p_instance->p_twi, p_cb, p_xfer_desc, flags); in nrfx_twi_xfer()
726 static void irq_handler(NRF_TWI_Type * p_twi, twi_control_block_t * p_cb) in irq_handler() argument
728 NRFX_ASSERT(p_cb->handler); in irq_handler()
730 if (twi_transfer(p_twi, p_cb)) in irq_handler()
735 if (!p_cb->error && in irq_handler()
736 ((p_cb->xfer_desc.type == NRFX_TWI_XFER_TXRX) || in irq_handler()
737 (p_cb->xfer_desc.type == NRFX_TWI_XFER_TXTX)) && in irq_handler()
738 p_cb->p_curr_buf == p_cb->xfer_desc.p_primary_buf) in irq_handler()
740 p_cb->p_curr_buf = p_cb->xfer_desc.p_secondary_buf; in irq_handler()
741 p_cb->curr_length = p_cb->xfer_desc.secondary_length; in irq_handler()
742 p_cb->curr_tx_no_stop = (p_cb->flags & NRFX_TWI_FLAG_TX_NO_STOP); in irq_handler()
743 p_cb->prev_suspend = TWI_NO_SUSPEND; in irq_handler()
745 if (p_cb->xfer_desc.type == NRFX_TWI_XFER_TXTX) in irq_handler()
747 (void)twi_tx_start_transfer(p_twi, p_cb); in irq_handler()
751 (void)twi_rx_start_transfer(p_twi, p_cb); in irq_handler()
757 event.xfer_desc = p_cb->xfer_desc; in irq_handler()
759 if (p_cb->error) in irq_handler()
789 p_cb->busy = false; in irq_handler()
791 if (!(TWI_FLAG_NO_HANDLER_IN_USE(p_cb->flags)) || p_cb->error) in irq_handler()
793 p_cb->handler(&event, p_cb->p_context); in irq_handler()