diff --git a/knx/cemi/address.go b/knx/cemi/address.go index a79d3da..565ff58 100644 --- a/knx/cemi/address.go +++ b/knx/cemi/address.go @@ -96,11 +96,11 @@ func NewGroupAddr3(a, b, c uint8) GroupAddr { return GroupAddr(a&0x1F)<<11 | GroupAddr(b&0x7)<<8 | GroupAddr(c) } -// NewGroupAddr2 generates a group address from and "a/b" +// NewGroupAddr2 generates a group address from an "a/b" // representation, where a is the Main Group [0..31] and b is // the Sub Group [0..2047]. func NewGroupAddr2(a uint8, b uint16) GroupAddr { - return GroupAddr(a)<<8 | GroupAddr(b&0x7FF) + return GroupAddr(a&0x1F)<<11 | GroupAddr(b&0x7FF) } // NewGroupAddrString parses the given string to a group address. diff --git a/knx/cemi/address_test.go b/knx/cemi/address_test.go index 16f6fe9..e511a36 100644 --- a/knx/cemi/address_test.go +++ b/knx/cemi/address_test.go @@ -64,7 +64,8 @@ func Test_GroupAddresses(t *testing.T) { var addrs = []Addr{ {"1/2/3", true, "1/2/3"}, {"31/7/255", true, "31/7/255"}, - {"31/2040", true, "3/7/248"}, + {"31/2040", true, "31/7/248"}, + {"31/2047", true, "31/7/255"}, {"65535", true, "31/7/255"}, {"82/8/260", false, ""}, {"84/230", false, ""},