You are reading a single comment by @fanoush and its replies. Click here to read the full conversation.
  • I encountered a couple of slightly annoying things working with the IDE today and was wondering if these were known issues. I wasn't sure if I should post here on the forum first or open issues on GitHub, but here's a brief description of each:

    The first is that viewing the Bangle.js debug log (which seems to be written to storage file log.txt, if I'm not mistaken) is quite fiddly because the IDE insists that it's a binary file when it should be text. The hex dump is not helpful (nor does it help that the window appears too narrow in my browser to display properly even though there would be plenty of space), so I'm forced to save the file and then open it manually in a text editor. Further complicating matters is the fact that the default filename lacks the correct extension (it's log.txt (Storage file) instead of something ending in .txt), and renaming it adds an additional unnecessary step to the process. Ideally, a file ending in .txt should be just that, and it should open as text in one step without a hassle.

    The other one is a bit weird, and I'm not sure how to debug it. Occasionally (I haven't been able to discern any particular pattern) when my watch is connected to the IDE and I click the Storage button, the list of storage files fails to appear. Instead, I only get a Send to RAM button and then a dump of strings representing the names of my storage files on the debug pane an instant after the dialog window pops up. Another possible clue is that when this happens there is usually a delay of a couple of seconds, which is longer than it normally takes. If I cancel and try again, it usually works fine, but before long the glitch crops up again.

  • the IDE insists that it's a binary file when it should be text

    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).

    . Further complicating matters is the fact that the default filename lacks the correct extension (it's log.txt (Storage file) instead of something ending in .txt)

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

    Instead, I only get a Send to RAM button and then a dump of strings representing the names of my storage files on the debug pane an instant after the dialog window pops up. Another possible clue is that when this happens there is usually a delay of a couple of seconds, which is longer than it normally takes.

    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?

    I've seen this on low memory devices (nrf51822 with 16kb ram), the code sent by IDE that does the listing was the most complex thing to run there. While other simple code was running fine (there is not really much RAM available there) listing the storage failed a lot until I reduced total variables for the build => increased space for stack. I think it needs to build a relatively big JSON object (which depends on total number of files there) which needs a lot of stack space.

  • 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.

About

Avatar for fanoush @fanoush started