from remoteRF_server.common.idl import DeviceSchema, idl_expose, idl_register # Replace this with the vendor package, SDK, or local wrapper your device uses. # import vendor_device_api def connect_my_device(*, serial=None, address=None): """Open the physical device and return the vendor device object.""" try: # dev = vendor_device_api.open(serial=serial, address=address) # return dev raise NotImplementedError("replace with real connection code") except Exception as exc: print(f"Failed to open my_device: {exc}") return None @idl_register("my_device") class MyDeviceSchema(DeviceSchema): device_type = "my_device" driver_version = "0.0.1" @staticmethod def make_device(**kwargs): return connect_my_device( serial=kwargs.get("serial"), address=kwargs.get("address"), ) @idl_expose(kind="get", doc="Center frequency in Hz.") def get_frequency(self): return self.device.frequency @idl_expose(kind="set") def set_frequency(self, value): self.device.frequency = int(value) @idl_expose(kind="call", doc="Capture samples from the device.") def call_capture(self): return self.device.capture() @idl_expose def call_reset(self): self.device.reset() return 0