1*** Variables ***
2${PLATFROM}                         platforms/boards/stm32f7_discovery-bb.repl
3${BIN}                              https://dl.antmicro.com/projects/renode/stm32f746g--zephyr-i2c-akm09918c.elf-s_700820-475c7207bf761d676c9e9d4380375a778448e72c
4${UART}                             sysbus.usart1
5${SENSOR}                           sysbus.i2c1.ak09918
6${CSV2RESD}                         ${RENODETOOLS}/csv2resd/csv2resd.py
7${SAMPLES_CSV}                      ${CURDIR}/ak09918-samples.csv
8
9*** Keywords ***
10Create Machine
11    Execute Command                 mach create
12    Execute Command                 machine LoadPlatformDescription @${PLATFROM}
13    Execute Command                 machine LoadPlatformDescriptionFromString "ak09918: Sensors.AK09916 @ i2c1 0xC"
14    Execute Command                 sysbus LoadELF @${BIN}
15    Create Terminal Tester          ${UART}
16
17Set Enviroment
18    [Arguments]                     ${x}=0.000000  ${y}=0.000000    ${z}=0.000000
19    Execute Command                 ${SENSOR} DefaultMagneticFluxDensityX ${x}
20    Execute Command                 ${SENSOR} DefaultMagneticFluxDensityY ${y}
21    Execute Command                 ${SENSOR} DefaultMagneticFluxDensityZ ${z}
22
23Check Enviroment
24    [Arguments]                     ${x}=0.000000  ${y}=0.000000    ${z}=0.000000
25    Wait For Line On Uart           ( x y z ) = ( ${x}${SPACE}${SPACE}${y}${SPACE}${SPACE}${z} )
26
27Create RESD File
28    [Arguments]                     ${path}
29    ${resd_path}=                   Allocate Temporary File
30    ${args}=                        Catenate  SEPARATOR=,
31    ...                             "--input", r"${path}"
32    ...                             "--map", "magnetic_flux_density:magnetic_flux_density_x,magnetic_flux_density_y,magnetic_flux_density_z:x,y,z"
33    ...                             "--start-time", "0"
34    ...                             "--frequency", "1"
35    ...                             r"${resd_path}"
36    Evaluate                        subprocess.run([sys.executable, "${CSV2RESD}", ${args}])  sys,subprocess
37    RETURN                          ${resd_path}
38
39*** Test Cases ***
40Should Read Magnetic Flux Density
41    Create Machine
42
43    Check Enviroment                x=0.000000  y=0.000000  z=0.000000
44
45    # sensor input value is in nanotesla
46    # SW outputs in Gauss, so expected value is `value * 0.00001`
47
48    Set Enviroment                  x=150
49    Check Enviroment                x=0.001500
50
51    Set Enviroment                  y=300
52    Check Enviroment                y=0.003000
53
54    Set Enviroment                  z=450
55    Check Enviroment                z=0.004500
56
57    Set Enviroment                  x=150   y=300  z=450
58    Check Enviroment                x=0.001500  y=0.003000  z=0.004500
59
60Should Read Samples From RESD
61    Create Machine
62
63    ${resd_path}=                   Create RESD File  ${SAMPLES_CSV}
64    Execute Command                 ${SENSOR} FeedMagneticSamplesFromRESD @${resd_path}
65
66    # sensor input value is in nanotesla
67    # SW outputs in Gauss, so expected value is `value * 0.00001`
68
69    Set Enviroment                  x=150   y=300  z=450
70
71    Check Enviroment                x=0.150000  y=0.300000  z=0.450000
72    Check Enviroment                x=0.300000  y=0.450000  z=0.600000
73    Check Enviroment                x=0.450000  y=0.600000  z=0.750000
74    # Sensor should go back to the default values after the RESD file finishes
75    Check Enviroment                x=0.001500  y=0.003000  z=0.004500
76    Check Enviroment                x=0.001500  y=0.003000  z=0.004500
77