- Posts: 4402
GUI
- PhracturedBlue
- Offline
I added a new 'trim' settings page, as well as a 'main page'.
New features:
* support for very large fonts
* Initial menu for setting up trim values
* Main page will show live trim and throttle values
I've decided that rather than implementing everything that we'll eventually need, that I'm going to start working on getting basic functionality to the point I can actually control a model from the transmitter.
So my next step is to start work on a radio interface. I'll probably start with a protocol I already know (likely the FlySky protocol) since the effort to reverse engineer the DEVO protocol is substantial, and this is not my field of expertise). With any luck, rcH4x0r will come back at some point to help with that.
Please Log in or Create an account to join the conversation.
- FDR
- Offline
I have started the testing.
How ready is it supposed to be?
Minor bug: I cannot step throw the trim page with "5", only if I open and close one of them.
Probably there is some memory leakage, because the app crashes after some window opening. It crashed after 42 trim window opening, or 19 channel settings window.
More coming later...
Please Log in or Create an account to join the conversation.
- PhracturedBlue
- Offline
- Posts: 4402
The trims are not actually connected yet, so they won't affect the outputs you see (except for the heli-mix controls where they will affect the output, but not in the proper way.
If you didn't figure it out:
use caps 'A'/'Q' for changing the throttle trim, and 'S'/'W', 'D'/'E', 'F'/'R' for the other corresponding channels. You should see the trim bars move on the main page.
keys '5' and '6' move through the different pages now (that will likely change soon)
Edit: And I fixed the problem with not being able to cycle past the trim page. The memory leaks will need to wait until later for me to look at.
Please Log in or Create an account to join the conversation.
- FDR
- Offline
The values on the right pane and the throttle value on the main window do change, but not the trim bars. Furthermore, the trim steps seem to be always 20%, not the value set on the trim window. Actually whatever channel's trim settings I open, it always show the throttle trim settings.
Please Log in or Create an account to join the conversation.
- PhracturedBlue
- Offline
- Posts: 4402
I haven't been able to reproduce a crash, and I ran within valgrind and didn't see any memory leaks
the trms work for me. use shift-a, shift-q to move the throttle trim. It won't woirk with caps-lock for some reaosn, you need to actually hold the shift key.
Please Log in or Create an account to join the conversation.
- FDR
- Offline
Now the trim bars are working, but I have two observations:
1. If the trim step is not a divider for 100, and I step throw the range comletely, then in the last step it makes a half step to 100%, but then going back it goes throw different values and never hit the 0%.
2. Long press doesn't work like on other numeric spin buttons.
It still hangs for me if I open too many windows. It doesn't actually crash, but don't refresh the screen and the controls won't work. It always happen sooner or later, while I am testing...
Please Log in or Create an account to join the conversation.
- PhracturedBlue
- Offline
- Posts: 4402
from the console:
gdb ./emu_devo8
r
<test the emulator until it hangs>
in the console again:
ctrl-c
bt full
Please Log in or Create an account to join the conversation.
- FDR
- Offline
sh: bt: command not found
Please Log in or Create an account to join the conversation.
- PhracturedBlue
- Offline
- Posts: 4402
Assuming you are using MSYS for your console, you should have gotten a prompt that looks similar to (but probably not identical to):
Program received signal SIGINT, Interrupt.
__mpn_cmp (op1_ptr=0x7fffffffdb90, op2_ptr=0x7fffffffdb50, size=2) at cmp.c:46
46 cmp.c: No such file or directory.
in cmp.c
(gdb)
I can't easily give you instructions on how to get gdb working (it should just work) but some searching on the web will hopefully help.
Please Log in or Create an account to join the conversation.
- FDR
- Offline
Instead I killed the app, and the "bt full" gave this output:
$ gdb ./emu_devo8
GNU gdb (GDB) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from C:\deviation\MinGW\msys\1.0\home\LFodor\src\deviation\src\e
mu_devo8.exe...done.
(gdb) r
Starting program: C:\deviation\MinGW\msys\1.0\home\LFodor\src\deviation\src\emu_
devo8.exe
[New Thread 5860.0x15b8]
Program received signal SIGSEGV, Segmentation fault.
0x004109c5 in XRectangleRegion(int, int, int, int) ()
(gdb) bt full
#0 0x004109c5 in XRectangleRegion(int, int, int, int) ()
No symbol table info available.
#1 0x00410c04 in Fl_Widget::damage(unsigned char, int, int, int, int) ()
No symbol table info available.
#2 0x00410d8c in Fl_Widget::redraw() ()
No symbol table info available.
#3 0x0040b8fa in LCD_DrawStop () at target/emu_devo8/fltk.cpp:286
No locals.
#4 0x00403b6a in LCD_FillRect (x=10, y=164, w=65535, h=112, color=0)
at screen/qvga/lcd_gfx.c:242
No locals.
#5 0x004045a7 in LCD_DrawWindowedImageFromFile (x=10, y=164,
file=0x454d9c "images/btn48_16.bmp", w=300, h=112, x_off=0, y_off=0)
at screen/qvga/lcd_gfx.c:419
i = 64
j = 19687
fh = 0x0
transparent = 0 '\000'
row_has_transparency = 0 '\000'
buf = "\000\000", '\000' <repeats 11 times>, "\020\000\000\000\000\000\
000\000 \000\000\000\001", '\000' <repeats 11 times>, "\000\"\000@\001\000\000\
000\000\"\000\000\000D~0\210A~\377\377\377\377*\210A~═ëA~\000\000\000\000<¸@\000
\230\006\203\000\001\002\000\000\001\000\000\000ÚôA~ĘôA~DYJ", '\000' <repeats 13
times>, "\001\000\000\000@ö\177\000\000Óř\177\210■\"\000\070ű\"\000\002öA~DYJ\0
00\000\000\000\000\000\000\000\000Ť`˝w─ř\177\000Óř\177", '\000' <repeats 12 tim
es>, "\000\000\000Xű\"\000Ów˝w\002", '\000' <repeats 11 times>, "Ť`˝w─ř\177\00
0Óř\177", '\000' <repeats 12 times>...
img_w = 101
img_h = 4214017
offset = 6356992
compression = 2293064
#6 0x0040591f in GUI_DrawObject (obj=0x4ab2a0) at gui/gui.c:356
button = 0x4aa5a0
box = 0x4ab2a4
#7 0x00405bbf in GUI_DrawObjects () at gui/gui.c:417
obj = 0x4ab2a0
#8 0x00405fde in GUI_DrawScreen () at gui/gui.c:568
No locals.
#9 0x00408481 in PAGE_MixerInit (page=0) at pages/mixer_page.c:62
init_y = 8
i = 9
mix = 0x4aa0e0
#10 0x0040a1e6 in okcancel_cb (obj=0x4ab0a8, data=0x0)
at pages/mixer_setup.c:520
No locals.
#11 0x0040626e in GUI_CheckTouch (coords=0x22ff20, long_press=0 '\000')
at gui/gui.c:652
button = 0x4aa480
modalActive = 0 '\000'
obj = 0x4ab0a8
#12 0x00401bca in event_loop (param=0x0) at main.c:116
t = {x = 173, y = 15, z1 = 0, z2 = 0}
last_buttons = 4294967295
touch_down = 0 '\000'
last_redraw = 3776632382
i = 32
#13 0x00401ab4 in main () at main.c:66
No locals.
Warning: the current language does not match this frame.
(gdb)
Please Log in or Create an account to join the conversation.
- FDR
- Offline
Please Log in or Create an account to join the conversation.
- PhracturedBlue
- Offline
- Posts: 4402
Please Log in or Create an account to join the conversation.
- PhracturedBlue
- Offline
- Posts: 4402
It shows that the code was unable to find the file "images/btn48_16.bmp" which shouldn't happen.
In any case, it tried to just draw a black rectangle, but the requested size was > a 16bit value which caused an overflow that hung the system.
I've committed a fix for that specific issue, but it doesn't explain the underlying problem. Please build the latest code and see what happens now. If you see a similar crash or hang, you can send another gdb trace.
Please Log in or Create an account to join the conversation.
- FDR
- Offline
(gdb) r
Starting program: C:\MinGW\msys\1.0\home\FDR\src\deviation\src\emu_devo8.exe
[New Thread 6208.0x1e78]
Program received signal SIGSEGV, Segmentation fault.
0x004109a1 in XRectangleRegion(int, int, int, int) ()
(gdb) bt full
#0 0x004109a1 in XRectangleRegion(int, int, int, int) ()
No symbol table info available.
#1 0x00410be0 in Fl_Widget::damage(unsigned char, int, int, int, int) ()
No symbol table info available.
#2 0x00410d68 in Fl_Widget::redraw() ()
No symbol table info available.
#3 0x0040b8d6 in LCD_DrawStop () at target/emu_devo8/fltk.cpp:286
No locals.
#4 0x00403b62 in LCD_FillRect (x=10, y=164, w=300, h=112, color=0)
at screen/qvga/lcd_gfx.c:242
bytes = 4294967295
#5 0x00404583 in LCD_DrawWindowedImageFromFile (x=10, y=164,
file=0x454d9c "images/btn48_16.bmp", w=300, h=112, x_off=0, y_off=0)
at screen/qvga/lcd_gfx.c:417
i = 64
j = 19651
fh = 0x0
transparent = 0 '\000'
row_has_transparency = 0 '\000'
buf = "\000\000đ\000\000\000\000\000\000\000óý\037w\241ţ\037wÜú\"", '\00
0' <repeats 15 times>, "\"\000đ\000w@\001\"\000\000\000$w\000\000OQţ\377\377\377
aţ\037wŤ\001 w\000\000\000\000\030÷@\000ş\003u\000\001\002\000\000\001\000\000\0
00°\000\020\000Â\005 w\201\005 wDYJ", '\000' <repeats 13 times>, "\001\000\000\0
00\230ľu\000Ěöý\177Xţ\"\000\bű\"\000M\005 wDYJ\000\000\000\000\000\000\000\000\0
00&e\031wÄpý\177\000đý\177", '\000' <repeats 12 times>, "đ\000\000\000(ű\"\000a\
177\031w\002", '\000' <repeats 11 times>, "&e\031wÄpý\177\000đý\177", '\000' <re
peats 12 times>...
img_w = 101
img_h = 4213981
offset = 0
compression = 2293016
#6 0x004058fb in GUI_DrawObject (obj=0x4ab2a0) at gui/gui.c:356
button = 0x4aa5a0
box = 0x4ab2a4
#7 0x00405b9b in GUI_DrawObjects () at gui/gui.c:417
obj = 0x4ab2a0
#8 0x00405fba in GUI_DrawScreen () at gui/gui.c:568
No locals.
#9 0x0040845d in PAGE_MixerInit (page=0) at pages/mixer_page.c:62
init_y = 8
i = 9
mix = 0x4aa0e0
#10 0x0040a1c2 in okcancel_cb (obj=0x4ab0a8, data=0x0)
at pages/mixer_setup.c:520
No locals.
#11 0x0040624a in GUI_CheckTouch (coords=0x22fef0, long_press=0 '\000')
at gui/gui.c:652
button = 0x4aa480
modalActive = 0 '\000'
obj = 0x4ab0a8
#12 0x00401bca in event_loop (param=0x0) at main.c:116
t = {x = 176, y = 16, z1 = 0, z2 = 0}
last_buttons = 4294967295
touch_down = 0 '\000'
last_redraw = 3828653932
i = 32
#13 0x00401ab4 in main () at main.c:66
No locals.
Warning: the current language does not match this frame.
(gdb)
Please Log in or Create an account to join the conversation.
- PhracturedBlue
- Offline
- Posts: 4402
By the way, how did you kill the app such that you could get back to gdb? I tried it in windows, and gdb does not work as it does in Linux. I was unable to get back to gdb after triggering the hang.
Please Log in or Create an account to join the conversation.
- FDR
- Offline
Well, I went one step further the first symptom of hanging (clicked on the already not visible button again), and then it crashed even more (while still visible) and returned to the prompt.
Then it wrote the "Program received signal SIGSEGV, Segmentation fault." message. You can see it in the output I gave.
P.S.: How do you like the modded design and larger editing font?
(You have to refresh to see it...)
Please Log in or Create an account to join the conversation.
- PhracturedBlue
- Offline
- Posts: 4402
Please Log in or Create an account to join the conversation.
- FDR
- Offline
- the header image (deviation) background is now across the whole header;
- the link and heading colors of the portal now match the forum engine, i.e. blue;
- larger editing font in the forum message edit window.
Please Log in or Create an account to join the conversation.
- FDR
- Offline
$ make TARGET=emu_devo8 WINDOWS=1
+ Compiling 'target/emu_devo8/channels.c'
+ Compiling 'target/emu_devo8/stubs.c'
+ Compiling 'target/emu_devo8/tx.c'
+ Compiling 'curves.c'
+ Compiling 'main.c'
+ Compiling 'misc.c'
+ Compiling 'mixer.c'
+ Compiling 'radio.c'
+ Compiling 'screen/qvga/lcd_calibrate.c'
+ Compiling 'screen/qvga/lcd_gfx.c'
+ Compiling 'screen/qvga/lcd_string.c'
+ Compiling 'gui/gui.c'
+ Compiling 'pages/chantest_page.c'
+ Compiling 'pages/main_page.c'
+ Compiling 'pages/mixer_curves.c'
+ Compiling 'pages/mixer_limits.c'
+ Compiling 'pages/mixer_page.c'
+ Compiling 'pages/mixer_setup.c'
+ Compiling 'pages/pages.c'
+ Compiling 'pages/scanner_page.c'
+ Compiling 'pages/test_page.c'
+ Compiling 'pages/trim_page.c'
+ Compiling 'pages/usb_page.c'
+ Compiling 'protocol/devo.c'
+ Compiling 'protocol/flysky_a7105.c'
+ Compiling 'protocol/protocol.c'
+ Compiling 'target/emu_devo8/fltk.cpp'
target/emu_devo8/fltk.cpp: In function 'void CLOCK_StartTimer(u16, void (*)())':
target/emu_devo8/fltk.cpp:392:47: error: declaration of C function 'void CLOCK_S
tartTimer(u16, void (*)())' conflicts with
./target.h:101:6: error: previous declaration 'void CLOCK_StartTimer(u16, u16 (*
)())' here
target/emu_devo8/fltk.cpp: In function 'void CLOCK_StartTimer(u16, void (*)())':
target/emu_devo8/fltk.cpp:398:22: error: invalid conversion from 'void (*)()' to
'u16 (*)() {aka short unsigned int (*)()}' [-fpermissive]
make: *** [objs/emu_devo8-w32/fltk.o] Error 1
By the way: how can I switch now to the config and mixer screens?
Please Log in or Create an account to join the conversation.
- PhracturedBlue
- Offline
- Posts: 4402
I have been implementing the interrupt code that controls the radio. I need the code to work in the emulator so I can verify that the code sequences are correct. Unfortunately the code I use in Linux doesn't work in Windows, so now I need to compile 3 times: linux, windows, devo8. It is getting more challenging to keep the compile clean everywhere.
As you noticed, I changed the keys again. the new keys match the devo8 buttons. So now you use left/right/up/down/enter/escape to control everything
Please Log in or Create an account to join the conversation.