@@ -78,6 +78,34 @@ namespace librealsense
7878 };
7979 };
8080
81+ class rs401_gmsl_device : // public d400_color,
82+ public d400_nonmonochrome,
83+ public d400_mipi_device,
84+ public firmware_logger_device
85+ {
86+ public:
87+ rs401_gmsl_device ( std::shared_ptr< const d400_info > const & dev_info, bool register_device_notifications )
88+ : device( dev_info, register_device_notifications )
89+ , backend_device( dev_info, register_device_notifications )
90+ , d400_device( dev_info )
91+ // , d400_color( dev_info )
92+ , d400_nonmonochrome( dev_info )
93+ , d400_mipi_device()
94+ , firmware_logger_device( dev_info, d400_device::_hw_monitor, get_firmware_logs_command(), get_flash_logs_command() )
95+ {
96+ }
97+
98+ std::shared_ptr<matcher> create_matcher (const frame_holder& frame) const override ;
99+
100+ std::vector<tagged_profile> get_profiles_tags () const override
101+ {
102+ std::vector<tagged_profile> tags;
103+
104+ tags.push_back ({ RS2_STREAM_DEPTH, -1 , 640 , 480 , RS2_FORMAT_Z16, 30 , profile_tag::PROFILE_TAG_SUPERSET | profile_tag::PROFILE_TAG_DEFAULT });
105+ return tags;
106+ };
107+ };
108+
81109 // Not used, should be removed with EOL devices clean up
82110 class rs405u_device : public ds5u_device ,
83111 public ds_advanced_mode_base,
@@ -1096,6 +1124,8 @@ namespace librealsense
10961124 return std::make_shared< rs430_gmsl_device >( dev_info, register_device_notifications );
10971125 case RS415_GMSL_PID:
10981126 return std::make_shared< rs415_gmsl_device >(dev_info, register_device_notifications);
1127+ case RS401_GMSL_PID:
1128+ return std::make_shared< rs401_gmsl_device >( dev_info, register_device_notifications );
10991129 default :
11001130 throw std::runtime_error ( rsutils::string::from () << " Unsupported RS400 model! 0x" << std::hex
11011131 << std::setw ( 4 ) << std::setfill ( ' 0' ) << (int )pid );
@@ -1168,6 +1198,12 @@ namespace librealsense
11681198 return matcher_factory::create (RS2_MATCHER_DEFAULT, streams);
11691199 }
11701200
1201+ std::shared_ptr<matcher> rs401_gmsl_device::create_matcher (const frame_holder& frame) const
1202+ {
1203+ std::vector<stream_interface*> streams = { _depth_stream.get () , _left_ir_stream.get () , _right_ir_stream.get () };
1204+ return matcher_factory::create (RS2_MATCHER_DEFAULT, streams);
1205+ }
1206+
11711207 std::shared_ptr<matcher> rs405u_device::create_matcher (const frame_holder& frame) const
11721208 {
11731209 std::vector<stream_interface*> streams = { _depth_stream.get () , _left_ir_stream.get () , _right_ir_stream.get ()};
0 commit comments