Siemens 7 User Manual

Page of 36
Multiplexer Driver Developer’s Guide 
7.5 The +++-Parser
s
Mux_Drv_DevGuide_v07
Page 34 of 36
2006-9-27
Confidential / Released
7.5
The +++-Parser
The following state diagram shows the states of the +++-parser.
Figure 10:  State diagram of the +++-parser
Internal states of the ScanRequest Object for scanning each
character in a Send Request for one Port Object
PLUS
PLUS_TIMEOUT
W AIT_BREAK
COMPLETE_PLUS
Timeout 1s and
rcv. BreakChar '+'
if BreakCount = 3
rcv.  any character
with time differences over One
 second to the last character
or the ScanRequest Timer go to zero
in the Timer
rcv. char. unequal '+'
or Timeout 1s
or difference between current and
last Request too big
1. If the next incoming request
has a TImeout to the last request,
then switch to W AIT_BREAK without
Timerfunction
Request-Flag =SCAN_LATER
2. if the ScanRequest Timer go to zero.
Send MSC
command with
ESCAPE =1
if receive the MSC Response
Timeout
W aitResponseTimer
if BreakCount > 0, then send first
the breaks. After check for incoming
Request also check if Break
Count>0 and then '+' characters.
SerMuxSend(), BreakCount=0
If rcv. a SendRequest, then
Flag = SCAN_LATER
If rcv. a SendRequest, then
Flag = SCAN_LATER
if Timer go to zero:
if  STATE_PLUS then STATE_W AIT_CHAR
if STATE_PLUS_TIMEOUT then STATE_W AIT_BREAK
if Timer go to 0:
if STATE_W AIT_BREAK then STATE_W AIT_CHAR
W AIT_CHAR()
ScanRequest
->W aitResponse
Timer
ScanRequest
->Timer
if rcv "++" then
BreakCount +1