Example #1
0
    def write_attributes(self, attributes, is_report=False):
        args = []
        for attrid, value in attributes.items():
            if isinstance(attrid, str):
                attrid = self._attridx[attrid]
            if attrid not in self.attributes:
                self.error("%d is not a valid attribute id", attrid)
                continue

            if is_report:
                a = foundation.ReadAttributeRecord()
                a.status = 0
            else:
                a = foundation.Attribute()

            a.attrid = t.uint16_t(attrid)
            a.value = foundation.TypeValue()

            try:
                python_type = self.attributes[attrid][1]
                a.value.type = t.uint8_t(foundation.DATA_TYPE_IDX[python_type])
                a.value.value = python_type(value)
                args.append(a)
            except ValueError as e:
                self.error(str(e))

        if is_report:
            schema = foundation.COMMANDS[0x01][1]
            return self.reply(0x01, schema, args)
        else:
            schema = foundation.COMMANDS[0x02][1]
            return self.request(True, 0x02, schema, args)
Example #2
0
 def write_attributes(self, attributes):
     args = []
     for attrid, value in attributes.items():
         if isinstance(attrid, str):
             attrid = self._attridx[attrid]
         a = foundation.Attribute()
         a.attrid = t.uint16_t(attrid)
         a.value = foundation.TypeValue()
         python_type = self.attributes[attrid][1]
         a.value.type = t.uint8_t(foundation.DATA_TYPE_IDX[python_type])
         a.value.value = python_type(value)
         args.append(a)
     schema = foundation.COMMANDS[0x02][1]
     return self.request(True, 0x02, schema, args)