diff --git a/resp/auto.go b/resp/auto.go index 741170861..06772567f 100644 --- a/resp/auto.go +++ b/resp/auto.go @@ -4452,12 +4452,12 @@ var Responses []Response = []Response{ Frequency: 0.1, StorageFormat: "Steim2", ClockDrift: 0.0001, - FilterList: []string{"Q330_FLbelow100-10"}, + FilterList: []string{"Q330_FLbelow100-1"}, Stages: []ResponseStage{ { Type: "a2d", Lookup: "A2D", - Filter: "Q330_FLbelow100-10", + Filter: "Q330_FLbelow100-1", StageSet: A2D{ Name: "A2D", Code: PZFunctionLaplaceZTransform, @@ -4465,7 +4465,7 @@ var Responses []Response = []Response{ Notes: "This filter is used to represent an Analogue to Digital converter stage, it has no poles or zeros.", }, Frequency: 0, - SampleRate: 10, + SampleRate: 1, Decimate: 1, Gain: 419430.4, //Scale: 0, @@ -4473,18 +4473,18 @@ var Responses []Response = []Response{ OutputUnits: "count", }, { Type: "fir", - Lookup: "Q330_FLbelow100-10", - Filter: "Q330_FLbelow100-10", + Lookup: "Q330_FLbelow100-1", + Filter: "Q330_FLbelow100-1", StageSet: FIR{ - Name: "Q330_FLbelow100-10", + Name: "Q330_FLbelow100-1", Causal: true, Symmetry: SymmetryNone, Decimation: 1, Gain: 1, - Factors: []float64{-2.0597958e-16, -1.5519102e-11, 7.9304069e-11, -3.0150714e-10, -1.7669693e-10, -1.8888486e-08, 1.2449361e-07, 1.304901e-07, -2.0533539e-07, 4.0815846e-07, -6.5899128e-07, 4.7585326e-07, -6.3008218e-07, -1.0460443e-07, 1.7084503e-06, 7.4276212e-07, 1.2474317e-05, -6.7966979e-05, -0.00056443545, 0.00054472715, -0.00053468937, 0.00020937638, 0.00054720584, -0.0017552962, 0.0032863827, -0.0048276843, 0.0058888913, -0.0058591378, 0.004131781, -0.0006405194, -0.0059056637, 0.014084742, -0.023359531, 0.032244694, -0.038683035, 0.040077368, -0.032945682, 0.011106618, 0.029495967, -0.13325238, 0.75599275, 0.4785976, -0.19098091, 0.10096915, -0.053503998, 0.019247033, 0.0029326196, -0.016045791, 0.022019494, -0.022595773, 0.019543809, -0.014588216, 0.0085995538, -0.0038916458, 0.00016215338, 0.0021506961, -0.0031280388, 0.0030863537, -0.002432076, 0.0015515951, -0.00073607391, 0.00015202511, 0.00013782453, -0.00050057166, 2.4348109e-05, -1.0669975e-06, -1.0471313e-06, 2.2158855e-06, -7.2825663e-07, 5.7027465e-07, 5.261794e-08, -3.0913692e-07, 2.5057057e-07, -2.7505838e-07, 2.0845148e-07, 4.7394077e-08, -5.0660254e-09, -1.7854858e-10, -2.4002857e-10, 8.3244798e-11, 5.487989e-12}, + Factors: []float64{1.2199295e-16, 3.1619205e-10, -4.3146524e-08, -5.6355576e-07, -0.00012670077, 0.0036581444, 0.0001675314, -0.0054045052, 0.012786087, -0.01803566, 0.014731158, 0.0032269409, -0.038596944, 0.088835267, -0.14824265, 0.2177661, 0.80991439, 0.12459593, -0.1230407, 0.088997526, -0.048501567, 0.014259116, 0.0068963909, -0.014443419, 0.012428614, -0.0065687263, 0.0015220402, 0.0031420928, 3.6562742e-05, -2.1529949e-06, -2.5978267e-07}, }, Frequency: 0, - SampleRate: 10, + SampleRate: 1, Decimate: 1, Gain: 0, //Scale: 0, @@ -5843,12 +5843,12 @@ var Responses []Response = []Response{ Frequency: 0.1, StorageFormat: "Steim2", ClockDrift: 0.0001, - FilterList: []string{"Q330_FLbelow100-10"}, + FilterList: []string{"Q330_FLbelow100-1"}, Stages: []ResponseStage{ { Type: "a2d", Lookup: "A2D", - Filter: "Q330_FLbelow100-10", + Filter: "Q330_FLbelow100-1", StageSet: A2D{ Name: "A2D", Code: PZFunctionLaplaceZTransform, @@ -5856,7 +5856,7 @@ var Responses []Response = []Response{ Notes: "This filter is used to represent an Analogue to Digital converter stage, it has no poles or zeros.", }, Frequency: 0, - SampleRate: 10, + SampleRate: 1, Decimate: 1, Gain: 419430.4, //Scale: 0, @@ -5864,18 +5864,18 @@ var Responses []Response = []Response{ OutputUnits: "count", }, { Type: "fir", - Lookup: "Q330_FLbelow100-10", - Filter: "Q330_FLbelow100-10", + Lookup: "Q330_FLbelow100-1", + Filter: "Q330_FLbelow100-1", StageSet: FIR{ - Name: "Q330_FLbelow100-10", + Name: "Q330_FLbelow100-1", Causal: true, Symmetry: SymmetryNone, Decimation: 1, Gain: 1, - Factors: []float64{-2.0597958e-16, -1.5519102e-11, 7.9304069e-11, -3.0150714e-10, -1.7669693e-10, -1.8888486e-08, 1.2449361e-07, 1.304901e-07, -2.0533539e-07, 4.0815846e-07, -6.5899128e-07, 4.7585326e-07, -6.3008218e-07, -1.0460443e-07, 1.7084503e-06, 7.4276212e-07, 1.2474317e-05, -6.7966979e-05, -0.00056443545, 0.00054472715, -0.00053468937, 0.00020937638, 0.00054720584, -0.0017552962, 0.0032863827, -0.0048276843, 0.0058888913, -0.0058591378, 0.004131781, -0.0006405194, -0.0059056637, 0.014084742, -0.023359531, 0.032244694, -0.038683035, 0.040077368, -0.032945682, 0.011106618, 0.029495967, -0.13325238, 0.75599275, 0.4785976, -0.19098091, 0.10096915, -0.053503998, 0.019247033, 0.0029326196, -0.016045791, 0.022019494, -0.022595773, 0.019543809, -0.014588216, 0.0085995538, -0.0038916458, 0.00016215338, 0.0021506961, -0.0031280388, 0.0030863537, -0.002432076, 0.0015515951, -0.00073607391, 0.00015202511, 0.00013782453, -0.00050057166, 2.4348109e-05, -1.0669975e-06, -1.0471313e-06, 2.2158855e-06, -7.2825663e-07, 5.7027465e-07, 5.261794e-08, -3.0913692e-07, 2.5057057e-07, -2.7505838e-07, 2.0845148e-07, 4.7394077e-08, -5.0660254e-09, -1.7854858e-10, -2.4002857e-10, 8.3244798e-11, 5.487989e-12}, + Factors: []float64{1.2199295e-16, 3.1619205e-10, -4.3146524e-08, -5.6355576e-07, -0.00012670077, 0.0036581444, 0.0001675314, -0.0054045052, 0.012786087, -0.01803566, 0.014731158, 0.0032269409, -0.038596944, 0.088835267, -0.14824265, 0.2177661, 0.80991439, 0.12459593, -0.1230407, 0.088997526, -0.048501567, 0.014259116, 0.0068963909, -0.014443419, 0.012428614, -0.0065687263, 0.0015220402, 0.0031420928, 3.6562742e-05, -2.1529949e-06, -2.5978267e-07}, }, Frequency: 0, - SampleRate: 10, + SampleRate: 1, Decimate: 1, Gain: 0, //Scale: 0, diff --git a/resp/generate/generate.go b/resp/generate/generate.go index adb1badba..e339efe19 100644 --- a/resp/generate/generate.go +++ b/resp/generate/generate.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "io" "strings" "text/template" @@ -181,8 +182,41 @@ func (g Generate) Polynomial(poly string) *Polynomial { return nil } +func (g Generate) Validate() error { + + // check responses + for k, r := range g.ResponseMap { + // check dataloger responses + for _, d := range r.Dataloggers { + label := fmt.Sprintf("\"%s\" [%s]", k, d.Label) + + // check sampling rates + var r float64 + for _, f := range d.Filters { + // look for a configured map + m, ok := g.FilterMap[f] + if !ok { + return fmt.Errorf("invalid filter %s: %s", label, f) + } + // choose the last sample rate + for _, s := range m { + r = s.SampleRate + } + } + if r != d.SampleRate { + return fmt.Errorf("invalid sample rate %s: found %v, expected %v", label, r, d.SampleRate) + } + } + } + return nil +} + func (g Generate) generate(w io.Writer) error { + if err := g.Validate(); err != nil { + return err + } + t, err := template.New("generate").Funcs( template.FuncMap{ "escape": func(s string) string { return strings.Join(strings.Fields(s), " ") }, diff --git a/resp/responses/configurations/pressure.yaml b/resp/responses/configurations/pressure.yaml index 24172ebc7..49eb1b8f1 100644 --- a/resp/responses/configurations/pressure.yaml +++ b/resp/responses/configurations/pressure.yaml @@ -20,7 +20,7 @@ response: storageformat: Steim2 clockdrift: 0.0001 filters: - - Q330_FLbelow100-10 + - Q330_FLbelow100-1 reversed: false - dataloggers: - Q330S/3 @@ -77,7 +77,7 @@ response: storageformat: Steim2 clockdrift: 0.0001 filters: - - Q330_FLbelow100-10 + - Q330_FLbelow100-1 reversed: false - dataloggers: - Q330S/6