Skip to content

Commit

Permalink
1.3.0 change print system and use color to seperate messages
Browse files Browse the repository at this point in the history
  • Loading branch information
leoWuTmRobot committed Jan 14, 2021
1 parent 86d9066 commit 37a2f5a
Show file tree
Hide file tree
Showing 3 changed files with 139 additions and 50 deletions.
28 changes: 27 additions & 1 deletion tm_driver/include/tm_driver/tm_print.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,33 @@
#pragma once
//#pragma once

#ifndef TM_PRINT_H
#define TM_PRINT_H
#include <string>

void set_up_print_debug_function(void (*function_print)(char* fmt));
void set_up_print_info_function(void (*function_print)(char* fmt));
void set_up_print_warn_function(void (*function_print)(char* fmt));
void set_up_print_error_function(void (*function_print)(char* fmt));
void set_up_print_fatal_function(void (*function_print)(char* fmt));

const std::string PRINT_RED("\033[0;31m");
const std::string PRINT_GREEN("\033[1;32m");
const std::string PRINT_YELLOW("\033[1;33m");
const std::string PRINT_CYAN("\033[0;36m");
const std::string PRINT_RESET("\033[0m");


/*int (*print_info_function)(const char* fmt, ...);
int (*print_warn_function)(const char* fmt, ...);
int (*print_error_function)(const char* fmt, ...);
int (*print_fatal_function)(const char* fmt, ...);
*/
int print_debug(const char* fmt, ...);
int print_info(const char* fmt, ...);
int print_warn(const char* fmt, ...);
int print_error(const char* fmt, ...);
int print_fatal(const char* fmt, ...);



#endif
134 changes: 86 additions & 48 deletions tm_driver/src/tm_print.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
#include "tm_driver/tm_print.h"
#endif

#include <stdio.h>
//#include <stdio.h>
#include "iostream"
#include <stdarg.h>

#ifdef _WIN32
Expand All @@ -22,22 +23,35 @@

#define MAX_MSG_SIZE 256

void (*print_debug_function)(char* fmt);
bool isSetPrintDebugFunction = false;

void default_debug_function_print(char* msg){
std::cout<<PRINT_CYAN<<"[DEBUG] "<<msg<<std::endl<<PRINT_RESET;
}

int print_debug(const char* fmt, ...) {


char msg[MAX_MSG_SIZE];
int n;
va_list vl;
va_start(vl, fmt);
n = vsnprintf_s(msg, MAX_MSG_SIZE, fmt, vl);
va_end(vl);
#ifdef ROS_BUILD
ROS_DEBUG("%s", msg);
#else
#ifdef ROS2_BUILD
#else
printf("[DEBUG] %s\n", msg);
#endif
#endif
return n;
if(isSetPrintDebugFunction){
print_debug_function(msg);
} else{
default_debug_function_print(msg);
}
return n;
}

void (*print_info_function)(char* fmt);
bool isSetPrintInfoFunction = false;

void default_print_info_function_print(char* msg){
std::cout<<"[INFO] "<<msg<<std::endl;
}

int print_info(const char* fmt, ...) {
Expand All @@ -47,72 +61,96 @@ int print_info(const char* fmt, ...) {
va_start(vl, fmt);
n = vsnprintf_s(msg, MAX_MSG_SIZE, fmt, vl);
va_end(vl);
#ifdef ROS_BUILD
ROS_INFO("%s", msg);
#else
#ifdef ROS2_BUILD
printf("[INFO] [tm_driver]: %s\n", msg);
#else
printf("[ INFO] %s\n", msg);
#endif
#endif
if(isSetPrintInfoFunction){
print_info_function(msg);
} else{
default_print_info_function_print(msg);
}
return n;
}

void (*print_warn_function)(char* fmt);
bool isSetPrintWarnFunction = false;

void default_print_warn_function_print(char* msg){
std::cout<<PRINT_YELLOW<<"[WARN] "<<msg<<std::endl<<PRINT_RESET;
}
int print_warn(const char* fmt, ...) {
char msg[MAX_MSG_SIZE];
int n;
va_list vl;
va_start(vl, fmt);
n = vsnprintf_s(msg, MAX_MSG_SIZE, fmt, vl);
va_end(vl);
#ifdef ROS_BUILD
ROS_WARN("%s", msg);
#else
#ifdef ROS2_BUILD
printf("[WARN] [tm_driver]: %s\n", msg);
#else
printf("[ WARN] %s\n", msg);
#endif
#endif
if(isSetPrintWarnFunction){
print_warn_function(msg);
} else{
default_print_warn_function_print(msg);
}

return n;
}

void (*print_error_function)(char* fmt);
bool isSetPrintErrorFunction = false;

void default_print_error_function_print(char* msg){
std::cout<<PRINT_RED<<"[ERROR] "<<msg<<std::endl<<PRINT_RESET;
}
int print_error(const char* fmt, ...) {
char msg[MAX_MSG_SIZE];
int n;
va_list vl;
va_start(vl, fmt);
n = vsnprintf_s(msg, MAX_MSG_SIZE, fmt, vl);
va_end(vl);
#ifdef ROS_BUILD
ROS_ERROR("%s", msg);
#else
#ifdef ROS2_BUILD
printf("[ERROR] [tm_driver]: %s\n", msg);
#else
printf("[ERROR] %s\n", msg);
#endif
#endif
if(isSetPrintErrorFunction){
print_error_function(msg);
} else{
default_print_error_function_print(msg);
}
return n;
}

void (*print_fatal_function)(char* fmt);
bool isSetPrintFatalFunction = false;

void default_print_fatal_function_print(char* msg){
std::cout<<PRINT_GREEN<<"[FATAL] "<<msg<<std::endl<<PRINT_RESET;
}
int print_fatal(const char* fmt, ...) {
char msg[MAX_MSG_SIZE];
int n;
va_list vl;
va_start(vl, fmt);
n = vsnprintf_s(msg, MAX_MSG_SIZE, fmt, vl);
va_end(vl);
#ifdef ROS_BUILD
ROS_FATAL("%s", msg);
ros::shutdown();
#else
#ifdef ROS2_BUILD
printf("[FATAL] [tm_driver]: %s\n", msg);
#else
printf("[FATAL] %s\n", msg);
#endif
#endif
if(isSetPrintErrorFunction){
print_fatal_function(msg);
} else{
default_print_fatal_function_print(msg);
}
return n;
}

}

void set_up_print_debug_function(void (*function_print)(char* fmt)){
print_debug_function = function_print;
isSetPrintDebugFunction = true;
}
void set_up_print_info_function(void (*function_print)(char* fmt)){
print_info_function = function_print;
isSetPrintInfoFunction = true;
}
void set_up_print_warn_function(void (*function_print)(char* fmt)){
print_warn_function = function_print;
isSetPrintWarnFunction = true;
}
void set_up_print_error_function(void (*function_print)(char* fmt)){
print_error_function = function_print;
isSetPrintErrorFunction = true;
}
void set_up_print_fatal_function(void (*function_print)(char* fmt)){
print_fatal_function = function_print;
isSetPrintFatalFunction = true;
}
27 changes: 26 additions & 1 deletion tm_driver/src/tm_ros2_composition.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,35 @@

#include "rclcpp/rclcpp.hpp"

void debug_function_print(char* msg){
printf("%s[TM_DEBUG] %s\n%s", PRINT_CYAN.c_str(), msg, PRINT_RESET.c_str());
}
void info_function_print(char* msg){
printf("[TM_INFO] %s\n", msg);
}
void warn_function_print(char* msg){
printf("%s[TM_WARN] %s\n%s", PRINT_YELLOW.c_str(), msg, PRINT_RESET.c_str());
}
void error_function_print(char* msg){
printf("%s[TM_ERROR] %s\n%s", PRINT_RED.c_str(), msg, PRINT_RESET.c_str());
}
void fatal_function_print(char* msg){
printf("%s[TM_FATAL] %s\n%s", PRINT_GREEN.c_str(), msg, PRINT_RESET.c_str());
}
void set_up_print_fuction(){
set_up_print_debug_function(debug_function_print);
set_up_print_info_function(info_function_print);
set_up_print_warn_function(warn_function_print);
set_up_print_error_function(error_function_print);
set_up_print_fatal_function(fatal_function_print);
}

int main(int argc, char *argv[])
{
// Force flush of the stdout buffer.
setvbuf(stdout, NULL, _IONBF, BUFSIZ);

set_up_print_fuction();

rclcpp::init(argc, argv);

Expand Down Expand Up @@ -36,4 +61,4 @@ int main(int argc, char *argv[])
rclcpp::shutdown();

return 0;
}
}

0 comments on commit 37a2f5a

Please sign in to comment.