From f325051a0847293991255f253b562b13865cb9ec Mon Sep 17 00:00:00 2001 From: Wataru Otsubo Date: Tue, 29 Oct 2024 18:02:01 +0900 Subject: [PATCH] new(SlaveLogParser): power section parser --- src/SlaveLogParser.jl | 50 ++++++++++++++++++++++++++++++-- test/runtests.jl | 66 +++++++++++++++++++++++++------------------ 2 files changed, 87 insertions(+), 29 deletions(-) diff --git a/src/SlaveLogParser.jl b/src/SlaveLogParser.jl index 6f1429e..347be4d 100644 --- a/src/SlaveLogParser.jl +++ b/src/SlaveLogParser.jl @@ -1,6 +1,7 @@ module SlaveLogParser using StaticArrays +using Printf using AutoHashEquals const HEADER_QSPIP_START = "=============== Test QAPIp Start ===============" @@ -28,6 +29,7 @@ struct PowerResult result_3v3a::Float64 result_n3va::Float64 fpga_temp::Float64 + channelvals::SVector{16, @NamedTuple{dac::Int64, adc::Int64}} result::Bool end @@ -112,8 +114,52 @@ Parse Power section of given stateful iterator of log. - `lines`: Stateful iterator of slave log file lines """ function parse_power_section!(lines::Base.Iterators.Stateful) - # TODO - nothing + line = popfirst!(lines) + result_3v3d = let + m = match(r"^3V3D \[V\] = ([\d|\.]+)$", line) + parse(Float64, m[1]) + end + line = popfirst!(lines) + result_3v3a = let + m = match(r"^3V3A \[V\] = ([\d|\.]+)$", line) + parse(Float64, m[1]) + end + line = popfirst!(lines) + result_n3va = let + m = match(r"^-3VA \[V\] = ([-|\d|\.]+)$", line) + parse(Float64, m[1]) + end + line = popfirst!(lines) + fpga_temp = let + m = match(r"^FPGA Temprature \[C\] = ([\d|\.]+)$", line) + parse(Float64, m[1]) + end + line = popfirst!(lines) + line = popfirst!(lines) + channelvals = + Iterators.map(1:16) do ch + ch_s = @sprintf "%x" (ch - 1) + re = Regex( + "channel $(ch_s): DAC \\[mV\\] = (\\d+), ADC \\[mV\\] = (\\d+)\$", + ) + line = popfirst!(lines) # I'm not sure this mutating operation is called in sequence + m = match(re, line) + @info "" m line + (dac = parse(Int64, m[1]), adc = parse(Int64, m[2])) + end |> + Tuple |> + SVector + line = popfirst!(lines) + result = let + m = match(r"^Test Power Reseult = (\d)$", line) + if m[1] == "1" + true + else + false + end + end + + PowerResult(result_3v3d, result_3v3a, result_n3va, fpga_temp, channelvals, result) end """ diff --git a/test/runtests.jl b/test/runtests.jl index 2635f44..a68b07d 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -47,34 +47,46 @@ true || include("../src/PSBoardDataBase.jl") end @testset "Slave Log parser" begin - lines = Iterators.Stateful( - Iterators.drop(eachline("./input/slavelogs/main/430_100.txt"), 2280), - ) - result_asdtp = PSBoardDataBase.SlaveLogParser.parse_asdtp_section!(lines) + @testset "AsdtpResult" begin + lines = Iterators.Stateful( + Iterators.drop(eachline("./input/slavelogs/main/430_100.txt"), 2280), + ) + result_asdtp = PSBoardDataBase.SlaveLogParser.parse_asdtp_section!(lines) - @test result_asdtp == PSBoardDataBase.SlaveLogParser.AsdtpResult( - 1, - 0, - true, - fill(PSBoardDataBase.SlaveLogParser.AsdtpMeasurement.(fill((0, 1, 0), 32)), 8), - 0, - 1, - 1, - 0, - 0x1, - 0x1, - 0xff, - 0x0, - 0x0, - 0x0, - MVector((0x1001, 0x2001, 0x3001, 0x4001, 0x5001, 0x6001, 0x7001, 0x8001)), - ) - @info "pass" - lines = Iterators.Stateful( - Iterators.drop(eachline("./input/slavelogs/main/525_244.txt"), 2280), - ) - result_asdtp = PSBoardDataBase.SlaveLogParser.parse_asdtp_section!(lines) - @test result_asdtp.reconfig_done == 0 + @test result_asdtp == PSBoardDataBase.SlaveLogParser.AsdtpResult( + 1, + 0, + true, + fill( + PSBoardDataBase.SlaveLogParser.AsdtpMeasurement.(fill((0, 1, 0), 32)), + 8, + ), + 0, + 1, + 1, + 0, + 0x1, + 0x1, + 0xff, + 0x0, + 0x0, + 0x0, + MVector((0x1001, 0x2001, 0x3001, 0x4001, 0x5001, 0x6001, 0x7001, 0x8001)), + ) + + lines = Iterators.Stateful( + Iterators.drop(eachline("./input/slavelogs/main/525_244.txt"), 2280), + ) + result_asdtp = PSBoardDataBase.SlaveLogParser.parse_asdtp_section!(lines) + @test result_asdtp.reconfig_done == 0 + end + + @testset "Power" begin + lines = Iterators.Stateful( + Iterators.drop(eachline("./input/slavelogs/main/430_100.txt"), 1915), + ) + PSBoardDataBase.SlaveLogParser.parse_power_section!(lines) + end end @testset "Download data csv" begin