Ik ben bezig met een "shared bus" en zit voorzichtig na te denken over een "discovery protocol". De devices hebben een uniek ID.
Nu kan ik gewoon afkijken naar wat "onewire" of RDM doet, maar "not invented here" dat kan natuurlijk beter.
Diverse van dit soort protcollen doen bit-voor-bit het uniek id aflopen, maar als dan bijvoorbeeld op onewire je 30 tempsensors hebt uit dezelfde batch, dan krijg je dus de eerste dertig probes steeds "Ikke!!!!" van dertig slaves tegelijk te horen.
Voor terminologie heb ik halverwege dit bericht besloten Hx te gaan gebruiken voor de x-bits hash, dus H4 voor de vierbits hash.
Ik zat te denken. Als er nu een variable lengte hash zou zijn die haast cryptografisch anders wordt als je de lengte verandert, dan kan je een aantal dingen doen. Enerzijds, kan je als je 4 apparaten hebt scannen met zeg de 4bits hash en roepen: Iemand met H4==0? 1? 2? En dan is de kans ongeveer 50/50 dat je geen collisions krijgt. De host met wat meer geheugen kan onthouden wat er vorige scan aanhing, die individueel aanspreken en vragen om voorlopig effe stil te zijn en dan een probe doen met weinig bitjes om te weten te komen of er nog nieuwe apparaten zijn toegevoegd.
Wat ik ook een fijne eigenschap zou vinden is dat als je met een 4-bits probe een dikke collision van 5 apparaten op zeg H4=7 hebt, dat je dan beter kan scoren dan "2 groepen" als je besluit op de 5-bit-hash over te stappen. Dat laatste zou je dus krijgen als je gewoon een hash neemt waarvan je de laatste zoveel bitjes gebruikt.
Met "haast crytpografisch" bedoel ik: dat met een verschillende uniek id om mee te beginnen alle H5 = x apparaten egaal over de 16 mogelijke waardes van H4 verdeeld worden.
Misschien is binair zoeken niet eens zo inefficient en moet ik niet het wiel opnieuw willen uitvinden. Als niemand zo'n hash zou weten, dan zal dat het waarschijnlijk wel worden. Of evt. dat ik de hash truncate.
OK! Ik denk dat ik er een heb gevonden:
Hx (uniq) = truncate (x, MD5 (x + uniq))
Ik denk dat als ik dit goed krijg ik efficienter ben als er wel collisions zijn maar niet belachelijk veel.
Andere suggesties voor een hash zijn nog steeds welkom.