While I've been focusing on the software and case of late, work has been continuing on the hardware modules as well, as you can see below: This post is really to give an check-in on everything that has got us to that point, and show the progress against the milestones -- and focusing just on the milestones. k.2.2.4 Low-energy power-management module to minimise energy consumption of device,…
Okay, so I have SMS working already, and a nice library to let me send and receive them, complete with emojis and international characters etc. But what I don't yet have is the voice call control working in the same way. The reason being that the EC25 module I have, while supporting 4G, lacks VoLTE support for the Optus Network in Australia. I've poked the support at Quectel who make the modem,…
For the current MEGAphone prototyping, I am using the MEGA65 R3 mainboards. The R3 specifically has on-board speaker drivers that I'm going to use for the ringer. Those drivers do have a bit of a heat-generating issue with some speakers because the audio is not filtered from digital before it hits them, but for ring indication purposes they should be just fine. Anyway, whichever main board…
In recent blog posts I've got the telephony and text messaging software working. What isn't there yet, is making it all talk to the cellular modem -- so that's what we're going to finish here. So let's start by getting some hardware organised that can talk to the cellular modem. We're prototyping using a real MEGA65 mainboard, so we need to tweak a build for that, which has two buffered UARTs…
This post is really just a summary of the work done for the telephony software user interface and SMS/Text messaging user interface. Various other posts describe the considerable work done to achieve this, and the requirements of the software. This software is one area that I think is fair to say that I underestimated the work required. That said, the result is much better than I had originally…
Okay, so I'm burning through a bunch of these outstanding items that have been mostly implemented in the background, and now I need to finish in a hurry. This one is the FPGA that controls power switching of the DC:DC modules that allow the MEGAphone to turn on and off the various sub-systems. It's requirements are quite simple: 1. Provide an API to the low-power FPGA that controls power to all…
Okay, in the last post, I got the dialer and contacts screen and SMS thread handling etc, all largely in place and tied together. We're on the home-stretch for the user-interface side of the telephony software, but there are a few things left to implement/do: First up, we need to split the binary, as I keep hitting running out of RAM for the program in the bottom 64KB. Second, I need to implement…
I've been thinking about this part of things for a while, because it's clear that the first iteration of the modular MEGAphone is going to be larger than originally planned, and subject to more evolution for a while. The goal is to make something that is easy to work on software-wise, as well as being easy to fabricate, and then switch out initial larger modules for smaller more integrated modules…
Now that I've got the SMS message machinery more or less in place, it's time to turn to the contact list. My current concept is for the SMS thread or the contact details (to allow editing of the contact) to be displayed along side this, since the device is basically locked to landscape for a variety of reasons. My current thinking is just to display a list of contacts on the left, with scrolling…
In a previous post, I got Unicode text rendering, complete with line breaking, emojis and a pile of other stuff working, that means we can show message threads. Now we need to refactor that out into some thing more usable, and add the missing bits. Like being able to type a message, hit send, have a functional scroll-bar etc. Then we'll have almost an entire working SMS system, sans talking to the…
Using LLVM has me wanting to implement a simple scheme that enforces memory protection, so that I can more easily detect memory corruption events, in part because of the unfortunate (although understandable) way that LLVM stores its stack pointer in zero-page at addresses $02 and $03, which renders them succeptible to easy corruption, which then results in all manner of down-stream corruption.…
For the MEGAphone, I wanted to make my software debugging on the MEGA65 easier. Stack back-traces are a great way to help debug errors, but we don't have gdb or lldb or anything like that on the MEGA65. m65dbg and related tools can help here, but they don't have an easy way to provide the complete call stack. To solve this for my needs, I added function instrumentation using the following in my…
Okay, so another side-path I have to deal with for the MEGAphone telephony software: I need pre-rendered Unicode fonts so that we can support all languages and emojis (at least for display --- multi-language input and emoji inserting will come a bit later). Sneak peek of where we get to at the end: I've already got a utility that I've been writing that can generate ASCII rendering of glyphs using…
If you have a MEGA65, you'd probably like to be able to plug a SCART cable on to the VGA port and have it Just Work :tm:, causing the MEGA65 to drive 15KHz video. Then if you plug in a normal VGA cable, you'd like regular 31KHz video still, right? To make this small miracle reality, I've modified a MiSTer SCART cable by putting a 2K Ohm resistor between pins 12 and 15. Those pins are used for the…
I should be doing something else, so I've decided to get SCART / 15KHz RGB output working. In theory, this is quite simple, as all the machinery for 15KHz video is already there for the PAL/NTSC composite output stuff. While I have my head in this bucket, I've also take a moment to look at the remaining NTSC colour space bugs. Generating the SCART 15KHz video signal is in theory very simple:…
Goran has been working on refining the MEGAphone modules I designed earlier in the year. So let's check in on the status of those. Goran has improved the structure of the castellated pads, so that they can be fabricated more cheaply, without needing to pay the premium for castellation. A part of this is adding "backup holes" behind the castellations 2.4 Cellular Modem, including SIM card Module…
Time for another couple of modules, neither of which are particularly exotic. We just need something that can adapt the FPGA modules to our castellated module format. The real benefit of this is so that we can offset the modules by the thickness of the PCB, or mount modules on both sides of the PCB. so that we can reduce the overall thickness of the MEGAphone prototypes, and it gives us more…
In a recent post, I worked out how I am going to store SMS conversations, contacts, phone state and a pile of other stuff in D81 disk images, for convenient manipulation. So now I need some tools that let me create those disk images and prepare their contents. Now, some of these functions will be needed on the MEGAphone, and others on the Linux build system. So I should try to make as many of them…
Managing contacts on a system that has 384KB of RAM is not as simple as it first sounds. This is compounded by the limited support for direct FAT file system access in the Hypervisor. My current plan is to use a D81 disk image to store each contact in a single 512 byte sector. As the disk images are 8,192,000 bytes = 800KiB, this means we can have 1,600 contacts -- less a bunch for track 40 that…
In my previous post, I implemented a facility for accessing the brand new Shared Resources area of the MEGA65's System Partition. This facility has been created to provide rapid access to content anywhere in large files --- initially unicode pre-rendered fonts for the MEGAphone. Using a traditional file-system would require tracking file-system state, and traversing file-system structures. This…
In another blog post I'm writing at the moment, I'm exploring how I will do the UI for the new MEGAphone work. Part of that involves me figuring out how I can possibly support the full Unicode gammut -- including emojis, that are not more or less a required part of SMS communications. In that post, I considered putting them into files on the FAT32 file system, or stashing them in a set of…
The next module on the list is something that can do BlueTooth to talk to a headset. For security reasons, I'd prefer something that is BlueTooth only, if I can find it. The problem is that the ESP32 is probably otherwise the obvious choice, but I'm not totally sure that it can be trusted. But then, there is lots of alternative firmware available for it, and at the end of the day, if you are using…
I've been busy working on the schematic and PCB design for a bunch of the modules for the MEGAphone lately. The first batch of those I had sent off for fabrication by PCBWay, and they have finally arrived. So let's have a look at what we have: Well, that's a bit hard to see what's going on, so let's look at each in turn. My lighting here isn't that great right now, but it should be enough that we…
This post has turned into a bit of an epic, as it turned out to have a couple of modules (solar MPPT tracker and prioritised power input selection and over-voltage and reverse-polarity protection) that took quite a bit more effort to get right. So, we have a DC:DC regulator. Now we need a way to get energy into the battery. This module has a few more requirements, because of the different energy…
In the previous post I designed the cellular modem module. However, the requirements for the device include having a SIM card, which I had elected to put on a separate module, so it's time to make that module now: Requirement 2.2.1: Cellular Module Carrier board that can accept an industry standard industrial cellular modem, breaking out all pins from the connectors, and provides a SIM card slot.…