OI Photography said:
Right, and I'm sure it is stored on the aircraft itself...just up until now I assumed it was on the NAZA, but it might very well be on the datalink module that's installed on the aircraft and connected to the NAZA via canbus. If so, that would indicate that the 16 waypoint limitation isn't driven by hardware restrictions, since the same datalink is used regardless of flight controller model (NAZA vs Wookong)
I'd be astonished if the 16 waypoint limitation has anything to do with hardware, whether the waypoints are stored in the NAZA or in the datalink module (I'd expect the former, though if you're on the canbus you can do anything, or at least anything that the NAZA gives you access to on that bus.)
In my day job I design and build embedded systems, so I have at least some design aesthetics, if not any actual knowledge of the innards of these beasts, so take all of this with a grain of salt...
If I were designing the datalink module, I'd make it as vanilla as possible. Presumably its job is to translate between whatever protocol runs over the radio link and the Canbus. A clean design would be to make its functions as generic as possible, so that it isn't aware of the application running across it. A simple, clean design would be to extend the Canbus protocol over the radio link, but to not be aware of the messages running across the link. The waypoint protocol would be implemented by the iPhone app and the NAZA and would run transparently across the radio link and the datalink module.
I suspect that there are some really cheap serial-to-Canbus parts coming out of the auto industry (which is presumably why they used it in the first place.)
The most obvious thing to do would be to extend the firmware in the NAZA (and to extend the protocol running over Canbus) to accept a stream of waypoints and related commands. Then action those commands within the NAZA itself, which is presumably where all of the flight control functionality lives.
A perverse (in my opinion) design would be to make the datalink module smarter (assuming it has any smarts to speak of beyond driving the Canbus). You could theoretically store the waypoints in the datalink module and then have the datalink module turn them into steering commands over the Canbus, assuming that the NAZA would accept such commands.
But regardless of which way it is done, at the end of the day it's just software and RAM--you should be able to have as many waypoints as you have space to store them (they're not terribly big, probably less than 100 bytes per waypoint). The only way it would be a hardware limitation is if they built some custom chip that did the waypoint-to-steering translation and that chip only had 16 registers, but given the obvious compute ability of the NAZA (and the expense and difficulty of custom silicon) it doesn't seem likely to me.
(But over my career I've been astonished by crappy designs, so who knows...)