Skip to content

Commit c32caec

Browse files
author
Aleksandr Kuzin
committed
<SWAUTO-4024> Integrate ethernet packet in the ASAM CMP data sink
2 parents d52ec47 + f6403ea commit c32caec

File tree

18 files changed

+186
-38
lines changed

18 files changed

+186
-38
lines changed

asam_cmp_capture_module/src/capture_fb.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ BEGIN_NAMESPACE_ASAM_CMP_CAPTURE_MODULE
1111

1212
CaptureFb::CaptureFb(const ContextPtr& ctx, const ComponentPtr& parent, const StringPtr& localId, const CaptureFbInit& init)
1313
: asam_cmp_common_lib::CaptureCommonFb(ctx, parent, localId)
14+
, allowJumboFrames(false)
1415
, ethernetWrapper(init.ethernetWrapper)
1516
, selectedEthernetDeviceName(init.selectedDeviceName)
16-
, allowJumboFrames(false)
1717
{
1818
initProperties();
1919
initEncoders();

asam_cmp_capture_module/src/interface_fb.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ InterfaceFb::InterfaceFb(const ContextPtr& ctx,
1515
const asam_cmp_common_lib::InterfaceCommonInit& init,
1616
const InterfaceFbInit& internalInit)
1717
: InterfaceCommonFb(ctx, parent, localId, init)
18+
, statusSync(internalInit.statusSync)
1819
, encoders(internalInit.encoders)
1920
, deviceStatus(internalInit.deviceStatus)
20-
, statusSync(internalInit.statusSync)
2121
, vendorDataAsString("")
2222
, ethernetWrapper(internalInit.ethernetWrapper)
2323
, allowJumboFrames(internalInit.allowJumboFrames)

asam_cmp_capture_module/src/stream_fb.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ StreamFb::StreamFb(const ContextPtr& ctx,
3030
const asam_cmp_common_lib::StreamCommonInit& init,
3131
const StreamInit& internalInit)
3232
: asam_cmp_common_lib::StreamCommonFb(ctx, parent, localId, init)
33+
, interfaceId(internalInit.interfaceId)
3334
, streamIdsList(internalInit.streamIdsList)
3435
, statusSync(internalInit.statusSync)
35-
, interfaceId(internalInit.interfaceId)
36-
, ethernetWrapper(internalInit.ethernetWrapper)
37-
, dataContext(createEncoderDataContext())
38-
, allowJumboFrames(internalInit.allowJumboFrames)
3936
, encoders(internalInit.encoderBank)
4037
, parentInterfaceUpdater(internalInit.parentInterfaceUpdater)
4138
, isConfigured(false)
39+
, ethernetWrapper(internalInit.ethernetWrapper)
40+
, allowJumboFrames(internalInit.allowJumboFrames)
41+
, dataContext(createEncoderDataContext())
4242
{
4343
createInputPort();
4444
initStatuses();

asam_cmp_common_lib/include/asam_cmp_common_lib/stream_common_fb_impl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,9 @@ StreamCommonFbImpl<Interfaces...>::StreamCommonFbImpl(const ContextPtr& ctx,
7070
const StringPtr& localId,
7171
const StreamCommonInit& init)
7272
: FunctionBlockImpl<IFunctionBlock, IStreamCommon, Interfaces...>(CreateType(), ctx, parent, localId)
73-
, streamIdManager(init.streamIdManager)
7473
, streamId(init.id)
7574
, payloadType(init.payloadType)
75+
, streamIdManager(init.streamIdManager)
7676
{
7777
initProperties();
7878
}

asam_cmp_common_lib/src/ethernet_pcpp_impl.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include <SystemUtils.h>
44
#include <EthLayer.h>
55
#include <PayloadLayer.h>
6+
#include <Packet.h>
67

78
BEGIN_NAMESPACE_ASAM_CMP_COMMON
89

asam_cmp_common_lib/src/interface_common_fb.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ void InterfaceCommonFb::initProperties()
4242
[this](PropertyObjectPtr& obj, PropertyValueEventArgsPtr& args) { propertyChangedIfNotUpdating(); };
4343

4444
propName = "PayloadType";
45-
ListPtr<StringPtr> payloadTypes{"Undefined", "CAN", "CAN FD", "Analog"};
45+
ListPtr<StringPtr> payloadTypes{"Undefined", "CAN", "CAN FD", "Analog", "Ethernet"};
4646
prop = SelectionPropertyBuilder(propName, payloadTypes, 0).build();
4747
objPtr.addProperty(prop);
4848
objPtr.getOnPropertyValueWrite(propName) +=
@@ -172,7 +172,7 @@ FunctionBlockPtr InterfaceCommonFb::onAddFunctionBlock(const StringPtr& typeId,
172172
}
173173

174174
const static std::unordered_map<uint32_t, Int> payloadTypeToIndexMap = {
175-
{PayloadType::invalid, 0}, {PayloadType::can, 1}, {PayloadType::canFd, 2}, {PayloadType::analog, 3}};
175+
{PayloadType::invalid, 0}, {PayloadType::can, 1}, {PayloadType::canFd, 2}, {PayloadType::analog, 3}, {PayloadType::ethernet, 4}};
176176

177177
const std::vector<uint32_t> indexToPayloadTypeMap = []() {
178178
std::vector<uint32_t> vec;

asam_cmp_data_sink/include/asam_cmp_data_sink/status_handler.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ class StatusMt final
2929
{
3030
public:
3131
StatusMt(const ASAM::CMP::Status& st, std::mutex& mt)
32-
: statusRef(st)
33-
, mtRef(mt)
32+
: mtRef(mt)
33+
, statusRef(st)
3434
{
3535
}
3636

asam_cmp_data_sink/include/asam_cmp_data_sink/stream_fb.h

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#pragma once
1818
#include <asam_cmp/analog_payload.h>
1919
#include <asam_cmp/can_payload.h>
20+
#include <asam_cmp/ethernet_payload.h>
2021
#include <asam_cmp/packet.h>
2122
#include <opendaq/packet_factory.h>
2223

@@ -36,11 +37,22 @@ struct CANData
3637
};
3738
#pragma pack(pop)
3839

40+
#pragma pack(push, 1)
41+
struct EthernetData
42+
{
43+
uint16_t flags;
44+
uint16_t reserved;
45+
uint16_t length;
46+
};
47+
#pragma pack(pop)
48+
49+
3950
class StreamFb final : public asam_cmp_common_lib::StreamCommonFbImpl<IAsamCmpPacketsSubscriber>
4051
{
4152
private:
4253
using Packet = ASAM::CMP::Packet;
4354
using CanPayload = ASAM::CMP::CanPayload;
55+
using EthernetPayload = ASAM::CMP::EthernetPayload;
4456
using AnalogPayload = ASAM::CMP::AnalogPayload;
4557

4658
public:
@@ -67,11 +79,12 @@ class StreamFb final : public asam_cmp_common_lib::StreamCommonFbImpl<IAsamCmpPa
6779
void createSignals();
6880
void buildDataDescriptor();
6981
void buildCanDescriptor();
82+
void buildEthernetDescriptor();
7083
void buildAnalogDescriptor(const AnalogPayload& payload);
7184
void buildAsyncDomainDescriptor();
7285
void buildSyncDomainDescriptor(const float sampleInterval);
73-
void processAsyncData(const std::vector<std::shared_ptr<Packet>>& packets);
74-
void fillCanData(CANData* const data, const std::shared_ptr<Packet>& packet);
86+
void processCanData(const std::vector<std::shared_ptr<Packet>>& packets);
87+
void processEthernetData(const std::vector<std::shared_ptr<Packet>>& packets);
7588
void processSyncData(const std::shared_ptr<Packet>& packet);
7689
bool domainChanged(const AnalogPayload& payload);
7790
bool dataChanged(const AnalogPayload& payload);

asam_cmp_data_sink/src/capture_fb.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ CaptureFb::CaptureFb(const ContextPtr& ctx,
2424
CapturePacketsPublisher& capturePacketsPublisher,
2525
ASAM::CMP::DeviceStatus&& deviceStatus)
2626
: CaptureCommonFbImpl(ctx, parent, localId)
27+
, deviceStatus(std::move(deviceStatus))
2728
, dataPacketsPublisher(dataPacketsPublisher)
2829
, capturePacketsPublisher(capturePacketsPublisher)
29-
, deviceStatus(std::move(deviceStatus))
3030
{
3131
initDeviceInfoProperties(true);
3232
setProperties();

asam_cmp_data_sink/src/data_sink_module_fb.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include <SystemUtils.h>
1010
#include <asam_cmp_common_lib/ethernet_pcpp_impl.h>
11+
#include <Packet.h>
1112

1213
#include <iostream>
1314

0 commit comments

Comments
 (0)