Lines Matching refs:hal_ctx

24 static inline uint32_t twai_hal_decode_interrupt(twai_hal_context_t *hal_ctx)  argument
27 uint32_t interrupts = twai_ll_get_and_clear_intrs(hal_ctx->dev);
28 uint32_t status = twai_ll_get_status(hal_ctx->dev);
29 uint32_t tec = twai_ll_get_tec(hal_ctx->dev);
30 uint32_t rec = twai_ll_get_rec(hal_ctx->dev);
31 uint32_t state_flags = hal_ctx->state_flags;
49 } else if (hal_ctx->state_flags & TWAI_HAL_STATE_FLAG_RECOVERING) {
65 …if ((interrupts & TWAI_LL_INTR_TI || hal_ctx->state_flags & TWAI_HAL_STATE_FLAG_TX_BUFF_OCCUPIED) …
90 hal_ctx->state_flags = state_flags;
94 uint32_t twai_hal_get_events(twai_hal_context_t *hal_ctx) argument
96 uint32_t events = twai_hal_decode_interrupt(hal_ctx);
100 twai_ll_set_mode(hal_ctx->dev, TWAI_MODE_LISTEN_ONLY); //Freeze TEC/REC by entering LOM
103 twai_ll_set_tec(hal_ctx->dev, 0);
104 twai_ll_set_tec(hal_ctx->dev, 255);
105 … (void) twai_ll_get_and_clear_intrs(hal_ctx->dev); //Clear the re-triggered bus-off interrupt
109 twai_ll_enter_reset_mode(hal_ctx->dev); //Enter reset mode to stop the controller
116 twai_ll_parse_err_code_cap(hal_ctx->dev, &type, &dir, &seg); //Decode error interrupt
124 twai_ll_clear_err_code_cap(hal_ctx->dev);
127 twai_ll_clear_arb_lost_cap(hal_ctx->dev);
131 …if (events & TWAI_HAL_EVENT_RX_BUFF_FRAME && twai_ll_get_rx_msg_count(hal_ctx->dev) >= TWAI_RX_FIF…
145 void twai_hal_prepare_for_reset(twai_hal_context_t *hal_ctx) argument
147 uint32_t status = twai_ll_get_status(hal_ctx->dev);
149 TWAI_HAL_SET_BITS(hal_ctx->state_flags, TWAI_HAL_STATE_FLAG_TX_NEED_RETRY);
154 hal_ctx->rx_msg_cnt_save = (uint8_t) twai_ll_get_rx_msg_count(hal_ctx->dev);
155 twai_ll_enter_reset_mode(hal_ctx->dev); //Enter reset mode to stop the controller
156 …twai_ll_save_reg(hal_ctx->dev, &hal_ctx->reg_save); //Save remaining registers after entering rese…
159 void twai_hal_recover_from_reset(twai_hal_context_t *hal_ctx) argument
161 twai_ll_enter_reset_mode(hal_ctx->dev);
162 twai_ll_enable_extended_reg_layout(hal_ctx->dev);
163 twai_ll_restore_reg(hal_ctx->dev, &hal_ctx->reg_save);
164 twai_ll_exit_reset_mode(hal_ctx->dev);
165 (void) twai_ll_get_and_clear_intrs(hal_ctx->dev);
167 if (hal_ctx->state_flags & TWAI_HAL_STATE_FLAG_TX_NEED_RETRY) {
169 twai_hal_set_tx_buffer_and_transmit(hal_ctx, &hal_ctx->tx_frame_save);
170 TWAI_HAL_CLEAR_BITS(hal_ctx->state_flags, TWAI_HAL_STATE_FLAG_TX_NEED_RETRY);
175 void twai_hal_set_tx_buffer_and_transmit(twai_hal_context_t *hal_ctx, twai_hal_frame_t *tx_frame) argument
178 twai_ll_set_tx_buffer(hal_ctx->dev, tx_frame);
182 twai_ll_set_cmd_self_rx_single_shot(hal_ctx->dev);
184 twai_ll_set_cmd_self_rx_request(hal_ctx->dev);
187 twai_ll_set_cmd_tx_single_shot(hal_ctx->dev);
189 twai_ll_set_cmd_tx(hal_ctx->dev);
191 TWAI_HAL_SET_BITS(hal_ctx->state_flags, TWAI_HAL_STATE_FLAG_TX_BUFF_OCCUPIED);
194 memcpy(&hal_ctx->tx_frame_save, tx_frame, sizeof(twai_hal_frame_t));