742 "except AttributeError:", |
742 "except AttributeError:", |
743 " res['version'] = 'unknown'", |
743 " res['version'] = 'unknown'", |
744 ]), |
744 ]), |
745 "print(res)", |
745 "print(res)", |
746 "del res, __sys_", |
746 "del res, __sys_", |
|
747 ] |
|
748 out, err = self.execute(commands) |
|
749 if err: |
|
750 raise OSError(self.__shortError(err)) |
|
751 return ast.literal_eval(out.decode("utf-8")) |
|
752 |
|
753 def getBoardInformation(self): |
|
754 """ |
|
755 Public method to get some information data of the connected board. |
|
756 |
|
757 @return dictionary containing the determined data |
|
758 @rtype dict |
|
759 @exception OSError raised to indicate an issue with the device |
|
760 """ |
|
761 commands = [ |
|
762 "res = {}", # __IGNORE_WARNING_M613__ |
|
763 |
|
764 "import gc as __gc_", |
|
765 "__gc_.enable()", |
|
766 "__gc_.collect()", |
|
767 "mem_alloc = __gc_.mem_alloc()", |
|
768 "mem_free = __gc_.mem_free()", |
|
769 "mem_total = mem_alloc + mem_free", |
|
770 "res['mem_total_kb'] = mem_total / 1024.0", |
|
771 "res['mem_used_kb'] = mem_alloc / 1024.0", |
|
772 "res['mem_used_pc'] = mem_alloc / mem_total * 100.0", |
|
773 "res['mem_free_kb'] = mem_free / 1024.0", |
|
774 "res['mem_free_pc'] = mem_free / mem_total * 100.0", |
|
775 "del __gc_, mem_alloc, mem_free, mem_total", |
|
776 |
|
777 "import os as __os_", |
|
778 "uname = __os_.uname()", |
|
779 "res['sysname'] = uname.sysname", |
|
780 "res['nodename'] = uname.nodename", |
|
781 "res['release'] = uname.release", |
|
782 "res['version'] = uname.version", |
|
783 "res['machine'] = uname.machine", |
|
784 |
|
785 "import sys as __sys_", |
|
786 "res['py_platform'] = __sys_.platform", |
|
787 "res['py_version'] = __sys_.version", |
|
788 "\n".join([ |
|
789 "try:", |
|
790 " res['mpy_name'] = __sys_.implementation.name", |
|
791 "except AttributeError:", |
|
792 " res['mpy_name'] = 'unknown'", |
|
793 ]), |
|
794 "\n".join([ |
|
795 "try:", |
|
796 " res['mpy_version'] = '.'.join((str(i) for i in" |
|
797 " __sys_.implementation.version))", |
|
798 "except AttributeError:", |
|
799 " res['mpy_version'] = 'unknown'", |
|
800 ]), |
|
801 |
|
802 "stat_ = __os_.statvfs('/flash')", |
|
803 "res['flash_total_kb'] = stat_[2] * stat_[0] / 1024.0", |
|
804 "res['flash_free_kb'] = stat_[3] * stat_[0] / 1024.0", |
|
805 "res['flash_used_kb'] = res['flash_total_kb'] -" |
|
806 " res['flash_free_kb']", |
|
807 "res['flash_free_pc'] = res['flash_free_kb'] /" |
|
808 " res['flash_total_kb'] * 100.0", |
|
809 "res['flash_used_pc'] = res['flash_used_kb'] /" |
|
810 " res['flash_total_kb'] * 100.0", |
|
811 |
|
812 "\n".join([ |
|
813 "try:", |
|
814 " import machine as __mc_", |
|
815 " res['mc_frequency_mhz'] = __mc_.freq() / 1000000.0", |
|
816 " res['mc_id'] = ':'.join(['{0:X}'.format(x)" |
|
817 " for x in __mc_.unique_id()])", |
|
818 " del __mc_", |
|
819 "except ImportError:", |
|
820 "\n".join([ |
|
821 " try:", |
|
822 " import microcontroller as __mc_", |
|
823 " res['mc_frequency_mhz'] = __mc_.cpu.frequency" |
|
824 " / 1000000.0", |
|
825 " res['mc_temp_c'] = __mc_.cpu.temperature", |
|
826 " res['mc_id'] = ':'.join(['{0:X}'.format(x)" |
|
827 " for x in __mc_.cpu.uid])", |
|
828 " del __mc_", |
|
829 " except ImportError:", |
|
830 " res['mc_frequency'] = None", |
|
831 " res['mc_temp'] = None", |
|
832 ]), |
|
833 ]), |
|
834 |
|
835 "\n".join([ |
|
836 "try:", |
|
837 " import ulab as __ulab_", |
|
838 " res['ulab'] = __ulab_.__version__", |
|
839 " del __ulab_", |
|
840 "except ImportError:", |
|
841 " res['ulab'] = None", |
|
842 ]), |
|
843 |
|
844 "print(res)", |
|
845 "del res, stat_, __os_, __sys_", |
747 ] |
846 ] |
748 out, err = self.execute(commands) |
847 out, err = self.execute(commands) |
749 if err: |
848 if err: |
750 raise OSError(self.__shortError(err)) |
849 raise OSError(self.__shortError(err)) |
751 return ast.literal_eval(out.decode("utf-8")) |
850 return ast.literal_eval(out.decode("utf-8")) |