Esempio n. 1
0
static int
updtapbus( ushort apreg, ushort apval )
{
	int	fifoIsEmpty, fifoIsRunning;

#ifdef FIFOBUFOBJ
	fifoIsEmpty = ( ( fifoEmpty( pTheFifoObject ) == 1 ) && 
		        ( fifoBufWkEntries(pTheFifoObject->pFifoWordBufs) == 0L ) );
#else
	fifoIsEmpty = fifoEmpty( pTheFifoObject );
#endif
	fifoIsRunning = fifoRunning( pTheFifoObject );

	if (fifoIsEmpty && fifoIsRunning) {
		errLogRet( LOGIT, debugInfo, "FIFO empty but running in update APBUS\n" );
		return( -1 );
	}

	if (fifoIsEmpty)
	  writeapwordStandAlone( apreg, apval, 50 );
	else
	  writeapword( apreg, apval, 50 );

    DPRINT3( DEBUG_APBUS, "updateapbus: fifo empty: %d, apregister: 0x%x, value: 0x%x\n",
                 fifoIsEmpty, apreg, apval );

	return( 0 );
} 
Esempio n. 2
0
fifo_data_t fifoTop(fifo_struct_t* fifo)
{
    if(fifoEmpty(fifo))
        return 0;
    else
        return fifo->buf[fifo->tail];
}
Esempio n. 3
0
unsigned int uart_write_data(const char *buffer, unsigned int length)
{
    unsigned int i;

    DisableIntUTX();

    for (i = 0; i < length; i++)
    {
        if (fifoEnqueue(&fifoTx1, buffer[i]))
            break;
    }

    if (!fifoEmpty(&fifoTx1))
    {
        // habilita início de transmissão
        EnableIntUTX();
    }
    /*
    else
    {
        DisableIntUTX();
    }
    */

    return i;
}
Esempio n. 4
0
fifo_data_t fifoPop(fifo_struct_t* fifo)
{
    if(fifoEmpty(fifo))
        return 0;
    else
    {
        char value = fifo->buf[fifo->tail];
        fifo->tail = (fifo->tail+1) & FIFO_MASK;
        fifo->full = fifoFALSE;
        if(fifo->tail == fifo->head)
            fifo->empty = fifoTRUE;
        return value;
    }
}
Esempio n. 5
0
void uart_driver_tx_interrupt(void)
{
    char byte;

    if (!fifoDequeue(&fifoTx1, &byte))
    {
        // manda escrever
        PushUTXBuffer(byte);
    }

    if (fifoEmpty(&fifoTx1))
    {
        DisableIntUTX();
    }
}
Esempio n. 6
0
static int
updtLockphase( ushort apval )
{
	int	fifoIsEmpty, fifoIsRunning;
	int	tmp1,tmp2;

	fifoIsEmpty = ( ( fifoEmpty( pTheFifoObject ) == 1 ) && 
		        ( fifoBufWkEntries(pTheFifoObject->pFifoWordBufs) == 0L ) );
	fifoIsRunning = fifoRunning( pTheFifoObject );

	if (fifoIsEmpty && fifoIsRunning) {
		errLogRet( LOGIT, debugInfo, "FIFO empty but running in update APBUS\n" );
		return( -1 );
	}

	if (fifoIsEmpty)
           init_fifo( NULL, 0, 0 );

        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_SLCT, 0x0A30); /* lk xmtr */
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_WRT,  0x0A17); /* PIRB2 24-31*/
        tmp1 = (int)(- (currentStatBlock.stb.AcqLockPhase * 32.0 / 45.0))&0xFF;
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_INCWR,0x0A00|tmp1);/* zeroing */
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_SLCT, 0x0A30); /* lk xmtr */
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_WRT,  0x0A18); /* SMC2 */
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_INCWR,0x0A08);
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_SLCT, 0x0A30); /* lk xmtr */
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_WRT,  0x0A1E); /* HOP CLK2 */
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_INCWR,0x0A00); /* strobe*/
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_SLCT, 0x0A30); /* lk xmtr */
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_WRT,  0x0A17); /* PIRB2 24-31*/
        tmp2 = (int)(apval * 32.0 / 45.0)&0xFF;
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_INCWR,0x0A00|tmp2);
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_SLCT, 0x0A30); /* lk xmtr */
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_WRT,  0x0A1E); /* HOP CLK2*/
        fifoStuffCmd(pTheFifoObject,CL_AP_BUS_INCWR,0x0A00); /* strobe */

	if (fifoIsEmpty)
        {  fifoStuffCmd(pTheFifoObject,HALTOP,0);
           fifoStart( pTheFifoObject );
           fifoWait4Stop( pTheFifoObject );
        }

    DPRINT3( DEBUG_APBUS, "updtLockphase: fifo empty: %d, value: %d [0x%x]\n",
                 fifoIsEmpty, apval, apval );
	currentStatBlock.stb.AcqLockPhase = apval;

	return( 0 );
}