Skip to content

Commit 97f2872

Browse files
committed
[roc] Extend CardFinder for single cards
1 parent 4db88e4 commit 97f2872

File tree

6 files changed

+36
-21
lines changed

6 files changed

+36
-21
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ if(NOT APPLE)
6363
set(boost_python_component "python${Python3_VERSION_MAJOR}${Python3_VERSION_MINOR}")
6464
else()
6565
# Backwards compatible. Can be removed once the Python3 recipe is stable
66-
message(WARNING "Python 3 was not found: falling back to Python 3")
66+
message(WARNING "Python 3 was not found: falling back to Python 2")
6767
find_package(Python2 2.7 COMPONENTS Development REQUIRED)
6868
set(boost_python_component "python27")
6969
endif()

include/ReadoutCard/CardFinder.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@
1717
#define ALICEO2_INCLUDE_READOUTCARD_CARDFINDER_H_
1818

1919
#include "ReadoutCard/CardDescriptor.h"
20+
#include "ReadoutCard/Parameters.h"
2021

2122
namespace AliceO2
2223
{
2324
namespace roc
2425
{
2526

2627
std::vector<CardDescriptor> findCards(); //Possibly extend with card types (crorc, cru)
28+
CardDescriptor findCard(const std::string cardId);
29+
CardDescriptor findCard(const Parameters::CardIdType& cardId);
2730

2831
} // namespace roc
2932
} // namespace AliceO2

include/ReadoutCard/Parameters.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,7 @@ class Parameters
382382
/// \return Reference to this object for chaining calls
383383
auto setTimeFrameDetectionEnabled(TimeFrameDetectionEnabledType value) -> Parameters&;
384384

385-
// on-throwing getters
385+
// non-throwing getters
386386

387387
/// Gets the AllowRejection parameter
388388
/// \return The value wrapped in an optional if it is present, or an empty optional if it was not

src/CardFinder.cxx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,15 @@ std::vector<CardDescriptor> findCards()
2727
return cards;
2828
}
2929

30+
CardDescriptor findCard(const std::string cardId)
31+
{
32+
return RocPciDevice(roc::Parameters::cardIdFromString(cardId)).getCardDescriptor();
33+
}
34+
35+
CardDescriptor findCard(const Parameters::CardIdType& cardId)
36+
{
37+
return RocPciDevice(cardId).getCardDescriptor();
38+
}
39+
3040
} // namespace roc
3141
} // namespace AliceO2

src/DmaChannelPdaBase.cxx

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -50,21 +50,22 @@ DmaChannelPdaBase::DmaChannelPdaBase(const Parameters& parameters,
5050
if (auto bufferParameters = parameters.getBufferParameters()) {
5151
// Create appropriate BufferProvider subclass
5252
auto bufferId = getPdaDmaBufferIndexPages(getChannelNumber(), 0);
53-
mBufferProvider = Visitor::apply<std::unique_ptr<DmaBufferProviderInterface>>(*bufferParameters,
54-
[&](buffer_parameters::Memory parameters) {
55-
log("Initializing with DMA buffer from memory region", InfoLogger::InfoLogger::Debug);
56-
return std::make_unique<PdaDmaBufferProvider>(mRocPciDevice->getPciDevice(), parameters.address,
57-
parameters.size, bufferId, true);
58-
},
59-
[&](buffer_parameters::File parameters) {
60-
log("Initializing with DMA buffer from memory-mapped file", InfoLogger::InfoLogger::Debug);
61-
return std::make_unique<FilePdaDmaBufferProvider>(mRocPciDevice->getPciDevice(), parameters.path,
62-
parameters.size, bufferId, true);
63-
},
64-
[&](buffer_parameters::Null) {
65-
log("Initializing with null DMA buffer", InfoLogger::InfoLogger::Debug);
66-
return std::make_unique<NullDmaBufferProvider>();
67-
});
53+
mBufferProvider = Visitor::apply<std::unique_ptr<DmaBufferProviderInterface>>(
54+
*bufferParameters,
55+
[&](buffer_parameters::Memory parameters) {
56+
log("Initializing with DMA buffer from memory region", InfoLogger::InfoLogger::Debug);
57+
return std::make_unique<PdaDmaBufferProvider>(mRocPciDevice->getPciDevice(), parameters.address,
58+
parameters.size, bufferId, true);
59+
},
60+
[&](buffer_parameters::File parameters) {
61+
log("Initializing with DMA buffer from memory-mapped file", InfoLogger::InfoLogger::Debug);
62+
return std::make_unique<FilePdaDmaBufferProvider>(mRocPciDevice->getPciDevice(), parameters.path,
63+
parameters.size, bufferId, true);
64+
},
65+
[&](buffer_parameters::Null) {
66+
log("Initializing with null DMA buffer", InfoLogger::InfoLogger::Debug);
67+
return std::make_unique<NullDmaBufferProvider>();
68+
});
6869
//TODO: This can be simplified as only the
6970
//first case is used...
7071
} else {

src/Dummy/DummyDmaChannel.cxx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,11 @@ DummyDmaChannel::DummyDmaChannel(const Parameters& params)
4646

4747
if (auto bufferParameters = params.getBufferParameters()) {
4848
// Create appropriate BufferProvider subclass
49-
Visitor::apply(*bufferParameters,
50-
[&](buffer_parameters::Memory parameters) { mBufferSize = parameters.size; },
51-
[&](buffer_parameters::File parameters) { mBufferSize = parameters.size; },
52-
[&](buffer_parameters::Null) { mBufferSize = 0; });
49+
Visitor::apply(
50+
*bufferParameters,
51+
[&](buffer_parameters::Memory parameters) { mBufferSize = parameters.size; },
52+
[&](buffer_parameters::File parameters) { mBufferSize = parameters.size; },
53+
[&](buffer_parameters::Null) { mBufferSize = 0; });
5354
} else {
5455
BOOST_THROW_EXCEPTION(ParameterException() << ErrorInfo::Message("DmaChannel requires buffer_parameters"));
5556
}

0 commit comments

Comments
 (0)