GithubHelp home page GithubHelp logo

gitgnu / gnu_tsp Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 11.26 MB

License: GNU Lesser General Public License v2.1

CMake 3.59% Makefile 0.62% C 90.41% Objective-C 0.21% Lex 0.09% Yacc 0.02% Shell 0.35% C++ 0.30% IDL 0.70% HTML 0.14% CSS 0.03% Awk 0.14% Perl 3.24% Gnuplot 0.01% Tcl 0.01% Python 0.13% Logos 0.01%

gnu_tsp's Introduction

General Information
===================

TSP : library for a generic Transport Sampling Protocol

This project is in early development but should be functional.

Is provided : 
- the TSP consumer library (i.e. : for clients)
- the TSP provider library (i.e. : for servers)
- Some test programs

Whenever you need to read from a server a bunch of evolving variables,
at high rate through a network, TSP is for you.

Using the TSP producer and consumer API, you may write :

* A TSP consumer, ex :
- GUI that plots the data
- a data analyser
- a data recoder
- ...

that connects to a

* A TSP provider, ex :
- Any program that have a source of named variables.

Using the API, the TSP consumer may ask the provider the list
of available variables, choose some variables, and begin
receiving the evolving values.

TSP is designed to be CPU and bandwith friendly (both for the producer
and the consumer)

Exemple : a TSP Primer.
===================
As an exemple the library is provided with a simple producer
and a simple consumer

Follow the explanation from the INSTALL file to compil
the library and the exemples.

...

The exemple must now be in your path !
(Or go in $DEVBASE/exec/DEV/[myTarget]/[myOpt]/bin

launch the provider on a UNIX host :

% tsp_server_stub

or on a VxWorks host (be sure your VxWorks implements POSIX) :

% ld < tsp_stub_server.o
% sysClkRateSet [more than 200 Hz]
% TSP_launcher

launch the consumer on an other host

% tsp_stdout_client ProviderHostName 1

replace ProviderHostName with the name of the host
where the provider was launched (or 'localhost'
if you only have one host for your test!)

You can launch as many consumers as you want.


If you're still with us
=======================

The provider program 'tsp_server_stub' provides 1000 different
variables each at a 100Hz rate (sin, cos, random and other shapes).

The consumer program 'tsp_client_printer' ask a TSP provider
for all its variables, and print the value of the first variable
to stdout 

The generic aspect of TSP should do that :
- the TSP provider exemple 'tsp_server_stub' should work with
any TSP consumer
- the consumer exemple 'tsp_client_printer' should work with
any TSP provider
At least, it was designed to work that way.

TSP allow any consumer to ask the provider to divide the sampling rate
of each asked variable to save bandwith and CPU. It means that for each consumer,
and for each asked variable by this consumer, the provider will not send the
the values to this consumer at full rate. It is an 'undersampling ratio'.

the second parameter for the 'tsp_client_printer' exemple
control this aspect of the protocol. It is the 'undersampling ratio'
for all asked variables (actually TSP allow this control for each variable,
it is only a limitation of the exemple 'tsp_client_printer')

--> '1' means "all variables at full rate (i.e. : the base frequency of
    the provider, 100Hz for 'tsp_server_stub'")
--> '2' means "for all variables divide the frequency by 2" 
--> '3' you get it...

You can launch plenty of clients, each with its own ratio.

Remember that the variables are 'doubles' (8 bytes), and the
'tsp_server_stub' provides 1000 variables at 100Hz...
So, with more that one consumer on a provider, at full rate,
it can be rather tough for a 10Mbits network...


                                            
                                           The TSP team

gnu_tsp's People

Contributors

theerk avatar sgalles avatar deweerdt avatar pagnotr avatar jeromeag avatar roberthdevries avatar ptitoliv avatar david-moreau-tas avatar

Watchers

James Cloos avatar Ralic Lo avatar

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.