Skip to content

Releases: PADL/SwiftOCA

0.5.0

02 Oct 10:14

Choose a tag to compare

Features

  • controller-side JSON is now returned in human readable form
  • all device backends support configurable logging
  • support for datagram domain sockets
  • optional message (PDU) tracing

Performance improvements

  • controller message batching (disabled by default)
  • device response PDU coalescing
  • property key path caching
  • fewer allocations when encoding messages
  • fast path on subscription notifications if OcaGrouper unused
  • don't create unnecessary subtasks when notifying subscribers

Other

  • force datagram client to wait for packet from device
  • ensure devices always send KeepAlive immediately on connection open
  • fix some issues with controller KeepAlive handling
  • fix hang in controller after timeout
  • ensure datagram timeout at least twice heartbeat time
  • remove SetActiveNetworkSettingsMethod (does not exist)
  • fix GetPortClockMapEntry methodID
  • allow controllers to indicate if they support locking
  • elide unnecessary locks in connection monitor
  • some API changes
  • more tests

0.4.5

19 Jul 06:22

Choose a tag to compare

  • change OcaModelGUID modelCode to a 4-tuple of OcaUint8, per spec
  • improved DNS-SD device registration and de-registration
  • support for Apple’s Network framework in addition to io_uring, CoreFoundation and FlyingSocks backends (client-side only)
  • support for OcaDataset and related APIs (currently with a file/JSON-based backend, but SQLite will be added in the future)
  • support for remote peer-to-peer OcaGrouper members
  • fix incorrectly OcaMediaClock3 method signatures; now complies with standard
  • no longer crashes with Swift 6.2 prerelease
  • cache property and method lookups to improve performance
  • various other sundry fixes

0.4.1

15 May 21:19

Choose a tag to compare

New since 0.4.0:

  • add Equatable and Hashable conformance toOcaOrganizationID and OcaModelGUID
  • log controller name as logging metadata
  • FlyingSocks: fix reading of PDU when partial buffer returned
  • DoS fix: validate header.pduSize against inbound PDU

Serialisation improvements

07 Mar 08:27

Choose a tag to compare

Improvements since 0.3.5:

  • use new native encoder/decoder for all PDU encapsulation
  • nse new native encoder/decoder for metering packets
  • use FoundationEssentials in lieu of Foundation where possible
  • getRoleMap() helper API on OcaBlock
  • more tests

The serialisation improvements can increase performance / reduce CPU load by 10x in some cases.

ISE 2025!

07 Feb 17:08

Choose a tag to compare

May as well make a release for ISE (even though it's over now).

  • add onControllerExpiry() method to device delegate
  • update ClassRegistry with some missing object classes
  • add asyncMap() method to Array2D
  • support for Observation framework on Darwin, instead of Combine
  • add OcaTemperatureSensor
  • refactor JSON serialisation support in SwiftOCADevice

0.3.0

30 Nov 23:10

Choose a tag to compare

  • complete rewrite of connection/reconnection code
  • add CI for macOS and Linux
  • use tagged releases of IORingSwift, FlyingFox and swift-log
  • support for tagging explicit event subscriptions with a label

0.2.6

17 Nov 05:19

Choose a tag to compare

Things fixed in this release:

  • support for Android SDK
  • UDP controller and device support on Darwin with FlyingSocks
  • use FoundationEssentials if available, where possible
  • refresh subscriptions on reconnect (this code had been accidentally disabled)
  • perform subscription removal and refresh in parallel using a task group
  • reduce actor hopping in controller monitor task
  • don't close connection on unknownPduType/invalidHandle errors

0.2.1

05 Sep 11:31

Choose a tag to compare

  • Various minor fixes, mostly tracking API changes in FlyingSocks
  • LogSliderView, Float32ActuatorView for SwiftUI

SwiftOCA 0.2.0

07 Jun 07:42

Choose a tag to compare

  • indentation is now 2 spaces
  • use new SocketAddress package for handling socket addresses
  • OcaAudioLevelSensor
  • OcaPropertyID and friends now conform to ExpressibleByStringLiteral
  • new CoreFoundation backend supports both controllers and devices
  • represent subscriptions internally as Set rather than NSSet

SwiftOCA 0.1.9

26 Apr 03:05

Choose a tag to compare

  • test Unix domain socket endpoint in example app
  • update swift-async-algorithms to 1.0.0
  • allow third-party controllers to subclass OCA classes
  • fix some more concurrency warnings
  • rename OcaObjectSearchResultFlags to OcaActionObjectSearchResultFlags per latest AES70 spec
  • new Ocp1ConnectionState type for interrogating controller connection state
  • OcaCounterNotifier stub implementation
  • correct OCP.1 connection prefix for domain sockets