diff --git a/tools/gen-device-avr.py b/tools/gen-device-avr.py index f42691cc..6656b46f 100755 --- a/tools/gen-device-avr.py +++ b/tools/gen-device-avr.py @@ -200,6 +200,16 @@ func (r *Register8) ClearBits(value uint8) {{ volatile.StoreUint8(&r.Reg, volatile.LoadUint8(&r.Reg) &^ value) }} +// HasBits reads the register and then checks to see if the passed bits are set. It +// is the volatile equivalent of: +// +// (*r.Reg & value) > 0 +// +//go:inline +func (r *Register8) HasBits(value uint8) bool {{ + return (r.Get() & value) > 0 +}} + // Some information about this device. const ( DEVICE = "{name}" diff --git a/tools/gen-device-svd.py b/tools/gen-device-svd.py index 1f0070c9..5232ce44 100755 --- a/tools/gen-device-svd.py +++ b/tools/gen-device-svd.py @@ -349,6 +349,16 @@ func (r *Register8) ClearBits(value uint8) {{ volatile.StoreUint8(&r.Reg, volatile.LoadUint8(&r.Reg) &^ value) }} +// HasBits reads the register and then checks to see if the passed bits are set. It +// is the volatile equivalent of: +// +// (*r.Reg & value) > 0 +// +//go:inline +func (r *Register8) HasBits(value uint8) bool {{ + return (r.Get() & value) > 0 +}} + type Register16 struct {{ Reg uint16 }} @@ -391,6 +401,16 @@ func (r *Register16) ClearBits(value uint16) {{ volatile.StoreUint16(&r.Reg, volatile.LoadUint16(&r.Reg) &^ value) }} +// HasBits reads the register and then checks to see if the passed bits are set. It +// is the volatile equivalent of: +// +// (*r.Reg & value) > 0 +// +//go:inline +func (r *Register16) HasBits(value uint16) bool {{ + return (r.Get() & value) > 0 +}} + type Register32 struct {{ Reg uint32 }} @@ -433,6 +453,16 @@ func (r *Register32) ClearBits(value uint32) {{ volatile.StoreUint32(&r.Reg, volatile.LoadUint32(&r.Reg) &^ value) }} +// HasBits reads the register and then checks to see if the passed bits are set. It +// is the volatile equivalent of: +// +// (*r.Reg & value) > 0 +// +//go:inline +func (r *Register32) HasBits(value uint32) bool {{ + return (r.Get() & value) > 0 +}} + // Some information about this device. const ( DEVICE = "{name}"