rllib  1
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Macros
Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
rlSiemensTCPClient Class Reference

#include <rlsiemenstcpclient.h>

Inheritance diagram for rlSiemensTCPClient:
Inheritance graph
[legend]
Collaboration diagram for rlSiemensTCPClient:
Collaboration graph
[legend]

Public Types

enum  ORG {
  ORG_DB = 1, ORG_M = 2, ORG_E = 3, ORG_A = 4,
  ORG_PEPA = 5, ORG_Z = 6, ORG_T = 7
}
 
- Public Types inherited from rlMailbox
enum  MailboxEnum {
  MAILBOX_ERROR = -1, MAILBOX_FULL = -2, WAIT = 1, NOWAIT = 0,
  MAX_MAILBOX = 256*256, OK = 2, COULD_NOT_CREATE_MAILBOX = 3, COULD_NOT_GET_KEY = 4,
  COULD_NOT_GET_CHAN_ID = 5
}
 

Public Member Functions

 rlSiemensTCPClient (const char *mbxname, const char *shmname, int shmsize, int have_to_swap=1)
 
virtual ~rlSiemensTCPClient ()
 
int write (int slave, int org, int dbnum, int start, int len, const unsigned char *buf, int function)
 
int writeBit (int slave, int org, int dbnum, int start, int offset, int len, const unsigned char *buf)
 
int writeByte (int slave, int org, int dbnum, int start, int len, const unsigned char *val)
 
int writeFloat (int slave, int org, int dbnum, int start, int len, const float *val)
 
int writeDword (int slave, int org, int dbnum, int start, int len, const int *val)
 
int writeShort (int slave, int org, int dbnum, int start, int len, const short *val)
 
int writeUDword (int slave, int org, int dbnum, int start, int len, const unsigned int *val)
 
int writeUShort (int slave, int org, 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 Member Functions inherited from rlMailbox
 rlMailbox (const char *name)
 
virtual ~rlMailbox ()
 
int write (const void *buf, int len)
 
int printf (const char *format,...)
 
int read (void *buf, int maxlen, int wait=WAIT)
 
int setReadBufferSize (int size)
 
const char * read (int wait=WAIT)
 
int write (const char *message)
 
void clear ()
 

Public Attributes

unsigned char buf [2048]
 
- Public Attributes inherited from rlMailbox
int status
 
char * name
 

Private Attributes

int have_to_swap
 
- Private Attributes inherited from rlSharedMemory
int status
 
char * name
 

Additional Inherited Members

- Private Types inherited from rlSharedMemory
enum  SharedMemoryEnum {
  OK = 0, ERROR_FILE, ERROR_SHMGET, ERROR_SHMAT,
  ERROR_SHMCTL
}
 
- Private Member Functions inherited from rlSharedMemory
 rlSharedMemory (const char *name, unsigned long size, int rwmode=0600)
 
virtual ~rlSharedMemory ()
 
int deleteSharedMemory ()
 
int write (unsigned long offset, const void *buf, int len)
 
int read (unsigned long offset, void *buf, int len)
 
int readInt (unsigned long offset, int index)
 
int readShort (unsigned long offset, int index)
 
int readByte (unsigned long offset, int index)
 
float readFloat (unsigned long offset, int index)
 
int writeInt (unsigned long offset, int index, int val)
 
int writeShort (unsigned long offset, int index, int val)
 
int writeByte (unsigned long offset, int index, unsigned char val)
 
int writeFloat (unsigned long offset, int index, float val)
 
void * getUserAdr ()
 
int shmKey ()
 
int shmId ()
 

Detailed Description

This class is for data acquisition within pvserver according to the pvbrowser principle.
The corresponding daemon is generated by pvdevelop.
It communicates by the means of a shared memory and a mailbox.

Definition at line 33 of file rlsiemenstcpclient.h.

Member Enumeration Documentation

Enumerator:
ORG_DB 
ORG_M 
ORG_E 
ORG_A 
ORG_PEPA 
ORG_Z 
ORG_T 

Definition at line 36 of file rlsiemenstcpclient.h.

{
ORG_DB = 1,
ORG_M = 2,
ORG_E = 3,
ORG_A = 4,
ORG_PEPA = 5,
ORG_Z = 6,
ORG_T = 7
};

Constructor & Destructor Documentation

rlSiemensTCPClient::rlSiemensTCPClient ( const char *  mbxname,
const char *  shmname,
int  shmsize,
int  have_to_swap = 1 
)

Definition at line 35 of file rlsiemenstcpclient.cpp.

:rlMailbox(mbxname), rlSharedMemory(shmname, shmsize)
{
have_to_swap = _have_to_swap;
}
rlSiemensTCPClient::~rlSiemensTCPClient ( )
virtual

Definition at line 41 of file rlsiemenstcpclient.cpp.

{
}

Member Function Documentation

int rlSiemensTCPClient::Dword ( int  index)

Definition at line 285 of file rlsiemenstcpclient.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 rlSiemensTCPClient::Float ( int  index)

Definition at line 264 of file rlsiemenstcpclient.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 rlSiemensTCPClient::read ( int  offset,
int  len 
)

Definition at line 259 of file rlsiemenstcpclient.cpp.

{
return rlSharedMemory::read(offset,buf,len);
}
int rlSiemensTCPClient::Short ( int  index)

Definition at line 306 of file rlsiemenstcpclient.cpp.

{
SWAP swap;
if(index*2+2 > (int) BUFSIZE) return 0;
if(have_to_swap == 1)
{
swap.b[0] = buf[2*index+1];
swap.b[1] = buf[2*index];
}
else
{
swap.b[0] = buf[2*index];
swap.b[1] = buf[2*index+1];
}
return swap.s[0];
}
unsigned int rlSiemensTCPClient::UDword ( int  index)

Definition at line 323 of file rlsiemenstcpclient.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 rlSiemensTCPClient::UShort ( int  index)

Definition at line 344 of file rlsiemenstcpclient.cpp.

{
SWAP swap;
if(index*2+4 > (int) BUFSIZE) return 0;
if(have_to_swap == 1)
{
swap.b[0] = buf[2*index+1];
swap.b[1] = buf[2*index];
}
else
{
swap.b[0] = buf[2*index];
swap.b[1] = buf[2*index+1];
}
return swap.us[0];
}
int rlSiemensTCPClient::write ( int  slave,
int  org,
int  dbnum,
int  start,
int  len,
const unsigned char *  buf,
int  function = rlSiemensTCP::WriteByte 
)

Definition at line 45 of file rlsiemenstcpclient.cpp.

{
unsigned char buf[BUFSIZE+8];
int len_byte;
if(len <= 0) return -1;
if(slave < 0) return -1;
if(slave >= 256) return -1;
len_byte = len;
buf[0] = slave;
buf[1] = org;
buf[2] = dbnr / 256;
buf[3] = dbnr & 0x0ff;
buf[4] = start_adr / 256;
buf[5] = start_adr & 0x0ff;
buf[6] = len / 256;
buf[7] = len & 0x0ff;
buf[8] = function;
memcpy(&buf[9],inbuf,len_byte);
rlMailbox::write((void *) buf, len_byte + 9);
return 0;
}
int rlSiemensTCPClient::writeBit ( int  slave,
int  org,
int  dbnum,
int  start,
int  offset,
int  len,
const unsigned char *  buf 
)

Definition at line 68 of file rlsiemenstcpclient.cpp.

{
if(len < 0) return -1;
if(len > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
int start_adr = start * 8 + offset;
return write(slave,org,dbnum,start_adr,len,val,rlSiemensTCP::WriteBit);
}
int rlSiemensTCPClient::writeByte ( int  slave,
int  org,
int  dbnum,
int  start,
int  len,
const unsigned char *  val 
)

Definition at line 78 of file rlsiemenstcpclient.cpp.

{
if(len < 0) return -1;
if(len > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
return write(slave,org,dbnum,start,len,val,rlSiemensTCP::WriteByte);
}
int rlSiemensTCPClient::writeDword ( int  slave,
int  org,
int  dbnum,
int  start,
int  len,
const int *  val 
)

Definition at line 123 of file rlsiemenstcpclient.cpp.

{
SWAP swap;
int i,len_byte;
unsigned char buf[BUFSIZE];
len_byte = len * 4;
if(len_byte < 0) return -1;
if(len_byte > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len_byte; 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_byte; 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,org,dbnum,start,len_byte,buf,rlSiemensTCP::WriteByte);
}
int rlSiemensTCPClient::writeFloat ( int  slave,
int  org,
int  dbnum,
int  start,
int  len,
const float *  val 
)

Definition at line 87 of file rlsiemenstcpclient.cpp.

{
SWAP swap;
int i,len_byte;
unsigned char buf[BUFSIZE];
len_byte = len * 4;
if(len_byte < 0) return -1;
if(len_byte > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len_byte; 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_byte; 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,org,dbnum,start,len_byte,buf,rlSiemensTCP::WriteByte);
}
int rlSiemensTCPClient::writeShort ( int  slave,
int  org,
int  dbnum,
int  start,
int  len,
const short *  val 
)

Definition at line 159 of file rlsiemenstcpclient.cpp.

{
SWAP swap;
int i,len_byte;
unsigned char buf[BUFSIZE];
len_byte = len * 2;
if(len_byte < 0) return -1;
if(len_byte > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len_byte; 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_byte; i+=2)
{
swap.s[0] = val[i/2];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
}
}
return write(slave,org,dbnum,start,len_byte,buf,rlSiemensTCP::WriteByte);
}
int rlSiemensTCPClient::writeUDword ( int  slave,
int  org,
int  dbnum,
int  start,
int  len,
const unsigned int *  val 
)

Definition at line 191 of file rlsiemenstcpclient.cpp.

{
SWAP swap;
int i,len_byte;
unsigned char buf[BUFSIZE];
len_byte = len * 4;
if(len_byte < 0) return -1;
if(len_byte > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len_byte; 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_byte; 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,org,dbnum,start,len_byte,buf,rlSiemensTCP::WriteByte);
}
int rlSiemensTCPClient::writeUShort ( int  slave,
int  org,
int  dbnum,
int  start,
int  len,
const unsigned short *  val 
)

Definition at line 227 of file rlsiemenstcpclient.cpp.

{
SWAP swap;
int i,len_byte;
unsigned char buf[BUFSIZE];
len_byte = len * 2;
if(len_byte < 0) return -1;
if(len_byte > BUFSIZE) return -1;
if(slave < 0) return -1;
if(slave > 255) return -1;
if(have_to_swap == 1)
{
for(i=0; i<len_byte; 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_byte; i+=2)
{
swap.us[0] = val[i/2];
buf[i] = swap.b[0];
buf[i+1] = swap.b[1];
}
}
return write(slave,org,dbnum,start,len_byte,buf,rlSiemensTCP::WriteByte);
}

Member Data Documentation

unsigned char rlSiemensTCPClient::buf[2048]

Definition at line 62 of file rlsiemenstcpclient.h.

int rlSiemensTCPClient::have_to_swap
private

Definition at line 64 of file rlsiemenstcpclient.h.


The documentation for this class was generated from the following files: