def main(): # clock instances ptp_clocks = [] ptp_clocks.append(PtpClock(SLAVE_1_NAME, SLAVE_1_MAC, 'b')) # connect to a remote host where ptp4l is running, slave or master to # reach the ptp management channel server = Server(1, SERVER_USER, SERVER_PWD, SERVER_IP) server.connect() # interactive plot mode with labeled axis and legend fig, offset_graph = plt.subplots() path_delay_graph = offset_graph.twinx() for clk in ptp_clocks: offset_graph.plot(range(len(clk.offset_buffer)), clk.offset_buffer, "".join([clk.color, "-"]), label=" ".join([clk.name, "offset"])) path_delay_graph.plot(range(len(clk.mean_path_delay_buffer)), clk.mean_path_delay_buffer, "".join([clk.color, "."]), label=" ".join([clk.name, "path delay"])) offset_graph.legend(loc='upper left', shadow=True) path_delay_graph.legend(loc='upper right', shadow=True) offset_graph.set_xlabel("samples") offset_graph.set_ylabel("master offset (ns)") path_delay_graph.set_ylabel("mean path delay (ns)") for i in range(N): measurement_list = get_ptp_stat(server) for clk in ptp_clocks: clk.set_default_values() # parse incoming data from pmc iterator = iter(measurement_list) for c, n, o, p in zip(iterator, iterator, iterator, iterator): mac = c.split('-')[0] offset = re.sub('offsetFromMaster +', '', o) path_delay = re.sub('meanPathDelay +', '', p) if mac == clk.mac: clk.put_values(float(offset), float(path_delay)) # append buffers and plot clk.update_buffers() offset_graph.plot(range(len(clk.offset_buffer)), clk.offset_buffer, clk.color + "-", label=clk.name + " offset") offset_graph.autoscale(True, 'both', True) path_delay_graph.plot(range(len(clk.mean_path_delay_buffer)), clk.mean_path_delay_buffer, clk.color + ".", label=clk.name) plt.pause(1) plt.show()