???????????????????????????? ??????????????/????????????????? ............/............... .........................../... ????????????????????????????? >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>> ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ???????????????????????????? ??????????????/????????????????? ............/............... .........................../... ????????????????????????????? >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>> ÿØÿà JFIF    ÿÛ „  ( %!1!%)+//.383,7(-.+  -%%-////---/-.+/--+------/------/--0+--/-/-----.-----ÿÀ  ¥2" ÿÄ     ÿÄ J    ! 1AQ"aq2‘#BR‚¡ÁÑ3br’¢±Âð$CSƒ²á4c“%DsÓñÿÄ   ÿÄ *  !1AQa‘"2q3±ð#b¡ÿÚ   ? ¼QxJQaÍuò¸Zö Úü8,ÐÚú "SSn<rçù–´âE—^ªBÖ9À\†¸ÔÁT­ÃÛ5 ëd´³Í#Ý;Þ38œî ¶H£M:wÎ3…³…âpÔF&‚FK¸9„â4àGEõªfÿ ‘ñ(ßw­pŽF|È¥ù®häðÍѶ¹‘[ÒinÙW¶ùñY˜Q{›K"išÒ[Ú8žë\F¹@-?v"ÔU”,ìöžkÿ {I‡£šÍ?e ríV ?> ......................................... ............................................................................. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>/>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #!/bin/bash # SPDX-License-Identifier: GPL-2.0 ALL_TESTS=" settime adjtime adjfreq " DEV=$1 ############################################################################## # Sanity checks if [[ "$(id -u)" -ne 0 ]]; then echo "SKIP: need root privileges" exit 0 fi if [[ "$DEV" == "" ]]; then echo "SKIP: PTP device not provided" exit 0 fi require_command() { local cmd=$1; shift if [[ ! -x "$(command -v "$cmd")" ]]; then echo "SKIP: $cmd not installed" exit 1 fi } phc_sanity() { phc_ctl $DEV get &> /dev/null if [ $? != 0 ]; then echo "SKIP: unknown clock $DEV: No such device" exit 1 fi } require_command phc_ctl phc_sanity ############################################################################## # Helpers # Exit status to return at the end. Set in case one of the tests fails. EXIT_STATUS=0 # Per-test return value. Clear at the beginning of each test. RET=0 check_err() { local err=$1 if [[ $RET -eq 0 && $err -ne 0 ]]; then RET=$err fi } log_test() { local test_name=$1 if [[ $RET -ne 0 ]]; then EXIT_STATUS=1 printf "TEST: %-60s [FAIL]\n" "$test_name" return 1 fi printf "TEST: %-60s [ OK ]\n" "$test_name" return 0 } tests_run() { local current_test for current_test in ${TESTS:-$ALL_TESTS}; do $current_test done } ############################################################################## # Tests settime_do() { local res res=$(phc_ctl $DEV set 0 wait 120.5 get 2> /dev/null \ | awk '/clock time is/{print $5}' \ | awk -F. '{print $1}') (( res == 120 )) } adjtime_do() { local res res=$(phc_ctl $DEV set 0 adj 10 get 2> /dev/null \ | awk '/clock time is/{print $5}' \ | awk -F. '{print $1}') (( res == 10 )) } adjfreq_do() { local res # Set the clock to be 1% faster res=$(phc_ctl $DEV freq 10000000 set 0 wait 100.5 get 2> /dev/null \ | awk '/clock time is/{print $5}' \ | awk -F. '{print $1}') (( res == 101 )) } ############################################################################## cleanup() { phc_ctl $DEV freq 0.0 &> /dev/null phc_ctl $DEV set &> /dev/null } settime() { RET=0 settime_do check_err $? log_test "settime" cleanup } adjtime() { RET=0 adjtime_do check_err $? log_test "adjtime" cleanup } adjfreq() { RET=0 adjfreq_do check_err $? log_test "adjfreq" cleanup } trap cleanup EXIT tests_run exit $EXIT_STATUS