Metadata-Version: 2.1
Name: dcspy
Version: 1.7.3
Summary: Integrating DCS (Digital Combat Simulator) planes with Logitech G13/G15/G510/G19 LCD
Home-page: https://github.com/emcek/dcspy
Author: Michal Plichta
Maintainer: Michal Plichta
License: MIT
Project-URL: Bug Reports, https://github.com/emcek/dcspy/issues
Project-URL: Source, https://github.com/emcek/dcspy
Keywords: logitech,logitech-sdk,logitech-keyboards,logitech-gaming,logitech-gaming-keyboard,dcs-world,dcs,g13,g15,g510,g19
Platform: win32
Platform: nt
Platform: Windows
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Environment :: Win32 (MS Windows)
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: Microsoft :: Windows :: Windows 10
Classifier: Topic :: Games/Entertainment
Classifier: Topic :: Games/Entertainment :: Simulation
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Hardware
Classifier: Topic :: Utilities
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Provides-Extra: test
License-File: LICENSE.md

[![image](https://img.shields.io/badge/pypi-v1.7.3-blue.svg)](https://pypi.org/project/dcspy/)
[![Python CI](https://github.com/emcek/dcspy/actions/workflows/python-ci.yml/badge.svg?branch=master)](https://github.com/emcek/dcspy/actions/workflows/python-ci.yml)
[![Coverage Status](https://coveralls.io/repos/github/emcek/dcspy/badge.svg?branch=master)](https://coveralls.io/github/emcek/dcspy?branch=master)
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/5270a4fc2ba24261a3bfa7361150e8ff)](https://www.codacy.com/gh/emcek/dcspy/dashboard?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=emcek/dcspy&amp;utm_campaign=Badge_Grade)
[![License](https://img.shields.io/badge/Licence-MIT-blue.svg)](./LICENSE.md)
[![Downloads](https://img.shields.io/github/downloads/emcek/dcspy/total?label=Downloads)](https://github.com/emcek/dcspy/releases)
[![dcspy](https://snyk.io/advisor/python/dcspy/badge.svg)](https://snyk.io/advisor/python/dcspy)
[![Patreon](https://img.shields.io/badge/Patreon-donate-ff424d?logo=patreon)](https://www.patreon.com/mplichta)
[![Discord](https://img.shields.io/discord/672486999516774442?label=Discord&logo=discord&logoColor=lightblue)](https://discord.gg/SP5Yjx3)
[![image](https://img.shields.io/badge/python-3.7%20%7C%203.8%20%7C%203.9%20%7C%203.10-blue.svg)](https://github.com/emcek/dcspy)
[![BCH compliance](https://bettercodehub.com/edge/badge/emcek/dcspy?branch=master)](https://bettercodehub.com/)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=emcek_dcspy&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=emcek_dcspy)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/6056/badge)](https://bestpractices.coreinfrastructure.org/projects/6056)  
![dcspylogo](https://i.imgur.com/eqqrPB8.jpg)  
## DCSpy
DCSpy is able to pull information from DCS aircraft and display on Logitech G-series keyboards LCD.
It supports:
* Logitech device with 160x43 px (4 lines) monochrome LCD - **G13**, **G15 (v1 and v2)** and **G510**
* Logitech device with 320x240 px (8 lines) full RGBA LCD - **G19**

See more information on [Wiki](https://github.com/emcek/dcspy/wiki) page.

## Sponsored by Jetbrains Open Source Support Program
[![logo](https://resources.jetbrains.com/storage/products/company/brand/logos/PyCharm.svg)](https://jb.gg/OpenSourceSupport)
[![logo](https://resources.jetbrains.com/storage/products/company/brand/logos/jb_beam.svg)](https://jb.gg/OpenSourceSupport)

## Aircraft and instruments
* F/A-18C Hornet UFC - Up Front Controller
* F-16C Viper DED - Data Entry Display
* Ka-50 Black Shark PVI-800 and autopilot channels
* A-10C Warthog and A-10C II Tank Killer - Radio frequency information
* F-14A and F-14B Tomcat - basic support for RIO CAP
* AV-8B Night Attack Harrier - Up Front Controller and Option Display Unit
* AH-64D Apache - Enhanced Up Front Display
* more to come....

## Requirements
* [Python 3.10](https://www.python.org/downloads/) but 3.7+ (with tcl/tk support, see [installation](https://github.com/emcek/dcspy/wiki/installation)) should be fine, please choose Windows x86-64 version, file should be python-3.10.5-amd64.exe.  
* [Logitech Gaming Software 9.04.49](https://support.logitech.com/software/lgs)
* [DCS-BIOS 0.7.46](https://github.com/DCSFlightpanels/dcs-bios/releases/latest) (or newer)
* [DCS 2.7.17.29140](https://www.digitalcombatsimulator.com/en/news/changelog/openbeta/2.7.17.29140/) Open Beta - previous **2.7.16.28157** not working

**Notes:**
* If you upgrade DCSpy from 1.5.1 or older you can safely remove Logitech LCD SDK from `C:\Program Files\Logitech Gaming Software\LCDSDK_8.57.148`. Since DCSpy version 1.6.0 use built-in SDK in LGS (Logitech Gaming Software).

## New ideas
I have lots of plans and new ideas how to improve it internally and form user's perspective, but don't hesitate to contact me. Maybe it will motivate me to implement some new stuff. Please open issue if you find bug or have any crazy idea.  
You are welcome [dcspy Discord](https://discord.gg/SP5Yjx3) server. 

## Contributing
You want contribute, perfect see: [contributing](./CONTRIBUTING.md) guide.

## 1.7.3
* Align F-16C DED and AH-64D EUFD with DCS-BIOS 0.7.46 changes
* Basic support for F-14A Tomcat

## 1.7.2
* **AH-64D Apache**
  * update name from `AH64DBLKII` to `AH64D`
  * fix display PRE mode for G19
  * fix handling buttons
* Internal:
  * update unit test for better coverage and more use-cases

## 1.7.1
* New config settings:
  * `auto_start` - run DCSpy atomically after start
  * `verbose` - show more logs in terminal/console window
* Fixing handling of `dcsbios` settings from `config.yaml`
* Start and stop buttons can be used several times without closing GUI
* **F-16C Viper** 
  * replace `*` with inverse white circle character at DED
  * Fix unhandled buttons for G19 (menu, ok and cancel)
* G19 and **F/A-18C Hornet**
  * Push **Menu** and **Cancel** toggle cockpit button down, push it again toggles button up (Integrated Fuel/Engine Indicator - IFEI).
  * Add handling **Ok** as Attitude Selector Switch, INS/AUTO/STBY
* Internal:
  * use Pythonic way using temporary directory
  * speed-up tests - cache json files instead of downloading from internet
  * use Enum for LCD type
  * use Enum for LCD buttons, add to LcdInfo dataclass

## 1.7.0
* Support for **AH-64D Apache** with 3 modes:
  * `IDM` - Squeeze and shows radios frequencies (from Radio Area), IDM and RTS rocker are used to scroll down 
  * `WCA` - Enter button display warnings, cautions, and advisories, WCA rocker is used to scroll down
  * `PRE` - Preset button displays the preset menu for the selected radio, WCA rocker is used to scroll down
* **F-16C Viper** DED clean-up extra characters

## 1.6.1
* Update **F-16C Viper** for latest DSC-BIOS (0.7.45)
* Fresh installation of DCS-BIOS is painless
* Drop support for Python 3.6

## 1.6.0
* use fonts in dynamic way - you can customize fonts in `config.yaml` file (see [Configuration](https://github.com/emcek/dcspy#configuration))
* usage for LCD SDK built-in LGS - no need additional package for usage
* support for Python 3.10 (use `dataclasses` internally)
* ability to stop DCSpy from GUI
* supporters are printed in welcome screen - I'm thrilled with support and help of community!

## 1.5.1
* alignment for new DCS-BIOS [v0.7.43](https://github.com/DCSFlightpanels/dcs-bios/releases/tag/v0.7.43)

## 1.5.0
* Support for **AV-8B N/A Harrier** with:
  * **UFC** - Up Front Controller
  * **ODU** - Option Display Unit
  * **decrease UFC Comm 1 Channel** - G13 1st button or G19 left button
  * **increase UFC Comm 1 Channel** - G13 2nd button or G19 right button
  * **decrease UFC Comm 2 Channel** - G13 3rd button or G19 down button
  * **increase UFC Comm 2 Channel** - G13 4th button or G19 up button

## 1.4.0
* Configuration editor:
  * **dcsbios** - set default Logitech keyboard: "G19", "G510", "G15 v1/v2", "G13"
  * **show_gui** - showing or hiding GUI during start of DCSpy
  * **dcsbios** - location of DCS-BIOS folder inside user's Saved Games
* Check and update DCS-BIOS directly from DCSpy
  * **Check DCS-BIOS** button in **Config** editor
  * **dcsbios** needs to be set to correct value
* Basic A-10C Warthog and A-10C II Tank Killer support

## 1.3.0
* **F-16C Viper** use 4 buttons for IFF
  * **IFF MASTER Knob** - OFF/STBY/LOW/NORM/EMER
  * **IFF ENABLE Switch** - M1/M3 /OFF/ M3/MS
  * **IFF M-4 CODE Switch** - HOLD/ A/B /ZERO
  * **IFF MODE 4 REPLY Switch** - OUT/A/B
* Fix alignment of (DCS-BIOS [v0.7.41](https://github.com/DCSFlightpanels/dcs-bios/releases/tag/v0.7.41)) for **F-14B Tomcat**
* Internally all data fetch form DCS-BIOS is check against its specification. Sometimes due to changes DCS-BIOS protocol DCSpy couldn't fetch all data i.e. F-16 DED. It shouldn't happened anymore.

## 1.2.3
* Fix alignment of DED (DCS-BIOS [v0.7.41](https://github.com/DCSFlightpanels/dcs-bios/releases/tag/v0.7.43)) for **F-16C Viper**

## 1.2.2
* Fix alignment of DED for **F-16C Viper**
* Fix position of Integrated Fuel/Engine Indicator (IFEI) for **F/A-18C Hornet** (only G19)

## 1.2.1
* **F/A-18C Hornet** shows extra Total Internal Fuel (G19 only)
* Internal refactoring

## 1.2.0
* Simple Tkinter GUI - to select your Logitech keyboard
* Support for G19 - Big thanks for **BrotherBloat** who makes this release possible. He spent countless hours to share his G19 and let me troubleshoot remotely.
* **F/A-18C Hornet** shows Total Fuel instead of Total Internal Fuel

## 1.1.1
* Basic support for **F-14B Tomcat** RIO CAP (Computer Address Panel):
  * **CLEAR** - button 1
  * **S-W** - button 2
  * **N+E** - button 3
  * **ENTER** - button 4

## 1.1.0
* dcspy use now UDP multicast connection do DCS-BIOS, since each TCP connection slightly increases the amount of work that is performed inside of DCS (blocking the rest of the simulation).
* support for integer data to be fetch from DCS-BIOS - using IntegerBuffer()
* bios_data in Airplanes instances allow both StringBuffer() and IntegerBuffer()
* reformat waiting time before DCS connected
* fix Data Entry Display for F-16C Viper - DCS-BIOS [v0.7.34](https://github.com/DCSFlightpanels/dcs-bios/releases/tag/v0.7.34) is required
* **Ka-50 Black Shark** - Autopilot channels show up in LCD

## 1.0.0
* **Ka-50 Black Shark** data from PVI-800 shows (in similar boxes) on LCD
* ProtocolParser for DCS-BIOS has new optimized state machine
  * LCD SDK is re-written from scratch:
  * low and high level API
  * auto-loading C library during importing
  * all API is type annotated and well documented
  * move loading LCD C library from G13 handler
*internal:
  * refactoring and rename internals of G13 handler module
  * add unit tests

## 0.9.2
* LCD prints current waiting time to connect to DCS
* when DCS exit from plane/mission exception is catch and handle correctly
* lots of internal changes, preparing for new features, most important:
  * change structure of AircraftHandler, move subscription to DCS-BIOS changes out of planes
  * update and clear methods move from G13 handler to LCD SDK

## 0.9.1
* G13 handler have display property to send text to LCD
* rename starting script to dcspy.exe
* starting script now show waiting time for DCS connection
* minor code optimization and refactoring

## 0.9.0
* based on version [specelUFC v1.12.1](https://github.com/specel/specelUFC/releases/tag/v1.12.1)
* added basic handling for Ka-50 PVI-800 data are received but not formatted properly
* F-16C DED should working but not 4 buttons under LCD - I don't have it so it is hard to test
* G13 handler detect 32/64 bit of Python and load correct version of LCD Logitech C library
* adding basic logging for debugging - prints on console
* all defined aircraft are detected and loaded on-the-fly during operation
* define new plane should be easy just use AircraftHandler as base class
* Python LCD SDK was clean-up
* other refactorings and code duplication removal

MIT License

Copyright (c) 2020 Michal Plichta

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
