goal("Verify CAN trigger message and reporting of RSSI and BER"); function wait_for_sensor_data($sock, $deviceUID, $uid) { while (true) { $msg = $sock->recv($deviceUID); if (!isset($msg['pub'])) continue; if ($msg['pub'] != "sensor:data") continue; foreach ($msg['result'] as $sensor) { if ($sensor['uid'] != $uid) continue; return $sensor; } } } $pubsub = new SubscribeSocket($test, $cfgSMPZMQPublishURI); $dut = new DNCM(); $test->IsTrue($dut->can_raw_dncm_communication_status(true, 5)); $test->step("Wait for sensor:data RSSI uid " . strval(DI_RPC_UID_SENSOR_RSSI) . " publish"); $sensorData = wait_for_sensor_data($pubsub, $cfgDeviceUid, DI_RPC_UID_SENSOR_RSSI); $test->info("RSSI: " . strval($sensorData['value'])); $test->step("Wait for sensor:data BER uid " . strval(DI_RPC_UID_SENSOR_BER) . " publish"); $sensorData = wait_for_sensor_data($pubsub, $cfgDeviceUid, DI_RPC_UID_SENSOR_BER); $test->info("BER: " . strval($sensorData['value']));