15
  
    UMLSpecialState
    
      450
      150
      30
      30
    
    type=initial
    
  
  
    UMLState
    
      390
      240
      150
      60
    
    STCA_WAIT
    
  
  
    Relation
    
      450
      165
      120
      105
    
    lt=->
evCAinit
    10.0;10.0;10.0;50.0
  
  
    Relation
    
      450
      285
      165
      105
    
    lt=->
evCAnewMsg
    10.0;10.0;10.0;50.0
  
  
    UMLState
    
      315
      360
      285
      105
    
    STCA_READ
-
-.
/entry: processCan
    
  
  
    Relation
    
      480
      255
      225
      360
    
    lt=->
m1=[queue empty]
    10.0;210.0;130.0;210.0;130.0;10.0;40.0;10.0
  
  
    UMLSpecialState
    
      435
      540
      60
      60
    
    type=decision
    
  
  
    Relation
    
      450
      450
      135
      120
    
    lt=->
evCAdone
    10.0;10.0;10.0;60.0
  
  
    Relation
    
      210
      375
      255
      240
    
    lt=->
m1=[else]
    150.0;130.0;10.0;130.0;10.0;10.0;70.0;10.0
  
  
    UMLNote
    
      90
      630
      615
      270
    
    _*How to use*_
*In Factory_build: *
ECAN_SetRXBnInterruptHandler(CANINTERFACE_newMsg);
CANINTERFACE_onProcessCan(&processCan);
*Somewhere:*
void processCan(uint32_t canId, uint32_t canData) {
    .....
}
    
  
  
    Relation
    
      900
      225
      90
      105
    
    lt=->
evInit
    10.0;10.0;10.0;50.0
  
  
    UMLSpecialState
    
      900
      210
      30
      30
    
    type=initial
    
  
  
    UMLState
    
      840
      300
      150
      60
    
    STCS_WAIT
    
  
  
    UMLState
    
      810
      420
      210
      90
    
    STCS_SEND
--
-.
/entry sendCan
    
  
  
    Relation
    
      900
      345
      135
      105
    
    lt=->
evCSsend
    10.0;10.0;10.0;50.0
  
  
    Relation
    
      900
      315
      270
      270
    
    lt=->
evCSdone
    10.0;130.0;10.0;160.0;100.0;160.0;100.0;10.0;60.0;10.0
  
  
    UMLNote
    
      765
      630
      645
      150
    
    _*How to use*_
CANSENDER_send(uint32_t id, uint32_t data);
or
CANSENDER_send(CANSENDER *me, uint8_t id, uint32_t data);