sam-itt / sofis Goto Github PK
View Code? Open in Web Editor NEWOpen Source EFIS
License: GNU General Public License v2.0
Open Source EFIS
License: GNU General Public License v2.0
The pitch ruler should not have its whole range directly visible. It should appear to scroll has the viewer goes up and down.
AttitudeIndicator and OdoGauge have "wrap around" images: The end of the image is virtually tied to the beginning of it (i.e. the image rectangle is a flattened cylinder). Each of these gauges uses ad-hoc code to handle taking portions of that virtual cylinder.
This code needs to be factored out.
Command lie arguments support is minimal. Although they are only useful when doing devel/test/demos, they could use some improvement:
Currently main.c manually creates and builds a unique screen. It should be possible to have several pre-defined screens/pages with their gauges that can be switched between. Example: The default page has a MapGauge in the bottom-right corner, another screen/page would have the MapGauge full screen and engine gauges as a side panel.
The current system is very primitive. Primary providers and overlays are hardcoded. This should be read from a config file during startup and switched on/off during runtime.
SoFIS can be built with software-rendering only (and obviously no synthetic vision). This mode breaks often due to rotations being implemented in each gauge with #define
guards to select an alternative code path when SDL_gpu is not available.
All rotation code should be factored out in a RotatingLayer
class which will then select (compile-time) the appropriate code path when SDL_gpu is available or not. No more #define
for that in the gauges and less breakages (hopefully).
Bugs are displayed on the ladder and helps the user locate and stay on a given value.
GenericRuler can currently only etch in a fixed stride that represents a unit. We need to add "subunits" to be able to draw etches like: 5,10,15,20,25, etc. with according markings(numbers) and etches(lines) of different size.
Hi,
RE: Ubuntu build failure
Eventually got the prerequisites installed... had trouble with SDL2, but eventually got there... and built installed SDL_gpu... ignoring some warnings, get a 'make' error -
gcc -o sensors/gps-sensor.o -c sensors/gps-sensor.c -g3 -O0 `pkg-config glib-2.0 sdl2 SDL2_image libgps --cflags` -I. -I./sdl-pcf/src -I./fg-io/flightgear-connector -I./fg-io/fg-tape -I./fg-roam/lib/cglm/include -I./fg-roam/src -DUSE_SGPU_TEXTURE=1 -DUSE_SDL_GPU=1 -DENABLE_DEBUG_TRIANGLE=0 -DENABLE_DEBUG_CUBE=0 -DFGR_HOME=\"./fg-roam/src\" -DSFS_HOME=\".\" -DJY61_DEV=\"/dev/ttyUSB1\" -DENABLE_PERF_COUNTERS=1 -DUSE_GLES=0 -DENABLE_3D=1 -DNO_PRELOAD=0 -DUSE_TINY_TEXTURES=0 -DHAVE_MKDIR_P -DHAVE_CREATE_PATH -DHAVE_HTTP_DOWNLOAD_FILE -DHAVE_IGN_OACI_MAP=0
sensors/gps-sensor.c: In function ‘gps_sensor_set_fix’:
sensors/gps-sensor.c:105:23: warning: passing argument 1 of ‘timespec_equal’ from incompatible pointer type [-Wincompatible-pointer-types]
105 | if(timespec_equal(&(self->gpsdata.fix.time), &old_time) || self->gpsdata.fix.mode < MODE_2D)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| |
| timespec_t * {aka struct timespec *}
sensors/gps-sensor.c:24:43: note: expected ‘double *’ but argument is of type ‘timespec_t *’ {aka ‘struct timespec *’}
24 | static inline bool timespec_equal(double *t1, double *t2)
| ~~~~~~~~^~
sensors/gps-sensor.c:107:16: error: incompatible types when assigning to type ‘double’ from type ‘timespec_t’ {aka ‘struct timespec’}
107 | old_time = self->gpsdata.fix.time;
| ^~~~
sensors/gps-sensor.c: In function ‘gps_sensor_worker’:
sensors/gps-sensor.c:138:18: error: too few arguments to function ‘gps_read’
138 | rv = gps_read(&self->gpsdata);
| ^~~~~~~~
In file included from sensors/gps-sensor.h:13,
from sensors/gps-sensor.c:13:
/usr/include/gps.h:2307:12: note: declared here
2307 | extern int gps_read(struct gps_data_t *, char *message, int message_len);
| ^~~~~~~~
make: *** [Makefile:62: sensors/gps-sensor.o] Error 1
Full build log is here...
Any help appreciated... thanks...
OS: Description: Ubuntu 20.04.2 LTS
GCC: gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
OT: Hope 'cmake' is used as the config, generator, ... easy for Windows...
We need a basic GUI system to allow user interaction. Example: Goto airport, add waypoints, etc.
A dedicated overlay provider should draw current flightpath and waypoints over the map
LadderPages (altitude, speed) are using ad-hoc code that predates GenericRuler. Use Generic ruler to draw these add remove ad-hoc code.
Depends on #2
Markers are small indicator outside the the gauge that points to a given value on the ladder.
Add a information to help the user/pilot to stay on track.
Needs #11
The current choice/support of sensors is not doing well. Add support for better ICs that do on-board sensor fusion:
Hi
I coulnd't find your email and I don't know why homebuild forum doesn't work with me.
I do have a RV7A and electronic knowledged. I kinda have a similar project in work but im not completly to the efis point
im currently building hardware control and sensor for different part, like light and trim controller.
do you still work on your project? maybe we could converge to the same goal
Add a trend vector to the TapeGauge: A narrow rectangle below or above the OdoGauge, that goes up or down and have its height determine what will be the value X seconds later.
Pitch rulers are currently drawn using ad-hoc code (that pre-dates GenericRuler) that should be replaced with the drawing code from GenericRuler.
Depends on #2
In many files, there is:
#include "SDF_pcf.h"
When I ran make
, it complains about not having that header file. They're in double quotes, and not in the project directory. /usr/include/SDL
doesn't include anything related to pcf
either, (I have the full SDL installation on Arch Linux), so changing " to <> won't really help, I thought.
This left me unable to compile. Any ideas? Thanks :D
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.