def radio_set_rtctime(radio, utctime, node=None, name=None, power=None, wait=MAX_WAIT): if not node: node = TagTlv(tlv_types.NODE_ID, -1) if not name: name = TagName([ node, TagTlv('tag'), TagTlv('sys'), TagTlv('rtc'), ]) req_obj = TagPut(name, pl=TagTlvList([TagTlv(tlv_types.UTC_TIME, utctime)])) req_msg = req_obj.build() error, payload, msg_meta = msg_exchange(radio, req_obj) rssi, sstatus, rstatus = msg_meta if (error is tlv_errors.SUCCESS): if payload: tagtime = payload2values(payload, [ tlv_types.UTC_TIME, ])[0] return tagtime, rssi, sstatus, rstatus return None, None, sstatus, rstatus
def _put_msg(path_list, buf, offset=None): tlv_list = path2tlvs(path_list) if (offset): tlv_list.append(TagTlv(tlv_types.OFFSET, offset)) tname = TagName(tlv_list) msg = TagPut(tname) msg.payload = bytearray(buf[0:msg.payload_avail()]) return (msg, len(msg.payload))
def radio_write_test(radio, test_name, buf, pos=0, node=None, name=None, power=None, wait=MAX_WAIT): if not node: node = TagTlv(tlv_types.NODE_ID, -1) if not name: name = TagName([ node, TagTlv('tag'), TagTlv('.test'), TagTlv(test_name), TagTlv('byte'), TagTlv(tlv_types.OFFSET, pos), TagTlv(tlv_types.SIZE, len(buf)), ]) req_obj = TagPut(name, pl=buf) if get_cmd_args().verbosity > 2: mylog.debug(method=inspect.stack()[0][3], lineno=sys._getframe().f_lineno, name=req_obj.name, data=req_obj.payload.__repr__()) req_msg = req_obj.build() sstatus = radio_send_msg(radio, req_msg, power) rsp_msg, rssi, rstatus = radio_receive_msg(radio, MAX_RECV, wait) if rsp_msg: if get_cmd_args().verbosity > 3: mylog.debug(method=inspect.stack()[0][3], lineno=sys._getframe().f_lineno, data=rsp_msg.__repr__()) rsp_obj = TagMessage(rsp_msg) if get_cmd_args().verbosity > 4: mylog.debug(method=inspect.stack()[0][3], lineno=sys._getframe().f_lineno, data={ 'header': rsp_obj.header, 'name': rsp_obj.name, 'payload': rsp_obj.payload }) if rsp_obj.payload: if get_cmd_args().verbosity > 3: mylog.debug(method=inspect.stack()[0][3], lineno=sys._getframe().f_lineno, data=rsp_obj.payload.__repr__()) error, offset = payload2values(rsp_obj.payload, [ tlv_types.ERROR, tlv_types.OFFSET, ]) if error and error != tlv_errors.SUCCESS: return error, offset return tlv_errors.SUCCESS, pos + len(buf) return tlv_errors.EINVAL, pos
def radio_set_power(radio, tag_power, node=None, name=None, power=None, wait=MAX_WAIT): if not node: node = TagTlv(tlv_types.NODE_ID, -1) if not name: name = TagName([ node, TagTlv('tag'), TagTlv('.test'), TagTlv('tx_pwr'), ]) req_obj = TagPut(name, pl=TagTlvList([TagTlv(tlv_types.INTEGER, tag_power)])) req_msg = req_obj.build() error, payload, msg_meta = msg_exchange(radio, req_obj) rssi, sstatus, rstatus = msg_meta if (error is tlv_errors.SUCCESS): if payload: return payload[0].value(), rssi, sstatus, rstatus return None, None, sstatus, rstatus
def _close_msg(path_list): im_name = TagName(path2tlvs(path_list)) msg = TagPut(im_name, pl=[TagTlv(tlv_types.EOF)]) return msg
def _file_put_msg(tname, buf, offset): if (offset): tname.append(TagTlv(tlv_types.OFFSET, offset)) msg = TagPut(tname, pl=bytearray(buf)) return msg
def _truncate_msg(tname, offset): msg = TagPut(tname, pl=TagTlvList([(tlv_types.INTEGER, offset)])) return msg
def _set_version_msg(path_list): tlv_list = path2tlvs(path_list[:-1]) tlv_list.append(TagTlv(tlv_types.VERSION, path_list[-1].split('.'))) req_obj = TagPut(TagName(tlv_list)) return req_obj
def _close_msg(path_list): im_name = TagName(path2tlvs(path_list)) im_name.append(TagTlv(tlv_types.OFFSET, offset)) msg = TagPut(im_name, pl=TagTlvList([TagTlv(tlv_types.EOF)])) return msg