Exemplo n.º 1
0
/*
 * if uart get data, return 1-readable, 0-unreadable
 */
uint16 suli_uart_readable(void * uart_device, int16 uart_num)
{
    uint32 dataCnt = 0;
    OS_eEnterCriticalSection(mutexRxRb);
    dataCnt = ringbuffer_data_size(&rb_uart_aups);           //handle AUPS's UART ringbuffer
    OS_eExitCriticalSection(mutexRxRb);
    return dataCnt;
}
Exemplo n.º 2
0
/****************************************************************************
 *
 * NAME: aupsReadable
 *
 * DESCRIPTION:
 * Delay n ms
 *
 * PARAMETERS: Name         RW  Usage
 *             u32Period    R   ms
 *
 * RETURNS:
 * void
 *
 ****************************************************************************/
PUBLIC uint32 aupsAirPortReadable(void)
{
    uint32 dataCnt = 0;
    OS_eEnterCriticalSection(mutexAirPort);
    dataCnt = ringbuffer_data_size(&rb_air_aups);
    OS_eExitCriticalSection(mutexAirPort);
    return dataCnt;
}
Exemplo n.º 3
0
/****************************************************************************
 *
 * NAME: aupsAirPortRead
 *
 * DESCRIPTION:
 * Read len bytes of data to dst
 *
 * PARAMETERS: Name         RW  Usage
 *             dst          W   Pointer to destination of the buffer
 *             len          R   number of the bytes you want to read
 * RETURNS:
 * uint8: real number of bytes you read
 *
 ****************************************************************************/
PUBLIC uint8 aupsAirPortRead(void *dst, int len)
{
    uint32 dataCnt = 0, readCnt = 0;

    OS_eEnterCriticalSection(mutexAirPort);
    dataCnt = ringbuffer_data_size(&rb_air_aups);
    if (dataCnt >= len) readCnt = len;
    else readCnt = dataCnt;

    ringbuffer_pop(&rb_air_aups, dst, dataCnt);
    OS_eExitCriticalSection(mutexAirPort);

    return readCnt;
}
Exemplo n.º 4
0
/*
 * read a byte from uart
 */
uint8 suli_uart_read_byte(void * uart_device, int16 uart_num)
{
    uint32 dataCnt = 0;
    char tmp;

    OS_eEnterCriticalSection(mutexRxRb);
    dataCnt = ringbuffer_data_size(&rb_uart_aups);
    if(dataCnt > 0)
    {
        ringbuffer_pop(&rb_uart_aups, &tmp, 1);
    }
    OS_eExitCriticalSection(mutexRxRb);

    if(dataCnt > 0) return tmp;
    else return 0;
}
Exemplo n.º 5
0
/****************************************************************************
 *
 * NAME: SPM_u32PullData
 *
 * DESCRIPTION:
 * SPM pull some data into data pool
 *
 *
 * RETURNS:
 * available data size of SPM
 *
 ****************************************************************************/
uint32 SPM_u32PullData(void *data, int len)
{
	uint32 free_cnt = 0;
	uint32 min_cnt = 0;
	uint32 avlb_cnt = 0;

	/* Cal how much free space do SPM have */
	OS_eEnterCriticalSection(mutexRxRb);
	free_cnt = ringbuffer_free_space(&rb_rx_spm);
	OS_eExitCriticalSection(mutexRxRb);

    min_cnt = MIN(free_cnt, len);
    DBG_vPrintf(TRACE_NODE, "rev_cnt: %u, free_cnt: %u \r\n", len, free_cnt);
    if(min_cnt > 0)
    {
    	OS_eEnterCriticalSection(mutexRxRb);
    	ringbuffer_push(&rb_rx_spm, data, min_cnt);
    	avlb_cnt = ringbuffer_data_size(&rb_rx_spm);
    	OS_eExitCriticalSection(mutexRxRb);
    }
    return avlb_cnt;
}