| *** 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 |