uint32_t nrf_drv_ppi_channel_include_in_group(nrf_ppi_channel_t channel, nrf_ppi_channel_group_t group) { uint32_t err_code; #if (NRF_PPI_RESTRICTED > 0) uint32_t ch_mask; #endif if (!is_app_group(group)) { err_code = NRF_ERROR_INVALID_PARAM; } else if (!is_allocated_group(group)) { err_code = NRF_ERROR_INVALID_STATE; } else if (!is_app_channel(channel)) { err_code = NRF_ERROR_INVALID_PARAM; } else { #if (NRF_PPI_RESTRICTED > 0) CRITICAL_REGION_ENTER(); err_code = sd_ppi_group_get((uint8_t) group, &ch_mask); if (err_code != NRF_SUCCESS) { err_code = NRF_ERROR_INVALID_PARAM; } else { ch_mask |= channel_to_mask(channel); err_code = sd_ppi_group_assign((uint8_t) group, ch_mask); if (err_code != NRF_SUCCESS) { err_code = NRF_ERROR_INVALID_PARAM; } } CRITICAL_REGION_EXIT(); #else CRITICAL_REGION_ENTER(); nrf_ppi_channel_include_in_group(channel, group); CRITICAL_REGION_EXIT(); err_code = NRF_SUCCESS; #endif } return err_code; }
uint32_t nrf_drv_ppi_channel_disable(nrf_ppi_channel_t channel) { if (!is_app_channel(channel)) { return NRF_ERROR_INVALID_PARAM; } if (is_programmable_app_channel(channel) && !is_allocated_channel(channel)) { return NRF_ERROR_INVALID_STATE; } nrf_ppi_channel_disable(channel); return NRF_SUCCESS; }
uint32_t nrf_drv_ppi_channel_enable(nrf_ppi_channel_t channel) { ret_code_t err_code = NRF_SUCCESS; if (!is_app_channel(channel)) { err_code = NRF_ERROR_INVALID_PARAM; } else if (is_programmable_app_channel(channel) && !is_allocated_channel(channel)) { err_code = NRF_ERROR_INVALID_STATE; } else { nrf_ppi_channel_enable(channel); } NRF_LOG_INFO("Function: %s, error code: %s.\r\n", (uint32_t)__func__, (uint32_t)ERR_TO_STR(err_code)); return err_code; }
uint32_t nrf_drv_ppi_channel_disable(nrf_ppi_channel_t channel) { uint32_t err_code; if (!is_app_channel(channel)) { err_code = NRF_ERROR_INVALID_PARAM; } else if (is_programmable_app_channel(channel) && !is_allocated_channel(channel)) { err_code = NRF_ERROR_INVALID_STATE; } else { #if (NRF_PPI_RESTRICTED > 0) err_code = sd_ppi_channel_enable_clr(channel_to_mask(channel)); #else nrf_ppi_channel_disable(channel); err_code = NRF_SUCCESS; #endif } return err_code; }