X-Git-Url: http://git.maemo.org/git/?p=tablet-suite;a=blobdiff_plain;f=src%2F.svn%2Ftext-base%2Fpcsdeviceutils.py.svn-base;fp=src%2F.svn%2Ftext-base%2Fpcsdeviceutils.py.svn-base;h=efe8da0d0941aae6928bd8d879633d0ec8f4e09f;hp=0000000000000000000000000000000000000000;hb=256d6db84797e58f32185f042154a7c0fc54163e;hpb=7d8224c9f08712280a22af40325d59a19f4fb1e1 diff --git a/src/.svn/text-base/pcsdeviceutils.py.svn-base b/src/.svn/text-base/pcsdeviceutils.py.svn-base new file mode 100644 index 0000000..efe8da0 --- /dev/null +++ b/src/.svn/text-base/pcsdeviceutils.py.svn-base @@ -0,0 +1,155 @@ +# low_backup module +# Authors: Nicholas Alexander && Otacilio Lacerda + +import commands +import os + +BATTERY = os.environ['BATTERY_PATH'] + 'battery.py' +EXECUTE = "./" +USER_HOST = "root" + +def queryProductInformation(deviceIp): + """ Update device name by getting device product name and os version + informations. + + Use osso-product-info command to get the device and device OS short + names and set each to it correspondent attribute. + + """ + + info = commands.getoutput("ssh -l %s %s osso-product-info" % + (USER_HOST, deviceIp)) + + deviceName = _extractOssoInfo(info, "shortName") + deviceOs = _extractOssoInfo(info, "shortOS") + ossoVersion = _extractOssoInfo(info, "ossoVersion") + if deviceName != -1 and deviceOs != -1: + deviceName = deviceName.strip("'") + deviceOs = deviceOs.strip("'") + else: + deviceName = "NO INFORMATION" + deviceOs = "NO INFORMATION" + + return (deviceName, deviceOs, ossoVersion) + +def queryDeviceStorage(deviceIp): + """Returns a list of tuples, each tuple representing a memory status. + + Tuples are in this format: (total, used) + + Returns: + mem_infos -- List with all tuples holding memory info + + """ + info = commands.getoutput("ssh -l root %s df" % + deviceIp).splitlines() + mem_infos = [-1, -1, -1] + for line in info: + if line.find("/dev/mtdblock4") != -1: + if line[-1] == "/": + total_used = _get_memory(line, "/dev/mtdblock4") + mem_infos.pop(0) + mem_infos.insert(0, total_used) + + elif line.find("/media/mmc1") != -1: + total_used = _get_memory(line, "/dev/mmcblk0p1") + mem_infos.pop(1) + mem_infos.insert(1, total_used) + + elif line.find("/media/mmc2") != -1: + total_used = _get_memory(line, "/dev/mmcblk1p1") + mem_infos.pop(2) + mem_infos.insert(2, total_used) + + return mem_infos + +def queryDeviceBattery(deviceIp): + """Return device current battery status in a string. + + This method runs a python script in the device that returns the battery + status, this status is represented by one string with the percentage of + battery current charge or the number -1 case battery is charging. + + Returns: + text -- Text with the battery status + + """ + + # Calls script that returns device battery status + os.system("scp %s %s@%s:/tmp" % (BATTERY, USER_HOST, deviceIp)) + battery_status = commands.getoutput("ssh -l %s %s /usr/bin/python \ + /tmp/battery.py" % (USER_HOST, + deviceIp)) + return battery_status + +def _get_memory(line, path): + """Retrieve and return total and used memory information from the given + line using the memory path to retrieve the right information. + + This function is to be used with a line of the return of a df command. + + Arguments: + line -- The line where the memory information is + path -- The path in the begining of the line + + Returns: + total -- Total memory + used -- Amount of used memory + + """ + number_of_infos = 0 + i = len(path) + 1 + while number_of_infos < 2: + char = line[i] + if char != " ": + start = i + end = line.find(" ", start + 1) + if number_of_infos == 0: + total = line[start: end] + elif number_of_infos == 1: + used = line[start: end] + i = end + number_of_infos += 1 + i += 1 + return total, used + +def _extractOssoInfo(osso_string, info_type="name"): + """Read the osso-product-info command return string and extract the + needed info depeding on info_type argument. + + Arguments: + osso_string -- The string returned by osso-product-info command + info_type -- the kind of information to b extracted, can be: + name - returns device full name (default) + OS - returns device OS full name + shortName - returns device short name + shortOS - returns device short OS name + + Returns: + info -- String with the needed information + -1 -- Case the information couldn't be found in the given string + + """ + detailed_type = "" + if info_type == "shortName": + detailed_type = "OSSO_PRODUCT_NAME" + elif info_type == "shortOS": + detailed_type = "OSSO_PRODUCT_RELEASE_NAME" + elif info_type == "name": + detailed_type = "OSSO_PRODUCT_FULL_NAME" + elif info_type == "OS": + detailed_type = "OSSO_PRODUCT_RELEASE_FULL_NAME" + elif info_type == "ossoVersion": + detailed_type = "OSSO_VERSION" + else: + detailed_type = "OSSO_PRODUCT_FULL_NAME" + + types_list = osso_string.splitlines() + info = -1 + for type_line in types_list: + if type_line.startswith(detailed_type): + # The second argument is the information itself since informations + # are displayed like: OSSO_PRODUCT_RELEASE_NAME='OS 2008' + info = type_line.split("=")[1] + + return info