From 450d03d5f47de4e4a0bd3ec0bc53c6315b594bd3 Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Sun, 29 Jun 2025 08:18:25 -0700 Subject: [PATCH 1/8] Add deprecated field --- schema/registers.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/schema/registers.json b/schema/registers.json index ad1913f..3787c9c 100644 --- a/schema/registers.json +++ b/schema/registers.json @@ -168,6 +168,10 @@ "type": "string", "enum": ["public", "private"] }, + "deprecated": { + "description": "Specifies whether the register function is deprecated.", + "type": "boolean" + }, "volatile": { "description": "Specifies whether register values can be saved in non-volatile memory.", "type": "boolean" From 4bde5368b363844147bc35ec56729f881432aabe Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Sun, 29 Jun 2025 08:18:25 -0700 Subject: [PATCH 2/8] Add deprecated field --- schema/registers.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/schema/registers.json b/schema/registers.json index ad1913f..3787c9c 100644 --- a/schema/registers.json +++ b/schema/registers.json @@ -168,6 +168,10 @@ "type": "string", "enum": ["public", "private"] }, + "deprecated": { + "description": "Specifies whether the register function is deprecated.", + "type": "boolean" + }, "volatile": { "description": "Specifies whether register values can be saved in non-volatile memory.", "type": "boolean" From 8df5bb6b9cad269207d0e4f888bcde478e3598d7 Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Tue, 15 Jul 2025 08:34:49 -0700 Subject: [PATCH 3/8] Add deprecated tags to core registers --- schema/core.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/schema/core.yml b/schema/core.yml index e7a1cbd..2c50ffe 100644 --- a/schema/core.yml +++ b/schema/core.yml @@ -11,36 +11,43 @@ registers: type: U8 access: Read description: Specifies the major hardware version of the device. + deprecated: true HardwareVersionLow: address: 2 type: U8 access: Read description: Specifies the minor hardware version of the device. + deprecated: true AssemblyVersion: address: 3 type: U8 access: Read description: Specifies the version of the assembled components in the device. + deprecated: true CoreVersionHigh: address: 4 type: U8 access: Read description: Specifies the major version of the Harp core implemented by the device. + deprecated: true CoreVersionLow: address: 5 type: U8 access: Read description: Specifies the minor version of the Harp core implemented by the device. + deprecated: true FirmwareVersionHigh: address: 6 type: U8 access: Read description: Specifies the major version of the Harp core implemented by the device. + deprecated: true FirmwareVersionLow: address: 7 type: U8 access: Read description: Specifies the minor version of the Harp core implemented by the device. + deprecated: true TimestampSeconds: address: 8 type: U32 @@ -100,6 +107,7 @@ registers: type: U16 access: Write description: Specifies the unique serial number of the device. + deprecated: true ClockConfiguration: address: 14 type: U8 From d191d25c63765e22a0d0e14db014ae51216505ee Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Tue, 28 Oct 2025 10:25:04 -0700 Subject: [PATCH 4/8] Add new registers for TimestampOffset, UID, Tag, Heartbeat, and Version with detailed payload specifications --- schema/core.yml | 73 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/schema/core.yml b/schema/core.yml index 2c50ffe..1278816 100644 --- a/schema/core.yml +++ b/schema/core.yml @@ -114,6 +114,72 @@ registers: access: Write maskType: ClockConfigurationFlags description: Specifies the configuration for the device synchronization clock. + TimestampOffset: + address: 15 + type: U8 + access: Write + description: Offsets the device timestamp. + deprecated: true + UID: + address: 16 + type: U8 + access: Read + length: 16 + description: Specifies the unique identifier of the device. + Tag: + address: 17 + type: U8 + access: Write + length: 8 + description: Stores a user-defined tag for the device. + Heartbeat: + address: 18 + type: U16 + access: Event + maskType: HeartbeatFlags + description: Stores the number of seconds since the device was last reset. + Version: + address: 19 + type: U8 + access: Read + length: 32 + description: Specifies the semantic version of the different device components. + payloadSpec: + ProtocolMajor: + offset: 0 + description: Specifies the major version of the Harp protocol implementation. + ProtocolMinor: + offset: 1 + description: Specifies the minor version of the Harp protocol implementation. + ProtocolPatch: + offset: 2 + description: Specifies the patch version of the Harp protocol implementation. + FirmwareMajor: + offset: 3 + description: Specifies the major version of the firmware. + FirmwareMinor: + offset: 4 + description: Specifies the minor version of the firmware. + FirmwarePatch: + offset: 5 + description: Specifies the patch version of the firmware. + HardwareMajor: + offset: 6 + description: Specifies the major version of the hardware. + HardwareMinor: + offset: 7 + description: Specifies the minor version of the hardware. + HardwarePatch: + offset: 8 + description: Specifies the patch version of the hardware. + SdkId: + offset: 9 + description: Specifies the microcontroller SDK used to implement the device. + mask: 0xFFFFFF + InterfaceHash: + offset: 12 + description: Specifies the SHA-1 hash value of the device interface contract. + mask: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF groupMasks: OperationMode: description: Specifies the operation mode of the device. @@ -151,4 +217,9 @@ bitMasks: RepeaterCapability: {value: 0x8, description: Specifies the device has the capability to repeat the clock synchronization signal to the clock output connector.} GeneratorCapability: {value: 0x10, description: Specifies the device has the capability to generate the clock synchronization signal to the clock output connector.} ClockUnlock: {value: 0x40, description: The device will unlock the timestamp register counter and will accept commands to set new timestamp values.} - ClockLock: {value: 0x80, description: The device will lock the timestamp register counter and will not accept commands to set new timestamp values.} \ No newline at end of file + ClockLock: {value: 0x80, description: The device will lock the timestamp register counter and will not accept commands to set new timestamp values.} + HeartbeatFlags: + description: Specifies configuration flags for the device heartbeat event. + bits: + IsActive: {value: 0x1, description: "The device is in Active mode."} + IsSynchronized: {value: 0x2, description: "The device is synchronized to an external Harp clock generator. The value is 1 if the device is itself a clock generator."} \ No newline at end of file From 93c0962f131c9ca3f51bed83f894239fc6a16547 Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Mon, 17 Nov 2025 15:37:29 -0800 Subject: [PATCH 5/8] Remove mention to deprecated register --- schema/core.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/schema/core.yml b/schema/core.yml index 1278816..28d64c1 100644 --- a/schema/core.yml +++ b/schema/core.yml @@ -114,11 +114,11 @@ registers: access: Write maskType: ClockConfigurationFlags description: Specifies the configuration for the device synchronization clock. - TimestampOffset: + Reserved0: address: 15 type: U8 access: Write - description: Offsets the device timestamp. + description: This register is reserved and should not be implemented. deprecated: true UID: address: 16 From ef31044e2affc6448348b445a3492be2a7d34be2 Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Mon, 17 Nov 2025 15:40:21 -0800 Subject: [PATCH 6/8] Add bit for `UpdateFirmware` feature added in #166 --- schema/core.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/schema/core.yml b/schema/core.yml index 28d64c1..65230e6 100644 --- a/schema/core.yml +++ b/schema/core.yml @@ -206,6 +206,7 @@ bitMasks: RestoreEeprom: {value: 0x2, description: The device will boot and restore all the registers to the values stored in non-volatile memory.} Save: {value: 0x4, description: The device will boot and save all the current register values to non-volatile memory.} RestoreName: {value: 0x8, description: The device will boot with the default device name.} + UpdateFirmware: {value: 0x20, description: The device will enter firmware update mode.} BootFromDefault: {value: 0x40, description: Specifies that the device has booted from default factory values.} BootFromEeprom: {value: 0x80, description: Specifies that the device has booted from non-volatile values stored in EEPROM.} ClockConfigurationFlags: From e01661f554c4a866d63f390e8f232a43dd211be9 Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Tue, 18 Nov 2025 08:44:27 -0800 Subject: [PATCH 7/8] Add prefix to ensure uniqueness against application registers --- schema/core.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/schema/core.yml b/schema/core.yml index 65230e6..098e5d6 100644 --- a/schema/core.yml +++ b/schema/core.yml @@ -114,12 +114,13 @@ registers: access: Write maskType: ClockConfigurationFlags description: Specifies the configuration for the device synchronization clock. - Reserved0: + CoreReserved0: address: 15 type: U8 access: Write description: This register is reserved and should not be implemented. deprecated: true + visibility: private UID: address: 16 type: U8 From 03220c45de333f24c8933fde87b6877f60673b03 Mon Sep 17 00:00:00 2001 From: bruno-f-cruz <7049351+bruno-f-cruz@users.noreply.github.com> Date: Thu, 20 Nov 2025 09:37:02 -0800 Subject: [PATCH 8/8] Revert changes to TimestampOffset --- schema/core.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/schema/core.yml b/schema/core.yml index 098e5d6..7a60fe8 100644 --- a/schema/core.yml +++ b/schema/core.yml @@ -114,13 +114,12 @@ registers: access: Write maskType: ClockConfigurationFlags description: Specifies the configuration for the device synchronization clock. - CoreReserved0: + TimestampOffset: address: 15 type: U8 access: Write - description: This register is reserved and should not be implemented. + description: Configures an offset for Timestamp updates. deprecated: true - visibility: private UID: address: 16 type: U8