コード例 #1
0
    def __init__(self, config=None):
        """
        Sets up the dictionary of connected decoders and socket client object.

        Decoder dictionary is of the form:
        {data descriptor name: list of decoder objects registered for that data}

        Args:
            config (ConfigManager, default=None): Config manager with
                   information on what types the message fields are. If None,
                   defaults are used.
        """
        if config == None:
            # Retrieve defaults for the configs
            config = config_manager.ConfigManager()

        self.__decoders = {
            key.name: []
            for key in list(data_desc_type.DataDescType)
        }

        # Internal buffer for un distributed data
        self.__buf = b""
        #Setup key framing
        self.key_frame = None
        try:
            tmp_frame = config.get("framing", "use_key")
        except:
            tmp_frame = "false"
        if (tmp_frame.lower() == "true"):
            self.key_frame = int(config.get("framing", "key_val"), 16)
        self.key_obj = config.get_type("key_val")
        self.len_obj = config.get_type("msg_len")
コード例 #2
0
ファイル: gds.py プロジェクト: zkneupper/fprime
def main(argv=None):
    # Double check wx python version by checking first character is at least
    #  4 (wx version 4+ required)
    wx_version = int(wx.version()[0])

    if wx_version < 4:
        sys.stderr.write(
            "wxPython version is %s, version 4 or above is required" %
            wx.version())
        return -1
    """
    Command line options.
    """
    args = get_args()
    if args is None:
        return -1

    # Setup the configuration file
    config = config_manager.ConfigManager()
    if args.config_path is not None:
        config.set_configs(args.config_path)
    else:
        print("No Configuration File in options, using defaults")

    app = wx.App(False)

    # Initialize main frame factory
    factory = MainFrameFactory(args, config)

    # Setup main frame factory (This is where the back end classes are
    #  initialized and registered to each other)
    factory.setup_pipeline()

    sleep(1)

    factory.client_socket.connect(args.addr, args.port)

    sleep(1)

    factory.client_socket.register_to_server(client_socket.GUI_TAG)

    app.MainLoop()

    factory.client_socket.disconnect()
コード例 #3
0
        (leftover_data, raw_msgs) = self.parse_into_raw_msgs_api(self.__buf)
        self.__buf = leftover_data

        for raw_msg in raw_msgs:
            (length, data_desc, msg) = self.parse_raw_msg_api(raw_msg)

            data_desc_key = data_desc_type.DataDescType(data_desc).name

            for d in self.__decoders[data_desc_key]:
                d.data_callback(msg)


if __name__ == "__main__":
    # Unit testing
    config = config_manager.ConfigManager()
    config.set('types', 'msg_len', 'U16')

    dist = Distributor(config)

    header_1 = "\x00\x0E\x00\x00\x00\x04"
    length_1 = 14
    desc_1 = 4
    data_1 = "\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A"

    header_2 = "\x00\x0A\x00\x00\x00\x01"
    length_2 = 10
    desc_2 = 1
    data_2 = "\x41\x42\x43\x44\x45\x46"

    leftover_data = "\x00\x0F\x00\x00\x00\x02\xFF"
コード例 #4
0
ファイル: test_distributor.py プロジェクト: zkneupper/fprime
def test_distributor():
    """
    Tests the raw messages and leftover data for the distributor
    """
    config = config_manager.ConfigManager()
    config.set("types", "msg_len", "U16")

    dist = Distributor(config)

    header_1 = b"\x00\x0E\x00\x00\x00\x04"
    length_1 = 14
    desc_1 = 4
    data_1 = b"\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A"

    header_2 = b"\x00\x0A\x00\x00\x00\x01"
    length_2 = 10
    desc_2 = 1
    data_2 = b"\x41\x42\x43\x44\x45\x46"

    leftover_data = b"\x00\x0F\x00\x00\x00\x02\xFF"

    data = header_1 + data_1 + header_2 + data_2 + leftover_data

    (test_leftover, raw_msgs) = dist.parse_into_raw_msgs_api(data)

    assert (test_leftover == leftover_data
            ), "expected leftover data to be %s, but found %s" % (
                list(leftover_data),
                list(test_leftover),
            )
    assert raw_msgs[0] == (
        header_1 + data_1), "expected first raw_msg to be %s, but found %s" % (
            list(header_1 + data_1),
            list(raw_msgs[0]),
        )
    assert raw_msgs[1] == (
        header_2 +
        data_2), "expected second raw_msg to be %s, but found %s" % (
            list(header_2 + data_2),
            list(raw_msgs[1]),
        )

    (test_len_1, test_desc_1, test_msg_1) = dist.parse_raw_msg_api(raw_msgs[0])
    (test_len_2, test_desc_2, test_msg_2) = dist.parse_raw_msg_api(raw_msgs[1])

    assert test_len_1 == length_1, "expected 1st length to be %d but found %d" % (
        length_1,
        test_len_1,
    )
    assert test_len_2 == length_2, "expected 2nd length to be %d but found %d" % (
        length_2,
        test_len_2,
    )
    assert test_desc_1 == desc_1, "expected 1st desc to be %d but found %d" % (
        desc_1,
        test_desc_1,
    )
    assert test_desc_2 == desc_2, "expected 2nd desc to be %d but found %d" % (
        desc_2,
        test_desc_2,
    )
    assert test_msg_1 == data_1, "expected 1st msg to be {} but found {}".format(
        list(data_1),
        list(test_msg_1),
    )
    assert test_msg_2 == data_2, "expected 2nd msg to be {} but found {}".format(
        list(data_2),
        list(test_msg_2),
    )