More refactoring, testing and new apps!

A project log for pyLCI - Linux Control Interface

Makes Raspberry Pi accessible, portable and easily configurable.

ArsenijsArsenijs 03/26/2016 at 03:560 Comments

Today and yesterday were quite, quite productive. Long story short, I stayed at home all the time, coding, soldering and writing. Tomorrow and the day after are really likely to be the same.

The day before yesterday all I did was go to my friend who has a laser cutter and get a new case prototyped for #Raspberry Pi portable workbench (Project Christoph). It's going to be one of projects which will show how pyLCS can be used, and I'm going to make it interesting.
On a side note, it's not really a control system. I'm thinking of a last-minute-change to pyLCI, which is Linux Control Interface, reflecting the true meaning more.

Yesterday, I mainly worked on "automagic apps", that is - easily adding apps and managing them, as well as wrote some misc apps, such as I2Ctools and Volume control. Nothing too spectacular, most time was invested in assembling a new faceplate for Christoph, which contains both the screen and buttons. IMO looks sweet, can't wait until I get to test it. Maybe the day after tomorrow, after some hot glue jobs to keep the newly-cut case together till I find the proper screws =)

Today was a good day. I made a network app, which shows network interfaces and their addresses. All that's left is some common actions, like up/down/so on. Wireless is not yet done. Maybe tomorrow, together with Bluetooth... about that.

I also researched about what needs to be done to add Bluetooth. I think for PoC I'm going to use bluetoothctl and pexpect, while kludgy, this is the best solution to not spending a week on it when I just need something that works. I spent plenty of time on Bluetooth today, tomorrow's definitely the time to get it working.

Also, I refactored the Menu UI element, it now supports different screen sizes, different meny element heights&element content types, and, as a side effect, has scrolling implemented just the way it's in all those menus we love. Different screen sizes are yet to be tested, I only have 2-row ones =) I spent a lot of time on that, it seemed to be necessary for networking app to be a little bit more fabulous.

UI elements seem to be an easy target to be covered with tests, so I might do that as soon as first category is finished. I won't refactor input subsystem tomorrow, but I'm certainly going to do it in the next couple of days. A lot of code to get rid of. While I'll be at it, it'll need its callbacks to be exception-proofed since that's the main cause of system crashes now.

I should make READMEs about apps, their capabilities and requirements. .md-style will certainly do, and they'll also look nice on GitHub. Oh, nice features - I've added a skeleton app as an example! I've also aded single-app mode, when you do "python -a app_name" and it loads only that app, which is very cool for testing and also maybe will be handy for somebody's setup.

Videos... I need to shoot some ASAP, but I'm lacking apps. Should I make some mockups? Won't be fair maybe, but I need videos.