jacdac
Subpackages
jacdac.accelerometer
jacdac.acidity
jacdac.air_pressure
jacdac.air_quality_index
jacdac.arcade_gamepad
jacdac.arcade_sound
jacdac.azure_iot_hub_health
jacdac.barcode_reader
jacdac.bit_radio
jacdac.bootloader
jacdac.braille_display
jacdac.bridge
jacdac.button
jacdac.buzzer
jacdac.capacitive_button
jacdac.character_screen
jacdac.codal_message_bus
jacdac.color
jacdac.compass
jacdac.control
jacdac.d_ccurrent_measurement
jacdac.d_cvoltage_measurement
jacdac.dashboard
jacdac.dc_current_measurement
jacdac.dc_voltage_measurement
jacdac.devtools
jacdac.dimmer
jacdac.distance
jacdac.dmx
jacdac.dot_matrix
jacdac.dual_motors
jacdac.e_co2
jacdac.flex
jacdac.gamepad
jacdac.gyroscope
jacdac.heart_rate
jacdac.hid_joystick
jacdac.hid_keyboard
jacdac.hid_mouse
jacdac.humidity
jacdac.illuminance
jacdac.indexed_screen
jacdac.infrastructure
jacdac.jacscript_cloud
jacdac.jacscript_condition
jacdac.jacscript_manager
jacdac.led
jacdac.led_single
jacdac.led_strip
jacdac.light_bulb
jacdac.light_level
jacdac.logger
jacdac.magnetic_field_level
jacdac.magnetometer
jacdac.matrix_keypad
jacdac.microphone
jacdac.midi_output
jacdac.model_runner
jacdac.motion
jacdac.motor
jacdac.multitouch
jacdac.planar_position
jacdac.potentiometer
jacdac.power
jacdac.power_supply
jacdac.pressure_button
jacdac.proto_test
jacdac.proxy
jacdac.pulse_oximeter
jacdac.rain_gauge
jacdac.real_time_clock
jacdac.reflected_light
jacdac.relay
jacdac.rng
jacdac.role_manager
jacdac.rotary_encoder
jacdac.rover
jacdac.sat_nav
jacdac.sensor_aggregator
jacdac.servo
jacdac.settings
jacdac.seven_segment_display
jacdac.soil_moisture
jacdac.solenoid
jacdac.sound_level
jacdac.sound_player
jacdac.sound_recorder_with_playback
jacdac.sound_spectrum
jacdac.speech_synthesis
jacdac.switch
jacdac.system
jacdac.tcp
jacdac.temperature
jacdac.timeseries_aggregator
jacdac.traffic_light
jacdac.tvoc
jacdac.unique_brain
jacdac.usb_bridge
jacdac.uv_index
jacdac.verified_telemetry
jacdac.vibration_motor
jacdac.water_level
jacdac.weight_scale
jacdac.wifi
jacdac.wind_direction
jacdac.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:
EventEmitter
A 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:
EventEmitter
Incoming pipe
- _close()
- close()
- meta(pkt: jacdac.packet.JDPacket)
- handle_packet(pkt: jacdac.packet.JDPacket)
- class jacdac.OutPipe(bus: Bus, pkt: jacdac.packet.JDPacket)
Bases:
EventEmitter
Out going packet pipe
- property open
- close()
- class jacdac.RawRegisterClient(client: Client, code: int, pack_format: jacdac.packet.Optional[str])
Bases:
EventEmitter
A 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:
Server
A 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:
Server
A 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:
Server
A 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:
EventEmitter
Base 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:
Client
A client for a sensor service
- class jacdac.Device(bus: Bus, device_id: str, services: bytearray)
Bases:
EventEmitter
A 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:
Client
Base 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()