GithubHelp home page GithubHelp logo

norman0406 / lisa-old Goto Github PK

View Code? Open in Web Editor NEW
1.0 4.0 0.0 8.43 MB

Old repository for the first LISA attempt. Development is continued in https://github.com/Norman0406/LISA

License: GNU General Public License v3.0

C++ 94.16% Prolog 3.47% C 2.37%

lisa-old's Introduction

Introduction

LISA is an acronym for "Lightweight Integrated System for Amateur Radio". It may also refer to the intelligent little girl from the Simpsons TV show - it's up to you. LISA provides a GUI framework for different modules related to amateur radio and linking them together in one integrated application environment.

All of this is based on the famous Qt libraries which ensure that LISA can be run on Windows, OSX and of course Linux.

Components

LISA will provide the following components

  • Core Provides the core framework on which the application is based upon. It serves as a main hub to host all used modules and manages the dependencies and inter-module communication.
  • Application Provides the main application window and is itself a module. All the other modules add gui components to the main application to provide a seamless gui integration.
  • Logging This module manages a logbook and provides functionality like distributed logbook-hosting, syncronization with web-services (dropbox, Google Drive, ...) and callsign lookup with various online/offline ressources.
  • Digital Provides all features to be used during digital operation such as encoding/decoding digital protocols like PSK31, RTTY, etc.
  • Control Provides the functionality to control various kinds of transceivers.

Build LISA

Windows:

  • You probably need to open QtCreator with administrator priviliges.
  • When using VS2012, you might need to change the platform toolset from v110 to v100.

Linux (Ubuntu)

First install the Qt SDK and libfftw sudo apt-get install qt-sdk libfftw3-3

Notice Currently the ubuntu package maintainer did not update the qt-sdk package. Please consider downloading the follwing bash scripts for installing qt-sdk.

Contributing

LISA is currently in the pre-alpha state which means that concepts and APIs may change frequently. But if you want to contribute feel free to contact us. We are looking for OSX developers which will test the code on their machines and help us hunting (plattform-specific) bugs.

#Licensing LISA is licensed under the GNU General Public License originated by the Free Software Foundation.

##Motivation During a spontaneous discussion about software for radio amateurs, Norman DM6LN and Patrik DO9PSE complained about the current situation. Of course, there are a lot of software packages available but they all suffer from at least one of the following issues:

  • not open source software
  • too pricy
  • hard to extend or modify
  • not plattform independent
  • inconsistent gui interaction
  • hard to learn for beginners
  • based on pretty old binaries which may (often) require ancient operating systems (XP is dead, deal with it...)

At the end of this discussion we both decided to create something new. Free of charge, open source, easy to extend and maintain and last but not least cross-plattform compatible because we rely on the Qt framework.

lisa-old's People

Contributors

norman0406 avatar semaph0r avatar

Stargazers

 avatar

Watchers

 avatar James Cloos avatar  avatar  avatar

lisa-old's Issues

Audio output

create AudioOutput as corresponding to AudioInput

Dashboard

Implement a dashboard inside the main application to which other modules can add information (i.e. widgets). The dashboard will be shown as the first tab inside the main window. The widgets inside the dashboard might be sorted in a layout or a list view, collapsible, dynamic, etc.

implement networkinterface

subclass QNetworkAccessManager and provide a general interface for all modules.

  • singleton instance
  • signal/slots for internet-requests
  • multi-threading
  • tls

User management

Implement a user management, such that a user can be changed at runtime, thus changing module data, application layouts and states, etc.

Splash screen

implement a splash screen at the beginning and design it with gimp or appropriate open source software

Project name

Find a more suitable project name. LISA as short name is not generally considered as related to amateur radio, and the project name might cause confusion about the project goals. Find a name that better represents the project of developing a generic amateur radio framework. Furthermore, LISA+ is a commercial product for traffic engineering.

Proposals until now:

  • LISA
  • OpenRadio

Module Signals/Slots

Implement a way for modules to add widgets to the main application using signals and slots. A widget type can be identified by an enum like WT_TOOLBAR, WT_SIDEBAR, WT_MAIN etc. and the application adds the widget according to the type at the right position.

iDFT

create classes for DFT and iDFT

JSON parser

Implement JSON parser:

  • required by MongoDB

Disable modules

Add the possibility to enable / disable modules within the main application's option dialog. When disabling a module, it has to be removed from the application and the list of disabled modules has to be stored inside the settings. When the application restarts, only non-disabled modules have to be initialized. However, it should be possible to re-enable modules at runtime.

GUI design

find an intuitive GUI design which can display all of the needed information while keeping the GUI simple (Should modules only display information in their respective widgets and the upper toolbar, or should they also be able to add dock widgets outside to the main application - to share it with other modules at the same time?)

Disabling digital module cause crashes

On Linux (Ubuntu) disabling the digital module will cause a segmentation error. It is only present if the digital module is active and displaying the waterfall diagramm.
Otherwise everything seems to run smoothly.

This may relate to a bug in the threading-mechanism because the misbehavior is scattered over different instructions like functions in the AudiospectrumWorker or AudioBuffer.

Color coding

Is it an option to use color coding in the gui to improve and visualize usage of the different application modules?

ADIF parser

Implement ADIF parser to import/export QSO data

Wiki

Write initial wiki entries, create a basic framework documentation and set up coding guidelines for contributers.

Synchronization

create synchronizing means between running instances

  • the user shall be able to define a master instance, connected to all the hardware, and several (remote) client instances which show the data and provide interaction.
  • client instances must lock each other in case they share the same hardware
  • in case of slow network speed, necessary data may be buffered
  • if network speed allows, also voice operating is possible
    • find a suitable codec for network transport

Messaging System

Implement a messaging system to allow different modules to communicate to each other. The messaging system might use QVariant to exchange information.

Special widgets

implement special widgets

  • Database entry widget with expandable database line, displaying all the information not currently shown, statistics etc.
  • (un-)pinnable Dockwidget

Fancy icons

To provide some eye-candy and to ensure that the visual presentation is as clearly as possible assign self-explanatory icons to common actions.

I like the glyphicons, but it's just a recommendation

Waterfall: Mouse cross

add a mouse cross when moving the mouse around in the waterfall, displaying current mouse frequency, db value and time position

Fix warning: nativeResourceForWindow

When opening the options dialog under Windows, the following warning appears multiple times:

QWindowsNativeInterface::nativeResourceForWindow: 'handle' requested for null window or window without handle. ("qwindowsintegration.cpp" : void *__thiscall QWindowsNativeInterface::nativeResourceForWindow(const class QByteArray &,class QWindow *) : 117)

DC component leakage

Why does the DC component seem to be leaking into surrounding bins? Maybe it is a matter of the window function?

Networking

create global networking components which other modules can rely upon

Create Module for QSL management

Provide basic functionality such as QSL SND/RCVD, label printing and contest reporting linked to data provided by Component-Logbook

Settings

  • Provide global settings for all modules, accessible via core
  • also create an alternative to the currently implemented property concept using QSettings (is it really type safe?)

Modem

implement Modem base class for different modem implementations

  • gets relevant FFT data in a timeslot and outputs decoded text
  • gets text in and outputs the appropriate spectrum for a timeslot

Logging

write logging output to a file to provide detailed information in case of crashes

QMake

  • create bin/ directory if it doesn't exist
  • adapt files and libraries for linux

Data storage container

create a DataStorage container which holds all the relevant user data from all the modules, then add specialized classes to store user data to

  • os specific user directory
  • cloud storage (dropbox, google drive etc)
  • backup locations

Exception handling

Implement exception handling system with appropriate GUI interaction to avoid the system from shutting down and present warnings and error messages to the user.

Waterfall: persistent data

waterfall only uses direct FFT spectrum for displaying, modifies it according to display conversion, does not only add a line in the pixmap but can calculate the spectrum anew if changes to the display conversion occurred.

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.