Exemple #1
0
def diag_cb(msg: diag_msg):
    if frame_id in msg.header.frame_id:
        timer.reset()
        if csv:
            print(message_to_csv(msg))  # ,end="\r")
        else:
            now = msg.header.stamp.sec + 1e-9 * msg.header.stamp.nanosec
            dt = datetime.datetime.fromtimestamp(now)
            s_now = dt.strftime("%H:%M:%S.%f")[:-3]
            print(
                f"[{s_now:}] {Colors.BOLDMAGENTA}<{msg.header.frame_id}>{Colors.RESET}"
            )
            s: DiagnosticStatus
            for s in msg.status:
                color = Colors.INVERT
                s_level = "STALE"
                if s.level == DiagnosticStatus.OK:
                    color, s_level = Colors.BOLDGREEN, "OK"
                elif s.level == DiagnosticStatus.WARN:
                    color, s_level = Colors.BOLDYELLOW, "WARN"
                elif s.level == DiagnosticStatus.ERROR:
                    color, s_level = Colors.BOLDRED, "ERROR"
                line = f"\t{color}[ {s.name:<22} : {s_level:>5} ]{Colors.RESET}"
                print(line)
                if s.message:
                    print(f"\t↳ {Colors.BOLDCYAN}{s.message}{Colors.RESET}")
                max_k_len = 0
                for v in s.values:
                    if len(v.key) > max_k_len:
                        max_k_len = len(v.key)
                for v in s.values:
                    print(f"\t  {v.key:<{max_k_len+1}}= {v.value}")
            print("-----")
Exemple #2
0
 def cb(msg):
     nonlocal truncate_length, noarr, nostr
     print(
         message_to_csv(msg,
                        truncate_length=truncate_length,
                        no_arr=noarr,
                        no_str=nostr))
Exemple #3
0
def _print_csv(msg, truncate_length, noarr, nostr):
    if hasattr(msg, '__slots__'):
        print(
            message_to_csv(msg,
                           truncate_length=truncate_length,
                           no_arr=noarr,
                           no_str=nostr))
    else:
        print(msg)
Exemple #4
0
 def cb(msg):
     nonlocal truncate_length, noarr, nostr
     if isinstance(msg, bytes):
         print(msg)
     else:
         print(
             message_to_csv(msg,
                            truncate_length=truncate_length,
                            no_arr=noarr,
                            no_str=nostr))
def test_primitives():
    # Smoke-test the formatters on a bunch of messages
    msgs = []
    msgs.extend(message_fixtures.get_msg_arrays())
    msgs.extend(message_fixtures.get_msg_basic_types())
    msgs.extend(message_fixtures.get_msg_bounded_sequences())
    msgs.extend(message_fixtures.get_msg_builtins())
    msgs.extend(message_fixtures.get_msg_constants())
    msgs.extend(message_fixtures.get_msg_defaults())
    msgs.extend(message_fixtures.get_msg_empty())
    msgs.extend(message_fixtures.get_msg_multi_nested())
    msgs.extend(message_fixtures.get_msg_nested())
    msgs.extend(message_fixtures.get_msg_strings())
    msgs.extend(message_fixtures.get_msg_unbounded_sequences())
    for m in msgs:
        message_to_csv(m, 100)
        message_to_csv(m, None)
        message_to_ordereddict(m, 100)
        message_to_ordereddict(m, None)
        message_to_yaml(m, 100)
        message_to_yaml(m, None)
Exemple #6
0
    def _subscriber_callback(self, msg, info):
        submsg = msg
        if self.field is not None:
            for field in self.field:
                try:
                    submsg = getattr(submsg, field)
                except AttributeError as ex:
                    raise RuntimeError(
                        f"Invalid field '{'.'.join(self.field)}': {ex}")

        # Evaluate the current msg against the supplied expression
        if self.filter_fn is not None and not self.filter_fn(submsg):
            return

        if self.future is not None:
            self.future.set_result(True)

        if not hasattr(submsg, '__slots__'):
            # raw
            if self.include_message_info:
                print('---Got new message, message info:---')
                print(info)
                print('---Message data:---')
            print(submsg, end='\n---\n')
            return

        if self.csv:
            to_print = message_to_csv(submsg,
                                      truncate_length=self.truncate_length,
                                      no_arr=self.no_arr,
                                      no_str=self.no_str)
            if self.include_message_info:
                to_print = f'{",".join(str(x) for x in info.values())},{to_print}'
            print(to_print)
            return
        # yaml
        if self.include_message_info:
            print(yaml.dump(info), end='---\n')
        print(message_to_yaml(submsg,
                              truncate_length=self.truncate_length,
                              no_arr=self.no_arr,
                              no_str=self.no_str,
                              flow_style=self.flow_style),
              end='---\n')
Exemple #7
0
 def cb(msg):
     nonlocal truncate_length
     print(message_to_csv(msg, truncate_length))