Giter Club home page Giter Club logo

pwm_rest's People

Contributors

gia90 avatar mvitale1989 avatar

Watchers

 avatar  avatar

pwm_rest's Issues

TODO modifica meccanismo di funzionamento driver

Potrebbe essere utile modificare il driver in maniera che sia rappresentabile come un thread avente una BlockingQueue su cui ascolta richieste di scrittura/lettura, tuttavia andrebbe pensato un sistema di feedback verso il thread chiamante.
Proposta:

  • I2CDriver è un thread che gestisce l'hardware I2C: estende la classe Thread e resta in attesa di messaggi sulla propria BlockingQueue;
  • PCA9685Driver è a sua volta un oggetto (o thread, non importa) che farà richieste al driver, ma esclusivamente tramite I2CMessenger
  • I2CMessenger è la classe che ogni PCA9685Driver istanzierà per poter comunicare con l'I2CDriver (questo vuol dire che nel costruttore di PCA9685Driver, ci dovrà essere il reference che punta all'oggetto I2CDriver...che a sua volta verrà passato al costruttore di I2CMessenger): questo implementa l'interfaccia Callable per poter fornire risposta asincrona; quando viene richiamato, questo manderà un messaggio sulla BlockingQueue di I2CDriver, dicendogli sia il messaggio da mandare sulla I2C, ma SOPRATTUTTO fornendogli la reference alla propria BlockingQueue!!! In questo modo, quando I2CDriver processa il messaggio ricevuto, sa anche dove deve mandare la risposta!!!!! (in alternativa I2CMessenger può estendere BlockingQueue?)

TODO: creare l'oggetto PCAServoManager

Sarà in quest'oggetto che dichiarerò quali motori sono presenti nell'installazione, e lui a sua volta gestirà in maniera trasparente il driver I2C e gli oggetti PCA9685 necessari al suo funzionamento. In questo modo dovrò solamente richiamare le funzioni "setAngle" dei motori per poter attuare, e l'oggetto si occuperà del resto.

TODO: terminare conversione in progetto eclipse

Implementare:

  • Le funzioni del driver
  • Creare una classe rappresentante il PCA9685, includente inizializzazione del chip tramite chiamate al driver ed una funzione di test
  • Creare uno script per la compilazione, oppure rendere Make il build tool primario; necessario per la compilazione su ambienti in cui eclipse non è presente

TODO: modificare meccanismo persistenza

Non è necessario memorizzare nel DB il controller del motore. Dovrebbe servire solamente, in corrispondenza di ogni PCA9685, una collezione ORDINATA di ID motore che corrispondono ad i propri canali. Idealmente dovrei avere la tabella PCA9685 (contenente solo l'indirizzo sul bus), la tabella Servo (contenente un ID e le impostazioni del motore) e la tabella di associazione PCA-Servo (che ideamente contenga l'indirizzo PCA [=la sua chiave primaria], l'ID servo ed il canale all'interno del PCA; insomma questa dovrebbe rappresentarmi l'array ordinato di canali del PCA9685).

TODO: creare le funzionalità di base del servizio REST

Tramite il servizio REST deve essere possibile:

  • Leggere l'attuale configurazione di installazione (tutti i PCA presenti ed i loro canali) e modificarla arbitrariamente aggiungendo e togliendo PCA e Servi (mappatura: /pca e /servo)
  • Controllare i motori presenti (mappatura: /servo)

...vuol dire che probabilmente dovrò aggiungere anche un ulteriore parametro all'oggetto servo, che sarebbe "stato attuale di rotazione". (da 0 ad 1...0 se si trova al minimo di rotazione, 1 se al massimo)

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.