private static final class Osi7LongTelegramSegment.FragmentedLongTelegram extends Object
Modifier and Type | Field and Description |
---|---|
private int |
_costEndBiggerBlock
Wie viele Bytes "kosten" die Steuerungsinformationen eines nextBiggerPiece
|
private int |
_costNextBiggerPiece
Wie viele Bytes "kosten" die Steuerungsinformationen eines nextBiggerPiece
|
private int |
_costStartBiggerBlock
Wie viele Bytes "kosten" die Steuerungsinformationen eines StartBiggerBlocks
|
private int |
_crcChecksum
Speichert die CRC-Prüfsumme TBD in dieser Version immer 0
|
private byte |
_dataBlockNumber
Jeder DatenBlock, der verschickt wird, bekommt die gleiche Nummer, aus dieser Nummer schließt der Empfänger zu welchem Langtelegramm das Teilstück gehört.
|
private int |
_dataBytesLeft
Speichert, wieviele Bytes noch verschickt werden müssen.
|
private int |
_dataPosition
Speichert den Index im Byte-Array, ab dem Daten verschickt werden dürfen.
|
private int |
_maxDataForBigTelegram
Speichert die maximale Anzahl von Bytes, die in einem LongTelegram vom Typ Big gesendet werden kann.
|
private int |
_maxDataForTelegram
Legt die maximale Größe eines Teil-Telegramms fest.
|
private int |
_numberOfNeededPieces
Wieviele Datenblockstücke müssen verschickt werden (Start und Ende zählen nicht)
|
private boolean |
_onePieceLeft
Gibt an, ob noch ein Teil-Telegramm vorhanden ist, das verschickt werden muss.
|
private int |
_priority
Priorität, mit der die Telegrammstücke verschickt werden sollen
|
private int |
_receiverNodeNumber
Die Empfängeradresse wird von einer anderen Klasse benötigt, um an den Empfänger zu kommen.
|
private int |
_senderNodeNumber
Adresse des Senders
|
private boolean |
_startBlockSend
Gibt an, ob der StartBig/StartBigger Block schon verschickt wurde
|
private int |
_telegramNumber
Nummer des Telegramms, das verschickt werden soll.
|
private LongTelegramType |
_telegramType
Speichert den Long-Type, den das zu übertragenen Telegramm haben muss damit alle Daten übertragen werden können
|
private byte[] |
_wholeTelegram
Speichert das zu übertragene Telegramm
|
Constructor and Description |
---|
Osi7LongTelegramSegment.FragmentedLongTelegram(byte[] telegram,
int senderNodeNumber,
byte dataBlockNumber,
int receiverNodeNumber,
int priority) |
Modifier and Type | Method and Description |
---|---|
private void |
createSenderNodeNumber(byte[] byteArray)
Diese Methode trägt in dem übergebenen Byte-Array die Knotennummer des Senders ein
|
private int |
createTelegramFrame(byte[] byteArray)
Erzeugt einen Header und trägt den richtigen Typ (ShortBlock, StartBig,EndBig, usw ein) Danach können in das Array die Bytes des Datenblocks eingefügt
werden, CRC wird ebenfalls eingetragen.
|
byte |
getDataBlockNumber() |
byte[] |
getNextPiece() |
int |
getPriority() |
int |
getReceiverNodeNumber() |
int |
getSenderNodeNumber() |
boolean |
isOnePieceLeft()
Diese Methode gibt true zurück, wenn noch ein Teil-Telegramm zur Verfügung steht.
|
private boolean |
sendEndBlock()
Diese Methode stellt fest, ob das zu verschickende Telegramm das EndBigBlock oder EndBiggerBlock sein muss.
|
private final byte[] _wholeTelegram
private final int _senderNodeNumber
private final int _receiverNodeNumber
private final LongTelegramType _telegramType
private int _dataPosition
private int _dataBytesLeft
private boolean _onePieceLeft
private boolean _startBlockSend
private final int _maxDataForTelegram
private final int _maxDataForBigTelegram
private final byte _dataBlockNumber
private final int _numberOfNeededPieces
private int _telegramNumber
private final int _crcChecksum
private final int _costStartBiggerBlock
private final int _costNextBiggerPiece
private final int _costEndBiggerBlock
private final int _priority
public Osi7LongTelegramSegment.FragmentedLongTelegram(byte[] telegram, int senderNodeNumber, byte dataBlockNumber, int receiverNodeNumber, int priority)
public byte[] getNextPiece() throws IllegalStateException
IllegalStateException
public boolean isOnePieceLeft()
private int createTelegramFrame(byte[] byteArray)
byteArray
- s.o.private boolean sendEndBlock()
private void createSenderNodeNumber(byte[] byteArray)
byteArray
- s.o.public byte getDataBlockNumber()
public int getReceiverNodeNumber()
public int getSenderNodeNumber()
public int getPriority()