Start | Event[Guard] | Target | Action |
---|---|---|---|
[*] |
CTRL |
RCVPCKT |
|
RCVPCKT |
CTRL |
RCVDATA |
{
addField()
} |
RCVPCKT |
BYTE |
RCVCHK |
{
addChecksum(it)
} |
RCVDATA |
BYTE |
RCVDATA |
{
addByte(it)
} |
RCVDATA |
CTRL |
RCVPCKT |
{
endField()
} |
RCVDATA |
ESC |
RCVESC |
|
RCVESC |
ESC |
RCVDATA |
{
addByte(CharacterConstants.ESC)
} |
RCVESC |
CTRL |
RCVDATA |
{
addByte(it)
} |
RCVCHK |
BYTE |
RCVCHK |
{
addChecksum(it)
} |
RCVCHK |
ESC |
RCVCHKESC |
|
RCVCHK |
CTRL |
CHKSUM |
{
checksum()
} |
CHKSUM |
<<automatic>> |
[*] |
{
sendNACK()
} |
CHKSUM |
<<automatic>> |
[*] |
{
sendACK()
} |
RCVCHKESC |
ESC |
RCVCHK |
{
addChecksum(CharacterConstants.ESC)
} |
RCVCHKESC |
CTRL |
RCVCHK |
{byte->
require(byte != null)
addChecksum(byte)
} |