diff --git a/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/Camera.cpp b/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/Camera.cpp index b606d0cfb..a0f01b8a2 100644 --- a/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/Camera.cpp +++ b/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/Camera.cpp @@ -1189,6 +1189,32 @@ CamImage CameraClass::takePicture( ) return CamImage(); // Return empty CamImage because of any error occured. } +// Public : Get camera device type. +CAM_DEVICE_TYPE CameraClass::getDeviceType() +{ + CAM_DEVICE_TYPE ret; + struct v4l2_capability param = {0}; + + ret = CAM_DEVICE_TYPE_UNKNOWN; + + if (is_device_ready()) + { + if (ioctl(video_fd, VIDIOC_QUERYCAP, (unsigned long)¶m) == 0) + { + if (strncmp((char *)param.driver, "ISX012", sizeof(param.driver)) == 0) + { + ret = CAM_DEVICE_TYPE_ISX012; + } + else if (strncmp((char *)param.driver, "ISX019", sizeof(param.driver)) == 0) + { + ret = CAM_DEVICE_TYPE_ISX019; + } + } + } + + return ret; +} + // Public : Finish to use the Camera. void CameraClass::end() { diff --git a/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/Camera.h b/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/Camera.h index 424f8a873..bdbc0650d 100644 --- a/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/Camera.h +++ b/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/Camera.h @@ -87,6 +87,16 @@ enum CamErr { CAM_ERR_NOT_PERMITTED = -10, /**< [en] Operation is not permitted.
[jp] 許容されていない操作です */ }; +/** + * @enum CAM_DEVICE_TYPE + * @brief [en] Camera device type which is being used
+ * [ja] 使用されているカメラデバイスの種類 + */ +enum CAM_DEVICE_TYPE { + CAM_DEVICE_TYPE_UNKNOWN, /**< [en] Unknown
[ja] 不明 */ + CAM_DEVICE_TYPE_ISX012, /**< [en] ISX012
[ja] ISX012 */ + CAM_DEVICE_TYPE_ISX019, /**< [en] ISX019
[ja] ISX019 */ +}; /** * @enum CAM_WHITE_BALANCE @@ -716,6 +726,16 @@ class CameraClass { */ CamImage takePicture(); + /** + * @brief Get camera device type. + * @details [en] Get camera device type which is being used.
+ * [ja] 使用されているカメラデバイスの種類を取得する。 + * @return [en] Camera device type which is being used.
+ * [ja] 使用されているカメラデバイスの種類。 + */ + + CAM_DEVICE_TYPE getDeviceType(); + /** * @brief De-initialize Spresense Camera * @details [en] De-initialize Spresense Camera. This method cancel everything of diff --git a/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/keywords.txt b/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/keywords.txt index 94fd246dc..871c65df3 100644 --- a/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/keywords.txt +++ b/Arduino15/packages/SPRESENSE/hardware/spresense/1.0.0/libraries/Camera/keywords.txt @@ -26,6 +26,7 @@ setSceneMode KEYWORD2 setColorEffect KEYWORD2 setStillPictureImageFormat KEYWORD2 takePicture KEYWORD2 +getDeviceType KEYWORD2 end KEYWORD2 # Constants @@ -39,7 +40,11 @@ CAM_ERR_CANT_CREATE_THREAD LITERAL1 CAM_ERR_INVALID_PARAM LITERAL1 CAM_ERR_NO_MEMORY LITERAL1 CAM_ERR_USR_INUSED LITERAL1 - + +CAM_DEVICE_TYPE_UNKNOWN LITERAL1 +CAM_DEVICE_TYPE_ISX012 LITERAL1 +CAM_DEVICE_TYPE_ISX019 LITERAL1 + CAM_WHITE_BALANCE_INCANDESCENT LITERAL1 CAM_WHITE_BALANCE_FLUORESCENT LITERAL1 CAM_WHITE_BALANCE_DAYLIGHT LITERAL1