Thanks for the patches.
I have looked at them only briefly, but it seems to me that the
changes to the "osdir" keyboard driver aren't very kosher.
It's been a while since I've done any C++ to be honest, but it looks
to me what you're doing with QWSKeyboardHandler_Public and
QWSKbPrivate essentially breaks encapsulation, because you're
re-declaring a QT class just with a different name and exposing a
private member as public, then casting another class to it.
This works now because you know the current internals of that class.
But by definitions the internals are subject to change at any time, so
that may break unpredictably in the future and probably the compiler
won't even notice, you would get something ugly at runtime.
I may be wrong, but it just don't seem very kosher to me.
But the alternative is probably patching QT4 to expose the repeat rate
members as public (or even better add accessors).
Since we rebuild QT4 during the OSD1 firmware built, and we have
already in place a way to add patches to it automatically, it may be
cleaner if you do it that way.
For the rest, it seems ok from a quick look.
--
nero
I agree with you on this one.
> Can you, or anyone, comment on what the system looks like for someone
> with an OSD 1.1 (or whatever that is called) that is lacking a CF slot
> and with bigger internal flash? Do they have the ability to replace a
> plugin .so and/or the Qt library, or do they need a monolithic and
> slow upk firmware upgrade? (i.e. is this stuff stored in a read-only
> partition, or on the jffs2 r/w area?)
If I recall correctly the extended area is just mounted in a rw
partition inside the internal flash, instead of the CF card.
The base fs is still on a readonly partition to be as similar as
possible to the previous system.
> Are there just the two hardware releases (with and without CF slot?)
> of the OSD 1.x, or are there other flavors in the wild?
I think they are the only ones, at least by Neuros.
> I'm tempted to move as much as possible into a r/w area (jffs2 on the
> flash, or USB/SD, or CF (for OSD 1.0s) ) to remove the need to often
> (or ever) reflash via upk - that's slow, monolithic, and increases the
> chance of bricking someone's OSD.
> The trunk has lpkg in it; if we treat the OSD as a package-managed
> platform, we want most everything mounted (or remount-able) as read-
> write.
> Sure, I can tftp/nfs boot my OSD, but that greatly limits who else can
> benefit from this work.
The problem with the package manager as of now is that it has no gui
and no repository for packages.
So the updates have to be manually initiated, and that has to be done
from the command line (telnet or serial).
That is great for you and me, not so much for any other end user that
doesn't know telnet from a baboon's arse ;)
Then again maybe all remaining OSD users right now are cool with
telnet, in which case no problem.
I like packages more, for the record, than flashing the entire thing
over and over.
In any case AFAIK there's no official release yet with lpkg inside
(not entirely sure though).
--
nero
> I like packages more, for the record, than flashing the entire thing
> over and over.
I am VERY annoyed with the OSD firmware new version-check aka updater because:
#1 it doesn't show the RELEASE DATE of teh firmware update available.
( downloaded dev release y-072 twice because I thought it were
different releases, several days apart, I has to start scribbling
release numbers in a piece of paper to keep track of what releases I
already tried).
#2 If you switch from Beta to dev and check for a new release IT
BEGINS DOWNLOADING without a confirmation if you indeed what to
install that. It should check and say "what I see in the dev branch is
y-072 dated 06/32/2049, install? OK/Cancel" not go straight into
downloading.
#3 Fix the bloody Youtube, please. It's unsusable as it is today. Two
out of three videos do not play anymore.
FC
I can't actually say much about that decision. It was made by others
before I joined the project and personally I just took it as a given
and moved on with it. I can make some guesses.
The engineer who designed the OSD1 base system came from a strong
non-linux embedded background. He was used to monolithic firmwares and
monolithic update methods. He wasn't very familiar with package based
methods. So having a ro rootfs probably came natural since he assumed
it would be updated by flashing entire packages anyway.
Ease of support probably played a role too, since if we know the
version of firmware installed, we know what features it has, without
having them altered by the user.
There were also probably other reasons, but anyway, I wouldn't spend
too much time dwelling on those. What is done is done, and all that...
Regarding changing to a rw fs, i can tell you the software can cope
with that perfectly. During developement we use an NFS mounted rootfs,
and when that is rw things are just as peachy as when it's ro.
My favorite choice would probably be using some form of overlay fs (i
would've said aufs or unionfs, but mini_fo seems a much lighter
alternative that i didn't know about until now), using the CF or NAND
as writeable space (some considerations have to be made here on how
much space to allocate to this, and how). Using SDs for this of course
is also an option, or USB. but of course, that's only true if you
don't need it for recording or playback.
I'm not so sure how a true rw filesystem would behave on the NOR
memory. Something about speed of writing and especially limit on erase
cycles before it destroy itself bothers me, but right now I can't
elaborate on this much more. on NAND, it will probably be better to
have a regular rw filesystem.
Hope it helps,
--
nero