Coder Social home page Coder Social logo

tonyc / open890 Goto Github PK

View Code? Open in Web Editor NEW
75.0 6.0 3.0 1.46 MB

A web-based remote UI for the Kenwood TS-890.

License: Other

Shell 0.26% Elixir 75.05% SCSS 4.83% CSS 2.72% JavaScript 7.25% HTML 9.06% PowerShell 0.21% Batchfile 0.01% Dockerfile 0.22% Makefile 0.39%
hamradio amateur-radio amateurradio elixir phoenix-framework phoenix-liveview

open890's People

Contributors

dependabot[bot] avatar gmcintire avatar tonyc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

open890's Issues

Draw SVG scopes at 2x resolution

Need to draw the SVG's at 2x width (1280px and 424px for the bandscope and audio scope respectively), but there's a bunch of other assumptions the SVGs are being made about their widths, so there's more work than I was expecting.

Band edges incorrect when switching from FIXED to CENTER

Span is shared between CENTER and AUTO SCROLL, but when switching to FIXED, the span is actually calculated, not set directly from a command response.

When switching from FIXED to CENTER, the radio does not send a new band scope span response, so the net result is the edge frequencies are incorrect.

Band scope span needs to be tracked independently for fixed mode.

Raspberry Pi/Nerves

End goal: CI-built images for various RPI models that people can just directly burn to an SD card, and go.

I'd like Nerves to not take over the whole repo, but I've never used Nerves before, so this is a tracking issue/discussion for possibilities and options.

Firefox performance issues - meters

FF seems to get laggy, I think it's related to how I'm drawing the individual pips for the meters.

Need to figure out a different way of generating the pips or changing the classes. It might be more efficient to draw a cyan/red background behind a "window" of fixed pips, and then just dynamically adjust a single <rect>'s width behind the windows.

Radio Simulator

It would be nice to have a simulator for the physical radio, which would allow the app to be demoed "offline", or perhaps also facilitate testing.

The simulator could operate at either the TCP or the Genserver level, and it should be able to keep some of its own state, while generating random fake bandscope data etc.

Auto-start connections

It would be super useful to have an "auto-start" option on a per-connection basis, and open890 would do so upon starting.

Minimize UI

Need to strip down the UI considerably and get the bare minimum fitting into a single screen.

Keyboard shortcuts

Navigation via keyboard would be really useful.

Ideas

  • vim-style shortcuts? hjkl, gl for LSB, gu for USB?
  • Direct band switching with numpad?
  • Arrow key fine tuning

Track RM1-6 parameters

Format: RM[P1][P3][P3][P3][P3]

ALC (1) should be tracked separately, 2-6 can be grouped together if need be.

P1:

  • 1 - ALC
  • 2 - SWR
  • 3 - CMP
  • 4 - ID
  • 5 - VD
  • 6 - TEMP

P3 is 0000 through 0070

Packaging

How is this distributed? Perhaps a docker image, or a single executable.

Probably need to set up CI/CD release process

Various meter rendering artifacts

ALC and SWR meter's first pips have a little cyan tint to them.

It looks like there's an extra pip being rendered at the end of every meter as well

image

Waterfall

Need to figure out how this will look and work.

Might need to use a in order to draw individual pixels, but also need to make it all line up with the spectrum.

Remove bakeware

It's nice but doesn't seem to help much when we've got something like Electron available for running and distributing the app.

  • Remove bakeware dep
  • Remove from release process
  • Update CI to only run MIX_ENV=prod mix release

Support USB connections to the TS-890

It looks like we can use low-speed versions of the DDn commands, so USB support will mean more than just frequency and button state is available.

This may require fair amount of refactoring of the existing code, and probably need to create a USBConnection module, and then also deal with any shared behavior between is and the TCPConnection.

This also affects the LiveView components, as the bandscope and audio scope return far fewer buckets of data.

USB commands for scope data

To the radio:

  • DD04 - Bandscope on, COM/USB, AI linked
  • DD12 - Filter scope on, COM/USB (Low cycle)

From the radio:

  • DD2 - 20 buckets of bandscope data
  • DD3 - 19 buckets of filter scope data

PacketCluster integration

It would be cool for the system to maintain a TCP connection to a packet cluster, and overlay spots on the band scope.

User-programmable softkeys/macro buttons

Allow the user to define their own buttons (e.g. PF1-9) to input a list of commands to execute.

Potentially also allow the buttons to be named.

Consider a WAIT or PAUSE pseudo-command to allow for the radio to settle in certain cases when needed.

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.