# kernelv_sync_read_write_req()

## Prototyp

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);

## Beschreibung

Synchrones Schreiben und Lesen von Variablen. Die Variablen werden dabei durch Port, indexGroup und indexOffset identifiziert.

Beim Aufruf beinhaltet der Zeiger data die zu schreibenden Daten, in writeLength ist die Länge des zu schreibenden Datenbereiches in Bytes anzugeben, die Anzahl der Bytes die gelesen werden sollen ist im Zeiger readLength einzutragen.

Die gelesenen Daten werden in den Speicher, auf den der Zeiger data zeigt abgelegt, und die Anzahl der geschriebenen Bytes in *readLength eingetragen.

Aktuell werden die folgenden Ports unterstützt:

Portnummer | CNC-Task
551 | Task GEO
552 | Task SDA

Die Bedeutung von indexGroup und indexOffset ist abhängig vom adressierten Port und kann der Dokumentation entnommen werden.

Falls die Funktion aufgerufen wird, wenn der CNC-Kern noch nicht gestartet ist, wird ein Fehlercode zurückgegeben.

## Parameter

Name | Typ | Bedeutung
port | unsigned short | Port von dem die Daten zu lesen sind.
indexGroup | unsigned long | Indexgroup des zu lesenden Datums.
indexOffset | unsigned long | Indexoffset des zu lesenden Datums.
readLength | unsigned long* | Zeiger auf Rückgabewert, für die Anzahl der zurückgelieferten Bytes.
writeLength | unsigned long | Länge des zu schreibenden Datenbereiches.
data | void* | Zeiger auf Speicher für den zu schreibenden bzw. zu lesenden Daten.

## Rückgabewerte

Symbol | Wert | Bedeutung
| 0 | Die Funktion wurde fehlerfrei durchgeführt.
| -3 | Der Simulations-CNC-Kern ist noch nicht initialisiert.
ERR_CNC_RET_MEMORY | -4 | Der oder die Rückgabewerte passen nicht in den bereitgestellten Speicher.
| 6 | Die übergebene Portnummer ist nicht bekannt.
| 0x701 | Der angeforderte Dienst wird nicht unterstützt.
| 0x702 | Indexgroup ist ungültig
| 0x703 | Indexoffset ist ungültig.
| 0x704 | Die adressierte Variable darf nicht geschrieben werden.
| 0x705 | Die zu schreibenden Daten passen nicht in die adressierte Variable.