6 #include <gtest/gtest.h> 15 return sender.
send(reinterpret_cast<const uint8_t*>(data.c_str()),
unsigned(data.length()),
24 return sender.
send(reinterpret_cast<const uint8_t*>(data.c_str()),
unsigned(data.length()),
30 TEST(TransferSender, Basic)
41 ASSERT_TRUE(dispatcher_tx.
setNodeID(TX_NODE_ID));
42 ASSERT_TRUE(dispatcher_rx.
setNodeID(RX_NODE_ID));
59 static const std::string DATA[4] =
63 "The ships hung in the sky in much the same way that bricks don't.",
65 "Would it save you a lot of time if I just gave up and went mad now?",
67 "If there's anything more important than my ego around, I want it caught and shot now." 73 static const uint64_t TX_DEADLINE = 1000000;
107 ASSERT_EQ(0, driver.
ifaces.at(0).tx.front().flags);
115 std::cout <<
"Num frames: " << iface.
tx.size() << std::endl;
116 while (!iface.
tx.empty())
134 const int res = dispatcher_rx.
spin(
tsMono(0));
146 ASSERT_TRUE(sub_msg.matchAndPop(TRANSFERS[0]));
147 ASSERT_TRUE(sub_msg.matchAndPop(TRANSFERS[1]));
148 ASSERT_TRUE(sub_msg.matchAndPop(TRANSFERS[2]));
149 ASSERT_TRUE(sub_msg.matchAndPop(TRANSFERS[3]));
151 ASSERT_TRUE(sub_srv_req.matchAndPop(TRANSFERS[4]));
152 ASSERT_TRUE(sub_srv_req.matchAndPop(TRANSFERS[6]));
154 ASSERT_TRUE(sub_srv_resp.matchAndPop(TRANSFERS[5]));
155 ASSERT_TRUE(sub_srv_resp.matchAndPop(TRANSFERS[7]));
198 ASSERT_TRUE(dispatcher.
setNodeID(TX_NODE_ID));
212 ASSERT_LE(0, sender.
send(reinterpret_cast<const uint8_t*>(
"123"), 3,
tsMono(1000),
tsMono(0),
215 ASSERT_EQ(0, listener.count);
217 ASSERT_EQ(1, listener.count);
218 ASSERT_EQ(1, listener.last_frame.getIfaceIndex());
219 ASSERT_EQ(3, listener.last_frame.getPayloadLen());
220 ASSERT_TRUE(TX_NODE_ID == listener.last_frame.getSrcNodeID());
221 ASSERT_TRUE(listener.last_frame.isEndOfTransfer());
239 static const uint8_t Payload[] = {1, 2, 3, 4, 5};
242 ASSERT_EQ(-uavcan::ErrPassiveMode,
254 ASSERT_EQ(-uavcan::ErrPassiveMode,
259 ASSERT_FALSE(driver.
ifaces.at(0).tx.empty());
static int sendOne(uavcan::TransferSender &sender, const std::string &data, uint64_t monotonic_tx_deadline, uint64_t monotonic_blocking_deadline, uavcan::TransferType transfer_type, uavcan::NodeID dst_node_id)
const uint64_t & getErrorCount() const
uavcan::RxFrame last_frame
bool registerServiceRequestListener(TransferListener *listener)
static MonotonicTime fromUSec(uint64_t us)
std::queue< FrameWithTime > rx
Queue of incoming frames (bus –> library)
static const NodeID Broadcast
std::queue< FrameWithTime > tx
Queue of outgoing frames (bus <– library)
void setIfaceMask(uint8_t iface_mask)
int spin(MonotonicTime deadline)
void handleLoopbackFrame(const uavcan::RxFrame &frame)
void advance(uint64_t usec) const
uint8_t getIfaceMask() const
virtual uavcan::uint8_t getNumIfaces() const
static const CanIOFlags CanIOFlagAbortOnError
TEST(TransferSender, Basic)
const uint64_t & getTxTransferCount() const
void setPriority(TransferPriority prio)
int send(const uint8_t *payload, unsigned payload_len, MonotonicTime tx_deadline, MonotonicTime blocking_deadline, TransferType transfer_type, NodeID dst_node_id, TransferID tid) const
const TransferPerfCounter & getTransferPerfCounter() const
void allowAnonymousTransfers()
const uint64_t & getRxTransferCount() const
bool registerMessageListener(TransferListener *listener)
bool registerServiceResponseListener(TransferListener *listener)
uavcan::MonotonicTime tsMono(uint64_t usec)
bool setNodeID(NodeID nid)
TransferSenderTestLoopbackFrameListener(uavcan::Dispatcher &dispatcher)
CanIOFlags getCanIOFlags() const
static const CanIOFlags CanIOFlagLoopback
void setCanIOFlags(CanIOFlags flags)
std::vector< CanIfaceMock > ifaces