Compare commits
4 Commits
1b00c6a05b
...
7f192a0cea
| Author | SHA1 | Date |
|---|---|---|
|
|
7f192a0cea | |
|
|
3b60bfc986 | |
|
|
d51f88d023 | |
|
|
f3cb41d60b |
|
|
@ -243,30 +243,6 @@ unit_test linux/ubuntu/2404/amd64/clang:
|
||||||
- linux-build
|
- linux-build
|
||||||
timeout: 5m
|
timeout: 5m
|
||||||
|
|
||||||
build linux/fedora/41/amd64/gcc:
|
|
||||||
<<: *build_linux_fedora_gcc
|
|
||||||
image: fedora:41
|
|
||||||
|
|
||||||
unit_test linux/fedora/41/amd64/gcc:
|
|
||||||
<<: *test_linux_fedora_gcc
|
|
||||||
image: fedora:41
|
|
||||||
dependencies:
|
|
||||||
- build linux/fedora/41/amd64/gcc
|
|
||||||
needs:
|
|
||||||
- build linux/fedora/41/amd64/gcc
|
|
||||||
|
|
||||||
build linux/fedora/41/amd64/clang:
|
|
||||||
<<: *build_linux_fedora_clang
|
|
||||||
image: fedora:41
|
|
||||||
|
|
||||||
unit_test linux/fedora/41/amd64/clang:
|
|
||||||
<<: *test_linux_fedora_clang
|
|
||||||
image: fedora:41
|
|
||||||
dependencies:
|
|
||||||
- build linux/fedora/41/amd64/clang
|
|
||||||
needs:
|
|
||||||
- build linux/fedora/41/amd64/clang
|
|
||||||
|
|
||||||
build linux/fedora/42/amd64/gcc:
|
build linux/fedora/42/amd64/gcc:
|
||||||
<<: *build_linux_fedora_gcc
|
<<: *build_linux_fedora_gcc
|
||||||
image: fedora:42
|
image: fedora:42
|
||||||
|
|
@ -291,6 +267,30 @@ unit_test linux/fedora/42/amd64/clang:
|
||||||
needs:
|
needs:
|
||||||
- build linux/fedora/42/amd64/clang
|
- build linux/fedora/42/amd64/clang
|
||||||
|
|
||||||
|
build linux/fedora/43/amd64/gcc:
|
||||||
|
<<: *build_linux_fedora_gcc
|
||||||
|
image: fedora:43
|
||||||
|
|
||||||
|
unit_test linux/fedora/43/amd64/gcc:
|
||||||
|
<<: *test_linux_fedora_gcc
|
||||||
|
image: fedora:43
|
||||||
|
dependencies:
|
||||||
|
- build linux/fedora/43/amd64/gcc
|
||||||
|
needs:
|
||||||
|
- build linux/fedora/43/amd64/gcc
|
||||||
|
|
||||||
|
build linux/fedora/43/amd64/clang:
|
||||||
|
<<: *build_linux_fedora_clang
|
||||||
|
image: fedora:43
|
||||||
|
|
||||||
|
unit_test linux/fedora/43/amd64/clang:
|
||||||
|
<<: *test_linux_fedora_clang
|
||||||
|
image: fedora:43
|
||||||
|
dependencies:
|
||||||
|
- build linux/fedora/43/amd64/clang
|
||||||
|
needs:
|
||||||
|
- build linux/fedora/43/amd64/clang
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
# Python Module
|
# Python Module
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -90,6 +90,7 @@ static bool NeoMessageToSpyMessage(const neodevice_t* device, const neomessage_t
|
||||||
copyFrameData();
|
copyFrameData();
|
||||||
break;
|
break;
|
||||||
case Network::Type::Ethernet:
|
case Network::Type::Ethernet:
|
||||||
|
case Network::Type::AutomotiveEthernet:
|
||||||
oldmsg.Protocol = SPY_PROTOCOL_ETHERNET;
|
oldmsg.Protocol = SPY_PROTOCOL_ETHERNET;
|
||||||
oldmsg.NumberBytesData = static_cast<uint8_t>(frame.length & 0xFF);
|
oldmsg.NumberBytesData = static_cast<uint8_t>(frame.length & 0xFF);
|
||||||
oldmsg.NumberBytesHeader = static_cast<uint8_t>(frame.length >> 8);
|
oldmsg.NumberBytesHeader = static_cast<uint8_t>(frame.length >> 8);
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,8 @@ void init_ethernetstatusmessage(pybind11::module_& m) {
|
||||||
.value("LinkModeAuto", EthernetStatusMessage::LinkMode::LinkModeAuto)
|
.value("LinkModeAuto", EthernetStatusMessage::LinkMode::LinkModeAuto)
|
||||||
.value("LinkModeMaster", EthernetStatusMessage::LinkMode::LinkModeMaster)
|
.value("LinkModeMaster", EthernetStatusMessage::LinkMode::LinkModeMaster)
|
||||||
.value("LinkModeSlave", EthernetStatusMessage::LinkMode::LinkModeSlave)
|
.value("LinkModeSlave", EthernetStatusMessage::LinkMode::LinkModeSlave)
|
||||||
.value("LinkModeInvalid", EthernetStatusMessage::LinkMode::LinkModeInvalid);
|
.value("LinkModeInvalid", EthernetStatusMessage::LinkMode::LinkModeInvalid)
|
||||||
|
.value("LinkModeNone", EthernetStatusMessage::LinkMode::LinkModeNone);
|
||||||
|
|
||||||
ethernetStatusMessage
|
ethernetStatusMessage
|
||||||
.def_readonly("network", &EthernetStatusMessage::network)
|
.def_readonly("network", &EthernetStatusMessage::network)
|
||||||
|
|
|
||||||
|
|
@ -179,10 +179,11 @@ void init_network(pybind11::module_& m) {
|
||||||
.value("LSFTCAN", Network::Type::LSFTCAN)
|
.value("LSFTCAN", Network::Type::LSFTCAN)
|
||||||
.value("SWCAN", Network::Type::SWCAN)
|
.value("SWCAN", Network::Type::SWCAN)
|
||||||
.value("ISO9141", Network::Type::ISO9141)
|
.value("ISO9141", Network::Type::ISO9141)
|
||||||
.value("I2C_01", Network::Type::I2C)
|
.value("I2C", Network::Type::I2C)
|
||||||
.value("A2B", Network::Type::A2B)
|
.value("A2B", Network::Type::A2B)
|
||||||
.value("SPI", Network::Type::SPI)
|
.value("SPI", Network::Type::SPI)
|
||||||
.value("MDIO", Network::Type::MDIO)
|
.value("MDIO", Network::Type::MDIO)
|
||||||
|
.value("AutomotiveEthernet", Network::Type::AutomotiveEthernet)
|
||||||
.value("Any", Network::Type::Any)
|
.value("Any", Network::Type::Any)
|
||||||
.value("Other", Network::Type::Other);
|
.value("Other", Network::Type::Other);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,8 @@ uint64_t Decoder::GetUInt64FromLEBytes(const uint8_t* bytes) {
|
||||||
|
|
||||||
bool Decoder::decode(std::shared_ptr<Message>& result, const std::shared_ptr<Packet>& packet) {
|
bool Decoder::decode(std::shared_ptr<Message>& result, const std::shared_ptr<Packet>& packet) {
|
||||||
switch(packet->network.getType()) {
|
switch(packet->network.getType()) {
|
||||||
case Network::Type::Ethernet: {
|
case Network::Type::Ethernet:
|
||||||
|
case Network::Type::AutomotiveEthernet: {
|
||||||
result = HardwareEthernetPacket::DecodeToMessage(packet->data);
|
result = HardwareEthernetPacket::DecodeToMessage(packet->data);
|
||||||
if(!result) {
|
if(!result) {
|
||||||
report(APIEvent::Type::PacketDecodingError, APIEvent::Severity::Error);
|
report(APIEvent::Type::PacketDecodingError, APIEvent::Severity::Error);
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,8 @@ bool Encoder::encode(const Packetizer& packetizer, std::vector<uint8_t>& result,
|
||||||
netid = uint16_t(frame->network.getNetID());
|
netid = uint16_t(frame->network.getNetID());
|
||||||
|
|
||||||
switch(frame->network.getType()) {
|
switch(frame->network.getType()) {
|
||||||
case Network::Type::Ethernet: {
|
case Network::Type::Ethernet:
|
||||||
|
case Network::Type::AutomotiveEthernet: {
|
||||||
auto ethmsg = std::dynamic_pointer_cast<EthernetMessage>(message);
|
auto ethmsg = std::dynamic_pointer_cast<EthernetMessage>(message);
|
||||||
if(!ethmsg) {
|
if(!ethmsg) {
|
||||||
report(APIEvent::Type::MessageFormattingError, APIEvent::Severity::Error);
|
report(APIEvent::Type::MessageFormattingError, APIEvent::Severity::Error);
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,14 @@ enum LinkSpeed {
|
||||||
ethSpeed10000,
|
ethSpeed10000,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LinkMode {
|
enum TLinkMode {
|
||||||
|
T_LINK_NONE,
|
||||||
|
T_LINK_MASTER,
|
||||||
|
T_LINK_SLAVE,
|
||||||
|
T_LINK_AUTO,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AELinkMode {
|
||||||
AE_LINK_AUTO,
|
AE_LINK_AUTO,
|
||||||
AE_LINK_MASTER,
|
AE_LINK_MASTER,
|
||||||
AE_LINK_SLAVE,
|
AE_LINK_SLAVE,
|
||||||
|
|
@ -46,11 +53,25 @@ std::shared_ptr<Message> EthernetStatusMessage::DecodeToMessage(const std::vecto
|
||||||
default: return nullptr;
|
default: return nullptr;
|
||||||
}
|
}
|
||||||
LinkMode mode;
|
LinkMode mode;
|
||||||
switch(packet->mode) {
|
switch(Network::GetTypeOfNetID((Network::NetID)packet->network, false)) {
|
||||||
case AE_LINK_INVALID: mode = EthernetStatusMessage::LinkMode::LinkModeInvalid; break;
|
case Network::Type::Ethernet:
|
||||||
case AE_LINK_AUTO: mode = EthernetStatusMessage::LinkMode::LinkModeAuto; break;
|
switch(packet->mode) {
|
||||||
case AE_LINK_MASTER: mode = EthernetStatusMessage::LinkMode::LinkModeMaster; break;
|
case T_LINK_NONE: mode = EthernetStatusMessage::LinkMode::LinkModeNone; break;
|
||||||
case AE_LINK_SLAVE: mode = EthernetStatusMessage::LinkMode::LinkModeSlave; break;
|
case T_LINK_MASTER: mode = EthernetStatusMessage::LinkMode::LinkModeMaster; break;
|
||||||
|
case T_LINK_SLAVE: mode = EthernetStatusMessage::LinkMode::LinkModeSlave; break;
|
||||||
|
case T_LINK_AUTO: mode = EthernetStatusMessage::LinkMode::LinkModeAuto; break;
|
||||||
|
default: return nullptr;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Network::Type::AutomotiveEthernet:
|
||||||
|
switch(packet->mode) {
|
||||||
|
case AE_LINK_AUTO: mode = EthernetStatusMessage::LinkMode::LinkModeAuto; break;
|
||||||
|
case AE_LINK_MASTER: mode = EthernetStatusMessage::LinkMode::LinkModeMaster; break;
|
||||||
|
case AE_LINK_SLAVE: mode = EthernetStatusMessage::LinkMode::LinkModeSlave; break;
|
||||||
|
case AE_LINK_INVALID: mode = EthernetStatusMessage::LinkMode::LinkModeInvalid; break;
|
||||||
|
default: return nullptr;
|
||||||
|
}
|
||||||
|
break;
|
||||||
default: return nullptr;
|
default: return nullptr;
|
||||||
}
|
}
|
||||||
return std::make_shared<EthernetStatusMessage>(packet->network, packet->state, speed, packet->duplex, mode);
|
return std::make_shared<EthernetStatusMessage>(packet->network, packet->state, speed, packet->duplex, mode);
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,8 @@ neomessage_t icsneo::CreateNeoMessage(const std::shared_ptr<Message> message) {
|
||||||
can.status.canfdESI = canmsg->errorStateIndicator;
|
can.status.canfdESI = canmsg->errorStateIndicator;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Network::Type::Ethernet: {
|
case Network::Type::Ethernet:
|
||||||
|
case Network::Type::AutomotiveEthernet: {
|
||||||
neomessage_eth_t& eth = *(neomessage_eth_t*)&neomsg;
|
neomessage_eth_t& eth = *(neomessage_eth_t*)&neomsg;
|
||||||
auto ethmsg = std::static_pointer_cast<EthernetMessage>(message);
|
auto ethmsg = std::static_pointer_cast<EthernetMessage>(message);
|
||||||
eth.preemptionFlags = ethmsg->preemptionFlags;
|
eth.preemptionFlags = ethmsg->preemptionFlags;
|
||||||
|
|
@ -142,7 +143,8 @@ std::shared_ptr<Message> icsneo::CreateMessageFromNeoMessage(const neomessage_t*
|
||||||
canmsg->errorStateIndicator = can.status.canfdESI;
|
canmsg->errorStateIndicator = can.status.canfdESI;
|
||||||
return canmsg;
|
return canmsg;
|
||||||
}
|
}
|
||||||
case Network::Type::Ethernet: {
|
case Network::Type::Ethernet:
|
||||||
|
case Network::Type::AutomotiveEthernet: {
|
||||||
neomessage_eth_t& eth = *(neomessage_eth_t*)neomessage;
|
neomessage_eth_t& eth = *(neomessage_eth_t*)neomessage;
|
||||||
auto ethmsg = std::make_shared<EthernetMessage>();
|
auto ethmsg = std::make_shared<EthernetMessage>();
|
||||||
ethmsg->network = network;
|
ethmsg->network = network;
|
||||||
|
|
|
||||||
|
|
@ -136,6 +136,7 @@ std::vector<uint8_t> TransmitMessage::EncodeFromMessage(std::shared_ptr<Frame> f
|
||||||
std::vector<uint8_t> result;
|
std::vector<uint8_t> result;
|
||||||
switch(frame->network.getType()) {
|
switch(frame->network.getType()) {
|
||||||
case Network::Type::Ethernet:
|
case Network::Type::Ethernet:
|
||||||
|
case Network::Type::AutomotiveEthernet:
|
||||||
result = EncodeFromMessageEthernet(frame, report);
|
result = EncodeFromMessageEthernet(frame, report);
|
||||||
break;
|
break;
|
||||||
case Network::Type::CAN:
|
case Network::Type::CAN:
|
||||||
|
|
|
||||||
|
|
@ -214,7 +214,8 @@ void printMessage(const std::shared_ptr<icsneo::Message>& message) {
|
||||||
std::cout << std::dec << '(' << canMessage->timestamp << " ns since 1/1/2007)\n";
|
std::cout << std::dec << '(' << canMessage->timestamp << " ns since 1/1/2007)\n";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case icsneo::Network::Type::Ethernet: {
|
case icsneo::Network::Type::Ethernet:
|
||||||
|
case icsneo::Network::Type::AutomotiveEthernet: {
|
||||||
auto ethMessage = std::static_pointer_cast<icsneo::EthernetMessage>(message);
|
auto ethMessage = std::static_pointer_cast<icsneo::EthernetMessage>(message);
|
||||||
|
|
||||||
std::cout << "\t\t" << ethMessage->network << " Frame - " << std::dec
|
std::cout << "\t\t" << ethMessage->network << " Frame - " << std::dec
|
||||||
|
|
|
||||||
|
|
@ -199,7 +199,8 @@ int main() {
|
||||||
std::cout << std::dec << '(' << canMessage->timestamp << " ns since 1/1/2007)\n";
|
std::cout << std::dec << '(' << canMessage->timestamp << " ns since 1/1/2007)\n";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case icsneo::Network::Type::Ethernet: {
|
case icsneo::Network::Type::Ethernet:
|
||||||
|
case icsneo::Network::Type::AutomotiveEthernet: {
|
||||||
auto ethMessage = std::static_pointer_cast<icsneo::EthernetMessage>(message);
|
auto ethMessage = std::static_pointer_cast<icsneo::EthernetMessage>(message);
|
||||||
|
|
||||||
std::cout << "\t\t" << ethMessage->network << " Frame - " << std::dec
|
std::cout << "\t\t" << ethMessage->network << " Frame - " << std::dec
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,7 @@ int main(int argc, char* argv[]) {
|
||||||
const auto frame = std::static_pointer_cast<icsneo::Frame>(msg);
|
const auto frame = std::static_pointer_cast<icsneo::Frame>(msg);
|
||||||
if(frame->network.getType() == icsneo::Network::Type::CAN) {
|
if(frame->network.getType() == icsneo::Network::Type::CAN) {
|
||||||
++canFrameCount;
|
++canFrameCount;
|
||||||
} else if(frame->network.getType() == icsneo::Network::Type::Ethernet) {
|
} else if(frame->network.getType() == icsneo::Network::Type::AutomotiveEthernet || frame->network.getType() == icsneo::Network::Type::Ethernet) {
|
||||||
++ethFrameCount;
|
++ethFrameCount;
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ public:
|
||||||
LinkModeMaster,
|
LinkModeMaster,
|
||||||
LinkModeSlave,
|
LinkModeSlave,
|
||||||
LinkModeInvalid,
|
LinkModeInvalid,
|
||||||
|
LinkModeNone,
|
||||||
};
|
};
|
||||||
EthernetStatusMessage(Network net, bool state, LinkSpeed speed, bool duplex, LinkMode mode) : Message(Type::EthernetStatus),
|
EthernetStatusMessage(Network net, bool state, LinkSpeed speed, bool duplex, LinkMode mode) : Message(Type::EthernetStatus),
|
||||||
network(net), state(state), speed(speed), duplex(duplex), mode(mode) {}
|
network(net), state(state), speed(speed), duplex(duplex), mode(mode) {}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue