Beispiel #1
0
/** Initialize audio rx
 *    - get pointer to buffer pool
 *    - register interrupt handler
 *    - initialize RX queue

 * Parameters:
 * @param pThis  pointer to own object
 * @param pBuffP  pointer to buffer pool to take and return chunks from
 * @param pIsrDisp   pointer to interrupt dispatcher to get ISR registered
 *
 * @return Zero on success.
 * Negative value on failure.
 */
int uartRx_init(uartRx_t *pThis, bufferPool_t *pBuffP,
                 isrDisp_t *pIsrDisp)
{
    if ( NULL == pThis || NULL == pBuffP || NULL == pIsrDisp) {
        //printf("[UART_RX]: Failed init\r\n");
        return FAIL;
    }
    
    pThis->pPending = NULL;
    pThis->pBuffP = pBuffP;
    pThis->state = UARTRX_WAITING;
    
    // init queue with 
    queue_init(&pThis->queue, UARTRX_QUEUE_DEPTH);
 
     /* Configure the DMA3 for RX (data receive/memory write) */
     /* Read, 1-D, interrupt enabled, Memory write operation, 16 bit transfer,
      * Auto buffer
      */
    *pDMA10_CONFIG = 0x10A2;//0xA2; //SYNC | WNR | WDSIZE_8 | DI_EN;

    /**
     * Register the interrupt handler
     */
    isrDisp_registerCallback(pIsrDisp, ISR_DMA10_UART1_RX, uartRx_isr, pThis);

    //printf("[UART_RX]: RX init complete\r\n");
    
    return PASS;
}
Beispiel #2
0
/** Initialize audio tx
 *    - get pointer to buffer pool
 *    - register interrupt handler
 *    - initialize TX queue

 * Parameters:
 * @param pThis  pointer to own object
 * @param pBuffP  pointer to buffer pool to take and return chunks from
 * @param pIsrDisp   pointer to interrupt dispatcher to get ISR registered
 *
 * @return Zero on success.
 * Negative value on failure.
 */
int audioTx_init(audioTx_t *pThis, bufferPool_t *pBuffP,
                 isrDisp_t *pIsrDisp)
{
    // parameter checking
    if ( NULL == pThis || NULL == pBuffP || NULL == pIsrDisp ) {
        printf("[Audio TX]: Failed init \r\n");
        return FAIL;
    }
    
    // store pointer to buffer pool for later access     
    pThis->pBuffP       = pBuffP;

    pThis->pPending     = NULL; // nothing pending
    pThis->running      = 0;    // DMA turned off by default
    
    // init queue 
    queue_init(&pThis->queue, AUDIOTX_QUEUE_DEPTH);   
 
    /* Configure the DMA4 for TX (data transfer/memory read) */
    /* Read, 2-D, interrupt enabled, 16 bit transfer, Auto buffer */
    *pDMA4_CONFIG = WDSIZE_16 | DI_EN; //| DMA2D; /* 16 bit and DMA enable */
    
    // register own ISR to the ISR dispatcher
    isrDisp_registerCallback(pIsrDisp, ISR_DMA4_SPORT0_TX, audioTx_isr, pThis);
    
    printf("[Audio TX]: TX init complete \r\n");
    
    return PASS;
}