kernelv_sync_read_write_req()

Prototype

signed long int

kernelv_sync_write_req (unsigned short port,
                                       unsigned long int indexGroup,
                                       unsigned long int indexOffset,
                                       unsigned long int *readLength,
                                        unsigned long int writeLength,
                                       void* data);

Description

Synchronous writing and reading of variables. The variables are identified by Port, indexGroup and indexOffset.

When called, the data pointer contains the data to be written. Specify in writeLength the length of the data area to be written in bytes. Enter the number of bytes to be read in the realLength pointer.

The data read is saved to the memory to which the data pointer points and the number of bytes written is written to *readLength.

At present, the following ports are supported:

Port number

CNC task

551

GEO task

552

SDA task

The meaning of indexGroup and indexOffset depends on the addressed port and can be found in the documentation.

An error code is returned if the function is called while the CNC kernel has not yet started.

Parameter

Name

Type

Meaning

port

unsigned short

Port from which the data is to be read.

indexGroup

unsigned long

Index group of the data item to be read.

indexOffset

unsigned long

Index offset of the data item to be read.

readLength

unsigned long*

Pointer to the return value for the number of bytes returned.

writeLength

unsigned long

Length of the data area to be written.

data

void*

Pointer to memory for the data to be read or written.

Return values

Symbol

Value

Meaning

 

0

The function was executed without error.

 

-3

The simulation CNC kernel was not yet initialised.

ERR_CNC_RET_MEMORY

-4

The return value(s) does/do not fit into the memory provided.

 

6

The transferred port number is not known.

 

0x701

The requested service is not supported.

 

0x702

Index group is invalid

 

0x703

Index offset is invalid

 

0x704

The variable addressed must not be written.

 

0x705

The data to be written does not match the addressed variable.

 

0x706

The job cannot be executed.

Possible reasons are:

  • invalid data on write accesses or
  • invalid state of kernelv, e.g. list updating while CNC channel is in error.