package veh.lenient
// Grammar over-approximations (the parser accepts, the checker narrows
// and emits the rejections). Every shape below parses losslessly with zero
// parser errors.
interface LenientShapes {
// RIDL-201 territory: a stream payload on a signal parses.
signal rawFeed : <SensorFrame>
// RIDL-104 territory: a return type on a command parses.
command setMode(mode: DriveMode): AckState
// RIDL-106 territory and friends: timing parses on command, query, fixed.
command reset() @50ms
query getState(): DriveState @[10ms..100ms]
fixed buildId : BuildId @1s
// RIDL-301/-106 territory: attr blocks parse on signal, event, fixed.
signal speed : Speed [ persist ]
event doorOpened : DoorPayload [ someKey = 3 ]
fixed vin : Vin [ cached ]
// Init values parse on event and fixed.
event calibrated : CalPayload = DEFAULT_CAL
fixed region : Region = REGION_EU
// Timing and attr block in either order, on every interaction kind.
query ordered(): DriveState [ flagged ] @10ms
query reordered(): DriveState @10ms [ flagged ]
command attrsFirst() [ flagged ] @[..50ms]
command timingFirst() @[..50ms] [ flagged ]
signal attrsFirstSignal : Speed [ persist ] @10ms
signal timingFirstSignal : Speed @10ms [ persist ]
event attrsFirstEvent : DoorPayload [ someKey = 3 ] @[..1s]
event timingFirstEvent : DoorPayload @[..1s] [ someKey = 3 ]
fixed attrsFirstFixed : Vin [ cached ] @1s
fixed timingFirstFixed : Vin @1s [ cached ]
}