Shop OBEX P1 Docs P2 Docs Learn Events
FlameTube DevTools and OS — Parallax Forums

FlameTube DevTools and OS

FlameTube DevTools and OS development

Comments

  • This post is reserved for OS description
  • This post is reserved for DevTools description
  • David Betz wrote: »
    This might be a way to prototype FlameTube apps before the hardware is available:

    https://learn.adafruit.com/animated-flame-pendant

    The nice thing about this is that the display is 16x9 which allows multiple digits to be displayed at the same time. I think the FlameTube is only 12x8.

    Hm... Interesting thing. Looks like my first prototype, it's also single-sided and not interactive.
    But I have better idea! I have a few pre-serial prototypes with some display defects. Displayed images have artifacts, but the devices are absolutely usable for the development. I could provide them to those, who will help me to create FlameTube DevTools and OS.

    According my idea, DevTools should have FlameTube software simulator (we have to simulate the display and sensors). When the DevTools is ready, anyone could write code for FlameTube without FlameTube.

    We have a few days to build the development plan and the team.
    Those developers, who would like to receive FlameTube RIGHT NOW, send me your candidatures and explain, what you can do for the project.
  • David BetzDavid Betz Posts: 14,516
    edited 2016-08-15 16:28
    FlameTube wrote: »
    According my idea, DevTools should have FlameTube software simulator (we have to simulate the display and sensors). When the DevTools is ready, anyone could write code for FlameTube without FlameTube.
    You probably already know that Dave Hein has a Propeller simulator that could be used as the basis for your FlameTube simulator.

  • FlameTube wrote: »
    Hm... Interesting thing. Looks like my first prototype, it's also single-sided and not interactive.
    True, not double-sided. That reminds me that I wanted to verify that you can display different data on each side of your double-sided displays. I'm pretty sure the answer is yes but I'd like verification. If that can be done, it would be possible to use one of your devices for a two-player game like battleship where each player has private information displayed on his/her side of the tube.

  • FlameTubeFlameTube Posts: 35
    edited 2016-08-15 18:25
    David Betz wrote: »
    FlameTube wrote: »
    Hm... Interesting thing. Looks like my first prototype, it's also single-sided and not interactive.
    True, not double-sided. That reminds me that I wanted to verify that you can display different data on each side of your double-sided displays. I'm pretty sure the answer is yes but I'd like verification. If that can be done, it would be possible to use one of your devices for a two-player game like battleship where each player has private information displayed on his/her side of the tube.

    FlameTube displays the same data on both sides, and on the backside it's mirrored.
    This is because I don't use hardware display drivers. The display driver is 100% software, written on PASM (256 brightness levels for each pair of LEDs, by PWM). All the display circuit do is current ampification to drive LEDs. Sorry, the Prop1 does not have enough pins to drive two sides separately.

    Kind regards, Alexey
  • FlameTube wrote: »
    David Betz wrote: »
    FlameTube wrote: »
    Hm... Interesting thing. Looks like my first prototype, it's also single-sided and not interactive.
    True, not double-sided. That reminds me that I wanted to verify that you can display different data on each side of your double-sided displays. I'm pretty sure the answer is yes but I'd like verification. If that can be done, it would be possible to use one of your devices for a two-player game like battleship where each player has private information displayed on his/her side of the tube.

    FlameTube displays the same data on both sides, and on the backside it's mirrored.
    This is because I don't use hardware display drivers. The display driver is 100% software, written on PASM (256 brightness levels for each pair of LEDs, by PWM). All the display circuit do is current ampification to drive LEDs. Sorry, the Prop1 does not have enough pins to drive two sides separately.

    Kind regards, Alexey
    Thanks for clarifying. So FlameTube has 96 addressable pixels in an 8x12 matrix.

  • FlameTube wrote: »
    FlameTube displays the same data on both sides, and on the backside it's mirrored.
    In thinking about this a bit more, I guess this means you can't really display text at all since it would be backwards on the reverse side.

  • tonyp12tonyp12 Posts: 1,951
    edited 2016-08-15 19:38
    So it's 96 LED's per side.

    Make it 4 groups, each group charliplexed by 8 Prop pins
    Sure it will use all 32 Prop Pins, but as 8*7*4= 224 max individual segments,
    but you have 192 LED's, you probably could still get i2c to coexist.

  • FlameTubeFlameTube Posts: 35
    edited 2016-08-15 21:58
    David Betz wrote: »
    FlameTube wrote: »
    FlameTube displays the same data on both sides, and on the backside it's mirrored.
    In thinking about this a bit more, I guess this means you can't really display text at all since it would be backwards on the reverse side.

    Why not? It displays text well (with vertical scrolling). On the reverse side it looks funny, but absolutely readable (because of vertical scrolling). It's not a problem at all.
  • FlameTube wrote: »
    David Betz wrote: »
    FlameTube wrote: »
    FlameTube displays the same data on both sides, and on the backside it's mirrored.
    In thinking about this a bit more, I guess this means you can't really display text at all since it would be backwards on the reverse side.

    Why not? It displays text well (with vertical scrolling). On the reverse side it looks funny, but absolutely readable (because of vertical scrolling). It's not a problem at all.

    I suppose. It certainly means you can't display something different on each side though. Makes the device a lot less general.

  • DavidZemonDavidZemon Posts: 2,973
    edited 2016-08-16 01:23
    Various definitions of "Operating System" have floated through these forums. I'll be curious to hear how @FlameTube defines it. Based on:
    FlameTube wrote:
    We need OS to provide easy to use APIs for programmers and let users to install apps in one click. We have to keep compatibility of apps even in case of hardware changes, so it's not possible to let application developers to work with the hardware directly. Any FlameTube app should work on any FlameTube model.

    it sounds to me like @FlameTube doesn't need anything remotely close to an entire "OS". What you do need is:
    • A common language that can be used on the Propeller and any future FlameTube model
    • A sufficiently abstract library written in the above language that provides a low-level HAL (like access to individual LEDs, or the gyro) as well as a number of common and high-level utility functions (like, "display.scrollText(someString)")
    • A small loader application ("applet" if you will?) running in a cog that can listen for incoming connections and load user applications written with the above HAL

    Tachyon and PropForth have both been mentioned. Great ideas for those familiar with Forth. I will be stunned if you gain much traction with developers if you go this route. "Makers" and "hackers" worldwide are used to Python, JavaScript, and an easy-to-use version of (library for) C++ called Arduino. I would think that, if you can't accomplish what you want in a common language like one of the above listed three, you would be better served by redesigning your system with a more powerful chip that can do everything you need.

    So what to use for a common language? Your options come down to C++ (choose C++ over C, since this allows you to target the Arduino community), Basic... and I think that's it? Spin is certainly out-of-the-question since you want it compatible with future FlameTubes and you likely don't want to limit yourself to the Propeller family.

    Basic would be a nice and easy choice. There isn't as much activity on PropBasic (aka: limited library support), but I suspect that could change in the "near" future (1+ years) now that Propeller IDE has baked in support.

    C++ is my favorite, but I am quite biased on that point. See my signature.

    The other two points don't sound too complicated... should be fun!
  • DavidZemon wrote: »
    Basic would be a nice and easy choice. There isn't as much activity on PropBasic (aka: limited library support), but I suspect that could change in the "near" future (1+ years) now that Propeller IDE has baked in support.
    I wonder if PropBASIC has the same problem as Tachyon Forth in that it is too tied to the Propeller. This would make it difficult to support another processor. I think you need to stick with cross-architecture languages like C, C++, Python, JavaScript, etc. Given the limitations of the Propeller, that problem means C or C++ since neither Python or JavaScript are really practical.

  • DavidZemon wrote: »
    Various definitions of "Operating System" have floated through these forums. I'll be curious to hear how @FlameTube defines it. Based on:
    FlameTube wrote:
    We need OS to provide easy to use APIs for programmers and let users to install apps in one click. We have to keep compatibility of apps even in case of hardware changes, so it's not possible to let application developers to work with the hardware directly. Any FlameTube app should work on any FlameTube model.

    it sounds to me like @FlameTube doesn't need anything remotely close to an entire "OS". What you do need is:
    • A common language that can be used on the Propeller and any future FlameTube model
    • A sufficiently abstract library written in the above language that provides a low-level HAL (like access to individual LEDs, or the gyro) as well as a number of common and high-level utility functions (like, "display.scrollText(someString)")
    • A small loader application ("applet" if you will?) running in a cog that can listen for incoming connections and load user applications written with the above HAL

    Tachyon and PropForth have both been mentioned. Great ideas for those familiar with Forth. I will be stunned if you gain much traction with developers if you go this route. "Makers" and "hackers" worldwide are used to Python, JavaScript, and an easy-to-use version of (library for) C++ called Arduino. I would think that, if you can't accomplish what you want in a common language like one of the above listed three, you would be better served by redesigning your system with a more powerful chip that can do everything you need.

    So what to use for a common language? Your options come down to C++ (choose C++ over C, since this allows you to target the Arduino community), Basic... and I think that's it? Spin is certainly out-of-the-question since you want it compatible with future FlameTubes and you likely don't want to limit yourself to the Propeller family.

    Basic would be a nice and easy choice. There isn't as much activity on PropBasic (aka: limited library support), but I suspect that could change in the "near" future (1+ years) now that Propeller IDE has baked in support.

    C++ is my favorite, but I am quite biased on that point. See my signature.

    The other two points don't sound too complicated... should be fun!

    Another option is a cloud compiler & online GUI for developers and end-users.

    Developer functions:

    - creation of libraries and apps online
    - online FlameTube simulation
    - sharing of libraries (to other developers) and apps (to users) online with an option to hide or show source code
    - placing of their apps in FlameTube app store (for money or for free)

    User functions:

    - FlameTube registration (by entering S/N of his device, so, the system will know the model of the FlameTube, encoded in the S/N)
    - Purchasing of Apps, available for his FlameTube model
    - Installation of purchased apps directly from the web UI

    The compilation should happen in realtime, for user's model of FlameTube, using the latest versions of libraries.

    What can you say?

  • FlameTube wrote: »
    Another option is a cloud compiler & online GUI for developers and end-users.

    Developer functions:

    - creation of libraries and apps online
    - online FlameTube simulation
    - sharing of libraries (to other developers) and apps (to users) online with an option to hide or show source code
    - placing of their apps in FlameTube app store (for money or for free)

    User functions:

    - FlameTube registration (by entering S/N of his device, so, the system will know the model of the FlameTube, encoded in the S/N)
    - Purchasing of Apps, available for his FlameTube model
    - Installation of purchased apps directly from the web UI

    The compilation should happen in realtime, for user's model of FlameTube, using the latest versions of libraries.

    What can you say?

    Whether you use a web-based IDE, command-line only tools, or a powerful desktop-based IDE, you still need to define what you need the software to do. That's all my post was trying to get at.

    That being said, a web-based IDE has my vote! mbed has done a great job. Taking inspiration from them, I created a proof-of-concept for the Propeller, with source files being sent to a centralized server, compiled with PropGCC, and then the binary file uploaded back to the user. Not as simple as running a JavaScript Spin compiler in the browser, but it gets the job done. Unfortunately I just goofed this morning and deleted the Tomcat server :P but you can find the source here and here.
  • FlameTube wrote: »

    Another option is a cloud compiler & online GUI for developers and end-users.

    Developer functions:

    - creation of libraries and apps online
    - online FlameTube simulation
    - sharing of libraries (to other developers) and apps (to users) online with an option to hide or show source code
    - placing of their apps in FlameTube app store (for money or for free)

    User functions:

    - FlameTube registration (by entering S/N of his device, so, the system will know the model of the FlameTube, encoded in the S/N)
    - Purchasing of Apps, available for his FlameTube model
    - Installation of purchased apps directly from the web UI

    The compilation should happen in realtime, for user's model of FlameTube, using the latest versions of libraries.

    What can you say?
    Hm, something like blocklyprop?
    http://forums.parallax.com/discussion/155208/open-propeller-project-5-blocklyprop/p1
    https://github.com/parallaxinc/BlocklyProp
    http://blockly.parallax.com/blockly/

    End-users could click something together. Developers could build the blocks.
  • Heater.Heater. Posts: 21,230
    web based IDE has my vote to.

    As long as it does not use somebodies specific servers in the cloud. At that point you are tied to a service that will disappear at a moments notice. See Google Next and so on.

    Espruino gets it right.

    Putting a Spin or other compiler in the browser would do it too.

Sign In or Register to comment.