You are here

PDL 2.1 FM0-64L-S6E1C3 scanf never returns | Cypress Semiconductor

PDL 2.1 FM0-64L-S6E1C3 scanf never returns

Summary: 2 Replies, Latest post by motoo on 23 Nov 2016 09:57 PM PST
Verified Answers: 0
Last post
Log in to post new comments.
user_13463998's picture
User
4 posts

Hi,

I've been writing some demo programs 
for FM0-64L-S6E1C3 with PDL 2.1.0 and PSoC Creator 4.0.

So far, I could manage SPI(CSIO) and I2C to work.
Using utilities/printf_scanf by setting following in pdl_user.h
===========
// Printf/Scanf via UART function
#define PDL_UTILITY_ENABLE_UART_PRINTF              PDL_ON
#define PDL_UTILITY_ENABLE_UART_SCANF               PDL_ON 
===========

Although printf seems reasonably working,
scanf does not come back.

So I spent a few days and found that 
int _read(int file, char *ptr, int len) in uart_io.c 
does not return until it reads "len" number of letters.
In my debugger, the len was 1024, when I was trying to read a few letters.

So I replaced following lines

==============
    int i;
    file = file;
    for(i = 0; i < len; i++)
    {
        while (TRUE != Mfs_Uart_GetStatus(UartCh, UartRxFull))
        {
            /* Wait until there is a character in the Rx FIFO */
        }
        *ptr++ = (char)Mfs_Uart_ReceiveData(UartCh);
    }
    return len;
==============

with following lines

==============
    int i = 0  ;
    char c ;
    file = file ;

    while(i < len) {
        while (TRUE != Mfs_Uart_GetStatus(UartCh, UartRxFull)) {
            /* Wait until there is a characer in the Rx FIFO */
        }
        c = (char)Mfs_Uart_ReceiveData(UartCh);
        Mfs_Uart_ClrStatus(UartCh, UartRxFull) ;
        ptr[i++] = c ;
        if (!isprint(c)) { 
            break ;
        }
    }

    ptr[i] = 0 ;
    return i ;
==============

now scanf can read "%d", "%x", "%s".
But I wonder if my correction is correct,
or if there is/(will be) a better fix of PDL.

moto

BMAH's picture
Cypress Employee
196 posts

Yes, this seems to be a problem with scanf implementation. The work-around you added seems to be fine. We will check this with our software team.

user_13463998's picture
User
4 posts

 Dear BMAH-san,

Thank you for your respose!

Then I assume that my fix is usable and go forward for the time being.

Best Regards,

24-Nov-2016

Motoo Tanaka

Log in to post new comments.