diff --git a/libuavcan/include/uavcan/data_type.hpp b/libuavcan/include/uavcan/data_type.hpp index f1f9520c12..642845136c 100644 --- a/libuavcan/include/uavcan/data_type.hpp +++ b/libuavcan/include/uavcan/data_type.hpp @@ -6,7 +6,6 @@ #include #include -#include #include #include #include @@ -155,10 +154,12 @@ public: bool match(DataTypeKind kind, const char* name) const; bool match(DataTypeKind kind, DataTypeID id) const; - std::string toString() const; - bool operator!=(const DataTypeDescriptor& rhs) const { return !operator==(rhs); } bool operator==(const DataTypeDescriptor& rhs) const; + +#if UAVCAN_TOSTRING + std::string toString() const; +#endif }; } diff --git a/libuavcan/include/uavcan/driver/can.hpp b/libuavcan/include/uavcan/driver/can.hpp index f705da2fc6..135769f492 100644 --- a/libuavcan/include/uavcan/driver/can.hpp +++ b/libuavcan/include/uavcan/driver/can.hpp @@ -7,7 +7,6 @@ #include #include -#include #include #include #include @@ -58,8 +57,10 @@ struct UAVCAN_EXPORT CanFrame bool isRemoteTransmissionRequest() const { return id & FlagRTR; } bool isErrorFrame() const { return id & FlagERR; } +#if UAVCAN_TOSTRING enum StringRepresentation { StrTight, StrAligned }; std::string toString(StringRepresentation mode = StrTight) const; +#endif /** * CAN frames arbitration rules, particularly STD vs EXT: diff --git a/libuavcan/include/uavcan/dynamic_memory.hpp b/libuavcan/include/uavcan/dynamic_memory.hpp index cd5f158ff9..0c6945abca 100644 --- a/libuavcan/include/uavcan/dynamic_memory.hpp +++ b/libuavcan/include/uavcan/dynamic_memory.hpp @@ -11,6 +11,7 @@ #include #include #include +#include namespace uavcan { diff --git a/libuavcan/include/uavcan/impl_constants.hpp b/libuavcan/include/uavcan/impl_constants.hpp index 330b5327b1..b82578a170 100644 --- a/libuavcan/include/uavcan/impl_constants.hpp +++ b/libuavcan/include/uavcan/impl_constants.hpp @@ -60,6 +60,18 @@ # define UAVCAN_EXPORT #endif +/** + * It might make sense to remove toString() methods for an embedded system + */ +#ifndef UAVCAN_TOSTRING +# define UAVCAN_TOSTRING 1 +#endif + +#if UAVCAN_TOSTRING +# include +# include +#endif + namespace uavcan { diff --git a/libuavcan/include/uavcan/marshal/bit_stream.hpp b/libuavcan/include/uavcan/marshal/bit_stream.hpp index fbe17a490a..8de28542f8 100644 --- a/libuavcan/include/uavcan/marshal/bit_stream.hpp +++ b/libuavcan/include/uavcan/marshal/bit_stream.hpp @@ -5,7 +5,6 @@ #pragma once #include -#include #include #include #include @@ -65,7 +64,9 @@ public: int write(const uint8_t* bytes, const int bitlen); int read(uint8_t* bytes, const int bitlen); +#if UAVCAN_TOSTRING std::string toString() const; +#endif }; } diff --git a/libuavcan/include/uavcan/time.hpp b/libuavcan/include/uavcan/time.hpp index 7f99b29300..2ef79433b3 100644 --- a/libuavcan/include/uavcan/time.hpp +++ b/libuavcan/include/uavcan/time.hpp @@ -4,10 +4,9 @@ #pragma once -#include #include #include -#include +#include #include #include #include @@ -83,7 +82,9 @@ public: enum { StringBufSize = 32 }; void toString(char buf[StringBufSize]) const; +#if UAVCAN_TOSTRING std::string toString() const; +#endif }; @@ -164,7 +165,9 @@ public: enum { StringBufSize = 32 }; void toString(char buf[StringBufSize]) const; +#if UAVCAN_TOSTRING std::string toString() const; +#endif }; /* @@ -230,6 +233,8 @@ void TimeBase::toString(char buf[StringBufSize]) const } +#if UAVCAN_TOSTRING + template std::string DurationBase::toString() const { @@ -246,6 +251,8 @@ std::string TimeBase::toString() const return std::string(buf); } +#endif + template UAVCAN_EXPORT diff --git a/libuavcan/include/uavcan/transport/can_io.hpp b/libuavcan/include/uavcan/transport/can_io.hpp index 0da4352417..63046c4542 100644 --- a/libuavcan/include/uavcan/transport/can_io.hpp +++ b/libuavcan/include/uavcan/transport/can_io.hpp @@ -31,7 +31,9 @@ struct UAVCAN_EXPORT CanRxFrame : public CanFrame : iface_index(0) { } +#if UAVCAN_TOSTRING std::string toString(StringRepresentation mode = StrTight) const; +#endif }; @@ -66,7 +68,9 @@ public: bool qosHigherThan(const Entry& rhs) const { return qosHigherThan(rhs.frame, Qos(rhs.qos)); } bool qosLowerThan(const Entry& rhs) const { return qosLowerThan(rhs.frame, Qos(rhs.qos)); } +#if UAVCAN_TOSTRING std::string toString() const; +#endif }; private: diff --git a/libuavcan/include/uavcan/transport/frame.hpp b/libuavcan/include/uavcan/transport/frame.hpp index 7c044e4954..bd569766d1 100644 --- a/libuavcan/include/uavcan/transport/frame.hpp +++ b/libuavcan/include/uavcan/transport/frame.hpp @@ -6,7 +6,6 @@ #include #include -#include #include #include #include @@ -82,7 +81,9 @@ public: bool operator!=(const Frame& rhs) const { return !operator==(rhs); } bool operator==(const Frame& rhs) const; +#if UAVCAN_TOSTRING std::string toString() const; +#endif }; @@ -112,7 +113,9 @@ public: uint8_t getIfaceIndex() const { return iface_index_; } +#if UAVCAN_TOSTRING std::string toString() const; +#endif }; } diff --git a/libuavcan/include/uavcan/transport/outgoing_transfer_registry.hpp b/libuavcan/include/uavcan/transport/outgoing_transfer_registry.hpp index cd4360ce47..9d0f6950c0 100644 --- a/libuavcan/include/uavcan/transport/outgoing_transfer_registry.hpp +++ b/libuavcan/include/uavcan/transport/outgoing_transfer_registry.hpp @@ -5,7 +5,6 @@ #pragma once #include -#include #include #include #include @@ -52,7 +51,9 @@ public: (destination_node_id_ == rhs.destination_node_id_); } +#if UAVCAN_TOSTRING std::string toString() const; +#endif }; UAVCAN_PACKED_END diff --git a/libuavcan/include/uavcan/transport/transfer_buffer.hpp b/libuavcan/include/uavcan/transport/transfer_buffer.hpp index 426d849cda..0a8f7f057e 100644 --- a/libuavcan/include/uavcan/transport/transfer_buffer.hpp +++ b/libuavcan/include/uavcan/transport/transfer_buffer.hpp @@ -61,7 +61,9 @@ public: NodeID getNodeID() const { return node_id_; } TransferType getTransferType() const { return TransferType(transfer_type_); } +#if UAVCAN_TOSTRING std::string toString() const; +#endif }; /** diff --git a/libuavcan/src/driver/uc_can.cpp b/libuavcan/src/driver/uc_can.cpp index f85bd3d302..9f0abfeab6 100644 --- a/libuavcan/src/driver/uc_can.cpp +++ b/libuavcan/src/driver/uc_can.cpp @@ -3,7 +3,6 @@ * Copyright (C) 2014 Pavel Kirienko */ -#include #include #include @@ -57,6 +56,7 @@ bool CanFrame::priorityHigherThan(const CanFrame& rhs) const return clean_id < rhs_clean_id; } +#if UAVCAN_TOSTRING std::string CanFrame::toString(StringRepresentation mode) const { using namespace std; // For snprintf() @@ -115,5 +115,6 @@ std::string CanFrame::toString(StringRepresentation mode) const } return std::string(buf); } +#endif } diff --git a/libuavcan/src/marshal/uc_bit_stream.cpp b/libuavcan/src/marshal/uc_bit_stream.cpp index 77464feb79..a9ea8663c2 100644 --- a/libuavcan/src/marshal/uc_bit_stream.cpp +++ b/libuavcan/src/marshal/uc_bit_stream.cpp @@ -3,7 +3,6 @@ */ #include -#include #include #include @@ -73,6 +72,7 @@ int BitStream::read(uint8_t* bytes, const int bitlen) return ResultOk; } +#if UAVCAN_TOSTRING std::string BitStream::toString() const { std::string out; @@ -97,5 +97,6 @@ std::string BitStream::toString() const } return out; } +#endif } diff --git a/libuavcan/src/transport/uc_can_io.cpp b/libuavcan/src/transport/uc_can_io.cpp index 1d63196643..368a8a2ce3 100644 --- a/libuavcan/src/transport/uc_can_io.cpp +++ b/libuavcan/src/transport/uc_can_io.cpp @@ -4,7 +4,6 @@ */ #include -#include #include #include #include @@ -15,6 +14,7 @@ namespace uavcan /* * CanRxFrame */ +#if UAVCAN_TOSTRING std::string CanRxFrame::toString(StringRepresentation mode) const { std::string out = CanFrame::toString(mode); @@ -25,6 +25,7 @@ std::string CanRxFrame::toString(StringRepresentation mode) const out += '0' + iface_index; return out; } +#endif /* * CanTxQueue::Entry @@ -57,6 +58,7 @@ bool CanTxQueue::Entry::qosLowerThan(const CanFrame& rhs_frame, Qos rhs_qos) con return frame.priorityLowerThan(rhs_frame); } +#if UAVCAN_TOSTRING std::string CanTxQueue::Entry::toString() const { std::string str_qos; @@ -78,6 +80,7 @@ std::string CanTxQueue::Entry::toString() const } return str_qos + frame.toString(); } +#endif /* * CanTxQueue diff --git a/libuavcan/src/transport/uc_frame.cpp b/libuavcan/src/transport/uc_frame.cpp index 07c384c9c0..6e29770d73 100644 --- a/libuavcan/src/transport/uc_frame.cpp +++ b/libuavcan/src/transport/uc_frame.cpp @@ -3,7 +3,6 @@ */ #include -#include #include #include @@ -194,6 +193,7 @@ bool Frame::operator==(const Frame& rhs) const std::equal(payload_, payload_ + payload_len_, rhs.payload_); } +#if UAVCAN_TOSTRING std::string Frame::toString() const { using namespace std; // For snprintf() @@ -223,6 +223,7 @@ std::string Frame::toString() const ofs += snprintf(buf + ofs, BUFLEN - ofs, "]"); return std::string(buf); } +#endif /** * RxFrame @@ -244,6 +245,7 @@ bool RxFrame::parse(const CanRxFrame& can_frame) return true; } +#if UAVCAN_TOSTRING std::string RxFrame::toString() const { std::string out = Frame::toString(); @@ -254,5 +256,6 @@ std::string RxFrame::toString() const out += '0' + iface_index_; return out; } +#endif } diff --git a/libuavcan/src/transport/uc_outgoing_transfer_registry.cpp b/libuavcan/src/transport/uc_outgoing_transfer_registry.cpp index 5940579c51..8054b7f9e0 100644 --- a/libuavcan/src/transport/uc_outgoing_transfer_registry.cpp +++ b/libuavcan/src/transport/uc_outgoing_transfer_registry.cpp @@ -2,7 +2,6 @@ * Copyright (C) 2014 Pavel Kirienko */ -#include #include namespace uavcan @@ -10,6 +9,7 @@ namespace uavcan /* * OutgoingTransferRegistryKey */ +#if UAVCAN_TOSTRING std::string OutgoingTransferRegistryKey::toString() const { using namespace std; @@ -18,5 +18,6 @@ std::string OutgoingTransferRegistryKey::toString() const int(data_type_id_.get()), int(transfer_type_), int(destination_node_id_.get())); return std::string(buf); } +#endif } diff --git a/libuavcan/src/transport/uc_transfer.cpp b/libuavcan/src/transport/uc_transfer.cpp index 40a177bb63..603707ad45 100644 --- a/libuavcan/src/transport/uc_transfer.cpp +++ b/libuavcan/src/transport/uc_transfer.cpp @@ -3,7 +3,6 @@ */ #include -#include #include #include diff --git a/libuavcan/src/transport/uc_transfer_buffer.cpp b/libuavcan/src/transport/uc_transfer_buffer.cpp index 73a57dd811..ce98ae5cd2 100644 --- a/libuavcan/src/transport/uc_transfer_buffer.cpp +++ b/libuavcan/src/transport/uc_transfer_buffer.cpp @@ -4,8 +4,6 @@ #include #include -#include -#include #include namespace uavcan @@ -13,6 +11,7 @@ namespace uavcan /* * TransferBufferManagerKey */ +#if UAVCAN_TOSTRING std::string TransferBufferManagerKey::toString() const { using namespace std; // For snprintf() @@ -20,6 +19,7 @@ std::string TransferBufferManagerKey::toString() const snprintf(buf, sizeof(buf), "nid=%i tt=%i", int(node_id_.get()), int(transfer_type_)); return std::string(buf); } +#endif /* * DynamicTransferBuffer::Block diff --git a/libuavcan/src/transport/uc_transfer_receiver.cpp b/libuavcan/src/transport/uc_transfer_receiver.cpp index 0d196a631a..f0164b874f 100644 --- a/libuavcan/src/transport/uc_transfer_receiver.cpp +++ b/libuavcan/src/transport/uc_transfer_receiver.cpp @@ -3,7 +3,6 @@ */ #include -#include #include #include #include diff --git a/libuavcan/src/uc_data_type.cpp b/libuavcan/src/uc_data_type.cpp index dd3784a2a0..d5418c528a 100644 --- a/libuavcan/src/uc_data_type.cpp +++ b/libuavcan/src/uc_data_type.cpp @@ -3,8 +3,6 @@ */ #include -#include -#include #include #include #include @@ -54,6 +52,7 @@ bool DataTypeDescriptor::match(DataTypeKind kind, DataTypeID id) const return (kind_ == kind) && (id_ == id); } +#if UAVCAN_TOSTRING std::string DataTypeDescriptor::toString() const { char kindch = '?'; @@ -80,6 +79,7 @@ std::string DataTypeDescriptor::toString() const static_cast(signature_.get())); return std::string(buf); } +#endif bool DataTypeDescriptor::operator==(const DataTypeDescriptor& rhs) const { diff --git a/libuavcan_drivers/stm32/test_stm32f107/Makefile b/libuavcan_drivers/stm32/test_stm32f107/Makefile index 1c49bd01ef..6f4e8d1abd 100644 --- a/libuavcan_drivers/stm32/test_stm32f107/Makefile +++ b/libuavcan_drivers/stm32/test_stm32f107/Makefile @@ -17,7 +17,8 @@ CPPSRC = src/main.cpp src/dummy.cpp UDEFS = -DUAVCAN_STM32_CHIBIOS=1 \ -DUAVCAN_STM32_TIMER_NUMBER=6 \ -DUAVCAN_STM32_DEBUG=1 \ - -DUAVCAN_MEM_POOL_BLOCK_SIZE=56 + -DUAVCAN_MEM_POOL_BLOCK_SIZE=56 \ + -DUAVCAN_TOSTRING=0 include ../../../libuavcan/include.mk CPPSRC += $(LIBUAVCAN_SRC)