|
rllib
1
|
#include <rlppiclient.h>


Public Types | |
| enum | PPI_area { daveSD = 0x3, daveInputs = 0x81, daveOutputs = 0x82, daveFlags = 0x83, daveDB = 0x84, daveDI = 0x85, daveLocal = 0x86, daveV = 0x87, daveCounter = 28, daveTimer = 29 } |
Public Member Functions | |
| rlPPIClient (const char *mbxname, const char *shmname, int shmsize, int have_to_swap=1) | |
| virtual | ~rlPPIClient () |
| int | write (int slave, int area, int dbnum, int start, int len, const unsigned char *data) |
| int | writeFloat (int slave, int area, int dbnum, int start, int len, const float *val) |
| int | writeDword (int slave, int area, int dbnum, int start, int len, const int *val) |
| int | writeShort (int slave, int area, int dbnum, int start, int len, const short *val) |
| int | writeUDword (int slave, int area, int dbnum, int start, int len, const unsigned int *val) |
| int | writeUShort (int slave, int area, int dbnum, int start, int len, const unsigned short *val) |
| int | read (int offset, int len) |
| float | Float (int index) |
| int | Dword (int index) |
| int | Short (int index) |
| unsigned int | UDword (int index) |
| unsigned int | UShort (int index) |
Public Attributes | |
| unsigned char | buf [512] |
Private Attributes | |
| int | have_to_swap |
This class is for data acquisition from pvserver according to the pvbrowser principle. The according daemon is generated by pvdevelop. It communicates by the means of a shared memory and a mailbox.
Definition at line 28 of file rlppiclient.h.
| daveSD | |
| daveInputs | |
| daveOutputs | |
| daveFlags | |
| daveDB | |
| daveDI | |
| daveLocal | |
| daveV | |
| daveCounter | |
| daveTimer |
Definition at line 31 of file rlppiclient.h.
{
daveSD = 0x3,
daveInputs = 0x81,
daveOutputs = 0x82,
daveFlags = 0x83,
daveDB = 0x84, //data blocks
daveDI = 0x85, //not tested
daveLocal = 0x86, //not tested
daveV = 0x87, // don't know what it is
daveCounter = 28, //not tested
daveTimer = 29 //not tested
};
| rlPPIClient::rlPPIClient | ( | const char * | mbxname, |
| const char * | shmname, | ||
| int | shmsize, | ||
| int | have_to_swap = 1 |
||
| ) |
Definition at line 31 of file rlppiclient.cpp.
:rlMailbox(mbxname), rlSharedMemory(shmname, shmsize) { have_to_swap = _have_to_swap; }
| rlPPIClient::~rlPPIClient | ( | ) | [virtual] |
Definition at line 37 of file rlppiclient.cpp.
{
}
| int rlPPIClient::Dword | ( | int | index | ) |
Definition at line 256 of file rlppiclient.cpp.
{
SWAP swap;
if(index*4+4 > (int) BUFSIZE) return 0;
if(have_to_swap == 1)
{
swap.b[0] = buf[4*index+3];
swap.b[1] = buf[4*index+2];
swap.b[2] = buf[4*index+1];
swap.b[3] = buf[4*index];
}
else
{
swap.b[0] = buf[4*index];
swap.b[1] = buf[4*index+1];
swap.b[2] = buf[4*index+2];
swap.b[3] = buf[4*index+3];
}
return swap.i;
}
| float rlPPIClient::Float | ( | int | index | ) |
Definition at line 235 of file rlppiclient.cpp.
{
SWAP swap;
if(index*4+4 > (int) BUFSIZE) return 0.0f;
if(have_to_swap == 1)
{
swap.b[0] = buf[4*index+3];
swap.b[1] = buf[4*index+2];
swap.b[2] = buf[4*index+1];
swap.b[3] = buf[4*index];
}
else
{
swap.b[0] = buf[4*index];
swap.b[1] = buf[4*index+1];
swap.b[2] = buf[4*index+2];
swap.b[3] = buf[4*index+3];
}
return swap.f;
}
| int rlPPIClient::read | ( | int | offset, |
| int | len | ||
| ) |
Definition at line 230 of file rlppiclient.cpp.
{
return rlSharedMemory::read(offset,buf,len);
}
| int rlPPIClient::Short | ( | int | index | ) |
| unsigned int rlPPIClient::UDword | ( | int | index | ) |
Definition at line 294 of file rlppiclient.cpp.
{
SWAP swap;
if(index*4+4 > (int) BUFSIZE) return 0;
if(have_to_swap == 1)
{
swap.b[0] = buf[4*index+3];
swap.b[1] = buf[4*index+2];
swap.b[2] = buf[4*index+1];
swap.b[3] = buf[4*index];
}
else
{
swap.b[0] = buf[4*index];
swap.b[1] = buf[4*index+1];
swap.b[2] = buf[4*index+2];
swap.b[3] = buf[4*index+3];
}
return swap.ui;
}
| unsigned int rlPPIClient::UShort | ( | int | index | ) |
| int rlPPIClient::write | ( | int | slave, |
| int | area, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const unsigned char * | data | ||
| ) |
Definition at line 41 of file rlppiclient.cpp.
{
unsigned char buf[BUFSIZE+8];
if(len < 0) return -1;
if(len > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 31) return -1;
buf[0] = slave;
buf[1] = area;
buf[2] = dbnum / 256;
buf[3] = dbnum & 0x0ff;
buf[4] = start / 256;
buf[5] = start & 0x0ff;
buf[6] = len / 256;
buf[7] = len & 0x0ff;
memcpy(&buf[8],data,len);
rlMailbox::write((void *) buf,len+8);
return 0;
}
| int rlPPIClient::writeDword | ( | int | slave, |
| int | area, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const int * | val | ||
| ) |
Definition at line 98 of file rlppiclient.cpp.
{
SWAP swap;
int i;
unsigned char buf[BUFSIZE];
if(len < 0) return -1;
if(len > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 31) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len; i+=4)
{
swap.i = val[i/4];
buf[i+3] = swap.b[0];
buf[i+2] = swap.b[1];
buf[i+1] = swap.b[2];
buf[i] = swap.b[3];
}
}
else
{
for(i=0; i<len; i+=4)
{
swap.i = val[i/4];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
buf[i+2] = swap.b[2];
buf[i+3] = swap.b[3];
}
}
return write(slave,area,dbnum,start,len,buf);
}
| int rlPPIClient::writeFloat | ( | int | slave, |
| int | area, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const float * | val | ||
| ) |
Definition at line 63 of file rlppiclient.cpp.
{
SWAP swap;
int i;
unsigned char buf[BUFSIZE];
if(len < 0) return -1;
if(len > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 31) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len; i+=4)
{
swap.f = val[i/4];
buf[i+3] = swap.b[0];
buf[i+2] = swap.b[1];
buf[i+1] = swap.b[2];
buf[i] = swap.b[3];
}
}
else
{
for(i=0; i<len; i+=4)
{
swap.f = val[i/4];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
buf[i+2] = swap.b[2];
buf[i+3] = swap.b[3];
}
}
return write(slave,area,dbnum,start,len,buf);
}
| int rlPPIClient::writeShort | ( | int | slave, |
| int | area, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const short * | val | ||
| ) |
Definition at line 133 of file rlppiclient.cpp.
{
SWAP swap;
int i;
unsigned char buf[BUFSIZE];
if(len < 0) return -1;
if(len > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 31) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len; i+=2)
{
swap.s[0] = val[i/2];
buf[i+1] = swap.b[0];
buf[i] = swap.b[1];
}
}
else
{
for(i=0; i<len; i+=2)
{
swap.s[0] = val[i/2];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
}
}
return write(slave,area,dbnum,start,len,buf);
}
| int rlPPIClient::writeUDword | ( | int | slave, |
| int | area, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const unsigned int * | val | ||
| ) |
Definition at line 164 of file rlppiclient.cpp.
{
SWAP swap;
int i;
unsigned char buf[BUFSIZE];
if(len < 0) return -1;
if(len > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 31) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len; i+=4)
{
swap.ui = val[i/4];
buf[i+3] = swap.b[0];
buf[i+2] = swap.b[1];
buf[i+1] = swap.b[2];
buf[i] = swap.b[3];
}
}
else
{
for(i=0; i<len; i+=4)
{
swap.ui = val[i/4];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
buf[i+2] = swap.b[2];
buf[i+3] = swap.b[3];
}
}
return write(slave,area,dbnum,start,len,buf);
}
| int rlPPIClient::writeUShort | ( | int | slave, |
| int | area, | ||
| int | dbnum, | ||
| int | start, | ||
| int | len, | ||
| const unsigned short * | val | ||
| ) |
Definition at line 199 of file rlppiclient.cpp.
{
SWAP swap;
int i;
unsigned char buf[BUFSIZE];
if(len < 0) return -1;
if(len > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 31) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len; i+=2)
{
swap.us[0] = val[i/2];
buf[i+1] = swap.b[0];
buf[i] = swap.b[1];
}
}
else
{
for(i=0; i<len; i+=2)
{
swap.us[0] = val[i/2];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
}
}
return write(slave,area,dbnum,start,len,buf);
}
| unsigned char rlPPIClient::buf[512] |
Definition at line 58 of file rlppiclient.h.
int rlPPIClient::have_to_swap [private] |
Definition at line 60 of file rlppiclient.h.
1.7.5.1