Coder Social home page Coder Social logo

brunoseivam / pva2pva Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mdavidsaver/pva2pva

0.0 1.0 0.0 1.95 MB

PV Access gateway/proxy and EPICS Process Database integration

License: Other

Makefile 1.60% C++ 97.48% Batchfile 0.12% C 0.79%

pva2pva's Introduction

See main documentation page.

This repository contains two distinct pieces of software.

QSRV

A PV Access (protocol) server to be included in an EPICS IOC.

myioc_DBD += qsrv.dbd
myioc_LIBS += qsrv

For convenience an executable `softIocPVA' is also built which is equivalent to the 'softIoc' executable from EPICS Base with the addition of QSRV.

p2p

A PV Access gateway (aka proxy). The 'p2p' executable.

Dependencies

or bundled with

Building

To build all dependencies from source:

git clone --recursive https://github.com/epics-base/epics-base.git
make -C epics-base

Running QSRV

Any IOC which includes QSRV will automatically start a PV Access server which exposes all channels (aka. "recordname.FLD") in the same manner as the built-in Channel Access (protocol) server.

QSRV Group Definitions

The following .db file snippet defines a group PV "grp:name" to have two sub-structures "A" and "B". Each sub-structure encodes the value and meta data one PV. eg. "recname.VAL" is stored in "grp:name.A" and "other.VAL" is "grp:name.B".

record(longin, "recname") {
    info(Q:group, {
        "grp:name":{
            "A":{
                +channel:"VAL"
            }
        }
    })
}
record(longin, "other") {
    info(Q:group, {
        "grp:name":{
            "B":{
                +channel:"VAL"
            }
        }
    })
}

A full list of info(Q:group options.

record(...) {
    info(Q:group, {
        "<group_name>":{
            +id:"some/NT:1.0",  # top level ID
            +meta:"FLD",        # map top level alarm/timeStamp
            +atomic:true,       # whether monitors default to multi-locking atomicity
            "<field.name>":{
                +type:"scalar", # controls how map VAL mapped onto <field.name>
                +channel:"VAL",
                +id:"some/NT:1.0",
                +trigger:"*",   # "*" or comma seperated list of <field.name>s
                +putorder:0,    # set for fields where put is allowed, processing done in increasing order
            }
        }
    })
}

Running p2p

pva2pva gateway is intended for use on a computer with at least two ethernet interfaces. At present each pva2pva process can act as a uni-directional proxy, presenting a pvAccess server on one interface, and a client on other(s).

The file loopback.conf provides a starting point.

At present there are no safe guard against creating loops where a gateway client side connects to its own server side. To avoid this ensure that the address list does not contain the interface used for the server (either directly, or included in a broadcast domain). EPICS_PVA_AUTO_ADDR_LIST must remain set to NO.

cd pva2pva
./bin/linux-x86_64/pva2pva loopback.conf

pva2pva's People

Contributors

anjohnson avatar freddieakeroyd avatar mdavidsaver avatar ralphlange avatar

Watchers

 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.