@@ -521,7 +521,7 @@ function Base.show(io::IO, m::MIME"text/plain", p::Parameter)
521
521
end
522
522
523
523
get_sample_time (memory:: Parameter ) = memory. ref
524
- Symbolics. @register_symbolic get_sample_time (memory)
524
+ Symbolics. @register_symbolic get_sample_time (memory:: Parameter )
525
525
526
526
Base. convert (:: Type{T} , x:: Parameter{T} ) where {T <: Real } = x. ref
527
527
function Base. convert (:: Type{<:Parameter{T}} , x:: Number ) where {T <: Real }
603
603
function get_sampled_data (t, buffer)
604
604
get_sampled_data (t, buffer. data, buffer. ref, buffer. circular_buffer)
605
605
end
606
- Symbolics. @register_symbolic get_sampled_data (t, buffer)
607
- Symbolics. @register_symbolic get_sampled_data (t, buffer, dt, circular_buffer) false
606
+ Symbolics. @register_symbolic Parameter (data:: Vector , ref, circular_buffer:: Bool )
607
+ Symbolics. @register_symbolic get_sampled_data (t, buffer:: Parameter )
608
+ Symbolics. @register_symbolic get_sampled_data (t, buffer:: Vector , dt, circular_buffer) false
608
609
609
610
function Symbolics. derivative (:: typeof (get_sampled_data), args:: NTuple{2, Any} , :: Val{1} )
610
611
t = @inbounds args[1 ]
@@ -655,21 +656,23 @@ data input component.
655
656
buffer,
656
657
sample_time,
657
658
circular_buffer = true )
659
+ T = eltype (buffer)
658
660
pars = @parameters begin
659
- buffer = buffer # ::Vector{Real}
660
- sample_time = sample_time # ::Real
661
- circular_buffer = circular_buffer # ::Bool
661
+ buffer:: Vector{T} = buffer # ::Vector{Real}
662
+ sample_time:: T = sample_time # ::Real
663
+ circular_buffer:: Bool = circular_buffer # ::Bool
662
664
end
665
+ @parameters p:: Parameter{T} = Parameter (buffer, sample_time, circular_buffer)
663
666
vars = []
664
667
systems = @named begin
665
668
output = RealOutput ()
666
669
end
667
670
eqs = [
668
- output. u ~ get_sampled_data (t, buffer, sample_time, circular_buffer )
671
+ output. u ~ get_sampled_data (t, p )
669
672
]
670
- return ODESystem (eqs, t, vars, pars; name, systems,
673
+ return ODESystem (eqs, t, vars, [ pars; p] ; name, systems,
671
674
defaults = [
672
- output. u => get_sampled_data (0.0 , buffer, sample_time, circular_buffer )
675
+ output. u => get_sampled_data (0.0 , p )
673
676
])
674
677
end
675
678
@@ -684,9 +687,10 @@ data input component.
684
687
# Connectors:
685
688
- `output`
686
689
"""
687
- @component function SampledData (:: Val{SampledDataType.struct_based} ; name, buffer)
690
+ @component function SampledData (
691
+ :: Val{SampledDataType.struct_based} ; name, buffer:: Parameter )
688
692
pars = @parameters begin
689
- buffer = buffer # ::Parameter
693
+ buffer:: typeof (buffer) = buffer # ::Parameter
690
694
end
691
695
vars = []
692
696
systems = @named begin
0 commit comments