def _encode_pid_data()

in tools/cansim/canigen.py [0:0]


    def _encode_pid_data(self, num, ecu):
        for name, data in ecu["pids"].items():
            if num == int(data["num"], 0):
                scaled_val = (self._values["pid"][name] + data["offset"]) * data["scale"]
                is_float = data.get("signal_value_type", "INTEGER") == "FLOATING_POINT"
                if is_float:
                    if data["size"] == 4:
                        return list(struct.pack(">f", scaled_val))
                    elif data["size"] == 8:
                        return list(struct.pack(">d", scaled_val))
                    else:
                        print(
                            "error: invalid size for floating point value,"
                            f" expected 4 or 8 bytes but got {data['size']}"
                        )
                        return None
                else:
                    val = int(scaled_val)
                    out = []
                    for i in range(data["size"]):
                        out.append((val >> ((data["size"] - i - 1) * 8)) & 0xFF)
                    return out
        return None