Giter Club home page Giter Club logo

listener's Introduction

Listener

This is a new desk accessory for the Apple IIgs that allows an iOS device to connect to the GS over a network and stream text to it from voice dicatation. It must be paired with the ListenerApp running on your iOS device. See that project for details about obtaining the app.

This code was written during KansasFest 2021 as part of the HackFest project. For information about how to use the application and do voice dictation to your Apple IIgs, read the distribution Readme file.

listener's People

Contributors

jeremysrand avatar

Watchers

 avatar

listener's Issues

NDAInit and malloc...

I noticed NDAClose() (by way of NDAInit) was sometimes trying to close an invalid window. It turns out that the compiler-generated glue code calls ~DAID before calling your NDAInit. When starting up, it generates a new User ID for mallocs. When shutting down, it disposes that ID (effectively free()-ing everything that's been malloced). This happens before NDAInit is called.

The main issue though is that NDAInit(0) can be called multiple times without an intervening NDAInit($ffff) and the globals variable isn't nulled out unless globals->ndaActive is true, so there's dangling memory. If someone else happens to NewHandle it and starts writing data into it, NDAInit()/NDAClose() will try to close something that isn't a window which can crash hard.

https://github.com/byteworksinc/SysLib/blob/4ff5bdbc7ceb0f46e6756d2dd4f3efc730de4f1b/cd.asm#L506-L571

https://github.com/jeremysrand/Listener/blob/0071f3d4ebfe11e4dc347b3bb7c070842e5aa957/Listener/main.c#L237C1-L254C2

Keystrokes get dropped in Spectrum editor window

If you use Listener in Spectrum's editor window, only some of the keystrokes generated by the NDA seem to reach the application. For example, if the app hears:

This is a test of listener

Then, you might see this inserted into the Spectrum editor.

Thss aet fltner

I have already added code to try to pace the rate at which the NDA inserts keystrokes. The NDA now will only insert a keystroke event if there are no other keystroke events on the queue. But even with that, keystrokes are getting lost.

If the iOS device goes to sleep with an active connection, the NDA thinks it has a connection forever

This is a report from a beta tester:

Two things I noticed so far bug wise: 1) If the device goes to sleep or otherwise looses the connection, the GS still thinks it’s connected. Closing the NDA and reoppening it still thinks it is connected, and reconnecting from the iOS app does not result in anything showing up on the GS. 2) When issue #1 happens, I tried closing the NDA, then disconnecting the network connection on the GS with the TCP/IP control panel, then reconnecting. Opening the NDA after that results in “Unable to get connection state Error code = $3601”

My plan is to have the app actively disconnect before the device goes to sleep but this report also indicates that the NDA isn't handling non-normal disconnection well. This needs to be investigated to make the NDA more resilient to network funkiness.

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.