[BUG] RGBD launch file doesn't publish any depth

I've just loaded up a fresh Raspberry Pi 4 running ubuntu 22.04 and ROS2 humble.
I've installed the binaries for depthai_ros_drivers and have now attempted to connect and use them as per instructions with both my OAK-D-LITE and OAK-D-PRO-FF.
I run the command:
ros2 launch depthai_ros_driver rgbd_pcl.launch.py
And all appears to be well:
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2023-05-03-14-48-17-968054-ubuntu-5422 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [robot_state_publisher-1]: process started with pid [5436] [INFO] [component_container-2]: process started with pid [5438] [robot_state_publisher-1] [INFO] [1683089299.682779649] [oak_state_publisher]: got segment oak [robot_state_publisher-1] [INFO] [1683089299.683104252] [oak_state_publisher]: got segment oak-d-base-frame [robot_state_publisher-1] [INFO] [1683089299.683159344] [oak_state_publisher]: got segment oak_imu_frame [robot_state_publisher-1] [INFO] [1683089299.683198491] [oak_state_publisher]: got segment oak_left_camera_frame [robot_state_publisher-1] [INFO] [1683089299.683231971] [oak_state_publisher]: got segment oak_left_camera_optical_frame [robot_state_publisher-1] [INFO] [1683089299.683263841] [oak_state_publisher]: got segment oak_model_origin [robot_state_publisher-1] [INFO] [1683089299.683295044] [oak_state_publisher]: got segment oak_rgb_camera_frame [robot_state_publisher-1] [INFO] [1683089299.683331599] [oak_state_publisher]: got segment oak_rgb_camera_optical_frame [robot_state_publisher-1] [INFO] [1683089299.683362820] [oak_state_publisher]: got segment oak_right_camera_frame [robot_state_publisher-1] [INFO] [1683089299.683393042] [oak_state_publisher]: got segment oak_right_camera_optical_frame [component_container-2] [INFO] [1683089299.788852912] [oak_container]: Load Library: /opt/ros/humble/lib/libdepth_image_proc.so [component_container-2] [INFO] [1683089300.033244733] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::ConvertMetricNode> [component_container-2] [INFO] [1683089300.033390211] [oak_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::ConvertMetricNode> [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/convert_metric_node' in container '/oak_container' [component_container-2] [INFO] [1683089300.105440042] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::ConvertMetricNode> [component_container-2] [INFO] [1683089300.105598464] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::CropForemostNode> [component_container-2] [INFO] [1683089300.105647000] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::DisparityNode> [component_container-2] [INFO] [1683089300.105684129] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyzNode> [component_container-2] [INFO] [1683089300.105718017] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyzRadialNode> [component_container-2] [INFO] [1683089300.105750164] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyziNode> [component_container-2] [INFO] [1683089300.105783793] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyziRadialNode> [component_container-2] [INFO] [1683089300.105815181] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyzrgbNode> [component_container-2] [INFO] [1683089300.105846773] [oak_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyzrgbNode> [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/point_cloud_xyzrgb_node' in container '/oak_container' [component_container-2] [INFO] [1683089300.144692815] [oak_container]: Load Library: /opt/ros/humble/lib/libdepthai_ros_driver.so [component_container-2] [INFO] [1683089300.160922848] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver::Camera> [component_container-2] [INFO] [1683089300.161100270] [oak_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver::Camera> [component_container-2] [INFO] [1683089300.216986678] [oak]: No ip/mxid specified, connecting to the next available device. [component_container-2] [INFO] [1683089303.323654419] [oak]: Camera with MXID: 18443010F1C3AB0F00 and Name: 1.1.2 connected! [component_container-2] [INFO] [1683089303.325463764] [oak]: USB SPEED: HIGH [component_container-2] [INFO] [1683089303.348316973] [oak]: Device type: OAK-D-PRO-FF [component_container-2] [INFO] [1683089303.352872086] [oak]: Pipeline type: RGBD [component_container-2] [INFO] [1683089303.383479664] [oak]: Finished setting up pipeline. [component_container-2] [INFO] [1683089303.658166276] [oak]: Camera ready! [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/oak' in container '/oak_container'
But I don't see anything being published to /oak/points (it exists but there is nothing publishing to it when I use ros2 topic hz to check).
I then:
export DEPTHAI_DEBUG=1
And try running it again. More detail here but nothing that stands out really for me as far as I can see:
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2023-05-03-14-55-06-723412-ubuntu-5581 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [robot_state_publisher-1]: process started with pid [5595] [INFO] [component_container-2]: process started with pid [5597] [robot_state_publisher-1] [INFO] [1683089708.105736775] [oak_state_publisher]: got segment oak [robot_state_publisher-1] [INFO] [1683089708.106065438] [oak_state_publisher]: got segment oak-d-base-frame [robot_state_publisher-1] [INFO] [1683089708.106124844] [oak_state_publisher]: got segment oak_imu_frame [robot_state_publisher-1] [INFO] [1683089708.106162547] [oak_state_publisher]: got segment oak_left_camera_frame [robot_state_publisher-1] [INFO] [1683089708.106196140] [oak_state_publisher]: got segment oak_left_camera_optical_frame [robot_state_publisher-1] [INFO] [1683089708.106227491] [oak_state_publisher]: got segment oak_model_origin [robot_state_publisher-1] [INFO] [1683089708.106261324] [oak_state_publisher]: got segment oak_rgb_camera_frame [robot_state_publisher-1] [INFO] [1683089708.106292490] [oak_state_publisher]: got segment oak_rgb_camera_optical_frame [robot_state_publisher-1] [INFO] [1683089708.106323490] [oak_state_publisher]: got segment oak_right_camera_frame [robot_state_publisher-1] [INFO] [1683089708.106353730] [oak_state_publisher]: got segment oak_right_camera_optical_frame [component_container-2] [INFO] [1683089708.214789918] [oak_container]: Load Library: /opt/ros/humble/lib/libdepth_image_proc.so [component_container-2] [INFO] [1683089708.470016735] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::ConvertMetricNode> [component_container-2] [INFO] [1683089708.470174770] [oak_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::ConvertMetricNode> [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/convert_metric_node' in container '/oak_container' [component_container-2] [INFO] [1683089708.565990432] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::ConvertMetricNode> [component_container-2] [INFO] [1683089708.566124560] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::CropForemostNode> [component_container-2] [INFO] [1683089708.566172745] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::DisparityNode> [component_container-2] [INFO] [1683089708.566236188] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyzNode> [component_container-2] [INFO] [1683089708.566276502] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyzRadialNode> [component_container-2] [INFO] [1683089708.566313909] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyziNode> [component_container-2] [INFO] [1683089708.566353039] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyziRadialNode> [component_container-2] [INFO] [1683089708.566390279] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyzrgbNode> [component_container-2] [INFO] [1683089708.566425964] [oak_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<depth_image_proc::PointCloudXyzrgbNode> [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/point_cloud_xyzrgb_node' in container '/oak_container' [component_container-2] [INFO] [1683089708.618424252] [oak_container]: Load Library: /opt/ros/humble/lib/libdepthai_ros_driver.so [component_container-2] [INFO] [1683089708.636274101] [oak_container]: Found class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver::Camera> [component_container-2] [INFO] [1683089708.636418655] [oak_container]: Instantiate class: rclcpp_components::NodeFactoryTemplate<depthai_ros_driver::Camera> [component_container-2] [2023-05-03 14:55:08.673] [info] DEPTHAI_DEBUG enabled, lowered DEPTHAI_LEVEL to 'debug' [component_container-2] [2023-05-03 14:55:08.673] [debug] Library information - version: 2.20.2, commit:  from , build: 2023-02-02 20:42:56 +0000 [component_container-2] [2023-05-03 14:55:08.679] [debug] Initialize - finished [component_container-2] [INFO] [1683089708.679765034] [oak]: No ip/mxid specified, connecting to the next available device. [component_container-2] [2023-05-03 14:55:08.898] [debug] Device - OpenVINO version: universal [component_container-2] [2023-05-03 14:55:08.899] [debug] Device - BoardConfig: {"camera":[],"emmc":null,"gpio":[],"logDevicePrints":true,"logPath":null,"logSizeMax":null,"logVerbosity":null,"network":{"mtu":0,"xlinkTcpNoDelay":true},"nonExclusiveMode":false,"pcieInternalClock":null,"sysctl":[],"uart":[],"usb":{"flashBootedPid":63037,"flashBootedVid":999,"maxSpeed":4,"pid":63035,"vid":999},"usb3PhyInternalClock":null,"watchdogInitialDelayMs":null,"watchdogTimeoutMs":null}  [component_container-2] libnop: [component_container-2] 0000: b9 10 b9 05 81 e7 03 81 3b f6 81 e7 03 81 3d f6 04 b9 02 00 01 ba 00 be be bb 00 bb 00 be be be [component_container-2] 0020: be be be 01 00 bb 00 [component_container-2] [2023-05-03 14:55:08.910] [debug] Resources - Archive 'depthai-bootloader-fwp-0.0.24.tar.xz' open: 5ms, archive read: 229ms [component_container-2] [2023-05-03 14:55:09.839] [debug] Resources - Archive 'depthai-device-fwp-8c3d6ac1c77b0bf7f9ea6fd4d962af37663d2fbd.tar.xz' open: 6ms, archive read: 1159ms [component_container-2] [2023-05-03 14:55:10.702] [debug] Searching for booted device: DeviceInfo(name=1.1.2, mxid=18443010F1C3AB0F00, X_LINK_BOOTED, X_LINK_USB_VSC, X_LINK_MYRIAD_X, X_LINK_SUCCESS), name used as hint only [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.063] [system] [warning] PRINT:LeonCss: BootloaderConfig.options1 checksum doesn't match. Is: 0x10304418 should be: 0x5E7D3A77 [component_container-2] GPIO boot mode 0x3, interface SPI_MASTER_EFF [component_container-2] Setting aons(0..4) back to boot from flash (offset = 0) [component_container-2] ====ENABLE WATCHDOG====1 [component_container-2] initial keepalive, countdown: 10 [component_container-2] PLL0: 700000 AUX_IO0: 24000 AUX_IO1: 24000 MCFG: 24000 MECFG: 24000 [component_container-2] Board init ret 3 [component_container-2] DepthAI Firmware - version: 8c3d6ac1c77b0bf7f9ea6fd4d962af37663d2fbd [component_container-2] eeprom configuration version: 55AA0007 [component_container-2] Reading VERSION 7 --- -> [component_container-2] eeprom configuration load from user area, status: 0 [component_container-2] Reading VERSION 7 --- -> [component_container-2] PMIC read  reg 0x19, val 0xb8 [component_container-2] PMIC read  reg 0x23, val 0x10 [component_container-2] PMIC read  reg 0x31, val 0x08 [component_container-2] PMIC read  reg 0x33, val 0x28 [component_container-2] Found a device/board entry matching the eeprom data - Board: OAK-D S2/Pro (R6 - generic) Device:  [component_container-2] Board options: 00000004 [component_container-2] --> brdInit ... [component_container-2] brdInitAuxDevices: Error: SC = 27: io_initialize expander_cam_gpios_1 [OK] [component_container-2]  [component_container-2] spi_N25Q_init: Flash JEDEC ID: c2 25 3a [component_container-2] SR CR: 40 07 [component_container-2] QUAD mode already enabled. Dummy cfg: 0x00 [component_container-2] Initialized pin: 56, mode: 7, level: 1, pad: 0x00000010 [component_container-2] Opening bus for IR driver: 1 [component_container-2] Failed to probe IR driver LM3644 [component_container-2] Opening bus for IR driver: 2 [component_container-2] LM3644 detected, ID = 0x02 [component_container-2] ===== IR write bus 2: 0x07 = 0x89 [component_container-2] ===== IR write bus 2: 0x02 = 0x01 [component_container-2] ===== IR write bus 2: 0x03 = 0x00 [component_container-2] ===== IR write bus 2: 0x04 = 0x00 [component_container-2] ===== IR write bus 2: 0x05 = 0x00 [component_container-2] ===== IR write bus 2: 0x06 = 0x00 [component_container-2] ===== IR write bus 2: 0x07 = 0x09 [component_container-2] ===== IR write bus 2: 0x08 = 0x1a [component_container-2] ===== IR write bus 2: 0x09 = 0x08 [component_container-2] ===== IR write bus 2: 0x01 = 0x24 [component_container-2] Opening bus for IR driver: 3 [component_container-2] Failed to probe IR driver LM3644 [component_container-2] Closing EEPROm! [component_container-2] MyriaX board configuration [component_container-2] pll0 frequency: 700000, ref0 frequency: 24000 [component_container-2] Is booted from flash by bootloader: 0 [component_container-2] Networking not available... [component_container-2] === Enumerating on socket: Cam_A / RGB / Center [component_container-2] Probe failed I2C1 0x1a reg 0016: expected 0214, read 0378 [component_container-2] Probe failed I2C1 0x1a reg 0016: expected 0214, read 0378 [component_container-2]   >> Registered camera A12N02A (imx378) as /dev/Camera_0 [component_container-2] camera socket: 0, name: color [component_container-2]         config - w: 1920, h: 1080, type: COLOR [component_container-2]         config - w: 3840, h: 2160, type: COLOR [component_container-2]         config - w: 4056, h: 3040, type: COLOR [component_container-2] Adding socket 0: cam 2. Sen name: IMX378 [component_container-2] === Enumerating on socket: Cam_B / Left [component_container-2]   >> Registered camera TG161B (ov9282) as /dev/Camera_1 [component_container-2] camera socket: 1, name: left [component_container-2]         config - w: 1280, h: 720, type: MONO [component_container-2]         config - w: 1280, h: 720, type: COLOR [component_container-2]         config - w: 1280, h: 800, type: MONO [component_container-2]         config - w: 1280, h: 800, type: COLOR [component_container-2] Adding socket 1: cam 5. Sen name: OV9282 [component_container-2] === Enumerating on socket: Cam_C / Right [component_container-2]   >> Registered camera TG161B (ov9282) as /dev/Camera_2 [component_container-2] camera socket: 2, name: right [component_container-2]         config - w: 1280, h: 720, type: MONO [component_container-2]         config - w: 1280, h: 720, type: COLOR [component_container-2]         config - w: 1280, h: 800, type: MONO [component_container-2]         config - w: 1280, h: 800, type: COLOR [component_container-2] Adding socket 2: cam 5. Sen name: OV9282 [component_container-2] Initializing XLink... [component_container-2] UsbPumpVscAppI_Event: 5 VSC2_EVENT_ATTACH [component_container-2] UsbPumpVscAppI_Event: 2 VSC2_EVENT_SUSPEND [component_container-2] initial keepalive, countdown: 9 [component_container-2] UsbPumpVscAppI_Event: 3 VSC2_EVENT_RESUME [component_container-2] UsbPumpVscAppI_Event: 4 VSC2_EVENT_RESET [component_container-2] UsbPumpVscAppI_Event: 4 VSC2_EVENT_RESET [component_container-2] UsbPumpVscAppI_Event: 4 VSC2_EVENT_RESET [component_container-2] UsbPumpVscAppI_Event: 4 VSC2_EVENT_RESET [component_container-2] UsbPumpVscAppI_Event: 0 VSC2_EVENT_INTERFACE_UP [component_container-2] Done! [component_container-2] Usb connection speed: High - USB 2.0 [component_container-2] Temperature: Driver registered. [component_container-2] Temperature: Initialized driver. [component_container-2] Temperature: Sensor opened: CSS. [component_container-2] Temperature: Sensor opened: MSS. [component_container-2] Temperature: Sensor opened: UPA. [component_container-2] Temperature: Sensor opened: DSS. [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.068] [system] [info] Memory Usage - DDR: 0.12 / 340.42 MiB, CMX: 2.05 / 2.50 MiB, LeonOS Heap: 7.25 / 77.32 MiB, LeonRT Heap: 2.89 / 41.23 MiB [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.068] [system] [info] Temperatures - Average: 43.78 °C, CSS: 44.87 °C, MSS 42.81 °C, UPA: 44.41 °C, DSS: 43.04 °C [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.068] [system] [info] Cpu Usage - LeonOS 65.90%, LeonRT: 1.60% [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.074] [system] [warning] PRINT:LeonCss: I: [Timesync] [   4583206] [XLin] startSync:130     Timesync | Callback not set [component_container-2] [INFO] [1683089711.795759418] [oak]: Camera with MXID: 18443010F1C3AB0F00 and Name: 1.1.2 connected! [component_container-2] [INFO] [1683089711.797450823] [oak]: USB SPEED: HIGH [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.096] [system] [warning] PRINT:LeonCss: Reading from Factory EEPROM contents [component_container-2] Reading VERSION 7 --- -> [component_container-2] [INFO] [1683089711.820363035] [oak]: Device type: OAK-D-PRO-FF [component_container-2] [INFO] [1683089711.824532575] [oak]: Pipeline type: RGBD [component_container-2] [INFO] [1683089711.855688721] [oak]: Finished setting up pipeline. [component_container-2] [2023-05-03 14:55:11.863] [debug] Schema dump: {"connections":[{"node1Id":9,"node1Output":"out","node1OutputGroup":"","node2Id":10,"node2Input":"in","node2InputGroup":""},{"node1Id":6,"node1Output":"out","node1OutputGroup":"","node2Id":3,"node2Input":"right","node2InputGroup":""},{"node1Id":4,"node1Output":"out","node1OutputGroup":"","node2Id":3,"node2Input":"left","node2InputGroup":""},{"node1Id":3,"node1Output":"depth","node1OutputGroup":"","node2Id":8,"node2Input":"in","node2InputGroup":""},{"node1Id":7,"node1Output":"out","node1OutputGroup":"","node2Id":6,"node2Input":"inputControl","node2InputGroup":""},{"node1Id":5,"node1Output":"out","node1OutputGroup":"","node2Id":4,"node2Input":"inputControl","node2InputGroup":""},{"node1Id":2,"node1Output":"out","node1OutputGroup":"","node2Id":0,"node2Input":"inputControl","node2InputGroup":""},{"node1Id":0,"node1Output":"isp","node1OutputGroup":"","node2Id":1,"node2Input":"in","node2InputGroup":""}],"globalProperties":{"calibData":null,"cameraTuningBlobSize":null,"cameraTuningBlobUri":"","leonCssFrequencyHz":700000000.0,"leonMssFrequencyHz":700000000.0,"pipelineName":null,"pipelineVersion":null,"xlinkChunkSize":-1},"nodes":[[0,{"id":0,"ioInfo":[[["","video"],{"blocking":false,"group":"","id":39,"name":"video","queueSize":8,"type":0,"waitForMessage":false}],[["","still"],{"blocking":false,"group":"","id":37,"name":"still","queueSize":8,"type":0,"waitForMessage":false}],[["","isp"],{"blocking":false,"group":"","id":36,"name":"isp","queueSize":8,"type":0,"waitForMessage":false}],[["","preview"],{"blocking":false,"group":"","id":38,"name":"preview","queueSize":8,"type":0,"waitForMessage":false}],[["","raw"],{"blocking":false,"group":"","id":35,"name":"raw","queueSize":8,"type":0,"waitForMessage":false}],[["","frameEvent"],{"blocking":false,"group":"","id":34,"name":"frameEvent","queueSize":8,"type":0,"waitForMessage":false}],[["","inputConfig"],{"blocking":false,"group":"","id":33,"name":"inputConfig","queueSize":8,"type":3,"waitForMessage":false}],[["","inputControl"],{"blocking":true,"group":"","id":32,"name":"inputControl","queueSize":8,"type":3,"waitForMessage":false}]],"name":"ColorCamera","properties":[185,24,185,27,0,3,0,0,0,185,3,0,0,0,185,5,0,0,0,0,0,185,5,0,0,0,0,0,0,0,0,0,0,0,0,185,3,0,0,0,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,189,0,255,0,0,0,129,160,1,129,160,1,133,0,5,133,208,2,255,255,0,136,0,0,240,65,136,0,0,128,191,136,0,0,128,191,1,185,4,2,3,2,3,3,3,4,4,4]}],[1,{"id":1,"ioInfo":[[["","in"],{"blocking":true,"group":"","id":31,"name":"in","queueSize":8,"type":3,"waitForMessage":true}]],"name":"XLinkOut","properties":[185,3,136,0,0,128,191,189,7,114,103,98,95,105,115,112,0]}],[2,{"id":2,"ioInfo":[[["","out"],{"blocking":false,"group":"","id":30,"name":"out","queueSize":8,"type":0,"waitForMessage":false}]],"name":"XLinkIn","properties":[185,3,189,11,114,103,98,95,99,111,110,116,114,111,108,130,0,0,80,0,8]}],[3,{"id":3,"ioInfo":[[["","depth"],{"blocking":false,"group":"","id":29,"name":"depth","queueSize":8,"type":0,"waitForMessage":false}],[["","rectifiedLeft"],{"blocking":false,"group":"","id":27,"name":"rectifiedLeft","queueSize":8,"type":0,"waitForMessage":false}],[["","syncedLeft"],{"blocking":false,"group":"","id":28,"name":"syncedLeft","queueSize":8,"type":0,"waitForMessage":false}],[["","syncedRight"],{"blocking":false,"group":"","id":24,"name":"syncedRight","queueSize":8,"type":0,"waitForMessage":false}],[["","rectifiedRight"],{"blocking":false,"group":"","id":23,"name":"rectifiedRight","queueSize":8,"type":0,"waitForMessage":false}],[["","outConfig"],{"blocking":false,"group":"","id":21,"name":"outConfig","queueSize":8,"type":0,"waitForMessage":false}],[["","debugExtDispLrCheckIt2"],{"blocking":false,"group":"","id":20,"name":"debugExtDispLrCheckIt2","queueSize":8,"type":0,"waitForMessage":false}],[["","debugDispCostDump"],{"blocking":false,"group":"","id":22,"name":"debugDispCostDump","queueSize":8,"type":0,"waitForMessage":false}],[["","confidenceMap"],{"blocking":false,"group":"","id":19,"name":"confidenceMap","queueSize":8,"type":0,"waitForMessage":false}],[["","debugDispLrCheckIt2"],{"blocking":false,"group":"","id":18,"name":"debugDispLrCheckIt2","queueSize":8,"type":0,"waitForMessage":false}],[["","debugDispLrCheckIt1"],{"blocking":false,"group":"","id":25,"name":"debugDispLrCheckIt1","queueSize":8,"type":0,"waitForMessage":false}],[["","debugExtDispLrCheckIt1"],{"blocking":false,"group":"","id":17,"name":"debugExtDispLrCheckIt1","queueSize":8,"type":0,"waitForMessage":false}],[["","disparity"],{"blocking":false,"group":"","id":26,"name":"disparity","queueSize":8,"type":0,"waitForMessage":false}],[["","inputConfig"],{"blocking":false,"group":"","id":16,"name":"inputConfig","queueSize":4,"type":3,"waitForMessage":false}],[["","left"],{"blocking":false,"group":"","id":15,"name":"left","queueSize":8,"type":3,"waitForMessage":true}],[["","right"],{"blocking":false,"group":"","id":14,"name":"right","queueSize":8,"type":3,"waitForMessage":true}]],"name":"StereoDepth","properties":[185,18,185,5,185,9,0,2,136,0,0,122,68,1,0,1,10,3,0,185,7,5,0,185,5,0,2,136,0,0,0,63,0,1,185,4,0,3,136,205,204,204,62,0,185,2,0,134,255,255,0,0,185,2,0,50,185,2,1,0,185,4,255,0,1,0,185,5,1,0,0,128,255,185,3,0,2,127,185,5,1,128,250,129,244,1,128,250,129,244,1,0,1,0,190,190,190,190,1,185,5,189,0,189,0,190,16,16,0,3,255,255,1,1,190,190]}],[4,{"id":4,"ioInfo":[[["","out"],{"blocking":false,"group":"","id":13,"name":"out","queueSize":8,"type":0,"waitForMessage":false}],[["","raw"],{"blocking":false,"group":"","id":12,"name":"raw","queueSize":8,"type":0,"waitForMessage":false}],[["","frameEvent"],{"blocking":false,"group":"","id":11,"name":"frameEvent","queueSize":8,"type":0,"waitForMessage":false}],[["","inputControl"],{"blocking":true,"group":"","id":10,"name":"inputControl","queueSize":8,"type":3,"waitForMessage":false}]],"name":"MonoCamera","properties":[185,8,185,27,0,3,0,0,0,185,3,0,0,0,185,5,0,0,0,0,0,185,5,0,0,0,0,0,0,0,0,0,0,0,0,185,3,0,0,0,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,189,0,255,0,136,0,0,240,65,3,3]}],[5,{"id":5,"ioInfo":[[["","out"],{"blocking":false,"group":"","id":9,"name":"out","queueSize":8,"type":0,"waitForMessage":false}]],"name":"XLinkIn","properties":[185,3,189,12,108,101,102,116,95,99,111,110,116,114,111,108,130,0,0,80,0,8]}],[6,{"id":6,"ioInfo":[[["","out"],{"blocking":false,"group":"","id":8,"name":"out","queueSize":8,"type":0,"waitForMessage":false}],[["","raw"],{"blocking":false,"group":"","id":7,"name":"raw","queueSize":8,"type":0,"waitForMessage":false}],[["","frameEvent"],{"blocking":false,"group":"","id":6,"name":"frameEvent","queueSize":8,"type":0,"waitForMessage":false}],[["","inputControl"],{"blocking":true,"group":"","id":5,"name":"inputControl","queueSize":8,"type":3,"waitForMessage":false}]],"name":"MonoCamera","properties":[185,8,185,27,0,3,0,0,0,185,3,0,0,0,185,5,0,0,0,0,0,185,5,0,0,0,0,0,0,0,0,0,0,0,0,185,3,0,0,0,185,3,0,0,0,0,0,0,0,0,0,0,0,0,0,2,189,0,255,0,136,0,0,240,65,3,3]}],[7,{"id":7,"ioInfo":[[["","out"],{"blocking":false,"group":"","id":4,"name":"out","queueSize":8,"type":0,"waitForMessage":false}]],"name":"XLinkIn","properties":[185,3,189,13,114,105,103,104,116,95,99,111,110,116,114,111,108,130,0,0,80,0,8]}],[8,{"id":8,"ioInfo":[[["","in"],{"blocking":true,"group":"","id":3,"name":"in","queueSize":8,"type":3,"waitForMessage":true}]],"name":"XLinkOut","properties":[185,3,136,0,0,128,191,189,13,115,116,101,114,101,111,95,115,116,101,114,101,111,0]}],[9,{"id":9,"ioInfo":[[["","out"],{"blocking":false,"group":"","id":2,"name":"out","queueSize":8,"type":0,"waitForMessage":false}]],"name":"IMU","properties":[185,4,186,2,185,5,0,0,0,129,144,1,20,185,5,0,0,0,129,144,1,21,1,10,0]}],[10,{"id":10,"ioInfo":[[["","in"],{"blocking":true,"group":"","id":1,"name":"in","queueSize":8,"type":3,"waitForMessage":true}]],"name":"XLinkOut","properties":[185,3,136,0,0,128,191,189,7,105,109,117,95,105,109,117,0]}]]} [component_container-2] [2023-05-03 14:55:11.863] [debug] Asset map dump: {"map":{}} [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.201] [MonoCamera(6)] [info] Using board socket: 2, id: 2 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.203] [MonoCamera(4)] [info] Using board socket: 1, id: 1 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.206] [system] [warning] PRINT:LeonMss: Calculating resources  [component_container-2] Number of cmx slices available 16  [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.205] [system] [info] SIPP (Signal Image Processing Pipeline) internal buffer size '16384'B [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.240] [system] [info] ColorCamera allocated resources: no shaves; cmx slices: [13-15]  [component_container-2] MonoCamera allocated resources: no shaves; cmx slices: [13-15]  [component_container-2] StereoDepth allocated resources: shaves: [14-14] cmx slices: [10-12]  [component_container-2]  [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.250] [system] [warning] PRINT:LeonCss: Error [-3] : Device not found error. It occurs when the device chip id is incorrectly read [component_container-2] XLinkIn | Created plgPool as shared: 1 [component_container-2] XLinkIn | Created plgPool as shared: 1 [component_container-2] XLinkIn | Created plgPool as shared: 1 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.250] [system] [warning] PRINT:LeonMss: sippPalThreadCreate: Thread /SIPP created [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.248] [StereoDepth(3)] [info] Using focal length from calibration intrinsics '793.4886' [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.261] [system] [warning] PRINT:LeonCss: [1970-01-01 00:00:01.256] [info] Time taken to build the pipeline: 58ms [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.261] [system] [warning] PRINT:LeonMss: finished sippPrePrepareLinesFreeRT [component_container-2] LRT - build pipeline call [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.272] [system] [warning] PRINT:LeonCss: Broadcast9282: Successfully registered camera TG161B (ov9282) as /dev/Camera_bcast0 [component_container-2] == SW-SYNC: 1, cam mask 0x7 [component_container-2] !!! Master Slave config is: single_master_slave !!! [component_container-2] Starting camera 0 [component_container-2] [E] app_guzzi_command_callback():173: command->id:1 [component_container-2] [E] app_guzzi_command_callback():193: command "1 0" sent [component_container-2]  [component_container-2] [E] iq_debug_create():161: iq_debug address 0x88200940 [component_container-2] [E] hai_cm_driver_load_dtp():852: Features for camera A12N02A (imx378) are received [component_container-2] [E] set_dtp_ids():396: //VIV HAL: Undefined VCM DTP ID 0 [component_container-2] [E] set_dtp_ids():405: //VIV HAL: Undefined NVM DTP ID 0 [component_container-2] [E] set_dtp_ids():414: //VIV HAL: Undefined lights DTP ID 0 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.283] [system] [warning] PRINT:LeonCss: [E] camera_control_start():347: Camera_id = 0 started. [component_container-2]  [component_container-2] [E] hai_cm_sensor_select_mode():164: No suitable sensor mode. Selecting default one - 0 for start 1920x1080 at 0x0 fps min 0.000000 max 30.000000 [component_container-2] [E] hai_cm_sensor_select_mode():164: No suitable sensor mode. Selecting default one - 0 for start 1920x1080 at 0x0 fps min 0.000000 max 30.000000 [component_container-2] ============================ Configuring IMX378 with mode 0 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.294] [system] [warning] PRINT:LeonCss: Reading..........Reading VERSION 7 --- -> [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.308] [system] [warning] PRINT:LeonCss: ========== IMX378 /dev/i2c.Camera_0_sen, FSIN enable 0, output 0 [component_container-2] [E] vpipe_conv_config():1465: Exit Ok [component_container-2] [E] callback():123: Camera CB START_DONE event. [component_container-2] [E] app_guzzi_command_callback():173: command->id:5 [component_container-2] [E] camera_control_focus_trigger():591: Focus trigger succeeded camera_id = 0. [component_container-2]  [component_container-2] [E] app_guzzi_command_callback():218: command "5 0" sent [component_container-2]  [component_container-2] Starting camera 1 [component_container-2] [E] app_guzzi_command_callback():173: command->id:1 [component_container-2] [E] app_guzzi_command_callback():193: command "1 1" sent [component_container-2]  [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.319] [system] [warning] PRINT:LeonCss: [E] iq_debug_create():161: iq_debug address 0x87d61580 [component_container-2] [E] hai_cm_driver_load_dtp():852: Features for camera TG161B (ov9282) are received [component_container-2] [E] set_dtp_ids():396: //VIV HAL: Undefined VCM DTP ID 0 [component_container-2] [E] set_dtp_ids():405: //VIV HAL: Undefined NVM DTP ID 0 [component_container-2] [E] set_dtp_ids():414: //VIV HAL: Undefined lights DTP ID 0 [component_container-2] [E] camera_control_start():347: Camera_id = 1 started. [component_container-2]  [component_container-2] [E] lens_move_to_def_pos_do():251: Error executing af_move_to_pos()! [component_container-2] [E] hai_cm_sensor_select_mode():164: No suitable sensor mode. Selecting default one - 0 for start 1280x720 at 0x0 fps min 0.000000 max 30.000000 [component_container-2] [E] hai_cm_sensor_select_mode():164: No suitable sensor mode. Selecting default one - 0 for start 1280x720 at 0x0 fps min 0.000000 max 30.000000 [component_container-2] === osDrvOV9282Control: set mode for Camera_1_sen [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.330] [system] [warning] PRINT:LeonCss: inc_camera_process set exposure and gain [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.341] [system] [warning] PRINT:LeonCss: [E] vpipe_conv_config():1465: Exit Ok [component_container-2] [E] callback():123: Camera CB START_DONE event. [component_container-2] Starting camera 2 [component_container-2] [E] app_guzzi_command_callback():173: command->id:1 [component_container-2] [E] app_guzzi_command_callback():193: command "1 2" sent [component_container-2]  [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.352] [system] [warning] PRINT:LeonCss: [E] iq_debug_create():161: iq_debug address 0x878d9340 [component_container-2] [E] hai_cm_driver_load_dtp():852: Features for camera TG161B (ov9282) are received [component_container-2] [E] set_dtp_ids():396: //VIV HAL: Undefined VCM DTP ID 0 [component_container-2] [E] set_dtp_ids():405: //VIV HAL: Undefined NVM DTP ID 0 [component_container-2] [E] set_dtp_ids():414: //VIV HAL: Undefined lights DTP ID 0 [component_container-2] [E] camera_control_start():347: Camera_id = 2 started. [component_container-2]  [component_container-2] [E] lens_move_to_def_pos_do():251: Error executing af_move_to_pos()! [component_container-2] [E] hai_cm_sensor_select_mode():164: No suitable sensor mode. Selecting default one - 0 for start 1280x720 at 0x0 fps min 0.000000 max 30.000000 [component_container-2] [E] hai_cm_sensor_select_mode():164: No suitable sensor mode. Selecting default one - 0 for start 1280x720 at 0x0 fps min 0.000000 max 30.000000 [component_container-2] === osDrvOV9282Control: set mode for Camera_2_sen [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.363] [system] [warning] PRINT:LeonCss: inc_camera_process set exposure and gain [component_container-2] Reading..........Reading VERSION 7 --- -> [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.374] [system] [warning] PRINT:LeonCss: [E] vpipe_conv_config():1465: Exit Ok [component_container-2] [E] guzzi_event_send():324: Send: Event ID=20003 no registered recipient [component_container-2] [E] guzzi_event_send():324: Send: Event ID=20004 no registered recipient [component_container-2] [E] callback():123: Camera CB START_DONE event. [component_container-2] Starting Guzzi command handling loop... [component_container-2] inc_camera_process set exposure and gain [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.385] [system] [warning] PRINT:LeonCss: Reading..........Reading VERSION 7 --- -> [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.418] [system] [warning] PRINT:LeonCss: 0.000 mA -> 0 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.418] [system] [warning] PRINT:LeonMss: finished sippPrePrepareLinesFreeRT [component_container-2] [INFO] [1683089712.195363940] [oak]: Camera ready! [INFO] [launch_ros.actions.load_composable_nodes]: Loaded node '/oak' in container '/oak_container' [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.429] [system] [warning] PRINT:LeonCss: dot: 0.00 mA, flood: 0.00 mA, duty = 1.00 [component_container-2] ===== IR write bus 2: 0x04 = 0x00 [component_container-2] ===== IR write bus 2: 0x01 = 0x24 [component_container-2] 200.000 mA -> 16 [component_container-2] dot: 0.00 mA, flood: 200.00 mA, duty = 0.30 [component_container-2] ===== IR write bus 2: 0x03 = 0x10 [component_container-2] ===== IR write bus 2: 0x01 = 0x25 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.429] [system] [warning] PRINT:LeonMss: finished sippPrePrepareLinesFreeRT [component_container-2] finished sippPrePrepareLinesFreeRT [component_container-2] finished sippPrePrepareLinesFreeRT [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.462] [system] [warning] PRINT:LeonMss: finished sippPrePrepareLinesFreeRT [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.473] [system] [warning] PRINT:LeonCss: SH2 Reset. [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.492] [IMU(9)] [info] IMU product ID: [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.492] [IMU(9)] [info] Part 10004563 : Version 3.9.9 Build 2 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.492] [IMU(9)] [info] Part 10003606 : Version 1.8.0 Build 338 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.492] [IMU(9)] [info] Part 10004135 : Version 5.5.3 Build 162 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.492] [IMU(9)] [info] Part 10004149 : Version 5.1.12 Build 183 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.495] [system] [warning] PRINT:LeonCss: waited for reset 0 ms  [component_container-2] Reading product id  [component_container-2] [18443010F1C3AB0F00] [1.1.2] [1.539] [system] [warning] PRINT:LeonCss: initial keepalive, countdown: 8 [component_container-2] [18443010F1C3AB0F00] [1.1.2] [2.069] [system] [info] Memory Usage - DDR: 168.07 / 340.42 MiB, CMX: 2.10 / 2.50 MiB, LeonOS Heap: 49.10 / 77.32 MiB, LeonRT Heap: 4.54 / 41.23 MiB [component_container-2] [18443010F1C3AB0F00] [1.1.2] [2.069] [system] [info] Temperatures - Average: 45.32 °C, CSS: 46.23 °C, MSS 44.64 °C, UPA: 46.00 °C, DSS: 44.41 °C
It would be lovely for a bit more of a step by step for this little guy and its companion driver as it seems there's quite a lot of jiggling to do to get things running. Even just some more commenting and possible options to configure each camera as needed to get it up and running.

Hi, is this occurring when listening on topics from another device? Can you echo image topics?

Closing due to inactivity, please feel free to reopen it if you have further questions/comments.


Motivation

the readme should state what the benefits of this config-template approach is in comparision to regular php-cs-fixer based config files (or/and what the problems of the regular php-cs-fixer are)

Thank you, @staabm - that's a good point, will follow-up!


Improve deploy target options

Rationale for add target.extraOptions:
I'd like to use krops for unattended local deployments that don't write to the local $HOME/.ssh config. This is only possible with custom SSH options (or via bind-mounting $HOME).
Edit: This fixes #6.

Cool stuff, thanks!

Documentation has been added in https://github.com/krebs/krops/commit/476fb97dc91032dcef7e812a7473ea7df90ae537.


Add examples and docstrings for :class:~.BarChart

Changelog / Overview

Add example and docstring to :class:~.BarChart

Motivation

This addition will help the users in the understanding of how this class works.
Explanation for Changes

The addition of typings makes it easier to know what types to uses and example shows how the user could use this class their projects.

Documentation Reference

Testing Status

All tests passed locally.
Further Comments

Checklist

[x] I have read the Contributing Guidelines
[x] I have written a descriptive PR title (see top of PR template for examples)
[x] I have written a changelog entry for the PR or deem it unnecessary
[] My new functions/classes either have a docstring or are private
[ ] My new functions/classes have tests added and (optional) examples in the docs
[x] My new documentation builds, looks correctly formatted, and adds no additional build warnings

Reviewer Checklist

[ ] The PR title is descriptive enough
[ ] The PR is labeled correctly
[ ] The changelog entry is completed if necessary
[ ] Newly added functions/classes either have a docstring or are private
[ ] Newly added functions/classes have tests added and (optional) examples in the docs
[ ] Newly added documentation builds, looks correctly formatted, and adds no additional build warnings

Thanks for your contribution, that is a really creative example! :)

Exception occurred:
File “/home/docs/checkouts/readthedocs.org/user_builds/manimce/envs/1642/lib/python3.8/shutil.py”, line 261, in copyfile
with open(src, ‘rb’) as fsrc, open(dst, ‘wb’) as fdst:
FileNotFoundError: [Errno 2] No such file or directory: ‘/home/docs/checkouts/readthedocs.org/user_builds/manimce/checkouts/1642/docs/source/media/videos/480p30/BarChartExample-1.mp4’

Docs are failing, because you forgot to put the save last frame option.

example is now here:
https://manimce--1642.org.readthedocs.build/en/1642/reference/manim.mobject.probability.BarChart.html?highlight=bar#manim.mobject.probability.BarChart

I find the labels a bit small, but for this pr it is sufficient.
It might be a good idea to introduce a new parameter that rotates the labels by 45 Degrees, so that the font can get increased, but in a future pr and not in this one.

Can you change the example to use Integers (0 decimal places) in the y-axis labels? Or is that not possible with the class right now? (I don't see an axis config parameter) If it's not possible, could you create an issue for it?

I tired doing that and it isn't possible as there is no parameter for it yet. And it doesn't use axes but rather using two Lines
def add_axes(self, width, height):
        x_axis = Line(self.tick_width * LEFT / 2, width * RIGHT)
        y_axis = Line(MED_LARGE_BUFF * DOWN, height * UP)

and not the Axes.


Error on login, using default credentials: " User does not exist"

What happened:
Error on login to litmus chaos using default credentials.
What you expected to happen:
Successful authentication to the Chaos Center.
Where can this issue be corrected? (optional)

How to reproduce it (as minimally and precisely as possible):
Follow you documents below to setup litmus chaos and then try login with the default credentials shared in the below documents.
https://docs.litmuschaos.io/docs/getting-started/installation
https://docs.litmuschaos.io/docs/user-guides/setup-without-ingress#with-loadbalancer (since i accessed with loadbalancer)
Anything else we need to know?:
Would be happy to help out with more details in case contacted

@PRO-INDIA  It should work with same credentials in the case of a load balancer


STATUS_DLL_NOT_FOUND

Hello, I'm a window user trying to enable CUDA in my otherwise functionning app, I have installed locally PyTorch 2.0.0 + the NVIDIA packages, and I can check in a python terminal that CUDA is enabled (torch.cuda.is_available() give me True). My current problem has to do with Windows 11 it seems, I get this error when trying to launch a cargo run :
exit code: 0xc0000135, STATUS_DLL_NOT_FOUND
The program doesn't even launch, so the main isn't called and I can't debug anything beyond that stage. I'm trying to read about this error but I could use some help, I understand that I have to download and install missing DLL, but which one to target? Did anyone have the same problem and could give me a hint about how to solve this issue ?
Thanks!

EDIT :
I found a solution that worked for me, 2 dll files were actually missing (you can check their names if you try to directly launch the .exe file in the ./target/debug folder). In my case, torch_cpu.dll and c10.dll were missing.
I searched for them on my system and added their path to the PATH env variable ('C:\Python311\Lib\site-packages\torch\lib' on my PC). Worked like a charmed!


Need a way to delete schedule using AJAX API

Hi,
If I have a schedule for a flow set to say  run every 4 hours. If I create a new schedule again for the same flow with run every 12 hours , will it overwrite the existing schedule?
Also what job parameters are taken into account when creating a schedule in azkaban?
I dont see a way to delete existing schedules  via ajax api as it needs the schedule id which isn't returned when creating a schedule.

It seems that there is ajax aoi call to remove schedule. Also if you create a new schedule for a flow which already has a schedule then it gets overwritten


Update readme and message shown to user.

These are just some small changes that I noticed could help with
the readability of the readme. I tried to make sure I didn't change
the meaning of anything, but let me know if I didn't capture what you
wanted to get across anywhere.
Thanks for this great plugin. Cheers.

Merged. Thanks

Merged. Thanks


Ignoring robots.txt and .htaccess?

I believe that those files are important parts of the application and should be versioned, being .htaccess the most important one. They shouldn't be ignored.

You may want to redo each of these commits on their own feature branch.  I believe that new pushes into your master branch are getting included in the original pull request.


Observerd values are not being displayed in the final output given by EF5 model.

I tried to run the EF5 model using all the required files. The model ran successfully, and I got the output file with discharge values. But the output excel file was not showing the observed values in it. Though I tried with all the formats of dates in the observed file, which are accepted by EF5(as shown in the training video in the EF5 website), I was unsuccessful. But when I tried with the observed values of the example2 basin(whose date format is not according to the prescribed format) available in the short course training package, observed values were seen in my output excel file for my study area. May I know the reason for the same.
I also observed that the format of dates in the output file is changing for every ten dates. why is it so?
I am attaching the images of the observed data of example2, sample observed data of my study area and the output file for your kind reference.

@zflamig Sai is my PhD student. And we ran into this issue as he has described. Somehow the observed data is not being read correctly. And also, the date format seems to fluctuate. Would appreciate any help!

Excel is parsing some of your dates, probably you are using a locale that uses dd/mm/yyyy notation. EF5 supports either mm/dd/yyyy or yyyy/mm/dd format. So reformat your observation times to be yyyy/mm/dd hh:mm and it should work.


Replace offending language

Is this a BUG REPORT or FEATURE REQUEST?:

Uncomment only one, leave it on its own line:

/kind bug

/kind enhancement

What happened:
We have several offending terms within the repo and need to fix that.
(Note: please add to this if you find something)
I.e.

master: https://github.com/kubevirt/kubevirt/search?q=master

What you expected to happen:
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
Environment:

KubeVirt version (use virtctl version):
Kubernetes version (use kubectl version):
VM or VMI specifications:
Cloud provider or hardware configuration:
OS (e.g. from /etc/os-release):
Kernel (e.g. uname -a):
Install tools:
Others:

/lifecycle frozen

/remove-lifecycle stale

I forgot to mention this issue in the PR #6814. Sorry about that.

/close
Should be done for this repo.


Can't use Context menu options

Is it a bug or something?
Although i have selected the text, Surround With options still don't show up. So the Sort array option is.

When i restart sublime text, like the first 1 second i right click and see context menu. But after that, it seem hide and i can't see it anymore like above.

The problem is that the scope of the view is HTML and not JS.. Infact the syntax is setted to HTML.. I will fix this problem soon as possible!
Thanks to the support.

The same problem happens with vue files too.

Try the new version and let me know!!
Thanks to the support!


Support JSPM

Hi, I have added a package.config.
This allows the plugin to be installable using JSPM.
I took the content of the slidebars.jquery.json, but if you need to make any changes, don't hesitate.
I also bumped the version to 0.10.4.

Hey,
Thanks for this, I'll add it into the next release.
0.10.* is over... there will be no more development on it. Version 2 is coming along nicely so I'll mod this to accommodate for that very soon!
Thanks,
Adam

Alright.
By the way, this should also allow you to publish the package on NPM.

Ahh that's great news, thanks for letting me know. I'll definitely add this in.


chore: logged out status for cfd section

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

18 of 41 (43.9%)  changed or added relevant lines in 12 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.5%) to 51.534%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/cfd/components/CTraderList/CTraderList.tsx
1
2
50.0%

src/cfd/components/DxtradePlatformList/DxtradePlatformList.tsx
2
3
66.67%

src/cfd/flows/MT5/MT5AccountIcon.tsx
1
3
33.33%

src/cfd/flows/CTrader/AvailableCTraderAccountsList/AvailableCTraderAccountsList.tsx
1
6
16.67%

src/cfd/flows/OtherCFDs/Dxtrade/AvailableDxtradeAccountsList/AvailableDxtradeAccountsList.tsx
1
6
16.67%

src/cfd/flows/MT5/LoggedOutMT5AccountsList/LoggedOutMT5AccountsList.tsx
6
15
40.0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.5%

Covered Lines:
1122

Relevant Lines:
1817

💛  - Coveralls


Integrate cosign provenance attachment to Docker

Currently we are using the cosign cli to attach the provenance file to a Docker image.
Investigate if we can use https://github.com/sigstore/cosign/tree/bad18e5cb25f2cb86301d248e7e4ed39d49df143/pkg/cosign as a library to natively integrate this step in slsa-provenance.

I can take care of that one @marcofranssen if you want 🙋🏻♂

:wave: @developer-guy I'm OK with that. Just know we are currently also looking for a solution for registry authentication.
See https://github.com/philips-labs/slsa-provenance-action/pull/130#issuecomment-1034596373.


[Question] When the engine is scheduled, the following error process is not alive is reported:

Before asking

[X] I have read the How to ask for help (我已阅读如何寻求帮助指引文档).

Your environment

Linkis version used: 1.1.2
Environment name and version:

cdh-5.14.2
hdp-3.1.5
hive-2.1.1
spark-3.2.1
scala-2.12.2
jdk 1.8.0_121
....

Describe your questions
When the engine is scheduled, the following error process is not alive is reported:

Eureka service list

eg:
Some logs info or acctch file

linkis-xxx.log:

<!--日志文字贴到这里-->

log file:

linkis-xxx.log

The server installs the anaconda3 package manager. After debugging python, two problems are found: (1) lack of pandas and matplotlib modules, which need to be installed manually;
(2) When the new version of the python engine is executed, it depends on the high version of python. First, install python3, then make a symbolic link (as shown in the figure below), and restart the engineplugin service.

The latest 1.1.3 version has removed the strong dependency on pandas and matplotlib
服务器安装anaconda3 包管理器，经过对python调试，发现两个问题：（1）缺乏pandas、matplotlib模块，需要手动安装;
(2)新版python引擎执 行时，依赖python高版本，首先安装python3，其次做下符号链接（如下图），重启engineplugin服务。

最新1.1.3版本已经移除了对pandas和matplotlib的强依赖


Proposal: Turning on Atomic flag with Helm style plugins

Description
Maybe we should turn on this flag to ensure that there will be no dirty data when the Install() process fails.

close #183


Add instruction on how to exit virtualenv.

I had to look this up.

I've ran into this same issue, lgtm.


Automatic complex type mapping

I believe it would be quite useful for Node-in-.NET applications to support automatic mapping of .NET types to JS classes, like it should already be supported with JSMarshaller and TypeExporter for .NET-in-Node use cases.

@samardzicneo Can you explain in more detail, and/or give an example of what you are proposing?
There is already fairly thorough automatic type mapping - what is the scenario that it does not work?
https://github.com/microsoft/node-api-dotnet?tab=readme-ov-file#automatic-efficient-marshaling

@jasongin Yeah so basically I'm looking for something like the JSExport attribute as described there but in API form: Let me call an imaginary method TypeMarshaller.RegisterType(Type type) at runtime and it'd use the reflection code already part of the project (for .NET-in-Node) to map that type and any types it depends on into JS objects.
I've been having trouble with source generators in general and especially with support for dynamically loaded assemblies in one of the projects I'm trying to incorporate this in, source generators wouldn't even work.

If I understand correctly, what you want is available via the following methods in the JSMarshaller class:
    /// <summary>
    /// Converts from a JS value to a specified type.
    /// </summary>
    /// <typeparam name="T">The type the value will be converted to.</typeparam>
    public T FromJS<T>(JSValue value);

    /// <summary>
    /// Converts from a specified type to a JS value.
    /// </summary>
    /// <typeparam name="T">The type the value will be converted from.</typeparam>
    public JSValue ToJS<T>(T value);

These methods generate code as necessary and compile a delegate (if not already in the cache) and then invoke it to convert between .NET and JavaScript types. The conversions are exactly the same as what you get from source generation, since both build-time and runtime code-generation are built on JSMarshaller which generates expression trees.
You can also access the same capability from the JavaScript side with the dotnet.load(assembly) method, which loads all of the assemblies namespaces and types onto the dotnet object, with automatic conversions between .NET and JS types. Though with I recommend using the type-definitions generation through MSBuild. See dynamic-invoke.md
Some of this is not documented very well and since there are many variations of .NET/JS interop scenarios I understand it can be unclear what is the best way to approach any task using this project. I'm working on writing some better documentation, but it's not ready yet.

@jasongin With JSMarshaller specifically I got the impression that it's meant for .NET-in-Node and not for usage outside of that, since I've been receiving errors when using it related to dependency resolution. I don't have my laptop on hand for an exact exception but it was related to resolving the property types inside the class being mapped.

I got the impression that it's meant for .NET-in-Node and not for usage outside of that

JSMarshaller is used for both, because in either case objects have to be marshalled in both directions.

I've been receiving errors when using it related to dependency resolution... it was related to resolving the property types inside the class being mapped

That could be a bug. We are still finding occasional issues in that area with more complex object graphs. Please share the error message and stack trace when you get a chance.

@jasongin Sorry that I took a while, here's the error:
Microsoft.JavaScript.NodeApi.JSException: Type proxy not found for dependency: System.Int32
   at Microsoft.JavaScript.NodeApi.DotNetHost.TypeExporter.ExportTypeIfSupported(Type dependencyType, Boolean deferMembers) in /Users/samardzicneo/RiderProjects/nvite/Microsoft.JavaScript.NodeApi/DotNetHost/TypeExporter.cs:line 541
   at Microsoft.JavaScript.NodeApi.DotNetHost.TypeExporter.<>c__DisplayClass20_0.<ExportProperties>b__0(JSCallbackArgs args) in /Users/samardzicneo/RiderProjects/nvite/Microsoft.JavaScript.NodeApi/DotNetHost/TypeExporter.cs:line 621
   at Microsoft.JavaScript.NodeApi.JSValue.InvokeCallback[TDescriptor](napi_env env, napi_callback_info callbackInfo, JSValueScopeType scopeType, Func`2 getCallbackDescriptor) in /Users/samardzicneo/RiderProjects/nvite/Microsoft.JavaScript.NodeApi/JSValue.cs:line 1279
Error
   at Microsoft.JavaScript.NodeApi.JSValue.GetProperty(JSValue key) in /Users/samardzicneo/RiderProjects/nvite/Microsoft.JavaScript.NodeApi/JSValue.cs:line 487
   at Program.<>c.<<<Main>$>b__0_0>d.MoveNext() in /Users/samardzicneo/RiderProjects/nvite/nvite/Program.cs:line 39
--- End of stack trace from previous location ---
   at nvite.Library.Helpers.LibraryInterop.<>c__DisplayClass9_0.<<PostAsync>b__0>d.MoveNext() in /Users/samardzicneo/RiderProjects/nvite/nvite.Library/Helpers/LibraryInterop.cs:line 136

That is with the following code:
public class Test
{
    public int One { get; set; }
}

...

var te = new TypeExporter();
te.TryExportType(typeof(Test));

var obj = new Test();
var objJs = JSMarshaller.Current.ToJS(obj);

Console.WriteLine(objJs.GetProperty(JSValue.CreateStringUtf16("One")));

Note, I had to modify the TypeExporter class to be public instead of internal. Only using JSMarshaller.ToJS resulted in Class not registered for JS export errors.

Thanks for the clarification. I understand now what you are trying to do, and how the current APIs do not support this at the moment. So far most design and testing of the automatic type mapping has been to support initiating it from the JS side. From this I can see that some improvements are necessary to make it usable from the .NET side as well.
I'll have to do some investigation to figure out the best way to accomplish this. Ideally I think the TypeExporter should remain an internal implementation detail, and ToJS() or perhaps a higher-level method should automatically export any types as necessary.
In case you're wondering: What does "exporting" a .NET class do?

An equivalent namespaced JS class prototype is defined, with a constructor function that calls back to the .NET constructor.
Static and instance properties and methods are defined on the class prototype. Initially all of them are stubs, but on first access each property gets redefined to call back to the corresponding .NET property or method.
The mapping between .NET type and JS class/constructor object is registered with the JSRuntimeContext, for use in any marshalling operations.

Type proxy not found for dependency: System.Int32

For now, you can resolve this with the following code:
te.ExportAssemblyTypes(typeof(object).Assembly, new JSObject());

Fixed in version 0.6.
You can use code similar to this test case.


Summary notifications?

Sometimes the actors add new victims in batches (10 or more occasionally), instead of one or two regularly.
A summary notification instead of spamming with new victim notifications may be a good idea. Perhaps a bullet point list or something, not sure.
This should also be toggleable in the notification settings in config.yaml

Another improvement that was suggested is to only notify when a site's state changes (down->up, up->down), instead of repeatedly each hour notifying.


DocsArchive-<IP_ADDRESS>Auto archive content

Auto archive content from https://github.com/opstest2/docs-archive-test-source.git

Docs Build status updates of commit 3a48b95:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Cannot render properly

I'm having trouble trying to use this extension. Tried with both the default Alabaster theme and the latest commit of the RTD theme.
extensions = ['sphinx.ext.intersphinx', 'sphinxcontrib.details.directive']
Sphinx 2.2.0
sphinxcontrib-details-directive 0.1.0
Alabaster 0.7.12
RTD 0.4.3.r136.gfeb0beb
Input:
.. details:: test

   test

Output:

test

test

`pacman -Ql python-sphinxcontrib-details-directive`

python-sphinxcontrib-details-directive /usr/
python-sphinxcontrib-details-directive /usr/lib/
python-sphinxcontrib-details-directive /usr/lib/python3.7/
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/__init__.py
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/__pycache__/
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/__pycache__/__init__.cpython-37.opt-1.pyc
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/__pycache__/__init__.cpython-37.pyc
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/directive/
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/directive/__init__.py
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/directive/__pycache__/
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/directive/__pycache__/__init__.cpython-37.opt-1.pyc
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/directive/__pycache__/__init__.cpython-37.pyc
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/directive/__pycache__/version.cpython-37.opt-1.pyc
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/directive/__pycache__/version.cpython-37.pyc
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib/details/directive/version.py
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib_details_directive-0.1.0-py3.7-nspkg.pth
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib_details_directive-0.1.0-py3.7.egg-info/
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib_details_directive-0.1.0-py3.7.egg-info/PKG-INFO
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib_details_directive-0.1.0-py3.7.egg-info/SOURCES.txt
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib_details_directive-0.1.0-py3.7.egg-info/dependency_links.txt
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib_details_directive-0.1.0-py3.7.egg-info/namespace_packages.txt
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib_details_directive-0.1.0-py3.7.egg-info/requires.txt
python-sphinxcontrib-details-directive /usr/lib/python3.7/site-packages/sphinxcontrib_details_directive-0.1.0-py3.7.egg-info/top_level.txt

Ping @tk0miya

Able to use details tags without the extension with:
.. raw:: html

     show/hide

blah

.. raw:: html

Think I previously had trouble trying to use a details tag because it doesn't work around sections.

I've just confirmed the same behaviour, with sphinx 4.5.0 as well.


House Robber

Please assign this to me in C++
https://leetcode.com/problems/house-robber/

@nm2708 Assigned in C++


[request] speedypage.com

https://speedypage.com/

https://pbs.twimg.com/profile_images/1510261768324587534/ZY9QXW2R_400x400.jpg

This repo does not accept requests for new icons.


Can not log into terminal

Issue Type: Bug
My password to log into terminal for the IBMz Mainframe is not working.  I keep getting a permission denied error when trying to log into USS terminal.  I was able to log in earlier but now I am unable to log in.
VS Code version: Code 1.51.1 (e5a624b788d92b8d34d1392e4c4d9789406efe8f, 2020-11-10T23:34:32.027Z)
OS version: Windows_NT x64 10.0.19041

May I ask why is this a VS Code issue? A screenshot or screen recording can help us understand it better.


Added C# Project

It is very amazing to create beautiful codes and contribute it. ♥

Please update your branch, so the workflow runs again. Cheers.


Add .hide class, fix #654

See https://github.com/picturepan2/spectre/issues/654#issuecomment-743101072


Additional feature: select2 with the ability to use scope of model

As the title says, it is not possible today to use scopes in the 'select2' or 'select' field types.  A small addition make it possible without introducing breaking changes.
2 properties are additionally available in the addField method for this field:
scope: fill in the scope name (string) as defined in the model
scope_params: fill the parameters (array) you can pass to the scope in the model
$this->crud->addField([
            'name' => 'vat_tariff_id',
            'label' => 'VAT Tariff',
            'type' => 'select2',
            'entity' => 'vat_tariff',
            'attribute' => 'nameAndPercentage',
            'model' => 'App\Models\VatTariff',
            'scope' => 'instanceCountry',
            'scope_params' => [
                '56'
            ]
        ]);

I've added a PR for the select2 field (the other similar fields should of course get the same) https://github.com/Laravel-Backpack/CRUD/pull/1262

Thanks a lot for the issue & PR @timbertens ! Used your great work to put together https://github.com/Laravel-Backpack/CRUD/pull/1694 .
Let's move the conversation there please.


Change dot color

H5P Interactive video will get new dot colors for the seekbar. Match that.

DONE


Remove non release 3.11 related testing files

@DennisPeriquet seems good to me but ART doesn't interact with sjb... are you waiting on someone to approve/merge?

@sosiouxme thanks for looking.  Maybe 263 files in a PR is just too much work to review vs. what we will get out of it for 3.11.  It was only a convenience for me to have less files to look at if I had to do some work in this repo.
TBH, I forgot about this PR and now I know why -- it was from over 2 months ago :-).  I'm going to close it.

/close


Support "#[self_call]" for calls

It should check whether the current account equals to the predecessor account.
    assert_eq!(env::current_account_id(), env::predecessor_account_id());

Most of the time when you implement a callback function, you have to lock it for calls from the contract itself. This method assert check is very common and probably should be supported by the SDK

Alternative name can be #[private]

Makes a lot of sense! I'm for #[private]


Consider adding this project to mybinder

Mybinder is a pretty snazzy little tool that runs jupyter notebooks from your github repository online.
They're executable so if we could get this project running on mybinder then the user wouldn't ever have to download or install anything! WOOOOO.

I'm going to close this issue because @miykael has done a brilliant job getting us started at binder! :tada: :balloon: :tada: :beers:


Feature/manage databases

Adds ability for users to grant access to databases. This initial implementation allows:

Superuser to grant access to any table
Users with grantable access to grant access to the table

To run locally:

Reinstall dependencies
Run python manage.py migrate
Ensure .env file is up to date. If there are errors related to missing values, let me know and I will check my file and update the stored env file in 1Password
Run the server with make serve-sso or use the debugger in VS code
Login, attempt to grant your user access to some tables
With the correct access, you should then be able to query the table within the embedded Quicksight
You can also revoke access to a user, or update access

Limitations:

Grantable permissions are not sent - I am working on this now

TODO/next steps:

Add unit tests. I will do these in a separate PR in order to get this to the development environment first for testing, in case there are wholesale changes required
Documentation - same as above
UI improvements - e.g. things like breadcrumbs/back button to help with navigation, hiding the management access button if user has no grant permissions
Additional views to allow filtering tables/database by what the user has access
Add production settings - we will need this before deploying to prod
Refactoring - not a priority but there are changes that I have in mind when possible

Merging despite the failed scan. See bug ticket https://github.com/ministryofjustice/analytical-platform/issues/5251


reminder: overrides

make overrides mechanism clearer on implementation page
actually mention/link-to applying changes on implementation page

done


Storage::append always make redundant bytes

Laravel Version: 8.83.0
PHP Version: 7.4.28
Database Driver & Version:

Description:
The method Storage::append always add redundant bytes and make file broken when handle the chunk files.
Steps To Reproduce:

Make a simple form with Dropzone. Make sure it support chunk file.
Create a controller to handle chunk upload file. It may look like the below

$file = $request->file('file');
$path = collect([
    'imports',
    (string)Str::of($model)->plural()->slug(),
])->join('/');
if ($request->dzchunkindex == 0) {
    $filepath = $file->storeAs($path, $request->dzuuid);
} else {
    $filepath = collect([
        $path,
        $request->dzuuid,
    ])->join('/');

    if (!Storage::exists($filepath)) {
        throw new NonExistsFileChunksException;
    }

    Storage::append($filepath, $file->getContent());
}

if ($request->dzchunkindex == $request->dztotalchunkcount - 1) {
    $fileWithClientOriginName = collect([
        $path,
        $file->getClientOriginalName(),
    ])->join('/');
    if (Storage::exists($fileWithClientOriginName)) {
        Storage::delete($fileWithClientOriginName);
    }

    Storage::move($filepath, $fileWithClientOriginName);

    return $fileWithClientOriginName;
}

return $filepath;

The result file is always bigger than the origin one. The number of redundant bytes is equal with the number of chunks file minus 1. It's really problems with the zip files because it will be broken.

Hey there,
Can you first please try one of the support channels below? If you can actually identify this as a bug, feel free to open up a new issue with a link to the original one and we'll gladly help you out.

Laracasts Forums
Laravel.io Forums
StackOverflow
Discord
Larachat
IRC

Thanks!


Issue 215 stm32hal

This branch creates a new HAL layer for the STM32 processor.  The new HAL does not use the Arduino library, so it greatly reduces the dependency on external code.
I've tested as much as I can using just the nucleo board.  Pretty much everything except for the UART has been tested pretty well.  To test the UART I will really need to add a transceiver to the board.
Everything is wired up based on the schematic for the PCB that is currently being built.
I made this HAL a separate build from the existing nucleo target, so nothing I've done should impact anyone currently using the nucleo or uno targets.
Fixes https://github.com/RespiraWorks/VentilatorSoftware/issues/215

Thanks Steve! This looks like excellent work - from a brief scan, the code is a delight to read - but before reviewing in detail I have a few questions to understand how this would fit in our project, it being an OSS project with lots of contributors that come and go at random times.
The most important questions are:

What part of this code is actually necessary - is it literally all of it, or can it be trimmed down? This looks like a full-blown device HAL, but maybe we need only part of it to run the ventilator?
How do you know that this code is correct, apart from manual testing? E.g. if this is code that you've been using for years on other projects, with minor modifications, that would give a large degree of confidence, but it would be good to know what part is battle-tested and what part is modifications you've written specifically for this occasion.
How do we as a team keep it correct? E.g., say, you for some reason have to take a break from this project for an extended period, then it's up to others to maintain it. I would have little to no confidence that I personally can change this code without breaking it in some subtle way, or that I can implement a new HAL function correctly for this device.

Note that these questions do not arise if we use the vendor-provided HAL, which the vendor commits to maintaining and there's a large community of people using it, there's forums where you can ask questions if you hit an issue with it, etc. Your concerns in #215 are valid (at least to my eye, inexperienced in embedded development - maybe there are standard answers to them? I don't know), but I think these are also very important concerns to address.

Hi Eugene;
Thanks for taking the time to look through the code.  To answer your specific questions:
- What part of the code is actually necessary?
Pretty much all the cpp code is.  I have tried to keep it pretty minimal and only support the functions defined in the HAL class.  The fairly generic circular buffer class used by the UART could be moved out of the HAL code, but we would need a way to disable interrupts which would have to be added to the HAL.  I wanted to avoid adding additional functions to the HAL class for now, so I just included this as part of my hal_stm32.cpp file.
The stm32.h header has the register structures for many of the hardware modules of the processor.  I left a few in there that we aren't currently using (like the DMA) because I thought they might be useful in the future.  Those could be removed if we wanted to minimize the code to the greatest extent possible.  These are just structure definitions though and don't have any impact on the system if they aren't used.
- How do I know the code is correct?
I've been working professionally with the STM32 processor line for 6 years now.  I've been doing this sort of work with a variety of other processors and FPGAs for a few decades and it's all pretty much the same.
This code isn't an exact copy of the work that I use professionally, but it's based on that work.  The STM32 processors are broken down into a lot of different families and the peripherals have some variability from one family to the next, but they're all quite similar.
- How do we maintain it?
I've made an effort to comment the code somewhat verbosely to help someone who's not familiar with this type of direct programming of the hardware see what I'm doing.  It's actually remarkably easy to work with the hardware like this once you get the hang of it.
One of the reasons I like the ST processors is that their documentation is quite good.  The reference manual for this particular processor can be found here:
https://www.st.com/resource/en/reference_manual/dm00151940-stm32l41xxx42xxx43xxx44xxx45xxx46xxx-advanced-armbased-32bit-mcus-stmicroelectronics.pdf
This manual has a chapter for each of the peripherals on the chip and includes a pretty clear description of what the registers do and how to configure it.  My hope is that that documentation along with my (hopefully fairly clear) code as an example will help future engineers make any necessary modifications.
The documentation for the hardware is likely much more through then the documentation for the Arduino library functions.  Also, there is a large community of engineers working with the STM32 line of processors would would be able to help with specific problems.  https://community.st.com/s/
- We already have a functioning build based on the Arduino library, why fix what's not broken?
I know you didn't really ask that specific question, but it's kind of the elephant in the room.
I've been doing embedded systems programming for virtually my entire professional career which now spans three decades, so I view projects like this from that perspective.  For actual production code, at least in embedded systems, there's a lot of emphasis on keeping tight control of what software goes into the builds.  That means that everything is version controlled, sometimes even the compilers used to build the product.
I'm not pushing such a strict standard here because I don't think it's workable and frankly I don't want to try to maintain it.  I do however think that using the Arduino library is a bad choice, mostly because it's very large and uncontrolled and we don't really need it.  In a couple days I was able to replace it with a few hundred lines of well commented code.  No doubt there will need to be additions to that code as our requirements evolve, but maintaining a layer like this isn't difficult.
Also, we need to keep perspective on what we're building here.  If this was a cool soccer playing robot or something that we were tinkering with for fun, the I'd have no concerns about using the Aurdino library.  Well, I might, but not to the extent that I'd put the time in to replace it!
We're making a piece of live saving medical equipment here though, so I think we need to work in a more professional manor then we could for a hobby project.
Also, I believe we're still hoping to get some level of FDA approval for this device.  I don't have a lot of experience with getting FDA approval of products, but would think (actually hope) that the FDA would look closely not just at the code we are writing ourselves, but at the libraries we're linking to.
I don't have any particular reason to think the Arduino library is poorly written or buggy, but I've never spent any time looking through it, so I'd be hard pressed to assert to the FDA that it can be relied on with someones life.  Unless we can convincingly say that I think we'll have a hard time getting any approval.  It will be a lot easier saying we tested and verified a few hundred lines of custom HAL code then to give a proper review to the tens of thousands of lines of code that make up the Arduino library.

Thanks for the explanation, Steve! This goes against all the principles that I'm used to in the type of development I've been doing, but the more I read up on it, the more evidence there is that you're right - looks like Arduino is absolutely not pre-certified in any form for medical devices, and looks like HAL vendor-provided HALs do not have a reputation for being error-free, so perhaps writing our own HAL, while a bitter pill to swallow, might be the lesser of two evils after all. Let me do a bit more research and ask around and get back to you soon.

Hey Steve, Eugene,
I know my input was not requested, but I'm trying to keep an eye on all tickets and PRs anyways. This was pretty interesting to read. In my experience I am not as averse to writing code by closely following documentation. Don't want to overstate this, though. I'd rather let Eugene review this without bias. One thing, though: support for Arduino will likely not continue long past alpha. There is a reason we are switching to STM32 and I doubt we will look back. There is already signs that the 8-bit capabilities are insufficient for some critical calculations. Thank you for contributing.

Hi Eugene, is there any more information I can provide which will help satisfy your review?
Note that since this change creates a new pio environment it shouldn't have any impact on the existing nucleo or uno builds.

Sorry for the delay, Steve - got busy with day job.
For STM32, I think using the Arduino framework is definitely out of question - not only because it carries the dependency on a large amount of Arduino code, but also because the Arduino STM32 core (adapter to allow using STM32 as if it was an Arduino) is basically developed by a few people in their free time; it's not like this isn't what we're doing ourselves with the ventilator, but it definitely means we can't take its correctness for granted.
The only question then remains: to implement HalApi on STM32, should we implement it on top of the STM32 vendor-provided HAL (which has nothing to do with Arduino), or on top of bare metal as in this PR.
Per @burnhamd , we don't have to review all the code of our dependencies, it may be sufficient to list our expectations of those dependencies and blackbox-test that the expectations are met. And we would, I assume, have to perform the same kind of testing for our own code.
So with that in mind, what would be the advantage of this PR compared to working on top of STM32 HAL? E.g. would there be less testing involved?

The basic issues I have with using an external HAL don't change much if we switch between the Arduino library and the ST provided HAL.
1 - Version control.  Will we include the ST HAL library as part of our repository?  Can we even do that based on it's license?  If not, then how can we ensure that the library doesn't change unexpectedly in the future causing a failure of our product?
2 - Size.  A general purpose HAL that touches every capability of every chip in the STM32 family is going to be far larger then the actual code we need for our purposes.  We won't realistically be able to review the code, we just have to take it on faith that it works.  On the other hand, it's fairly easy to review the small amount of code that we would need to directly access the hardware, you've already done it.
Perhaps you're right, perhaps the FDA only cares about the code we write specifically for this project and will give us a pass on anything that we pull from an external library, even if we can't give any guarantees as to it's quality.  That seems like an awfully large loophole in FDA approval though, so I remain skeptical.

I have been fixing bugs in vendor libraries. Vendor libraries are usually frowned upon in embedded community, I don't have experience with stm32 so can't really judge, but there are better and there are worse, it's not rock solid like some open source libraries.
We won't be using a lot of peripherals: gpio, timekeeper timer, timer for PWM, uart and maybe DMA and CRC. None of those are used in any weird complicated way.

I agree that we will have to pin the version of the HAL library if we use it at all.
However, regarding the rest - my understanding from @burnhamd is that we don't have to review the library code, we just have to document the risks of that code, test for them and add high-level mitigations for those risks in our own code. Documenting risks, testing and mitigation is something we have to do anyway for our own code too ("this code was approved by a code reviewer" will not convince a regulatory body any more than "other projects use this library").
So I just would like to better understand exactly what verification work that we have to do will be different; and if the verification work is the same, then what are we gaining by hand-coding the thing being verified rather than getting a ready-made one. One thing I can see is - if we discover a bug, it's way easier to fix in our own code than wait for the vendor to publish an update (unless we're allowed to make changes to our copy of the vendor's library); anything else?

(unless we're allowed to make changes to our copy of the vendor's library)

Can you point me to the external library?  I'd be happy to check out the licensing regime.

I believe the STM32 HAL we could be using is https://github.com/STMicroelectronics/STM32CubeL4 .

Its just a matter of how much code you add.  Adding a large library to the project when all you need is some simple hardware configuration seems unwise.
We need to keep track of a few ventilator parameters, but as far as I know no one is recommending that we link to a large relational database.  I hope not at least.
Perhaps we view this differently because this is the type of programming that I'm accustom to.  Configuring hardware and servicing interrupts is something I do on every project.  It might look foreign to you, but it's all very simple.  There's really no need to bury it in a huge pile of HAL.
Also, as @Miceuz suggested, experienced embedded developers tend to avoid this sort of vendor supplied HAL because they have a reputation for being of limited quality.  Nothing spoils your week more then digging through thousands of lines of vendor supplied code trying to find the bug that's crashing your system.  That said, I don't know anything about this specific ST library, so maybe it's an exception.

Licenses should be fine to import into our repo and patch if we wanted to.  (Although I'd prefer to pin some other way if we can do so.)
https://github.com/STMicroelectronics/STM32CubeL4/blob/master/License.md
All of the code is Apache, BSD, or MIT (i.e. very permissive licenses), with the exceptions of USB, touch-sensing, STemWin, and "STM32 Projects".  Those are licensed under ST SLA0044, which afaict is a permissive license that just says you can't relicense them under an OSS license, and so in particular you can't link them with GPL code.  Not sure if we'd need to use any of them anyway; I don't know what STemWin and "STM32 Projects" are.

Thanks @sglow and @Miceuz . I searched a bit about this library and seems that it, too, does not have a reputation of being bug-free. Our code won't be bug-free either, but I can see the argument of fixing our own single-purpose code vs. digging through a much larger general-purpose vendor library; and generally, when multiple domain experts (the two of you) say it's the right thing to do and not that scary, I'm inclined to listen :)
I will review this code within the next couple of days. Sorry for the delay.

I think we could copy the ~/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l452xx.h - it's register address, struct and bit value definitions. I expect that to be pretty accurate and bug free.

Hi Albertas, replacing the stm32.h file from my branch with the headers from the Arduino library would break virtually everything in the branch I submitted.
I don't seem to have the specific header file that you referenced in my system, perhaps we're working from different versions of the HAL.  This is one of my concerns with using an external HAL like this, it's far too easy for different developers on our team to be working with different code.  It's hard to tell since it's not in our repo.
What I have in the ~/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32L4xx_HAL_Driver/Inc directory is 109 separate header files, one for each peripherial.  Many of those headers includes a variety of other headers.
Trying to use this is essentially just pulling large parts of the Arduino stm32 library into our system and pretty much defeats the intent of this branch while simultaneously breaking all the code in the branch.

I think this is the file Albertas is referring to:
https://github.com/STMicroelectronics/STM32CubeL4/blob/1ebb94256904a8b081e38caaffd4da7c2003136e/Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l452xx.h#L1
On Wed, May 6, 2020 at 3:34 AM Steve Glow<EMAIL_ADDRESS>wrote:

Hi Albertas, replacing the stm32.h file from my branch with the headers
from the Arduino library would break virtually everything in the branch I
submitted.
I don't seem to have the specific header file that you referenced in my
system, perhaps we're working from different versions of the HAL. This is
one of my concerns with using an external HAL like this, it's far too easy
for different developers on our team to be working with different code.
It's hard to tell since it's not in our repo.
What I have in the
~/.platformio/packages/framework-arduinoststm32/system/Drivers/STM32L4xx_HAL_Driver/Inc
directory is 109 separate header files, one for each peripherial. Many of
those headers includes a variety of other headers.
Trying to use this is essentially just pulling large parts of the Arduino
stm32 library into our system and pretty much defeats the intent of this
branch while simultaneously breaking all the code in the branch.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub
https://github.com/RespiraWorks/VentilatorSoftware/pull/225#issuecomment-624570254,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABEZB5R62ZVW6ZW5KHWAWLRQE4MZANCNFSM4MXPGS2Q
.

Thanks @jlebar, sorry I goofed it.
@sglow true, that file drags in the whole cmsis we don't need. But we still need bit definitions for the register bits, maybe we can cannibalize stm32l452xx.h for all register definitions? I think license allows that? Those are Cube libs, not Arduino. I have seen a lot of hardcoded register constants in your code, I think we should have it a bit more clear for a multitude of reasons.

I've spent a bunch of time debugging code that makes extensive use of bit defines buried in header files and I think it's a misguided practice, at least for situations like this one.  Using bit definitions like that just adds an additional level of abstraction that makes it harder to see what the code is really doing.  I much prefer a combination of comments that describe what the code does, and hard coded values that can be easily compared to the processor reference manual.
Bit definitions in a header file might make sense for a general purpose HAL, but what we're doing here is configuring the hardware for a very specific usage.  For that purpose, I think comments and constants are far superior.
For example, it's easy to tell what value is being written to a register with code like this, and if there's a comment describing the intent it's even easier:
*someRegister = 0x0123
It's harder to figure out what exactly is being done here, especially if you have to dig for the bit definitions in a header file:
*someRegister = SOME_NOT_VERY_USEFUL_DESCRIPTION | ANOTHER_ONE  | ANOTHER
When I configure a timer or something I try to describe what I'm configuring it to do in comments, then just set the bits to the appropriate value.  I'm assuming that anyone that comes later (including myself) who cares about the specifics of what's being written to that register will have the processor reference manual open to the page describing it when reviewing the code.  In general, there's no way you can describe the bit meanings well enough in a reasonable #define name to avoid needing the documentation, so why obscure it?
Anyway, I know there's a dogma that says you should always use #defines for bit descriptions, but I don't think it would serve us well in this situation.

If you think I need to be more verbose in my comments then that's probably fair.  I've been working with these processors for a long time, so sometimes forget what I know.
Honestly, this merge has been dragging on for so long that I can't really remember what was in the code, but I can try to add more detail to the descriptions in a future update.

Does STM32 toolchain also not provide a placement new operator?

If this is necessary, then somehow the STM32 build is not pulling in the C++ STL.  We need to figure that out.

I'm getting stuck trying to rebase my branch. git rebase master doesn't seem to do anything. The changes in master aren't getting applied to my branch.

There's two steps that have to happen before git rebase master will do what you want.

Your local clone needs to become aware of the changes upstream.  git fetch origin.  This updates origin/master, but does not update master.

At this point you could do git rebase origin/master and it should rebase you onto the latest master in origin.

If you want to git rebase master, your local master branch needs to be updated to match origin/master.  Something like git checkout master && git merge --ff-only origin/master would do it safely.  Or simply git checkout master && git pull origin.

If that doesn't work for you, can you give me the following for debugging?
$ git show --pretty=oneline --no-patch master
$ git show --pretty=oneline --no-patch origin/master
$ git log --pretty=oneline -n20 HEAD

OK, I think I'm in pretty good shape on this now.
I managed to rebase with some difficulty (thanks for bailing me out Justin) and just got pre-commit to work.  I think I've addressed all the comments above.
Let me know what the next steps are of if anything needs more work.

That said, I think using hardware memory protection around the stack makes a lot of sense and is something I can look into at a later date

Sounds good; definitely didn't mean to imply it needs to be done here (sorry!).

Sorry for the delay again - during the work week I mostly just have evenings and I spent the yesterday one on reviewing #250 . Will spend this one on this PR.

No worries @jkff, I totally understand.  I'm burning the candle at both ends myself!

OK, I think everything has been addressed at this point and I managed to get the clang checks to pass.

trim down the various register tables to only contain registers we're actually using, because the other ones might be wrong and we have no way of knowing because we aren't testing them even manually.

Could we do this by commenting out the names (but not the type) in the register file but leaving the types there?  This way if a mere mortal like me needs to access a new register, it's fairly simple to know what to do (uncomment the name and then test it).

OK, I just pushed the updates.  Mostly just comment changes.
We can't delete the members of the register structures that we don't use, that would break everything because the remaining members after the deleted ones would be incorrectly aligned.
I don't think removing their names is helpful either.  What's in a name?  A rose by any other name...
Guys, this has been a long tough design review.  I hope we can finish it off because it's blocking pretty much all the new development that needs to be done on the new board.  There's a lot of stuff that I need to work on, and my time available for this project isn't unlimited.

it's blocking pretty much all the new development that needs to be done on the new board

This is kind of advanced git usage, but a tool I wrote recently lets you make progress on your other stuff while still hashing out the remainder of this review.  The tool is new, but I've used it for most of my PRs in this project.  https://github.com/jlebar/git-pr-chain


Cilium full BPF, TLS Ingress and layer2 LB announcement: need rollout restarts of cilium-operator and/or daemonset

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
On a 1.27.3 kubernetes cluster running on Debian 12;
full bpf cilium config (bpf masquerading, kube-proxy strict);
using cilium for Loadbalancer type using layer2 announcement;
an Ingress of class Cilium, with TLS termination (letsencrypts provider managed from cert-manager)

deployed a web solution using helm; tried to access the HTTP service with curl: connection reset by peer
issued rollout restart deploy/cilium-operator => OK webservice available through the ingress

upgraded the solution with helm; tried t oaccess the HTTP service with curl: HTTP 503 service unavailable
tried curl on the service ip/port: OK webservice available on the ClusterIp service
issued rollout restart deploy/cilium-operator: no change
issued rollout restart daemonsets/cilium: OK webservice available through the ingress

Cilium Version
1.14.0-rc.0
Kernel Version
6.1.37 from Debian 12
Kubernetes Version
1.27.3
Sysdump
No response
Relevant log output
No response
Anything else?
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

If you updated cilium config(s), then it's expected that the operator/cilium DS needs to be restarted. Can you elaborate on what your expectations are?

I had not updated Cilium's config, only deployed a web solution that uses Cilium features:

setup k8s cluster, configure Cilium, check that it works as expected (example following Cilium quickstart/doc using a nginx deployment + expose it), setup external-dns & cert-manager, restart cilium ds/operator "in case of"
deploy a web solution; it should become available on https://something... - it may, however it may not and require a rolling restart of the operator and/or the daemonset (no other operation, no config change)

Moreover, I'm highly confident that I left a working setup yesterday evening; however I needed to issue a rolling restart of Cilium DS this morning to access to web solution.
Curl was stuck 'Trying IP:443...'
I'll do some more testing and take more notes but I usually don't open issues without a certain amount of confidence there is indeed something wrong.

New deployment => connection reset by peer | rollout restart of cilium-operator => OK
Last logs of cilium-operator leader, before rollout restart:
level=error msg="Failed to process Ingress event, skipping: {ingress:0xc0014d2a00}" subsys=ingress-controller
level=error msg="Failed to process Ingress event, skipping: {oldIngress:0xc0014d2a00 newIngress:0xc000af6b00}" subsys=ingress-controller

grep of 'ingress' in operator leader after restart:
level=info msg="Notify ingress controller for service ingress" subsys=ingress-controller
level=info msg="Notify ingress controller for service ingress" subsys=ingress-controller
level=info msg="Notify ingress controller for service ingress" subsys=ingress-controller
level=info msg="Notify ingress controller for service ingress" subsys=ingress-controller

It takes time to get the certificate from LetsEncrypt using DNS-01 challenge, could it be the source of this issue ?
The logs about o,gress processing failure are not helpful, how can we get more info on what's going on ?

a few hours ago I left with 4 ingresses OK, I'm back and 2 of them or KO.
rollout restart of DS and all of them are OK.

Hello, thanks for opening the GH issue, please provide steps to reproduce the issue and a cilium sysdump otherwise the issue can't be fixed. Thank you.

Hi,
Reinstalled the cluster from scratch, with Cilium 1.14.0-rc.1 and kubernetes 1.27.4.
This is a sysdump after a first deployment
cilium-sysdump-20230724-133414.zip
Debug logs show upserts for the endpoint but lacking for the certificate secret until the rollout restart of operator, issued minutes after the cert was issued (kubectl get cert: age 33m / kubectl get -n cilium-secrets ...cert: age 11m)

Here is a sysdump after rollout restart of daemonsets. I forget to create it before, when experiencing issue with accessing the ingress from the outside of the cluster.
However I had read about the kubectl get lease command on some slack conversation and I had checked it:
when the problem occurs (can't access the ingress service from outside the cluster); 'kubectl get leases' shows only a hand of leases and none are related to the deployments I try to reach.
After rollout restart ds/cilium, a lot of more leases appear, notably the service and ingress that I am targeting.
Nothing in the logs rang a bell but I was probably looking for something too obvious
cilium-sysdump-20230724-190436.zip

2/ issue seems to be identical to #26586. Although I had searched the existing issue at the time, I missed it because of misunderstanding/lack of troubleshooting at that time. Now hthat I read it again it rings a bell.
I'm testing with: --set l2announcements.leaseRenewDeadline=10s --set l2announcements.leaseDuration=30s --set l2announcements.leaseRetryPeriod=3s

I have tried but failed to replicate this. Your sysdump seems to be done in the kube-network namespace thus is missing the logs. I would be very interested in reading the operator logs for before and after the restart of the deployment. Could you try to run this again and upload them for me to look into?