forked from HEL/chronos
		
	
		
			
				
	
	
		
			271 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
			
		
		
	
	
			271 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
| #import "../src/lib.typ": from-plantuml
 | |
| 
 | |
| #set page(width: auto, height: auto)
 | |
| 
 | |
| /*
 | |
| #from-plantuml(```
 | |
| @startuml
 | |
| 
 | |
| actor User as usr
 | |
| participant can_message as can
 | |
| control kartculator as kc
 | |
| queue XF as xf
 | |
| entity Drive as drive
 | |
| entity Steering as steering
 | |
| 
 | |
| usr -\ xf : set message "move"
 | |
| xf -> can : new value on joystick
 | |
| 
 | |
| == If X axis change value ==
 | |
| can -> kc : calculate new position
 | |
| kc -> can : build message
 | |
| can -> steering : set new position
 | |
| 
 | |
| == If Y axis change value ==
 | |
| can -> kc : calculate new torque
 | |
| kc -> can : build message
 | |
| can -> xf : set message "torque"
 | |
| xf -> drive : set new torque
 | |
| 
 | |
| @enduml
 | |
| ```)
 | |
| 
 | |
| #pagebreak(weak: true)
 | |
| 
 | |
| #from-plantuml(```
 | |
| @startuml
 | |
| 
 | |
| actor CAN_BUS as bus
 | |
| participant interrupt as ISR
 | |
| queue XF as xf
 | |
| participant ecan as ecan
 | |
| participant canInterface as can
 | |
| control canMessageController as msg
 | |
| 
 | |
| 
 | |
| bus -\\ ISR ++  : can message
 | |
| ISR -> can : newMsg
 | |
| can -> ecan : read
 | |
| ecan --> can : message
 | |
| can -> xf : POST XF
 | |
| destroy ISR
 | |
|     group TICK XF
 | |
| xf o-> can : receiveCan()
 | |
| can -> msg : processIncoming()
 | |
| msg -> can : create message
 | |
| can -> xf : POST XF
 | |
|     end
 | |
|     group TICK XF
 | |
| xf o-> can : sendCan()
 | |
| can -> ecan : write
 | |
| ecan -\\ bus : can message
 | |
|     end
 | |
| 
 | |
| @enduml
 | |
| ```)
 | |
| 
 | |
| #pagebreak(weak: true)
 | |
| */
 | |
| 
 | |
| /*
 | |
| #from-plantuml(```
 | |
| @startuml
 | |
| 
 | |
| participant "Behavior::StateMachine" as sm
 | |
| participant Dispatcher as d
 | |
| participant TimeoutManager as tm
 | |
| entity "Event::Timeout" as t
 | |
| queue "TimeoutManager::timeouts_" as timeouts
 | |
| 
 | |
| autoactivate off
 | |
| |||
 | |
| |||
 | |
| == Schedule timeout ==
 | |
| |||
 | |
| sm -> sm++ : scheduleTimeout
 | |
| sm -> d ++: getDispatcher
 | |
| d --> sm --: dispatcher
 | |
| sm -> d --++ : scheduleTimeout
 | |
| d -> tm ++: getTimeoutManager
 | |
| tm --> d --: timeoutManager
 | |
| d -> tm --++ : scheduleTimeout
 | |
| tm -> t ** : new
 | |
| t --> tm
 | |
| tm -> timeouts --++: insert
 | |
| 
 | |
| |||
 | |
| |||
 | |
| == Decrement timeout (and dispatch) ==
 | |
| |||
 | |
| loop every tickInterval
 | |
| ?->> tm ++: tick
 | |
| tm -> timeouts : getFront
 | |
| timeouts -> t ++
 | |
| t --> timeouts
 | |
| timeouts --> tm : timeout
 | |
| tm -> t  --: decrement
 | |
| end
 | |
| |||
 | |
| note left t
 | |
| When timeout is 0,
 | |
| dispatch event
 | |
| end note
 | |
| t -> timeouts : pop
 | |
| deactivate timeouts
 | |
| t ->? --: pushEvent
 | |
| 
 | |
| |||
 | |
| |||
 | |
| == Unschedule timeout ==
 | |
| |||
 | |
| sm -> sm++ : unscheduleTimeout
 | |
| sm -> d ++: getDispatcher
 | |
| d --> sm --: dispatcher
 | |
| sm -> d --++ : unscheduleTimeout
 | |
| d -> tm ++: getTimeoutManager
 | |
| tm --> d --: timeoutManager
 | |
| d -> tm --++ : unscheduleTimeout
 | |
| tm -> timeouts --: erase
 | |
| timeouts -> t !!
 | |
| 
 | |
| @enduml
 | |
| ```)
 | |
| */
 | |
| 
 | |
| #pagebreak(weak: true)
 | |
| 
 | |
| #from-plantuml(```
 | |
| @startuml
 | |
| 
 | |
| participant Behavior as b
 | |
| participant Dispatcher as d
 | |
| entity Event as e
 | |
| participant EventQueue as eq
 | |
| queue "EventQueue::queue_" as q
 | |
| 
 | |
| == Create an Event ==
 | |
| |||
 | |
| ?->> b ++ : GEN
 | |
| b -> e ** : new
 | |
| b -> b --++ : pushEvent
 | |
| e -> b : getBehavior
 | |
| b --> e ++: setBehavior
 | |
| e --> b --
 | |
| b -> d ++ : getDispatcher
 | |
| d --> b
 | |
| b -> d -- : pushEvent
 | |
| d ->? -- : push
 | |
| 
 | |
| 
 | |
| |||
 | |
| |||
 | |
| == Push Event  ==
 | |
| |||
 | |
| ?->> d ++: pushEvent
 | |
| d -> eq--++: push
 | |
| eq -> q ++
 | |
| q --> eq
 | |
| eq -> q -- : pushEndQueue
 | |
| 
 | |
| |||
 | |
| |||
 | |
| == Dispatch ==
 | |
| |||
 | |
| ?->> d ++: executeOnce
 | |
| d -> q : getFront
 | |
| q -> e ++
 | |
| e --> q
 | |
| q --> d : event
 | |
| d -> q : pop
 | |
| deactivate q
 | |
| d -> d --++ : dispatchEvent
 | |
| d -> b ++ : getBehavior
 | |
| b --> d
 | |
| d -> b -- : process
 | |
| b -> b--: processEvent
 | |
| 
 | |
| destroy e
 | |
| 
 | |
| @enduml
 | |
| ```)
 | |
| 
 | |
| #pagebreak(weak: true)
 | |
| 
 | |
| #from-plantuml(```
 | |
| @startuml
 | |
| 'https://plantuml.com/sequence-diagram
 | |
| actor User as usr
 | |
| participant "Pb L" as pbL
 | |
| participant "Pb R" as pbR
 | |
| participant "LED L" as ledL
 | |
| participant "LED R" as ledR
 | |
| 
 | |
| 
 | |
| == Single click ==
 | |
| 
 | |
| group Single click left
 | |
| usr -\ pbL ++: pressButton
 | |
| usr -\ pbL : releaseButton
 | |
| pbL -> ledL --++ : blink
 | |
| usr -\ pbL ++: pressButton
 | |
| usr -\ pbL : releaseButton
 | |
| pbL -> ledL -- : endBlink
 | |
| deactivate ledL
 | |
| end
 | |
| 
 | |
| group Single click right
 | |
| usr -\ pbR ++: pressButton
 | |
| usr -\ pbR : releaseButton
 | |
| pbR -> ledR --++ : blink
 | |
| usr -\ pbR ++: pressButton
 | |
| usr -\ pbR : releaseButton
 | |
| pbR -> ledR -- : endBlink
 | |
| deactivate ledR
 | |
| end
 | |
| 
 | |
| == Double click ==
 | |
| 
 | |
| group Double click left
 | |
| usr -\ pbL ++: pressButton
 | |
| usr -\ pbL : releaseButton
 | |
| usr -\ pbL : pressButton
 | |
| pbL -> ledL --++ : blink
 | |
| note right ledL: blink 3x
 | |
| ledL ->x ledL -- : finished
 | |
| end
 | |
| 
 | |
| group Double click right
 | |
| usr -\ pbR ++: pressButton
 | |
| usr -\ pbR : releaseButton
 | |
| usr -\ pbR : pressButton
 | |
| pbR -> ledR --++ : blink
 | |
| note right ledR: blink 3x
 | |
| ledR ->x ledR -- : finished
 | |
| end
 | |
| 
 | |
| == Long click ==
 | |
| 
 | |
| group Long click left
 | |
| usr -\ pbL ++: pressButton
 | |
| pbL -> ledR--: blink
 | |
| activate ledL
 | |
| activate ledR
 | |
| usr -\ pbL ++: pressButton
 | |
| pbL -> ledR -- : endBlink
 | |
| deactivate ledL
 | |
| deactivate ledR
 | |
| end
 | |
| 
 | |
| group Long click right
 | |
| usr -\ pbR ++: pressButton
 | |
| pbR -> ledR--: blink
 | |
| activate ledL
 | |
| activate ledR
 | |
| usr -\ pbL ++: pressButton
 | |
| pbL -> ledR -- : endBlink
 | |
| deactivate ledL
 | |
| deactivate ledR
 | |
| end
 | |
| 
 | |
| @enduml
 | |
| ```) |