Coder Social home page Coder Social logo

retostockli / xpcockpit Goto Github PK

View Code? Open in Web Editor NEW
14.0 2.0 3.0 35.69 MB

XPCockpit enables Cockpit builders to easily interface X-Plane internal datarefs with external hardware and external glass cockpit screens. It is written in C/C++ and currently supports OSX and Linux.

Makefile 0.42% M4 1.11% C 48.48% C++ 48.03% TeX 0.56% Shell 0.48% Python 0.92%

xpcockpit's Introduction

2024/07/11

This is the xpcockpit Project by Reto Stockli, supported by Hans Jansen.

It enables to connect custom hardware to X-Plane by use of a C library
which allows to subscribe to X-Plane datarefs and commands. The
currently supported hardware is: 
- most OpenCockpits cards
- Leo Bodnar's BU0836A/X
- Sismo Soluciones Ethernet Board
- Arduino (development ceased)
- Teensy (in development) 

The project also includes the glass cockpit software xpopengc which
is a further development of the OpenGC project for Boeing 737 and Airbus 320.

The project also includes a warp&blend software for directly driving the
warp&blend API from the linux command line without manually adjusting
control points or buying a proprietary warp&blend software.

The project consists of these components:
libxpcockpit: a library containing I/O functions of all xpcockpit clients. Needs to be compiled first
xpserver: the plugin to X-Plane which handles dataref/command I/O via TCP/IP
xpclient: a sample client software to show how to subscribe and use datarefs
xpusb: the client which interacts with OpenCockpits/Leo Bodnar's Hardware
xpopengc: the glass cockpit software client that simulates B737/A320 Gauges
xppi: the client which enables the Rasperry Pi GPIO usage with X-Plane
xpsismo: the client which communicates to the SISMO Ethernet Modules
xparduino: the client which communicates to Arduino (demo only, not operational)
xpteensy: the client to the teensy microcontroller (in dvelopment)
warpblend: the scripts and code to create warp&blend drivers for multiple projectors
scripts: scripts I use myself to control a the cockpit components including automated install on raspberry pi's
applications: application definitions for Linux so that binary files can be accessed via the Linux application menu


The project is aimed at the following crowd:
- X-Plane users working on Linux or OSX and now also on Windows
- People who want to build their own home cockpits
- People with some programming exercise
- Friends of good wine and cheese

HOW TO START:
- first compile and install the library libxpcockpit
- then compile and install ther x-plane plugin xpserver
- then compile (and optionally install) any of the clients like xpsismo or xpopengc

Information on compiling and installing those items are found in the respective subdirectories

xpcockpit's People

Contributors

retostockli avatar

Stargazers

 avatar Stefan B. avatar  avatar BrockG avatar Sam Winslow avatar Alexander I.Grafov avatar hltdev8642 avatar  avatar  avatar  avatar Axel R avatar Don Ebben avatar David Edson avatar  avatar

Watchers

Bernd Kosmahl avatar  avatar

xpcockpit's Issues

Detect X-Plane an its IP address automatically

Right now all xpcockpit clients have a manual configuration of the X-Plane IP and also listen to the xpconnect server plugin to be running in order to exchange data with X-Plane. X-Plane operates a UDP beacon transmitting its IP address and we will know when X-Plane is running and what version it has:
https://github.com/ale-novo/xplane/blob/master/xplane.py
nasa/XPlaneConnect#147

It would be cool to implement that feature in xpcockpit clients. Try out with xpclient and implement it to other clients as well. Still leave the option to manually configure the IP though.

PFD: IAS Disagree

Implement IAS Disagree in speed tape

laminar/B738/autopilot/ias_disagree

THR HOLD not working

During Takeoff thrust levers need to be able to be manually adjusted when THR HOLD mode is reached.

xpsismo does not quit

UDP read loop is not captured on ctrl-c if:

  • neither x-plane
    NOR
  • sismo card can be reached (e.g. with wrong host IP address)

Adapt WXR data structure to XP12

The WXR data message format has changed.

The XP11 one:

the four chars RADR and a NULL.
float lon longitude of the radar point
float lat latitude of course
float storm_level_0_100 precip level, 0 to 100
float storm_height_meters the storm tops in meters MSL

The XP12 one:

the four chars RADR, and a fifth byte that is internal-use.
float lon longitude of the scan pointa
float lat latitude of the scan point
float bases_meters the cloud basees in meters MSL
float tops_meters the cloud tops in meters MSL
float clouds_ratio cloud ratio this lat and lon ratio
float precip_ratio precip ratio at this lat and lon

This will require some changes in libxpcockpit/src/wxrdata.c

Ideally we can adapt it in the way so that both XP11 and XP12 can be
satisfied without hardcoding the new format and deleting the old one.

xpusb: buffer full during startup of x-plane

  • during connect() of the tcp/ip client the server is still starting and will block the client
  • implement connect with timeout in all clients. Duplicate solution of xpsismo with xpusb etc.

FO QNH displayed as CAPT QNH

On PFD of FO the QNH is displayed as the captain's QNH independently of the FO QNH position. Altitude is correctly set to FO QNH.

PFD Speed Bug INOP

The green PFD speed bug should move according to the MCP SPD display. It does not.

CMD ONCE too slow

Make CMD ONCE transfer to xpserver faster, so each cycle a CMD ONCE can be issued.

Throttle Levers asynchronous

During AT operation, throttle levers sometimes do not both move. AT disconnects.
Check THR HOLD Mode operation

ils_active dataref

Dataref laminar/B738/ap/ils_active does not exist any more in ZIBO Mod as of XP12.
Was used to show ILS Text on PFD when on ILS approach.
Replace ...

TCAS Arrows

Beside each TCAS Blob there should be an arrow showing if the acf is climbing or descending relative to our own ACF

MCP 7 segment display dimming bug

When MCP SPD display switches from kts to mach, the COURSE and SPD 7 segment displays become dim.
This is likely a buffer overflow in the SISMO 7 segment bit packing algorithm in libsismo.c

X-plane crashes

Hello,

I simply downloaded, compiled and make install xpserver and copied the plugin as per de instructions. Now X-plane crashes.

X-Plane: 10.51 64 bit (also tried 32bit and same result).

Here's the log.txt

Log.txt

Cheers and thank you for your time

Make HOLD Pattern Dynamic

The NAV display shows the hold pattern in a dynamic mode when in the hold (depends on airspeed and wind etc.). Make use of respective datarefs and display changing hold pattern in real time.

Route line from ACF position to next WPT when DCT waypoint is selected.

The magenta route line should start from the aircraft position to the next waypoint if a direct waypoint command is entered into the FMC. The last waypoint has no more meaning in this mode. Currently there is still a line between the last and the current waypoint even after a DCT is entered.

Implement OpenGL Debugging

Implement OpenGL message handling for debugging OpenGL code.

// Enable OpenGL Debugging (or not)
glEnable ( GL_DEBUG_OUTPUT );
glDebugMessageCallback( MessageCallback, 0 );
--> latter is not defined despite of using glext.h
Why?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.