/** Callback for AXI DMA RX. */ static void axi_dma_rx_callback(bool success) { /* Signal RX semaphore */ chSysLockFromISR(); if (success) { chBSemSignalI(&axi_dma_rx_bsem); } else { chBSemResetI(&axi_dma_rx_bsem, 0); } chSysUnlockFromISR(); }
void adcCallBack(ADCDriver *adcp, adcsample_t *buffer, size_t n) { /* if (samples == buffer) { nx += n; } else { ny += n; } */ chSysLockFromIsr(); if (chBSemGetStateI(&outputResponseDataReady)) { outputResponseData.caller =HW_ADC; outputResponseData.adcOutputValues = &samples; outputResponseData.numberOfValues =n; chBSemResetI(&outputResponseDataReady, FALSE); } chSysUnlockFromIsr(); }
void BinarySemaphore::resetI(bool taken) { chBSemResetI(&bsem, (bool_t)taken); }