jacdac
Subpackages
jacdac.accelerometerjacdac.acidityjacdac.air_pressurejacdac.air_quality_indexjacdac.arcade_gamepadjacdac.arcade_soundjacdac.azure_iot_hub_healthjacdac.barcode_readerjacdac.bit_radiojacdac.bootloaderjacdac.braille_displayjacdac.bridgejacdac.buttonjacdac.buzzerjacdac.capacitive_buttonjacdac.character_screenjacdac.codal_message_busjacdac.colorjacdac.compassjacdac.controljacdac.d_ccurrent_measurementjacdac.d_cvoltage_measurementjacdac.dashboardjacdac.dc_current_measurementjacdac.dc_voltage_measurementjacdac.devtoolsjacdac.dimmerjacdac.distancejacdac.dmxjacdac.dot_matrixjacdac.dual_motorsjacdac.e_co2jacdac.flexjacdac.gamepadjacdac.gyroscopejacdac.heart_ratejacdac.hid_joystickjacdac.hid_keyboardjacdac.hid_mousejacdac.humidityjacdac.illuminancejacdac.indexed_screenjacdac.infrastructurejacdac.jacscript_cloudjacdac.jacscript_conditionjacdac.jacscript_managerjacdac.ledjacdac.led_singlejacdac.led_stripjacdac.light_bulbjacdac.light_leveljacdac.loggerjacdac.magnetic_field_leveljacdac.magnetometerjacdac.matrix_keypadjacdac.microphonejacdac.midi_outputjacdac.model_runnerjacdac.motionjacdac.motorjacdac.multitouchjacdac.planar_positionjacdac.potentiometerjacdac.powerjacdac.power_supplyjacdac.pressure_buttonjacdac.proto_testjacdac.proxyjacdac.pulse_oximeterjacdac.rain_gaugejacdac.real_time_clockjacdac.reflected_lightjacdac.relayjacdac.rngjacdac.role_managerjacdac.rotary_encoderjacdac.roverjacdac.sat_navjacdac.sensor_aggregatorjacdac.servojacdac.settingsjacdac.seven_segment_displayjacdac.soil_moisturejacdac.solenoidjacdac.sound_leveljacdac.sound_playerjacdac.sound_recorder_with_playbackjacdac.sound_spectrumjacdac.speech_synthesisjacdac.switchjacdac.systemjacdac.tcpjacdac.temperaturejacdac.timeseries_aggregatorjacdac.traffic_lightjacdac.tvocjacdac.unique_brainjacdac.usb_bridgejacdac.uv_indexjacdac.verified_telemetryjacdac.vibration_motorjacdac.water_leveljacdac.weight_scalejacdac.wifijacdac.wind_directionjacdac.wind_speed
Submodules
Package Contents
Classes
A Jacdac packet |
|
A base class for packet transports |
|
A Jacdac bus that managed devices, service client, registers. |
|
Incoming pipe |
|
Out going packet pipe |
|
A Jacdac register client |
|
A server for the control service, used internally by the bus. |
|
A server for the unique brain service, used internally by the bus |
|
A server for the role manager service |
|
Base class to define service clients. |
|
A client for a sensor service |
|
A device on the bus |
|
Base class to define service clients. |
|
A Jacdac packet |
Functions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Attributes
- jacdac.PackType
- class jacdac.JDPacket(*, cmd: int = None, size: int = 0, frombytes: bytes = None, data: bytes = None, sender: Any = None)
A Jacdac packet
- property service_command
- property packet_flags
- property multicommand_class
- property size
- property requires_ack
- property service_index
- property is_regular_service
- property crc
- property is_event
- property event_code
- property event_counter
- property is_reg_set
- property is_reg_get
- property reg_code
- property data
- property is_command
- property is_report
- to_string()
- __str__()
Return str(self).
- not_implemented()
- class jacdac.Transport
A base class for packet transports
- on_receive :Optional[Callable[[bytes], None]]
- jacdac.now()
- jacdac.PackTuple
- jacdac.PackType
- jacdac.EV_CHANGE = change
- jacdac.EV_DEVICE_CONNECT = deviceConnect
- jacdac.EV_DEVICE_CHANGE = deviceChange
- jacdac.EV_DEVICE_ANNOUNCE = deviceAnnounce
- jacdac.EV_SELF_ANNOUNCE = selfAnnounce
- jacdac.EV_PACKET_PROCESS = packetProcess
- jacdac.EV_REPORT_RECEIVE = reportReceive
- jacdac.EV_REPORT_UPDATE = reportUpdate
- jacdac.EV_RESTART = restart
- jacdac.EV_PACKET_RECEIVE = packetReceive
- jacdac.EV_EVENT = packetEvent
- jacdac.EV_STATUS_EVENT = statusEvent
- jacdac.EV_IDENTIFY = identify
- jacdac.EV_CONNECTED = connected
- jacdac.EV_DISCONNECTED = disconnected
- jacdac.RegType
- jacdac.HandlerFn
- jacdac.EventHandlerFn
- jacdac.UnsubscribeFn
- class jacdac.EventEmitter(bus: Bus)
-
- _init_emitter()
- on(id: str, fn: HandlerFn) UnsubscribeFn
Subscribes an event to a handler. Returns a callback to unsubscribe.
- Args:
id (str): event identifier fn (HandlerFn): event callback
Returns: callback to unsubscribe
- once(id: str, fn: HandlerFn)
Subscribes an event to run once; then get unsubscribed
- Args:
id (str): event identifier fn (HandlerFn): event callback
- jacdac.rand_u64()
- jacdac.is_raspberrypi()
- class jacdac.Bus(*, transports: jacdac.packet.Optional[List[jacdac.transport.Transport]] = None, device_id: jacdac.packet.Optional[str] = None, product_identifier: jacdac.packet.Optional[int] = None, firmware_version: jacdac.packet.Optional[str] = None, device_description: jacdac.packet.Optional[str] = None, disable_logger: bool = False, disable_role_manager: bool = False, disable_settings: bool = False, disable_brain: bool = False, disable_dev_tools: bool = False, spi: jacdac.packet.Optional[bool] = None, hf2_portname: jacdac.packet.Optional[str] = None, transport_cmd: jacdac.packet.Optional[str] = None, default_logger_min_priority: jacdac.packet.Optional[int] = None, storage_dir: jacdac.packet.Optional[str] = None, logger_name: jacdac.packet.Optional[str] = None)
Bases:
EventEmitterA Jacdac bus that managed devices, service client, registers.
- _sender()
- _process_task()
- process_frame(sender: jacdac.transport.Transport, frame: bytes)
- force_jd_thread()
- force_non_jd_thread()
- debug_dump()
- _gc_devices()
- _queue_core(pkt: jacdac.packet.JDPacket)
- _send_core(pkt: jacdac.packet.JDPacket)
- clear_attach_cache()
- process_packet(pkt: jacdac.packet.JDPacket)
- class jacdac.InPipe(bus: Bus)
Bases:
EventEmitterIncoming pipe
- _close()
- close()
- meta(pkt: jacdac.packet.JDPacket)
- handle_packet(pkt: jacdac.packet.JDPacket)
- class jacdac.OutPipe(bus: Bus, pkt: jacdac.packet.JDPacket)
Bases:
EventEmitterOut going packet pipe
- property open
- close()
- class jacdac.RawRegisterClient(client: Client, code: int, pack_format: jacdac.packet.Optional[str])
Bases:
EventEmitterA Jacdac register client
- clear()
- values() jacdac.packet.Optional[jacdac.pack.PackTuple]
- set_values(*args: jacdac.pack.PackType)
- value(default_value: jacdac.packet.Any = None) jacdac.packet.Optional[jacdac.packet.Any]
Extracts the value of the first field.
- bool_value(default_value: jacdac.packet.Optional[bool] = None) jacdac.packet.Optional[bool]
Extracts the value of the first field as a boolean.
- float_value(default_value: jacdac.packet.Optional[float] = None, scale: int = 1) jacdac.packet.Optional[float]
- _query()
- refresh()
- handle_packet(pkt: jacdac.packet.JDPacket)
- class jacdac.Server(bus: Bus, service_class: int, *, instance_name: str = None)
Bases:
EventEmitter- status_code()
- handle_packet_outer(pkt: jacdac.packet.JDPacket)
- handle_packet(pkt: jacdac.packet.JDPacket)
- send_report(pkt: jacdac.packet.JDPacket)
- send_change_event()
- handle_status_code(pkt: jacdac.packet.JDPacket)
- handle_reg_u8(pkt: jacdac.packet.JDPacket, register: int, current: int)
- handle_reg_u32(pkt: jacdac.packet.JDPacket, register: int, current: int)
- handle_reg_i32(pkt: jacdac.packet.JDPacket, register: int, current: int)
- handle_reg(pkt: jacdac.packet.JDPacket, register: int, fmt: str, current: RegType) RegType
- _handle_instance_name(pkt: jacdac.packet.JDPacket)
- class jacdac.SensorServer(bus: Bus, service_class: int, streaming_interval: int, *, instance_name: str = None, streaming_preferred_interval: int = None)
Bases:
Server- abstract send_reading()
- _start_streaming()
- async _stream()
- handle_packet(pkt: jacdac.packet.JDPacket)
- _handle_streaming_samples(pkt: jacdac.packet.JDPacket)
- _handle_streaming_interval(pkt: jacdac.packet.JDPacket)
- _handle_streaming_preferred_interval(pkt: jacdac.packet.JDPacket)
- class jacdac.ControlServer(bus: Bus)
Bases:
ServerA server for the control service, used internally by the bus.
- queue_announce()
- handle_packet(pkt: jacdac.packet.JDPacket)
- class jacdac.LoggerServer(bus: Bus)
Bases:
Server- handle_packet(pkt: jacdac.packet.JDPacket)
- class jacdac.UniqueBrainServer(bus: Bus)
Bases:
ServerA server for the unique brain service, used internally by the bus
- class jacdac.RoleBinding(role_manager: RoleManagerServer, role: str, service_class: int)
-
- select(devwrap: DeviceWrapper, service_idx: int)
- class jacdac.ServerBindings(host: str)
-
- score_for(devwrap: DeviceWrapper, select: jacdac.packet.Optional[bool] = False)
candidate devices are ordered by [numBound, numPossible, device_id] where numBound is number of clients already bound to this device and numPossible is number of clients that can possibly be additionally bound
- class jacdac.RoleManagerServer(bus: Bus)
Bases:
ServerA server for the role manager service
- handle_packet(pkt: jacdac.packet.JDPacket)
- handle_list_roles(pkt: jacdac.packet.JDPacket)
- handle_all_roles_allocated(pkt: jacdac.packet.JDPacket)
- handle_clear_all_roles(pkt: jacdac.packet.JDPacket)
- handle_set_role(pkt: jacdac.packet.JDPacket)
- _binding_hash()
- _check_changes()
- bind_roles()
- class jacdac.Client(bus: Bus, service_class: int, pack_formats: Dict[int, str], role: str)
Bases:
EventEmitterBase class to define service clients.
- handle_packet(pkt: jacdac.packet.JDPacket)
- handle_packet_outer(pkt: jacdac.packet.JDPacket)
- send_cmd(pkt: jacdac.packet.JDPacket)
Sends a command packet to the server
- _detach()
- on_connect(handler: EventHandlerFn) UnsubscribeFn
Registers an event handler when the client connects to a server
- Args:
handler (EventHandlerFn): function to run with client connects
- Returns:
UnsubscribeFn: function to call to unregister handler
- on_disconnect(handler: EventHandlerFn) UnsubscribeFn
Registers an event handler when the client disconnects from a server
- Args:
handler (EventHandlerFn): function to run with client connects
- Returns:
UnsubscribeFn: function to call to unregister handler
- class jacdac.SensorClient(bus: Bus, service_class: int, pack_formats: Dict[int, str], role: str, *, preferred_interval: int = None)
Bases:
ClientA client for a sensor service
- class jacdac.Device(bus: Bus, device_id: str, services: bytearray)
Bases:
EventEmitterA device on the bus
- property ctrl_client
- property announce_flags
- property reset_count
- property packet_count
- property is_connected
- property short_id
- debug_info()
- property num_service_classes
- _destroy()
- process_packet(pkt: jacdac.packet.JDPacket)
- class jacdac.BufferClient(bus: Bus, service_class: int, pack_formats: Dict[int, str], role: str)
Bases:
ClientBase class to define service clients.
- _value :bytearray
- _dirty :bool
A client that handles a double-buffer bytes buffer
- class jacdac.JDPacket(*, cmd: int = None, size: int = 0, frombytes: bytes = None, data: bytes = None, sender: Any = None)
A Jacdac packet
- property service_command
- property packet_flags
- property multicommand_class
- property size
- property requires_ack
- property service_index
- property is_regular_service
- property crc
- property is_event
- property event_code
- property event_counter
- property is_reg_set
- property is_reg_get
- property reg_code
- property data
- property is_command
- property is_report
- to_string()
- __str__()
Return str(self).
- not_implemented()