@@ -86,6 +86,11 @@ class Freenect2DeviceImpl : public Freenect2Device
8686 virtual Freenect2Device::ColorCameraParams getColorCameraParams ();
8787 virtual Freenect2Device::IrCameraParams getIrCameraParams ();
8888
89+ virtual std::string QuerySerialNumber ();
90+
91+ virtual ColorCameraParams QueryColorCameraParams ();
92+ virtual IrCameraParams QueryIrCameraParams ();
93+
8994 int nextCommandSeq ();
9095
9196 bool open ();
@@ -376,11 +381,77 @@ Freenect2Device::ColorCameraParams Freenect2DeviceImpl::getColorCameraParams()
376381 return rgb_camera_params_;
377382}
378383
379-
380384Freenect2Device::IrCameraParams Freenect2DeviceImpl::getIrCameraParams ()
381385{
382386 return ir_camera_params_;
383387}
388+
389+ std::string Freenect2DeviceImpl::QuerySerialNumber ()
390+ {
391+ CommandTransaction::Result serial_result;
392+ command_tx_.execute (ReadSerialNumberCommand (nextCommandSeq ()), serial_result);
393+ std::string new_serial = SerialNumberResponse (serial_result.data , serial_result.length ).toString ();
394+ return new_serial;
395+ }
396+
397+ Freenect2Device::ColorCameraParams Freenect2DeviceImpl::QueryColorCameraParams ()
398+ {
399+ CommandTransaction::Result result;
400+ command_tx_.execute (ReadRgbCameraParametersCommand (nextCommandSeq ()), result);
401+ RgbCameraParamsResponse *rgb_p = reinterpret_cast <RgbCameraParamsResponse *>(result.data );
402+
403+ rgb_camera_params_.fx = rgb_p->color_f ;
404+ rgb_camera_params_.fy = rgb_p->color_f ;
405+ rgb_camera_params_.cx = rgb_p->color_cx ;
406+ rgb_camera_params_.cy = rgb_p->color_cy ;
407+
408+ rgb_camera_params_.shift_d = rgb_p->shift_d ;
409+ rgb_camera_params_.shift_m = rgb_p->shift_m ;
410+
411+ rgb_camera_params_.mx_x3y0 = rgb_p->mx_x3y0 ; // xxx
412+ rgb_camera_params_.mx_x0y3 = rgb_p->mx_x0y3 ; // yyy
413+ rgb_camera_params_.mx_x2y1 = rgb_p->mx_x2y1 ; // xxy
414+ rgb_camera_params_.mx_x1y2 = rgb_p->mx_x1y2 ; // yyx
415+ rgb_camera_params_.mx_x2y0 = rgb_p->mx_x2y0 ; // xx
416+ rgb_camera_params_.mx_x0y2 = rgb_p->mx_x0y2 ; // yy
417+ rgb_camera_params_.mx_x1y1 = rgb_p->mx_x1y1 ; // xy
418+ rgb_camera_params_.mx_x1y0 = rgb_p->mx_x1y0 ; // x
419+ rgb_camera_params_.mx_x0y1 = rgb_p->mx_x0y1 ; // y
420+ rgb_camera_params_.mx_x0y0 = rgb_p->mx_x0y0 ; // 1
421+
422+ rgb_camera_params_.my_x3y0 = rgb_p->my_x3y0 ; // xxx
423+ rgb_camera_params_.my_x0y3 = rgb_p->my_x0y3 ; // yyy
424+ rgb_camera_params_.my_x2y1 = rgb_p->my_x2y1 ; // xxy
425+ rgb_camera_params_.my_x1y2 = rgb_p->my_x1y2 ; // yyx
426+ rgb_camera_params_.my_x2y0 = rgb_p->my_x2y0 ; // xx
427+ rgb_camera_params_.my_x0y2 = rgb_p->my_x0y2 ; // yy
428+ rgb_camera_params_.my_x1y1 = rgb_p->my_x1y1 ; // xy
429+ rgb_camera_params_.my_x1y0 = rgb_p->my_x1y0 ; // x
430+ rgb_camera_params_.my_x0y1 = rgb_p->my_x0y1 ; // y
431+ rgb_camera_params_.my_x0y0 = rgb_p->my_x0y0 ; // 1
432+
433+ return rgb_camera_params_;
434+ }
435+
436+ Freenect2Device::IrCameraParams Freenect2DeviceImpl::QueryIrCameraParams ()
437+ {
438+ CommandTransaction::Result result;
439+ command_tx_.execute (ReadDepthCameraParametersCommand (nextCommandSeq ()), result);
440+ DepthCameraParamsResponse *ir_p = reinterpret_cast <DepthCameraParamsResponse *>(result.data );
441+
442+ ir_camera_params_.fx = ir_p->fx ;
443+ ir_camera_params_.fy = ir_p->fy ;
444+ ir_camera_params_.cx = ir_p->cx ;
445+ ir_camera_params_.cy = ir_p->cy ;
446+ ir_camera_params_.k1 = ir_p->k1 ;
447+ ir_camera_params_.k2 = ir_p->k2 ;
448+ ir_camera_params_.k3 = ir_p->k3 ;
449+ ir_camera_params_.p1 = ir_p->p1 ;
450+ ir_camera_params_.p2 = ir_p->p2 ;
451+
452+ return ir_camera_params_;
453+ }
454+
384455void Freenect2DeviceImpl::setColorFrameListener (libfreenect2::FrameListener* rgb_frame_listener)
385456{
386457 // TODO: should only be possible, if not started
0 commit comments