Skip to content

This seems not consistent when the frequency is greater than 511 #38

@Robright20

Description

@Robright20

address := uint32(anchorFreq<<23) | uint32(targetFreq<<14) | deltaMs

package main

import (
	"fmt"
)

// Packs anchorFreq (9 bits), targetFreq (9 bits), and deltaMs (14 bits) into a uint32
func createAddress(anchorFreq, targetFreq, deltaMs uint32) uint32 {
	return (anchorFreq << 23) | (targetFreq << 14) | deltaMs
}

// Unpacks the 32-bit address back into anchorFreq, targetFreq, and deltaMs
func parseAddress(address uint32) (anchorFreq, targetFreq, deltaMs uint32) {
	anchorFreq = (address >> 23) & 0x1FF // 9 bits: bits 23-31
	targetFreq = (address >> 14) & 0x1FF // 9 bits: bits 14-22
	deltaMs = address & 0x3FFF           // 14 bits: bits 0-13
	return
}

func main() {
	var anchorFreq uint32 = 719 // within 9-bit range
	var targetFreq uint32 = 351 // within 9-bit range
	var deltaMs uint32 = 34567  // within 14-bit range

	address := createAddress(anchorFreq, targetFreq, deltaMs)
	fmt.Printf("Packed address: %032b (%d)\n", address, address)

	a, t, d := parseAddress(address)
	fmt.Printf("Decoded -> anchorFreq: %d, targetFreq: %d, deltaMs: %d\n", a, t, d)
}

// Packed address: 01100111110101111100011100000111 (1742194439)
// Decoded -> anchorFreq: 207, targetFreq: 351, deltaMs: 1799


func main() {
	var anchorFreq uint32 = 511 // within 9-bit range
	var targetFreq uint32 = 200 // within 9-bit range
	var deltaMs uint32 = 12345  // within 14-bit range

	address := createAddress(anchorFreq, targetFreq, deltaMs)
	fmt.Printf("Packed address: %032b (%d)\n", address, address)

	a, t, d := parseAddress(address)
	fmt.Printf("Decoded -> anchorFreq: %d, targetFreq: %d, deltaMs: %d\n", a, t, d)
}

// Packed address: 11111111101100100011000000111001 (4289867833)
// Decoded -> anchorFreq: 511, targetFreq: 200, deltaMs: 12345

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions