You are reading a single comment by @fanoush and its replies. Click here to read the full conversation.
  • Quite likely it is binary (or maybe even UTF-8 now?) = there is some non-ASCII byte there. Often there is a button there to switch to text mode, maybe it should be there always (currently it is not).

    There are what look like random escape codes in the tracebacks and such, which look like formatting codes for terminal emulators. But they're not really that useful for a written .txt log in a file, given that they confuse programs.

    The only button I get is for “decode JS”, but that doesn't seem to do anything in this case. Having a way to force it to treat the file as text would be helpful, though, especially in cases like these where I know it really is text with just a couple of stray rouge bytes that can be safely ignored.

    Which OS or browser it is? On Windows in Chrome it definitely adds just .txt

    For some reason on Ubuntu and Chromium it wants to add the string “ (StorageFile)” to the end of the filename, which confuses the system file save dialog. I can rename it but it's annoying. That's what displays in the storage list in the UI, too, but I'd argue that the “(StorageFile)” prefix should be dropped in the suggested filename when saving (or else placed just before the extension, or at the very start of the name or something).

    It may be out of memory (or low stack?) situation. Maybe some app that use lot of memory/stack is running? Do you see some error or exception message in the 'dump of strings' or series of dots inside of (json) output?

    It doesn't appear that there is a memory issue. There are no errors or exceptions, either, just the list of strings. However, I am starting to notice the pattern: It seems to happen consistently if the watch has been idle for a minute or so before I request the list. If the Bluetooth link was just active, it works fine, but after a couple of minutes, the odd delay and strange behavior occur, only for it to work fine if I immediately try again. It sort of makes me wonder if it could have anything to do with power management on the Bluetooth link somehow causing problems.

    I happened to catch this in the IDE error log when it happened:

    >>> Receiving...
    WARNING: No result found for "require('Storage').list().forEach(x=>pr­int(JSON.stringify(x)));" - just got "< <<\r\n\".bootcde\"\r\n\"launch.app.js\"\­r\n\"launch.settings.js\"\r\n\"launch.in­fo\"\r\n\"antonclk.app.js\"\r\n\"antoncl­k.img\"\r\n\"antonclk.info\"\r\n\"about.­app.js\"\r\n\"about.img\"\r\n\"about.inf­o\"\r\n\"widlock.wid.js\"\r\n\"widlock.i­nfo\"\r\n\"widbat.wid.js\"\r\n\"widbat.i­nfo\"\r\n\"welcome.boot.js\"\r\n\"welcom­e.app.js\"\r\n\"welcome.settings.js\"\r\­n\"welcome.img\"\r\n\"welcome.info\"\r\n­\"health.img\"\r\n\"health.settings.js\"­\r\n\"setting.img\"\r\n\"sched.bo"
    >>> 
    getFileList TypeError: Cannot read properties of undefined (reading 'trim')
    

    Which clearly looks like the data it received is being interrupted somehow (although I then get what looks like an untruncated dump of it in the debug pane, whereas normally when it works correctly nothing at all appears there except a new prompt).

    As far as I know, I haven't seen other issues when doing other actions after such inactivity (such as sending/receiving apps with the App Loader, etc.) Just the storage list in the IDE.

  • I happened to catch this in the IDE error log when it happened:

    I just tried to run require('Storage').list().forEach(x=>pri­nt(JSON.stringify(x))); and it produces just list of strings, no JSON, so that is better than I remembered. Either it was changed recently or the nrf51822 had issues even with the .forEach(x=>print(JSON.stringify(x))); giving back simple strings. Anyway it indeed looks like the output is cut. The "sched.bo" string is incomplete and whole list should probably end with > >>. And yes, the connection interval is increased automatically when connection is idle so first packets may be slow until it goes back.

    You can verify this is the case by setting it yourself via https://www.espruino.com/Reference#l_NRF­_setConnectionInterval
    , the {minInterval:20, maxInterval:100} should still save some power when idle and should be faster. You can even force it to single value so you can try setting it to 500 or more to be pretty slow and see if the issue appears consistently

About

Avatar for fanoush @fanoush started