Ejemplo n.º 1
0
def get_nbr_info(ws):
    global device_manager
    info = {}
    t1 = tlvlib.create_get_tlv64(0, tlvlib.VARIABLE_UNIT_BOOT_TIMER)
    t2 = tlvlib.create_get_tlv128(0, tlvlib.VARIABLE_SW_REVISION)
    t3 = tlvlib.create_get_tlv256(device_manager.brm_instance, 0x101)
    enc, tlvs = tlvlib.send_tlv([t1,t2,t3], "localhost")
    info['BootedAt'] = tlvlib.get_start_ieee64_time_as_string(tlvs[0].int_value)
    info['Uptime'] = tlvlib.convert_ieee64_time_to_string(tlvs[0].int_value)
    info['BorderRouterSW'] = tlvlib.convert_string(tlvs[1].value)
    info['SerialInterface'] = "/dev/" + tlvlib.convert_string(tlvs[2].value)

    t1 = tlvlib.create_get_tlv32(device_manager.radio_instance,
                                 tlvlib.VARIABLE_RADIO_PAN_ID)
    t2 = tlvlib.create_get_tlv32(device_manager.radio_instance,
                                 tlvlib.VARIABLE_RADIO_CHANNEL)
    t3 = tlvlib.create_get_tlv128(device_manager.brm_instance, 0x105)
    enc, tlvs = tlvlib.send_tlv([t1,t2,t3], "localhost")
    info['PanID'] = "0x%04x"%tlvs[0].int_value
    info['Channel'] = tlvs[1].int_value
    info['SerialRadioSW'] = tlvlib.convert_string(tlvs[2].value)
    ws.sendMessage(json.dumps(info))
Ejemplo n.º 2
0
def get_nbr_info(ws):
    global device_manager
    info = {}
    t1 = tlvlib.create_get_tlv64(0, tlvlib.VARIABLE_UNIT_BOOT_TIMER)
    t2 = tlvlib.create_get_tlv128(0, tlvlib.VARIABLE_SW_REVISION)
    t3 = tlvlib.create_get_tlv256(device_manager.brm_instance, 0x101)
    enc, tlvs = tlvlib.send_tlv([t1, t2, t3], "localhost")
    info['BootedAt'] = tlvlib.get_start_ieee64_time_as_string(
        tlvs[0].int_value)
    info['Uptime'] = tlvlib.convert_ieee64_time_to_string(tlvs[0].int_value)
    info['BorderRouterSW'] = tlvlib.convert_string(tlvs[1].value)
    info['SerialInterface'] = "/dev/" + tlvlib.convert_string(tlvs[2].value)

    t1 = tlvlib.create_get_tlv32(device_manager.radio_instance,
                                 tlvlib.VARIABLE_RADIO_PAN_ID)
    t2 = tlvlib.create_get_tlv32(device_manager.radio_instance,
                                 tlvlib.VARIABLE_RADIO_CHANNEL)
    t3 = tlvlib.create_get_tlv128(device_manager.brm_instance, 0x105)
    enc, tlvs = tlvlib.send_tlv([t1, t2, t3], "localhost")
    info['PanID'] = "0x%04x" % tlvs[0].int_value
    info['Channel'] = tlvs[1].int_value
    info['SerialRadioSW'] = tlvlib.convert_string(tlvs[2].value)
    ws.sendMessage(json.dumps(info))
Ejemplo n.º 3
0
def tlvtemp(ws, ip):
    de = ws.get_device_manager().get_device(ip)
    if de:
        instance = de.get_instance(tlvlib.INSTANCE_TEMP_GENERIC)
        if instance:
            t1 = tlvlib.create_get_tlv32(instance, tlvlib.VARIABLE_TEMPERATURE)
            try:
                enc, tlvs = tlvlib.send_tlv(t1, ip)
                if tlvs[0].error == 0:
                    temperature = tlvs[0].int_value
                    if temperature > 100000:
                        temperature = round((temperature - 273150) / 1000.0, 2)
                    print "\tTemperature:",temperature,"(C)"
                    ws.sendMessage(json.dumps({"temp":temperature,"address":ip}))
                else:
                    print "\tTemperature error", tlvs[0].error
            except socket.timeout:
                print "Temperature - no response from node", ip
                ws.sendMessage(json.dumps({"error":"No response from node " + ip}))
Ejemplo n.º 4
0
def tlvtemp(ws, ip):
    de = ws.get_device_manager().get_device(ip)
    if de:
        instance = de.get_instance(tlvlib.INSTANCE_TEMP_GENERIC)
        if instance:
            t1 = tlvlib.create_get_tlv32(instance, tlvlib.VARIABLE_TEMPERATURE)
            try:
                enc, tlvs = tlvlib.send_tlv(t1, ip)
                if tlvs[0].error == 0:
                    temperature = tlvs[0].int_value
                    if temperature > 100000:
                        temperature = round((temperature - 273150) / 1000.0, 2)
                    print "\tTemperature:", temperature, "(C)"
                    ws.sendMessage(
                        json.dumps({
                            "temp": temperature,
                            "address": ip
                        }))
                else:
                    print "\tTemperature error", tlvs[0].error
            except socket.timeout:
                print "Temperature - no response from node", ip
                ws.sendMessage(
                    json.dumps({"error": "No response from node " + ip}))
Ejemplo n.º 5
0
    arg = 2
if len(sys.argv) > arg:
    host = sys.argv[arg]
    print "HOST: ", host
    arg += 1

if len(sys.argv) > arg:
    instance = int(sys.argv[arg])

d = tlvlib.discovery(host)
print "Product label:", d[0][0], " type: %016x"%d[0][1], " instances:", len(d[1])
print "Booted at:",tlvlib.get_start_ieee64_time_as_string(d[0][2]),"-",tlvlib.convert_ieee64_time_to_string(d[0][2])

if verbose and instance <= 0:
    t1 = tlvlib.create_get_tlv128(0, tlvlib.VARIABLE_SW_REVISION)
    t2 = tlvlib.create_get_tlv32(0, tlvlib.VARIABLE_BOOTLOADER_VERSION)
    t3 = tlvlib.create_get_tlv64(0, tlvlib.VARIABLE_CHASSIS_CAPABILITIES)
    t4 = tlvlib.create_get_tlv32(0, tlvlib.VARIABLE_RESET_CAUSE)
    enc, tlvs = tlvlib.send_tlv([t1,t2,t3,t4], host, show_error=False)
    revision = ""
    if tlvs[3].error == 0:
        print "Last reset cause:", tlvlib.get_reset_cause_as_string(tlvs[3].int_value)
    if tlvs[0].error == 0:
        revision += "SW revision: " + tlvlib.convert_string(tlvs[0].value)
    if tlvs[1].error == 0:
        revision += "\tBootloader: " + str(tlvs[1].int_value)
    if tlvs[2].error == 0:
        revision += "  Cap.: %016x"%tlvs[2].int_value
    if revision != "":
        print revision
Ejemplo n.º 6
0
if arg < len(sys.argv):
    usage()

instance = tlvlib.find_instance_with_type(host, tlvlib.INSTANCE_LEDS_GENERIC, verbose)
if not instance:
    print "Could not find a leds instance in", host
    exit()

ts = []

# Control leds via bit mask (only on/off)
if op is not None:
    if led is not None:
        t = tlvlib.create_set_tlv32(instance, op, led)
        ts.append(t)
    t = tlvlib.create_get_tlv32(instance, tlvlib.VARIABLE_LED_CONTROL)
    ts.append(t)
    enc,tlvs = tlvlib.send_tlv(ts, host)
    t = tlvs[len(tlvs) - 1]
    if t.error == 0:
        print "Current leds:",bin(t.int_value)
    exit()

# Control leds via states (supports multicolor leds)
VARIABLE_LED_STATE = 0x105
if state is not None:
    t = tlvlib.create_set_vector_tlv(instance, VARIABLE_LED_STATE,
                                     tlvlib.SIZE32, led - 1, 1,
                                     struct.pack("!L", state))
    ts.append(t)
Ejemplo n.º 7
0
def get_image_status(instance, host, port):
    t = tlvlib.create_get_tlv32(instance, tlvlib.VARIABLE_IMAGE_STATUS)
    enc, tlvs = tlvlib.send_tlv(t, host, port)
    if tlvs[0].error == 0:
        return tlvs[0].int_value
    return None
Ejemplo n.º 8
0
    print "Failed to discover the device. Probably the device is offline or sleeping."
    exit()
producttype = "%016x" % d[0][1]
print "---- Upgrading ----"
print "Product label:", d[0][0], " type:", producttype, "instances:", len(d[1])
print "Booted at:", tlvlib.get_start_ieee64_time_as_string(
    d[0][2]), "-", tlvlib.convert_ieee64_time_to_string(d[0][2])

i = 1
upgrade = 0
for data in d[1]:
    if data[0] == tlvlib.INSTANCE_IMAGE:
        print "Instance " + str(
            data[2]) + ": type: %016x" % data[0], " ", data[1]
        t1 = tlvlib.create_get_tlv64(i, tlvlib.VARIABLE_IMAGE_VERSION)
        t2 = tlvlib.create_get_tlv32(i, tlvlib.VARIABLE_IMAGE_STATUS)
        t3 = tlvlib.create_get_tlv64(i, tlvlib.VARIABLE_IMAGE_TYPE)
        enc, tlvs = tlvlib.send_tlv([t1, t2, t3], host, port)
        tlv = tlvs[0]
        tlvstatus = tlvs[1]
        tlvtype = tlvs[2]
        print "\tVersion:    %016x" % tlv.int_value, "  ", tlvlib.parse_image_version(
            tlv.int_value), "inc:", str(tlv.int_value & 0x1f)
        print "\tImage Type: %016x" % tlvtype.int_value, "   Status:", tlvlib.get_image_status_as_string(
            tlvstatus.int_value)
        if (tlvstatus.int_value & tlvlib.IMAGE_STATUS_ACTIVE) == 0:
            upgrade = i
            label = data[1]
            upgrade_status = tlvstatus.int_value
            upgrade_version = tlv.int_value
            upgrade_type = binascii.hexlify(tlvtype.value)
Ejemplo n.º 9
0
    usage()

instance = tlvlib.find_instance_with_type(host, tlvlib.INSTANCE_LEDS_GENERIC,
                                          verbose)
if not instance:
    print "Could not find a leds instance in", host
    exit()

ts = []

# Control leds via bit mask (only on/off)
if op is not None:
    if led is not None:
        t = tlvlib.create_set_tlv32(instance, op, led)
        ts.append(t)
    t = tlvlib.create_get_tlv32(instance, tlvlib.VARIABLE_LED_CONTROL)
    ts.append(t)
    enc, tlvs = tlvlib.send_tlv(ts, host)
    t = tlvs[len(tlvs) - 1]
    if t.error == 0:
        print "Current leds:", bin(t.int_value)
    exit()

# Control leds via states (supports multicolor leds)
VARIABLE_LED_STATE = 0x105
if state is not None:
    t = tlvlib.create_set_vector_tlv(instance, VARIABLE_LED_STATE,
                                     tlvlib.SIZE32, led - 1, 1,
                                     struct.pack("!L", state))
    ts.append(t)
Ejemplo n.º 10
0
    host = sys.argv[arg]
    print "HOST: ", host
    arg += 1

if len(sys.argv) > arg:
    instance = int(sys.argv[arg])

d = tlvlib.discovery(host)
print "Product label:", d[0][0], " type: %016x" % d[0][1], " instances:", len(
    d[1])
print "Booted at:", tlvlib.get_start_ieee64_time_as_string(
    d[0][2]), "-", tlvlib.convert_ieee64_time_to_string(d[0][2])

if verbose and instance <= 0:
    t1 = tlvlib.create_get_tlv128(0, tlvlib.VARIABLE_SW_REVISION)
    t2 = tlvlib.create_get_tlv32(0, tlvlib.VARIABLE_BOOTLOADER_VERSION)
    t3 = tlvlib.create_get_tlv64(0, tlvlib.VARIABLE_CHASSIS_CAPABILITIES)
    t4 = tlvlib.create_get_tlv32(0, tlvlib.VARIABLE_RESET_CAUSE)
    enc, tlvs = tlvlib.send_tlv([t1, t2, t3, t4], host, show_error=False)
    revision = ""
    if tlvs[3].error == 0:
        print "Last reset cause:", tlvlib.get_reset_cause_as_string(
            tlvs[3].int_value)
    if tlvs[0].error == 0:
        revision += "SW revision: " + tlvlib.convert_string(tlvs[0].value)
    if tlvs[1].error == 0:
        revision += "\tBootloader: " + str(tlvs[1].int_value)
    if tlvs[2].error == 0:
        revision += "  Cap.: %016x" % tlvs[2].int_value
    if revision != "":
        print revision