uint32_t nrf_drv_ppi_channels_include_in_group(uint32_t channel_mask, nrf_ppi_channel_group_t group) { ret_code_t err_code = NRF_SUCCESS; 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 (!are_app_channels(channel_mask)) { err_code = NRF_ERROR_INVALID_PARAM; } else { CRITICAL_REGION_ENTER(); nrf_ppi_channels_include_in_group(channel_mask, group); CRITICAL_REGION_EXIT(); } 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_group_free(nrf_ppi_channel_group_t group) { uint32_t err_code; 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 (NRF_PPI_RESTRICTED > 0) err_code = sd_ppi_group_task_disable((uint8_t) group); #else nrf_ppi_group_disable(group); err_code = NRF_SUCCESS; #endif CRITICAL_REGION_ENTER(); group_allocated_clr(group); CRITICAL_REGION_EXIT(); } return err_code; }
uint32_t nrf_drv_ppi_group_disable(nrf_ppi_channel_group_t group) { if (!is_app_group(group)) { return NRF_ERROR_INVALID_PARAM; } nrf_ppi_group_disable(group); return NRF_SUCCESS; }
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_group_enable(nrf_ppi_channel_group_t group) { if (!is_app_group(group)) { return NRF_ERROR_INVALID_PARAM; } if (!is_allocated_group(group)) { return NRF_ERROR_INVALID_STATE; } nrf_ppi_group_enable(group); return NRF_SUCCESS; }
uint32_t nrf_drv_ppi_channels_remove_from_group(uint32_t channel_mask, nrf_ppi_channel_group_t group) { uint32_t err_code; 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 (!are_app_channels(channel_mask)) { err_code = NRF_ERROR_INVALID_PARAM; } else { #if (NRF_PPI_RESTRICTED > 0) uint32_t channels_in_group = 0; CRITICAL_REGION_ENTER(); err_code = sd_ppi_group_get((uint8_t) group, &channels_in_group); if (err_code != NRF_SUCCESS) { err_code = NRF_ERROR_INVALID_PARAM; } else { channels_in_group &= ~channel_mask; err_code = sd_ppi_group_assign((uint8_t) group, channels_in_group); if (err_code != NRF_SUCCESS) { err_code = NRF_ERROR_INVALID_PARAM; } } CRITICAL_REGION_EXIT(); #else CRITICAL_REGION_ENTER(); nrf_ppi_channels_remove_from_group(channel_mask, group); CRITICAL_REGION_EXIT(); err_code = NRF_SUCCESS; #endif } return err_code; }
uint32_t nrf_drv_ppi_group_disable(nrf_ppi_channel_group_t group) { ret_code_t err_code = NRF_SUCCESS; if (!is_app_group(group)) { err_code = NRF_ERROR_INVALID_PARAM; } else { nrf_ppi_group_disable(group); } 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_group_free(nrf_ppi_channel_group_t group) { if (!is_app_group(group)) { return NRF_ERROR_INVALID_PARAM; } if (!is_allocated_group(group)) { return NRF_ERROR_INVALID_STATE; } else nrf_ppi_group_disable(group); CRITICAL_REGION_ENTER(); group_allocated_clr(group); CRITICAL_REGION_EXIT(); return NRF_SUCCESS; }
uint32_t nrf_drv_ppi_group_enable(nrf_ppi_channel_group_t group) { ret_code_t err_code = NRF_SUCCESS; if (!is_app_group(group)) { err_code = NRF_ERROR_INVALID_PARAM; } else if (!is_allocated_group(group)) { err_code = NRF_ERROR_INVALID_STATE; } else { nrf_ppi_group_enable(group); } NRF_LOG_INFO("Function: %s, error code: %s.", (uint32_t)__func__, (uint32_t)NRF_LOG_ERROR_STRING_GET(err_code)); return err_code; }
uint32_t nrf_drv_ppi_channels_include_in_group(uint32_t channel_mask, nrf_ppi_channel_group_t group) { if (!is_app_group(group)) { return NRF_ERROR_INVALID_PARAM; } if (!is_allocated_group(group)) { return NRF_ERROR_INVALID_STATE; } if (!are_app_channels(channel_mask)) { return NRF_ERROR_INVALID_PARAM; } CRITICAL_REGION_ENTER(); nrf_ppi_channels_include_in_group(channel_mask, group); CRITICAL_REGION_EXIT(); return NRF_SUCCESS; }
uint32_t nrf_drv_ppi_group_disable(nrf_ppi_channel_group_t group) { uint32_t err_code; if (!is_app_group(group)) { err_code = NRF_ERROR_INVALID_PARAM; } else { #if (NRF_PPI_RESTRICTED > 0) err_code = sd_ppi_group_task_disable((uint8_t) group); #else nrf_ppi_group_disable(group); err_code = NRF_SUCCESS; #endif } return err_code; }
uint32_t nrf_drv_ppi_group_free(nrf_ppi_channel_group_t group) { ret_code_t err_code = NRF_SUCCESS; if (!is_app_group(group)) { err_code = NRF_ERROR_INVALID_PARAM; } if (!is_allocated_group(group)) { err_code = NRF_ERROR_INVALID_STATE; } else { nrf_ppi_group_disable(group); CRITICAL_REGION_ENTER(); group_allocated_clr(group); CRITICAL_REGION_EXIT(); } NRF_LOG_INFO("Function: %s, error code: %s.\r\n", (uint32_t)__func__, (uint32_t)ERR_TO_STR(err_code)); return err_code; }