Skip to content

Commit

Permalink
Revert to Clarius Cast 11.2.0 due to library incompatabilities with 12.0
Browse files Browse the repository at this point in the history
  • Loading branch information
smistad committed Feb 3, 2025
1 parent 810365a commit 2e6accf
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 26 deletions.
20 changes: 9 additions & 11 deletions cmake/ExternalClarius.cmake
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
# Download clarius cast API
include(cmake/Externals.cmake)

set(CLARIUS_CAST_VERSION "12.0.0")

# Download license
file(DOWNLOAD https://raw.githubusercontent.com/clariusdev/cast/v${CLARIUS_CAST_VERSION}/LICENSE ${FAST_EXTERNAL_INSTALL_DIR}/licenses/clarius/LICENSE)
file(DOWNLOAD https://raw.githubusercontent.com/clariusdev/cast/v11.2.0/LICENSE ${FAST_EXTERNAL_INSTALL_DIR}/licenses/clarius/LICENSE)

if(WIN32)
set(URL "https://github.com/clariusdev/cast/releases/download/v${CLARIUS_CAST_VERSION}/cast-${CLARIUS_CAST_VERSION}-windows.x86_64.zip")
set(URL "https://github.com/clariusdev/cast/releases/download/v11.2.0/cast-11.2.0-windows.x86_64.zip")
elseif(APPLE)
if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
set(URL "https://github.com/clariusdev/cast/releases/download/v${CLARIUS_CAST_VERSION}/cast-${CLARIUS_CAST_VERSION}-macos.arm64.zip")
set(URL "https://github.com/clariusdev/cast/releases/download/v11.2.0/cast-11.2.0-macos.arm64.zip")
else()
set(URL "https://github.com/clariusdev/cast/releases/download/v${CLARIUS_CAST_VERSION}/cast-${CLARIUS_CAST_VERSION}-macos.x86_64.zip")
set(URL "https://github.com/clariusdev/cast/releases/download/v11.2.0/cast-11.2.0-macos.x86_64.zip")
endif()
else()
set(URL "https://github.com/clariusdev/cast/releases/download/v${CLARIUS_CAST_VERSION}/cast-${CLARIUS_CAST_VERSION}-linux.x86_64-gcc_ubuntu_22.04.zip")
set(URL "https://github.com/clariusdev/cast/releases/download/v11.2.0/cast-11.2.0-linux.x86_64-gcc_ubuntu_20.04.zip")
endif()

if(WIN32)
Expand All @@ -27,7 +25,7 @@ ExternalProject_Add(clarius
BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/cast.lib ${FAST_EXTERNAL_INSTALL_DIR}/lib/ COMMAND
${CMAKE_COMMAND} -E copy ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/cast.dll ${FAST_EXTERNAL_INSTALL_DIR}/bin/ COMMAND
${CMAKE_COMMAND} -E copy_directory ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/cast ${FAST_EXTERNAL_INSTALL_DIR}/include/cast
${CMAKE_COMMAND} -E copy_directory ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/include ${FAST_EXTERNAL_INSTALL_DIR}/include/
)
elseif(APPLE)
if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
Expand All @@ -38,7 +36,7 @@ if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64")
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/libcast${CMAKE_SHARED_LIBRARY_SUFFIX} ${FAST_EXTERNAL_INSTALL_DIR}/lib/ COMMAND
${CMAKE_COMMAND} -E copy_directory ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/cast ${FAST_EXTERNAL_INSTALL_DIR}/include/cast
${CMAKE_COMMAND} -E copy_directory ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/include ${FAST_EXTERNAL_INSTALL_DIR}/include/
)
else()
ExternalProject_Add(clarius
Expand All @@ -48,7 +46,7 @@ else()
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/libcast${CMAKE_SHARED_LIBRARY_SUFFIX} ${FAST_EXTERNAL_INSTALL_DIR}/lib/ COMMAND
${CMAKE_COMMAND} -E copy_directory ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/cast ${FAST_EXTERNAL_INSTALL_DIR}/include/cast
${CMAKE_COMMAND} -E copy_directory ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/include ${FAST_EXTERNAL_INSTALL_DIR}/include/
)
endif()
else()
Expand All @@ -59,7 +57,7 @@ ExternalProject_Add(clarius
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/libcast${CMAKE_SHARED_LIBRARY_SUFFIX} ${FAST_EXTERNAL_INSTALL_DIR}/lib/ COMMAND
${CMAKE_COMMAND} -E copy_directory ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/cast ${FAST_EXTERNAL_INSTALL_DIR}/include/cast
${CMAKE_COMMAND} -E copy_directory ${FAST_EXTERNAL_BUILD_DIR}/clarius/src/clarius/include ${FAST_EXTERNAL_INSTALL_DIR}/include/
)
endif()
list(APPEND FAST_EXTERNAL_DEPENDENCIES clarius)
50 changes: 35 additions & 15 deletions source/FAST/Streamers/ClariusStreamer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,31 +103,51 @@ void* ClariusStreamer::getFunc(std::string name) {
void ClariusStreamer::execute() {
if(!mStreamIsStarted) {
reportInfo() << "Trying to set up Clarius streaming..." << reportEnd();
int argc = 0;
std::string keydir = Config::getKernelBinaryPath();
// TODO A hack here to get this to work. Fix later
// Lambdas converted to C style pointers can't have captures
static ClariusStreamer::pointer self = std::dynamic_pointer_cast<ClariusStreamer>(mPtr.lock());

CusInitParams params;
params.args.argc = 0;
params.storeDir = keydir.c_str();
params.newProcessedImageFn = [](const void* img, const CusProcessedImageInfo* nfo, int npos, const CusPosInfo* pos) {
self->newImageFn(img, nfo, npos, pos);
};
params.width = 512;
params.height = 512;
params.errorFn = [](const char* msg) {
self->getReporter().error() << msg << self->getReporter().end();
};

auto init = (int (*)(const CusInitParams* params))getFunc("cusCastInit");
int success = init(&params);
auto init = (int (*)(int argc,
char** argv,
const char* dir,
CusNewProcessedImageFn newProcessedImage,
CusNewRawImageFn newRawImage,
CusNewSpectralImageFn newSpectralImage,
CusNewImuDataFn newImuData,
CusFreezeFn freeze,
CusButtonFn btn,
CusProgressFn progress,
CusErrorFn err,
int width,
int height
))getFunc("cusCastInit");
int success = init(argc, nullptr, keydir.c_str(),
// new image callback
[](const void* img, const CusProcessedImageInfo* nfo, int npos, const CusPosInfo* pos)
{
self->newImageFn(img, nfo, npos, pos);
},
nullptr/*pre-scanconverted image*/,
nullptr/*spectral image*/,
nullptr/*imu*/,
nullptr/*freeze*/,
nullptr/*button*/,
nullptr/*progress*/,
/*error call back*/
[](const char* msg) {
self->getReporter().error() << msg << self->getReporter().end();
},
512,
512
);
if(success != 0)
throw Exception("Unable to initialize clarius cast");
reportInfo() << "Clarius streamer initialized" << reportEnd();

auto connect = (int (*)(const char* ipAddress, unsigned int port, const char* cert, CusConnectFn fn))getFunc("cusCastConnect");
success = connect(mIPAddress.c_str(), mPort, "research", [](int port, int imuPort, int swMatch) {
success = connect(mIPAddress.c_str(), mPort, "research", [](int port, int swMatch) {
if (port > 0) {
self->getReporter().info() << "Clarius connect on UDP port " << port << self->getReporter().end();
if (swMatch == CUS_FAILURE) {
Expand Down

0 comments on commit 2e6accf

Please sign in to comment.