blob: ebcc2b5de405841c7baf9289581c954b80885f30 [file] [log] [blame]
*** Variables ***
${SCRIPT} scripts/single-node/zedboard.resc
${BIN} https://dl.antmicro.com/projects/renode/zynq-interface-tests-icp10101-vmlinux-s_14145184-faf7b152d8913a54efee567c701b4f8a494d72ea
${DTB} https://dl.antmicro.com/projects/renode/zynq-linux-icp10101.dtb-s_11796-15666b09e3900565b3c5c31bbf08f8b2ecab1e93
${UART} sysbus.uart0
${SENSOR} sysbus.i2c0.barometer
${CSV2RESD} ${RENODETOOLS}/csv2resd/csv2resd.py
${SAMPLES_CSV} ${CURDIR}/ICP_101xx-samples.csv
${PROMPT} \#${SPACE}
*** Keywords ***
Create Machine
Execute Command set bin @${BIN}
Execute Command set dtb @${DTB}
Execute Command include @${SCRIPT}
Execute Command machine LoadPlatformDescriptionFromString "barometer: Sensors.ICP_101xx @ i2c0 0x50"
# Wait for Linux to boot up
Create Terminal Tester ${UART} defaultPauseEmulation=True
Wait For Prompt On Uart buildroot login: timeout=25
Write Line To Uart root
Wait For Prompt On Uart ${PROMPT}
Set Enviroment
[Arguments] ${temperature} ${pressure}
Execute Command ${SENSOR} DefaultTemperature ${temperature}
Execute Command ${SENSOR} DefaultPressure ${pressure}
Check Enviroment
# temperature read is in miliCelsius, pressure in kiloPascals
[Arguments] ${temperature} ${pressure}
Write Line To Uart cd /sys/bus/i2c/devices/0-0050/iio:device1/
Wait For Prompt On Uart ${PROMPT}
Write Line To Uart echo "`cat in_temp_offset` + `cat in_temp_raw` * `cat in_temp_scale`" | bc
Wait For Line On Uart ${temperature}
Wait For Prompt On Uart ${PROMPT}
Write Line To Uart cat in_pressure_input
Wait For Line On Uart ${pressure}
Create RESD File
[Arguments] ${path}
${resd_path}= Allocate Temporary File
${args}= Catenate SEPARATOR=,
... "--input", r"${path}"
... "--map", "temperature:temp::0"
... "--map", "pressure:pres::0"
# Offset since Linux manages to boot-up and display the first measurement, minus 0.03 second, to be sure the change will be seen
# Note that for different Linux build, this time might be different, and the tests will fail
... "--start-time", "5_220_000_000"
... "--frequency", "10"
... r"${resd_path}"
Evaluate subprocess.run([sys.executable, "${CSV2RESD}", ${args}]) sys,subprocess
[Return] ${resd_path}
*** Test Cases ***
Should Boot And Login
Create Machine
Provides booted-linux
Should Read Temperature And Pressure
Requires booted-linux
# The values set and received from the sensor will not match 1:1,
# since the sensor has finite precision, but they fit within sensor's accuracy range
Check Enviroment temperature=-.306624 pressure=29.999993
Set Enviroment temperature=25.00 pressure=30000
Check Enviroment temperature=24998.929632 pressure=29.999998
Set Enviroment temperature=25.00 pressure=68219
Check Enviroment temperature=24998.929632 pressure=68.218994
Set Enviroment temperature=37.82 pressure=101237
Check Enviroment temperature=37818.982320 pressure=101.236999
Should Read Temperature And Pressure From RESD
Requires booted-linux
${resd_path}= Create RESD File ${SAMPLES_CSV}
Execute Command ${SENSOR} FeedTemperatureSamplesFromRESD @${resd_path}
Execute Command ${SENSOR} FeedPressureSamplesFromRESD @${resd_path}
# Pressure will fluctuate a bit, since its calculation depends on the temperature
# these are very much dependent on a specific software build, because the samples need to be fed and read-out at strict intervals
# if the soft changes, frequency and start-time in RESD might need to change as well
Check Enviroment temperature=-21002.121744 pressure=29.999976
Check Enviroment temperature=-.306624 pressure=29.999993
Check Enviroment temperature=4998.472512 pressure=52.911995
Check Enviroment temperature=9999.921936 pressure=101.450998
Check Enviroment temperature=54999.615312 pressure=72.520999