コード例 #1
0
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()