Skip to content

Commit b948ba6

Browse files
authored
Add ZEDTools and ZEDException (#7)
1 parent e1da35e commit b948ba6

File tree

3 files changed

+91
-1
lines changed

3 files changed

+91
-1
lines changed

README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,17 @@ You must manually load the library first before using it.
3434
```
3535
ZEDJavaAPINativeLibrary.load();
3636
```
37-
Ensure [this test](https://github.com/ihmcrobotics/zed-java-api/blob/main/src/test/java/us/ihmc/zed/test/TestNativeLibraryLoads.java) runs on your machine before proceeding.
37+
38+
After the native JNI library is loaded, programming using zed-java-api is nearly identical to zed-c-api.
39+
40+
### Tools
41+
42+
#### ZEDTools.errorName(int zedErrorCode)
43+
Retrieve the error name associated with an error code
44+
#### ZEDTools.errorMessage(int zedErrorCode)
45+
Retrieve a formatted error message from an error code
46+
#### ZEDTools.throwOnError(int zedErrorCode)
47+
Throw a ZEDException if an error code is not SL_ERROR_CODE_SUCCESS
3848

3949
### OpenCV Demo
4050
A basic demo to display the images read from the camera is located in [DemoImageCaptureOpenCV.java](https://github.com/ihmcrobotics/zed-java-api/blob/main/src/test/java/us/ihmc/zed/test/DemoImageCaptureOpenCV.java).
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package us.ihmc.zed;
2+
3+
public class ZEDException extends Exception
4+
{
5+
private final int zedErrorCode;
6+
7+
public ZEDException(int zedErrorCode)
8+
{
9+
this.zedErrorCode = zedErrorCode;
10+
}
11+
12+
@Override
13+
public String getMessage()
14+
{
15+
return ZEDTools.errorMessage(zedErrorCode);
16+
}
17+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package us.ihmc.zed;
2+
3+
import static us.ihmc.zed.global.zed.*;
4+
5+
public final class ZEDTools
6+
{
7+
public static String errorName(int zedErrorCode)
8+
{
9+
return switch (zedErrorCode)
10+
{
11+
case SL_ERROR_CODE_CORRUPTED_FRAME -> "SL_ERROR_CODE_CORRUPTED_FRAME";
12+
case SL_ERROR_CODE_CAMERA_REBOOTING -> "SL_ERROR_CODE_CAMERA_REBOOTING";
13+
case SL_ERROR_CODE_SUCCESS -> "SL_ERROR_CODE_SUCCESS";
14+
case SL_ERROR_CODE_FAILURE -> "SL_ERROR_CODE_FAILURE";
15+
case SL_ERROR_CODE_NO_GPU_COMPATIBLE -> "SL_ERROR_CODE_NO_GPU_COMPATIBLE";
16+
case SL_ERROR_CODE_NOT_ENOUGH_GPU_MEMORY -> "SL_ERROR_CODE_NOT_ENOUGH_GPU_MEMORY";
17+
case SL_ERROR_CODE_CAMERA_NOT_DETECTED -> "SL_ERROR_CODE_CAMERA_NOT_DETECTED";
18+
case SL_ERROR_CODE_SENSORS_NOT_INITIALIZED -> "SL_ERROR_CODE_SENSORS_NOT_INITIALIZED";
19+
case SL_ERROR_CODE_SENSORS_NOT_AVAILABLE -> "SL_ERROR_CODE_SENSORS_NOT_AVAILABLE";
20+
case SL_ERROR_CODE_INVALID_RESOLUTION -> "SL_ERROR_CODE_INVALID_RESOLUTION";
21+
case SL_ERROR_CODE_LOW_USB_BANDWIDTH -> "SL_ERROR_CODE_LOW_USB_BANDWIDTH";
22+
case SL_ERROR_CODE_CALIBRATION_FILE_NOT_AVAILABLE -> "SL_ERROR_CODE_CALIBRATION_FILE_NOT_AVAILABLE";
23+
case SL_ERROR_CODE_INVALID_CALIBRATION_FILE -> "SL_ERROR_CODE_INVALID_CALIBRATION_FILE";
24+
case SL_ERROR_CODE_INVALID_SVO_FILE -> "SL_ERROR_CODE_INVALID_SVO_FILE";
25+
case SL_ERROR_CODE_SVO_RECORDING_ERROR -> "SL_ERROR_CODE_SVO_RECORDING_ERROR";
26+
case SL_ERROR_CODE_SVO_UNSUPPORTED_COMPRESSION -> "SL_ERROR_CODE_SVO_UNSUPPORTED_COMPRESSION";
27+
case SL_ERROR_CODE_END_OF_SVOFILE_REACHED -> "SL_ERROR_CODE_END_OF_SVOFILE_REACHED";
28+
case SL_ERROR_CODE_INVALID_COORDINATE_SYSTEM -> "SL_ERROR_CODE_INVALID_COORDINATE_SYSTEM";
29+
case SL_ERROR_CODE_INVALID_FIRMWARE -> "SL_ERROR_CODE_INVALID_FIRMWARE";
30+
case SL_ERROR_CODE_INVALID_FUNCTION_PARAMETERS -> "SL_ERROR_CODE_INVALID_FUNCTION_PARAMETERS";
31+
case SL_ERROR_CODE_CUDA_ERROR -> "SL_ERROR_CODE_CUDA_ERROR";
32+
case SL_ERROR_CODE_CAMERA_NOT_INITIALIZED -> "SL_ERROR_CODE_CAMERA_NOT_INITIALIZED";
33+
case SL_ERROR_CODE_NVIDIA_DRIVER_OUT_OF_DATE -> "SL_ERROR_CODE_NVIDIA_DRIVER_OUT_OF_DATE";
34+
case SL_ERROR_CODE_INVALID_FUNCTION_CALL -> "SL_ERROR_CODE_INVALID_FUNCTION_CALL";
35+
case SL_ERROR_CODE_CORRUPTED_SDK_INSTALLATION -> "SL_ERROR_CODE_CORRUPTED_SDK_INSTALLATION";
36+
case SL_ERROR_CODE_INCOMPATIBLE_SDK_VERSION -> "SL_ERROR_CODE_INCOMPATIBLE_SDK_VERSION";
37+
case SL_ERROR_CODE_INVALID_AREA_FILE -> "SL_ERROR_CODE_INVALID_AREA_FILE";
38+
case SL_ERROR_CODE_INCOMPATIBLE_AREA_FILE -> "SL_ERROR_CODE_INCOMPATIBLE_AREA_FILE";
39+
case SL_ERROR_CODE_CAMERA_FAILED_TO_SETUP -> "SL_ERROR_CODE_CAMERA_FAILED_TO_SETUP";
40+
case SL_ERROR_CODE_CAMERA_DETECTION_ISSUE -> "SL_ERROR_CODE_CAMERA_DETECTION_ISSUE";
41+
case SL_ERROR_CODE_CANNOT_START_CAMERA_STREAM -> "SL_ERROR_CODE_CANNOT_START_CAMERA_STREAM";
42+
case SL_ERROR_CODE_NO_GPU_DETECTED -> "SL_ERROR_CODE_NO_GPU_DETECTED";
43+
case SL_ERROR_CODE_PLANE_NOT_FOUND -> "SL_ERROR_CODE_PLANE_NOT_FOUND";
44+
case SL_ERROR_CODE_MODULE_NOT_COMPATIBLE_WITH_CAMERA -> "SL_ERROR_CODE_MODULE_NOT_COMPATIBLE_WITH_CAMERA";
45+
case SL_ERROR_CODE_MOTION_SENSORS_REQUIRED -> "SL_ERROR_CODE_MOTION_SENSORS_REQUIRED";
46+
case SL_ERROR_CODE_MODULE_NOT_COMPATIBLE_WITH_CUDA_VERSION -> "SL_ERROR_CODE_MODULE_NOT_COMPATIBLE_WITH_CUDA_VERSION";
47+
case SL_ERROR_CODE_SENSORS_DATA_REQUIRED -> "SL_ERROR_CODE_SENSORS_DATA_REQUIRED";
48+
case SL_ERROR_CODE_CONFIGURATION_FALLBACK -> "SL_ERROR_CODE_CONFIGURATION_FALLBACK";
49+
default -> "UNKNOWN";
50+
};
51+
}
52+
53+
public static String errorMessage(int zedErrorCode)
54+
{
55+
return "ZED Error (%d): %s".formatted(zedErrorCode, errorName(zedErrorCode));
56+
}
57+
58+
public static void throwOnError(int zedErrorCode) throws ZEDException
59+
{
60+
if (zedErrorCode != SL_ERROR_CODE_SUCCESS)
61+
throw new ZEDException(zedErrorCode);
62+
}
63+
}

0 commit comments

Comments
 (0)