Exemple #1
0
int main2(void){
  FIFO_Init(); // initializes a FIFO that holds 6 elements 
  for(;;){
    Status[0]  = FIFO_Get(&GetData[0]);  // should fail,    empty
    Status[1]  = FIFO_Put(1);            // should succeed, 1 
    Status[2]  = FIFO_Put(2);            // should succeed, 1 2
    Status[3]  = FIFO_Put(3);            // should succeed, 1 2 3
    Status[4]  = FIFO_Put(4);            // should succeed, 1 2 3 4
    Status[5]  = FIFO_Put(5);            // should succeed, 1 2 3 4 5
    Status[6]  = FIFO_Put(6);            // should succeed, 1 2 3 4 5 6
    Status[7]  = FIFO_Put(7);            // should fail,    1 2 3 4 5 6 
    Status[8]  = FIFO_Get(&GetData[1]);  // should succeed, 2 3 4 5 6
    Status[9]  = FIFO_Get(&GetData[2]);  // should succeed, 3 4 5 6
    Status[10] = FIFO_Put(7);            // should succeed, 3 4 5 6 7
    Status[11] = FIFO_Put(8);            // should succeed, 3 4 5 6 7 8
    Status[12] = FIFO_Put(9);            // should fail,    3 4 5 6 7 8 
    Status[13] = FIFO_Get(&GetData[3]);  // should succeed, 4 5 6 7 8
    Status[14] = FIFO_Get(&GetData[4]);  // should succeed, 5 6 7 8
    Status[15] = FIFO_Get(&GetData[5]);  // should succeed, 6 7 8
    Status[16] = FIFO_Get(&GetData[6]);  // should succeed, 7 8
    Status[17] = FIFO_Get(&GetData[7]);  // should succeed, 8
    Status[18] = FIFO_Get(&GetData[8]);  // should succeed, empty
    Status[19] = FIFO_Get(&GetData[9]);  // should fail,    empty
  }
}
//#pragma CODE_SECTION(ITaskQ_Write,".textDDR")
VOID ITaskQ_Write(ITaskQ *pThis, VOID *pVal)
{
	Mutex_Lock(&pThis->oLock);
	FIFO_Put(&pThis->oQ, pVal);
	Signal_Post(&pThis->oWrite);
	Mutex_Unlock(&pThis->oLock);
}
Exemple #3
0
/*********************************************************************//**
 * @brief        USARTx interrupt handler sub-routine
 * @param[in]    None
 * @return         None
 **********************************************************************/
void USART2_IRQHandler(
    void)
{
    uint8_t data_byte;


    if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) {
        /* Read one byte from the receive data register */
        data_byte = USART_ReceiveData(USART2);
        (void) FIFO_Put(&Receive_Buffer, data_byte);
    }
}
/******************************************************************************
 * FunctionName : add_send_at_command
 * Description  : add the at command to the send buffer.
 * Parameters   : name_buffer: the at command name
 * 				  cmd_buffer: cmd_buffer: the command.
 * Returns      : none.
*******************************************************************************/
void add_send_at_command(char *name_buffer, char *cmd_buffer)
{
	char at_cmd_Buff[256] = {0};
	char at_name_Buff[20] = {0};

	strcpy(at_name_Buff, name_buffer);
	strcpy(at_cmd_Buff, cmd_buffer);

	if(FIFO_Put(&s_at_fifo, at_name_Buff,  at_cmd_Buff) ==-1)
	{
		printf("write fifo error!\n");
	}
}
Exemple #5
0
static void TestCase_StaticMemory(void)
{
    FIFO_t MyFifo;
    int ret = 0;
    T MyT_A, MyT_B, MyT_C;
    T MyT;

    MyT.sex  = 0;
    MyT.addr = 0;
    MyT.tel  = 0;

    MyT_A.sex  = 1;
    MyT_A.addr = 1;
    MyT_A.tel  = 1;

    MyT_B.sex  = 2;
    MyT_B.addr = 2;
    MyT_B.tel  = 2;

    MyT_C.sex  = 3;
    MyT_C.addr = 3;
    MyT_C.tel  = 3;

    FIFO_Init(&MyFifo, FIFO_Pool, sizeof(T), ELE_CNT);

    ret = FIFO_IsEmpty(&MyFifo);
    ret = FIFO_IsFull(&MyFifo);
    ret = FIFO_CountFree(&MyFifo);
    ret = FIFO_CountUsed(&MyFifo);

    FIFO_Put(&MyFifo, &MyT_A);
    FIFO_Put(&MyFifo, &MyT_B);
    FIFO_Put(&MyFifo, &MyT_C);

    ret = FIFO_IsEmpty(&MyFifo);
    ret = FIFO_IsFull(&MyFifo);
    ret = FIFO_CountFree(&MyFifo);
    ret = FIFO_CountUsed(&MyFifo);

    FIFO_Get(&MyFifo, &MyT);
    FIFO_Get(&MyFifo, &MyT);
    FIFO_Get(&MyFifo, &MyT);

    ret = FIFO_IsEmpty(&MyFifo);
    ret = FIFO_IsFull(&MyFifo);
    ret = FIFO_CountFree(&MyFifo);
    ret = FIFO_CountUsed(&MyFifo);

    FIFO_Put(&MyFifo, &MyT_A);
    FIFO_Put(&MyFifo, &MyT_B);
    FIFO_Put(&MyFifo, &MyT_C);

    ret = FIFO_Flush(&MyFifo);

    ret = FIFO_IsEmpty(&MyFifo);
    ret = FIFO_IsFull(&MyFifo);
    ret = FIFO_CountFree(&MyFifo);
    ret = FIFO_CountUsed(&MyFifo);
}
Exemple #6
0
void sendStringUsingFIFO(char* string){

  while(*string){
    if(interruptTurnedOn == FALSE){
      turnOnInterrupts();
    }
    
    if(FIFO_Put(&fifo,*string++) == FIFO_ERROR){
      FIFO_Empty(&fifo);
      DBGU_sendString((char*)"Buffer Overflow Error\r\n");
      break;
    }
  }
}
Exemple #7
0
/*!RDRF set, data is accepted and does into RxFIFO;TDRE is set, data retrieved into TxFIFO,and sent out*/
void UART_Poll(void)
{
  uint8_t RDRF;                                        /*!< a 8 bit RDRF*/
  uint8_t TDRE;                                        /*!< a 8 bit RDRF*/
  /*make RDRF equal to 00X00000, (XXXXXXXX&00100000 = 00X00000)*/
  RDRF = (UART2_S1 & RDRFSET);
  /*if 00X00000=00100000,RDRF set, data is put into &RxFIFO*/
  if(RDRF == RDRFSET)
    FIFO_Put(&RxFIFO, UART2_D);
  /*make TDRE equal to X0000000, (XXXXXXXX&10000000 = X0000000)*/
  TDRE = (UART2_S1 & TDRESET);
  /*if X0000000=10000000,TDRE set, data is taken out of &TxFIFO*/
  if(TDRE == TDRESET)
    FIFO_Get(&TxFIFO, (uint8_t *)&UART2_D);
}
Exemple #8
0
//=============================================================================
// UART Transmit Function
//=============================================================================
void UARTA0_Send(char data)
{
	// Put straight to UART if not yet transmitting
	if (!UARTA0_transmitting)
	{
		UCA0TXBUF = data;
		UARTA0_transmitting = 1;
		IE2 |= UCA0TXIE;
	  // Load data into TX buffer
	} else {
		// Make sure the buffer isn't full. Loop continuously if it is.
    while(FIFO_Full(&UARTA0_tx_buffer));
    FIFO_Put(&UARTA0_tx_buffer, data);
	}
}
Exemple #9
0
/* *************************************************************************
  DESCRIPTION:  Receives RS485 data stream

  RETURN: none

  ALGORITHM:  none

  NOTES:  none
 *************************************************************************** */
void RS485_Interrupt_Rx(
    void)
{
    uint8_t data_byte;

    if ((RCSTA2bits.FERR) || (RCSTA2bits.OERR)) {
        /* Clear the error */
        RCSTA2bits.CREN = 0;
        RCSTA2bits.CREN = 1;
        /* FIXME: flag the MS/TP state machine on buffer overrun */
        data_byte = RCREG2;
    } else {
        data_byte = RCREG2;
        FIFO_Put(&FIFO_Rx, data_byte);
    }
}
Exemple #10
0
BOOL UART_OutChar(const uint8_t data)
{
  EnterCritical();
  /*!put the data from UART_OutChar into TxFIFO one by one*/
  if(FIFO_Put(&TxFIFO, data))
  {
    UART2_C2 |= UART_C2_TIE_MASK;                     /*!enable transmitter interrupt*/
    ExitCritical();
    return bTRUE;
  }
  else
  {
    ExitCritical();
    return bFALSE;
  }
}
Exemple #11
0
void __attribute__ ((interrupt)) UART_ISR(void)
{
  uint8_t RDRF;                                          /*!< a 8 bit RDRF*/
  uint8_t TDRE;                                          /*!< a 8 bit RDRF*/
  /*make RDRF equal to 00X00000, (XXXXXXXX&00100000 = 00X00000)*/
  RDRF = (UART2_S1 & RDRFSET);
  /*if 00X00000=00100000,RDRF set, data is put into &RxFIFO*/
  if(RDRF == RDRFSET)
    FIFO_Put(&RxFIFO, UART2_D);
  /*make TDRE equal to X0000000, (XXXXXXXX&10000000 = X0000000)*/
  TDRE = (UART2_S1 & TDRESET);
  /*if X0000000=10000000,TDRE set, data is taken out of &TxFIFO*/
  if(TDRE == TDRESET)
  {
    if(!FIFO_Get(&TxFIFO, (uint8_t *)&UART2_D))           /*if error*/
    UART2_C2 &= ~UART_C2_TIE_MASK;                        /*disable transmitter interrupt*/
  }
}
Exemple #12
0
void UART1_Handler()
{
	int i;
	GPIO_PORTG_DATA_R ^= 0x2;
	GPIO_PORTG_DATA_R ^= 0x2;
	while(UART1_FR_R& (0x8))
	{}				//while RXFE is 1, do nothing
		
		for( i =0; i<8; i++)
		{
			if (FIFO_Put(UART1_DR_R) == 1)
			{ errorcount++;}
		}
		UART1_ICR_R = 0x10;			// acknowledges the interrupt happened
		flag =1;
		
	
	
}