コード例 #1
0
ファイル: uc_dispatcher.cpp プロジェクト: ctech4285/libuavcan
int Dispatcher::spinOnce()
{
    int num_frames_processed = 0;

    while (true)
    {
        CanIOFlags flags = 0;
        CanRxFrame frame;
        const int res = canio_.receive(frame, MonotonicTime(), flags);
        if (res < 0)
        {
            return res;
        }
        else if (res > 0)
        {
            if (flags & CanIOFlagLoopback)
            {
                handleLoopbackFrame(frame);
            }
            else
            {
                num_frames_processed++;
                handleFrame(frame);
            }
            notifyRxFrameListener(frame, flags);
        }
        else
        {
            break;      // No frames left
        }
    }

    return num_frames_processed;
}
コード例 #2
0
ファイル: generic_publisher.hpp プロジェクト: 0919061/uavcan
 int publish(const DataStruct& message, TransferType transfer_type, NodeID dst_node_id, TransferID tid,
             MonotonicTime blocking_deadline = MonotonicTime())
 {
     return genericPublish(message, transfer_type, dst_node_id, &tid, blocking_deadline);
 }