From 6476f0260c67d212d17dcf9d302560296703fc6d Mon Sep 17 00:00:00 2001
From: Michiel Cottaar <michiel.cottaar@ndcn.ox.ac.uk>
Date: Thu, 21 Mar 2024 13:07:21 +0000
Subject: [PATCH] Add scanner to sequence

---
 src/containers/base_sequences.jl | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/containers/base_sequences.jl b/src/containers/base_sequences.jl
index a229d43..67dfe5d 100644
--- a/src/containers/base_sequences.jl
+++ b/src/containers/base_sequences.jl
@@ -5,8 +5,9 @@ module BaseSequences
 import StaticArrays: SVector
 import JuMP: @constraint
 import ...Variables: get_free_variable, repetition_time, VariableType, duration, variables, VariableNotAvailable, Variables, set_simple_constraints!, TR, make_generic, gradient_strength, amplitude, phase, gradient_strength3
-import ...BuildSequences: global_model
+import ...BuildSequences: global_model, global_scanner
 import ...Components: EventComponent
+import ...Scanners: Scanner, B0
 import ..Abstract: ContainerBlock, start_time, readout_times, edge_times
 import ..BuildingBlocks: Wait, BuildingBlock, BaseBuildingBlock
 
@@ -140,16 +141,18 @@ Specific named sequences might define additional variables.
 """
 struct Sequence{S, N} <: BaseSequence{N}
     blocks :: SVector{N, Pair{<:Union{Symbol, Nothing}, <:ContainerBlock}}
+    scanner :: Scanner
 end
 
 function Sequence(blocks::AbstractVector; name=:Sequence, variables...)
     blocks = to_block_pair.(blocks)
-    res = Sequence{name, length(blocks)}(SVector{length(blocks)}(blocks))
+    res = Sequence{name, length(blocks)}(SVector{length(blocks)}(blocks), global_scanner())
     set_simple_constraints!(res, variables)
     return res
 end
 
 Base.show(io::IO, ::Type{<:Sequence{S, N}}) where {S, N} = print(io, S, "{$N}")
+B0(sequence::Sequence) = B0(sequence.scanner)
 
 Sequence(blocks...; kwargs...) = Sequence([blocks...]; kwargs...)
 
-- 
GitLab