renamed Frame to BusMessage
parent
e3ff239da7
commit
dc54bc6868
|
|
@ -462,7 +462,7 @@ bool icsneo_transmit(const neodevice_t* device, const neomessage_t* message) {
|
||||||
if(!icsneo_isValidNeoDevice(device))
|
if(!icsneo_isValidNeoDevice(device))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if(auto frame = std::dynamic_pointer_cast<icsneo::Frame>(CreateMessageFromNeoMessage(message)))
|
if(auto frame = std::dynamic_pointer_cast<icsneo::BusMessage>(CreateMessageFromNeoMessage(message)))
|
||||||
return device->device->transmit(frame);
|
return device->device->transmit(frame);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ bool Encoder::encode(const Packetizer& packetizer, std::vector<uint8_t>& result,
|
||||||
|
|
||||||
switch(message->type) {
|
switch(message->type) {
|
||||||
case Message::Type::Frame: {
|
case Message::Type::Frame: {
|
||||||
auto frame = std::dynamic_pointer_cast<Frame>(message);
|
auto frame = std::dynamic_pointer_cast<BusMessage>(message);
|
||||||
|
|
||||||
// Frame uses frame->data as the buffer unless directed otherwise
|
// Frame uses frame->data as the buffer unless directed otherwise
|
||||||
buffer = &frame->data;
|
buffer = &frame->data;
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ bool A2BWAVOutput::callIfMatch(const std::shared_ptr<Message>& message) const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto& frameMsg = std::dynamic_pointer_cast<Frame>(message);
|
const auto& frameMsg = std::dynamic_pointer_cast<BusMessage>(message);
|
||||||
|
|
||||||
if(!frameMsg) {
|
if(!frameMsg) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ neomessage_t icsneo::CreateNeoMessage(const std::shared_ptr<Message> message) {
|
||||||
{
|
{
|
||||||
case Message::Type::Frame: {
|
case Message::Type::Frame: {
|
||||||
neomessage_frame_t& frame = *(neomessage_frame_t*)&neomsg;
|
neomessage_frame_t& frame = *(neomessage_frame_t*)&neomsg;
|
||||||
auto framemsg = std::static_pointer_cast<Frame>(message);
|
auto framemsg = std::static_pointer_cast<BusMessage>(message);
|
||||||
const auto netType = framemsg->network.getType();
|
const auto netType = framemsg->network.getType();
|
||||||
|
|
||||||
frame.netid = (neonetid_t)framemsg->network.getNetID();
|
frame.netid = (neonetid_t)framemsg->network.getNetID();
|
||||||
|
|
|
||||||
|
|
@ -735,7 +735,7 @@ std::optional<CoreminiHeader> Device::readCoreminiHeader(Disk::MemoryType memTyp
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Device::transmit(std::shared_ptr<Frame> frame) {
|
bool Device::transmit(std::shared_ptr<BusMessage> frame) {
|
||||||
if(!isOpen()) {
|
if(!isOpen()) {
|
||||||
report(APIEvent::Type::DeviceCurrentlyClosed, APIEvent::Severity::Error);
|
report(APIEvent::Type::DeviceCurrentlyClosed, APIEvent::Severity::Error);
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -768,7 +768,7 @@ bool Device::transmit(std::shared_ptr<Frame> frame) {
|
||||||
return com->sendPacket(packet);
|
return com->sendPacket(packet);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Device::transmit(std::vector<std::shared_ptr<Frame>> frames) {
|
bool Device::transmit(std::vector<std::shared_ptr<BusMessage>> frames) {
|
||||||
for(auto& frame : frames) {
|
for(auto& frame : frames) {
|
||||||
if(!transmit(frame))
|
if(!transmit(frame))
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ void FlexRay::Extension::handleMessage(const std::shared_ptr<Message>& message)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FlexRay::Extension::transmitHook(const std::shared_ptr<Frame>& frame, bool& success) {
|
bool FlexRay::Extension::transmitHook(const std::shared_ptr<BusMessage>& frame, bool& success) {
|
||||||
if(!frame || frame->network.getType() != _icsneo_msg_bus_type_t::icsneo_msg_bus_type_flexray)
|
if(!frame || frame->network.getType() != _icsneo_msg_bus_type_t::icsneo_msg_bus_type_flexray)
|
||||||
return true; // Don't hook non-FlexRay messages
|
return true; // Don't hook non-FlexRay messages
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -260,7 +260,7 @@ void example4(const std::shared_ptr<icsneo::Device>& rada2b) {
|
||||||
[] (std::shared_ptr<icsneo::Message> newMsg) {
|
[] (std::shared_ptr<icsneo::Message> newMsg) {
|
||||||
|
|
||||||
if(newMsg->type == icsneo::Message::Type::Frame) {
|
if(newMsg->type == icsneo::Message::Type::Frame) {
|
||||||
const auto& frame = std::dynamic_pointer_cast<icsneo::Frame>(newMsg);
|
const auto& frame = std::dynamic_pointer_cast<icsneo::BusMessage>(newMsg);
|
||||||
if(frame && frame->network.getNetID() == icsneo::Network::NetID::I2C2) {
|
if(frame && frame->network.getNetID() == icsneo::Network::NetID::I2C2) {
|
||||||
const auto& i2cMessage = std::dynamic_pointer_cast<icsneo::I2CMessage>(frame);
|
const auto& i2cMessage = std::dynamic_pointer_cast<icsneo::I2CMessage>(frame);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -186,7 +186,7 @@ void printMessage(const std::shared_ptr<icsneo::Message>& message) {
|
||||||
switch(message->type) {
|
switch(message->type) {
|
||||||
case icsneo::Message::Type::Frame: {
|
case icsneo::Message::Type::Frame: {
|
||||||
// A message of type Frame is guaranteed to be a Frame, so we can static cast safely
|
// A message of type Frame is guaranteed to be a Frame, so we can static cast safely
|
||||||
auto frame = std::static_pointer_cast<icsneo::Frame>(message);
|
auto frame = std::static_pointer_cast<icsneo::BusMessage>(message);
|
||||||
switch(frame->network.getType()) {
|
switch(frame->network.getType()) {
|
||||||
case _icsneo_msg_bus_type_t::icsneo_msg_bus_type_can: {
|
case _icsneo_msg_bus_type_t::icsneo_msg_bus_type_can: {
|
||||||
// A message of type CAN is guaranteed to be a CANMessage, so we can static cast safely
|
// A message of type CAN is guaranteed to be a CANMessage, so we can static cast safely
|
||||||
|
|
|
||||||
|
|
@ -97,7 +97,7 @@ int main() {
|
||||||
|
|
||||||
auto handler = device->addMessageCallback(std::make_shared<icsneo::MessageCallback>([&](std::shared_ptr<icsneo::Message> message) {
|
auto handler = device->addMessageCallback(std::make_shared<icsneo::MessageCallback>([&](std::shared_ptr<icsneo::Message> message) {
|
||||||
if(icsneo::Message::Type::Frame == message->type) {
|
if(icsneo::Message::Type::Frame == message->type) {
|
||||||
auto frame = std::static_pointer_cast<icsneo::Frame>(message);
|
auto frame = std::static_pointer_cast<icsneo::BusMessage>(message);
|
||||||
if(_icsneo_msg_bus_type_t::icsneo_msg_bus_type_lin == frame->network.getType()) {
|
if(_icsneo_msg_bus_type_t::icsneo_msg_bus_type_lin == frame->network.getType()) {
|
||||||
auto msg = std::static_pointer_cast<icsneo::LINMessage>(message);
|
auto msg = std::static_pointer_cast<icsneo::LINMessage>(message);
|
||||||
std::cout << msg->network << " RX frame | ID: 0x" << std::hex << static_cast<int>(msg->ID) << " | ";
|
std::cout << msg->network << " RX frame | ID: 0x" << std::hex << static_cast<int>(msg->ID) << " | ";
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ int main()
|
||||||
auto handler = device->addMessageCallback(std::make_shared<icsneo::MessageCallback>([&](std::shared_ptr<icsneo::Message> message)
|
auto handler = device->addMessageCallback(std::make_shared<icsneo::MessageCallback>([&](std::shared_ptr<icsneo::Message> message)
|
||||||
{
|
{
|
||||||
if(icsneo::Message::Type::Frame == message->type) {
|
if(icsneo::Message::Type::Frame == message->type) {
|
||||||
auto frame = std::static_pointer_cast<icsneo::Frame>(message);
|
auto frame = std::static_pointer_cast<icsneo::BusMessage>(message);
|
||||||
if(_icsneo_msg_bus_type_t::icsneo_msg_bus_type_mdio == frame->network.getType()) {
|
if(_icsneo_msg_bus_type_t::icsneo_msg_bus_type_mdio == frame->network.getType()) {
|
||||||
auto msg = std::static_pointer_cast<icsneo::MDIOMessage>(message);
|
auto msg = std::static_pointer_cast<icsneo::MDIOMessage>(message);
|
||||||
std::cout << msg->network << " " << ((msg->isTXMsg)? "TX" : "RX") << " frame\n";
|
std::cout << msg->network << " " << ((msg->isTXMsg)? "TX" : "RX") << " frame\n";
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,7 @@ int main() {
|
||||||
switch(message->type) {
|
switch(message->type) {
|
||||||
case icsneo::Message::Type::Frame: {
|
case icsneo::Message::Type::Frame: {
|
||||||
// A message of type Frame is guaranteed to be a Frame, so we can static cast safely
|
// A message of type Frame is guaranteed to be a Frame, so we can static cast safely
|
||||||
auto frame = std::static_pointer_cast<icsneo::Frame>(message);
|
auto frame = std::static_pointer_cast<icsneo::BusMessage>(message);
|
||||||
switch(frame->network.getType()) {
|
switch(frame->network.getType()) {
|
||||||
case _icsneo_msg_bus_type_t::icsneo_msg_bus_type_can: {
|
case _icsneo_msg_bus_type_t::icsneo_msg_bus_type_can: {
|
||||||
// A message of type CAN is guaranteed to be a CANMessage, so we can static cast safely
|
// A message of type CAN is guaranteed to be a CANMessage, so we can static cast safely
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,13 @@ void onEvent(std::shared_ptr<icsneo::APIEvent> event) {
|
||||||
std::cout << event->describe() << std::endl;
|
std::cout << event->describe() << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::shared_ptr<icsneo::Frame>> constructRandomFrames(size_t frameCount, MessageType frameType) {
|
std::vector<std::shared_ptr<icsneo::BusMessage>> constructRandomFrames(size_t frameCount, MessageType frameType) {
|
||||||
static constexpr size_t ClassicCANSize = 8;
|
static constexpr size_t ClassicCANSize = 8;
|
||||||
static constexpr size_t CANFDSize = 64;
|
static constexpr size_t CANFDSize = 64;
|
||||||
static constexpr size_t ShortEthSize = 500;
|
static constexpr size_t ShortEthSize = 500;
|
||||||
static constexpr size_t LongEthSize = 1500;
|
static constexpr size_t LongEthSize = 1500;
|
||||||
|
|
||||||
std::vector<std::shared_ptr<icsneo::Frame>> frames;
|
std::vector<std::shared_ptr<icsneo::BusMessage>> frames;
|
||||||
std::random_device randDev;
|
std::random_device randDev;
|
||||||
std::mt19937 randEngine(randDev());
|
std::mt19937 randEngine(randDev());
|
||||||
std::uniform_int_distribution randByteDist(0,255);
|
std::uniform_int_distribution randByteDist(0,255);
|
||||||
|
|
@ -169,7 +169,7 @@ int main(int argc, char* argv[]) {
|
||||||
if(msg->type != icsneo::Message::Type::Frame) {
|
if(msg->type != icsneo::Message::Type::Frame) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const auto frame = std::static_pointer_cast<icsneo::Frame>(msg);
|
const auto frame = std::static_pointer_cast<icsneo::BusMessage>(msg);
|
||||||
if(frame->network.getType() == _icsneo_msg_bus_type_t::icsneo_msg_bus_type_can) {
|
if(frame->network.getType() == _icsneo_msg_bus_type_t::icsneo_msg_bus_type_can) {
|
||||||
++canFrameCount;
|
++canFrameCount;
|
||||||
} else if(frame->network.getType() == _icsneo_msg_bus_type_t::icsneo_msg_bus_type_ethernet) {
|
} else if(frame->network.getType() == _icsneo_msg_bus_type_t::icsneo_msg_bus_type_ethernet) {
|
||||||
|
|
@ -200,7 +200,7 @@ int main(int argc, char* argv[]) {
|
||||||
|
|
||||||
const uint8_t NumFrameTypes = 4;
|
const uint8_t NumFrameTypes = 4;
|
||||||
const size_t FrameCountPerType = 2500;
|
const size_t FrameCountPerType = 2500;
|
||||||
std::vector<std::shared_ptr<icsneo::Frame>> frames;
|
std::vector<std::shared_ptr<icsneo::BusMessage>> frames;
|
||||||
for(uint8_t i = 0; i < NumFrameTypes; i++) {
|
for(uint8_t i = 0; i < NumFrameTypes; i++) {
|
||||||
std::cout << "info: transmitting " << FrameCountPerType << " random " << MessageTypeLabels[i] << " frames" << std::endl;
|
std::cout << "info: transmitting " << FrameCountPerType << " random " << MessageTypeLabels[i] << " frames" << std::endl;
|
||||||
auto tempFrames = constructRandomFrames(FrameCountPerType, static_cast<MessageType>(i));
|
auto tempFrames = constructRandomFrames(FrameCountPerType, static_cast<MessageType>(i));
|
||||||
|
|
@ -219,7 +219,7 @@ int main(int argc, char* argv[]) {
|
||||||
if(msg->type != icsneo::Message::Type::Frame) {
|
if(msg->type != icsneo::Message::Type::Frame) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto frame = std::static_pointer_cast<icsneo::Frame>(msg);
|
auto frame = std::static_pointer_cast<icsneo::BusMessage>(msg);
|
||||||
if(frames[currentMessage]->data == frame->data) {
|
if(frames[currentMessage]->data == frame->data) {
|
||||||
currentMessage++;
|
currentMessage++;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ enum class PCMType : uint8_t {
|
||||||
|
|
||||||
using ChannelMap = std::unordered_map<uint8_t, uint8_t>;
|
using ChannelMap = std::unordered_map<uint8_t, uint8_t>;
|
||||||
|
|
||||||
class A2BMessage : public Frame {
|
class A2BMessage : public BusMessage {
|
||||||
public:
|
public:
|
||||||
static constexpr size_t maxAudioBufferSize = 2048;
|
static constexpr size_t maxAudioBufferSize = 2048;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
namespace icsneo {
|
namespace icsneo {
|
||||||
|
|
||||||
class CANMessage : public Frame {
|
class CANMessage : public BusMessage {
|
||||||
public:
|
public:
|
||||||
uint32_t arbid;
|
uint32_t arbid;
|
||||||
uint8_t dlcOnWire;
|
uint8_t dlcOnWire;
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ struct MACAddress {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class EthernetMessage : public Frame {
|
class EthernetMessage : public BusMessage {
|
||||||
public:
|
public:
|
||||||
bool preemptionEnabled = false;
|
bool preemptionEnabled = false;
|
||||||
uint8_t preemptionFlags = 0;
|
uint8_t preemptionFlags = 0;
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
namespace icsneo {
|
namespace icsneo {
|
||||||
|
|
||||||
class ExtendedDataMessage : public Frame {
|
class ExtendedDataMessage : public BusMessage {
|
||||||
public:
|
public:
|
||||||
#pragma pack(push, 2)
|
#pragma pack(push, 2)
|
||||||
struct ExtendedDataHeader {
|
struct ExtendedDataHeader {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
namespace icsneo {
|
namespace icsneo {
|
||||||
|
|
||||||
class FlexRayMessage : public Frame {
|
class FlexRayMessage : public BusMessage {
|
||||||
public:
|
public:
|
||||||
uint16_t slotid = 0;
|
uint16_t slotid = 0;
|
||||||
double tsslen = 0;
|
double tsslen = 0;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
namespace icsneo {
|
namespace icsneo {
|
||||||
|
|
||||||
class I2CMessage : public Frame {
|
class I2CMessage : public BusMessage {
|
||||||
public:
|
public:
|
||||||
enum class DeviceMode : uint8_t {
|
enum class DeviceMode : uint8_t {
|
||||||
Target = 0,
|
Target = 0,
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
namespace icsneo {
|
namespace icsneo {
|
||||||
|
|
||||||
class ISO9141Message : public Frame {
|
class ISO9141Message : public BusMessage {
|
||||||
public:
|
public:
|
||||||
std::array<uint8_t, 3> header;
|
std::array<uint8_t, 3> header;
|
||||||
bool isInit = false;
|
bool isInit = false;
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ struct LINStatusFlags {
|
||||||
bool BreakOnly = false;
|
bool BreakOnly = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
class LINMessage : public Frame {
|
class LINMessage : public BusMessage {
|
||||||
public:
|
public:
|
||||||
enum class Type : uint8_t {
|
enum class Type : uint8_t {
|
||||||
NOT_SET = 0,
|
NOT_SET = 0,
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
namespace icsneo {
|
namespace icsneo {
|
||||||
|
|
||||||
class MDIOMessage : public Frame {
|
class MDIOMessage : public BusMessage {
|
||||||
public:
|
public:
|
||||||
enum class Clause : uint8_t {
|
enum class Clause : uint8_t {
|
||||||
Clause45 = 0,
|
Clause45 = 0,
|
||||||
|
|
|
||||||
|
|
@ -70,9 +70,9 @@ public:
|
||||||
std::vector<uint8_t> data;
|
std::vector<uint8_t> data;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Frame : public RawMessage {
|
class BusMessage : public RawMessage {
|
||||||
public:
|
public:
|
||||||
Frame() : RawMessage(Message::Type::Frame) {}
|
BusMessage() : RawMessage(Message::Type::Frame) {}
|
||||||
|
|
||||||
const icsneo_msg_type_t getMsgType() const final { return icsneo_msg_type_bus; }
|
const icsneo_msg_type_t getMsgType() const final { return icsneo_msg_type_bus; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -212,8 +212,8 @@ public:
|
||||||
int addMessageCallback(const std::shared_ptr<MessageCallback>& cb) { return com->addMessageCallback(cb); }
|
int addMessageCallback(const std::shared_ptr<MessageCallback>& cb) { return com->addMessageCallback(cb); }
|
||||||
bool removeMessageCallback(int id) { return com->removeMessageCallback(id); }
|
bool removeMessageCallback(int id) { return com->removeMessageCallback(id); }
|
||||||
|
|
||||||
bool transmit(std::shared_ptr<Frame> frame);
|
bool transmit(std::shared_ptr<BusMessage> frame);
|
||||||
bool transmit(std::vector<std::shared_ptr<Frame>> frames);
|
bool transmit(std::vector<std::shared_ptr<BusMessage>> frames);
|
||||||
|
|
||||||
void setWriteBlocks(bool blocks);
|
void setWriteBlocks(bool blocks);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ public:
|
||||||
virtual void handleMessage(const std::shared_ptr<Message>&) {}
|
virtual void handleMessage(const std::shared_ptr<Message>&) {}
|
||||||
|
|
||||||
// Return true to continue transmitting, success should be written to if false is returned
|
// Return true to continue transmitting, success should be written to if false is returned
|
||||||
virtual bool transmitHook(const std::shared_ptr<Frame>& frame, bool& success) { (void)frame; (void)success; return true; }
|
virtual bool transmitHook(const std::shared_ptr<BusMessage>& frame, bool& success) { (void)frame; (void)success; return true; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Device& device;
|
Device& device;
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ public:
|
||||||
void onGoOffline() override;
|
void onGoOffline() override;
|
||||||
|
|
||||||
void handleMessage(const std::shared_ptr<Message>& message) override;
|
void handleMessage(const std::shared_ptr<Message>& message) override;
|
||||||
bool transmitHook(const std::shared_ptr<Frame>& frame, bool& success) override;
|
bool transmitHook(const std::shared_ptr<BusMessage>& frame, bool& success) override;
|
||||||
|
|
||||||
std::shared_ptr<Controller> getController(uint8_t index) const {
|
std::shared_ptr<Controller> getController(uint8_t index) const {
|
||||||
if(index >= controllers.size())
|
if(index >= controllers.size())
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue