Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,6 @@ target_include_directories(cpp_can_parser
add_executable(can-parse
utils/can-parse/can-parse.cpp
utils/can-parse/print-frame.cpp
utils/can-parse/print-single-frame.cpp
utils/can-parse/check-frame.cpp)
target_link_libraries(can-parse cpp_can_parser)
21 changes: 20 additions & 1 deletion utils/can-parse/can-parse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,13 @@ std::tuple<CanParseAction, std::string, uint32_t> extractAction(int argc, char**
check_args = false;

try {
detail_frame = std::stoul(arg);
if(arg.compare(0, 2, "0x") == 0 || arg.compare(0, 2, "0X") == 0) {
detail_frame = std::stoul(arg, nullptr, 16);
}
else {
detail_frame = std::stoul(arg);
}

action = static_cast<CanParseAction>(static_cast<int>(action) + 1);
continue;
} catch(const std::logic_error& e) {
Expand Down Expand Up @@ -135,6 +141,19 @@ int main(int argc, char** argv) {
print_all_frames(db);
break;

case PrintOne:
{
try {
print_single_frame(db, detail_frame);
}
catch(const std::out_of_range&) {
std::cerr << "Cannot find the frame with ID " << std::hex << std::showbase
<< detail_frame << std::endl;
return 3;
}
}
break;

case CheckAll:
check_all_frames(db);
break;
Expand Down
7 changes: 1 addition & 6 deletions utils/can-parse/operations.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,10 @@ class CANDatabase;

namespace CppCAN {
namespace can_parse {
/**
* @brief Prints a single frame selected by its frame name
void printSingleFrame(CANDatabase& db, const std::string& frame_name);
*/

/**
* @brief Prints a single frame selected by its CAN ID.
void printSingleFrame(CANDatabase& db, uint64_t can_id);
*/
void print_single_frame(CANDatabase& db, uint32_t can_id);

/**
* @brief Prints all the frames of the database
Expand Down
74 changes: 1 addition & 73 deletions utils/can-parse/print-frame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,60 +9,6 @@
*/
static const int INT_COL_SIZE = 10;

void print_info_separator(int level = 0) {
static const char* level_0_separator = "##############";
static const char* level_1_separator = "--------------";
static const char* level_2_separator = "~~~~~~~~~~~~~~";
const char** separator = nullptr;

switch(level) {
case 0:
default:
separator = &level_0_separator;
break;

case 1:
separator = &level_1_separator;
break;
}
std::cout << *separator << std::endl;
}

void print_frame_impl(const CANFrame& frame, unsigned name_col_size) {
std::cout << std::left << std::setw(name_col_size) << frame.name() << ":\t"
<< std::hex << std::showbase << frame.can_id() << "/"
<< std::dec << std::noshowbase << frame.dlc() << "/"
<< frame.period() << "s" << std::endl;

if(frame.comment().size() > 0) {
std::cout << "COMMENT" << frame.name() << ":\t \"" << frame.comment() << "\"" << std::endl;
}
}

void print_signal_impl(const CANSignal& sig) {
std::cout << "SIGNAL[" << sig.name() << "]: " << std::endl;
std::cout << "\tstart bit:\t" << sig.start_bit() << std::endl;
std::cout << "\tlength:\t\t" << sig.length() << std::endl;
std::cout << "\tendianness:\t\t" << ((sig.endianness() == CANSignal::BigEndian)
? "BigEndian" : "LittleEndian") << std::endl;
std::cout << "\tsignedness:\t\t" << ((sig.signedness() == CANSignal::Signed)
? "Signed" : "Unsigned") << std::endl;
std::cout << "\tscale:\t" << sig.scale() << std::endl;
std::cout << "\toffset:\t" << sig.offset() << std::endl;
std::cout << "\trange:\t" << sig.range().min << " -> " << sig.range().max << std::endl;


if(sig.choices().size() > 0) {
std::cout << "\tchoices:" << std::endl;

for(const auto& choice: sig.choices()) {
std::string result = "";
result += std::to_string(choice.first) + " -> \"" + choice.second + "\", ";
std::cout << "\t\t" << result << std::endl;
}
}
}

void print_frame_line(const CANFrame& src, int name_col_size) {
std::cout << std::left
<< std::setw(name_col_size) << src.name()
Expand Down Expand Up @@ -95,22 +41,4 @@ void CppCAN::can_parse::print_all_frames(CANDatabase& db) {
for(const auto& frame : db) {
print_frame_line(frame.second, frame_name_maxsize);
}

/*
for(const auto& frame : db) {
print_frame_impl(*frame.second, frame_name_maxsize);
print_info_separator(1);

size_t j = 0;
for(const auto& sig : *frame.second) {
print_signal_impl(*sig.second);

if(j++ < frame.second->size() - 1)
print_info_separator(2);
}

if(i++ < db.size() - 1)
print_info_separator();
}
*/
}
}
Loading