13f085823Sopenharmony_ci#!/usr/bin/env python3
23f085823Sopenharmony_ci# coding=utf-8
33f085823Sopenharmony_ci
43f085823Sopenharmony_ci#
53f085823Sopenharmony_ci# Copyright (c) 2021 Huawei Device Co., Ltd.
63f085823Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
73f085823Sopenharmony_ci# you may not use this file except in compliance with the License.
83f085823Sopenharmony_ci# You may obtain a copy of the License at
93f085823Sopenharmony_ci#
103f085823Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
113f085823Sopenharmony_ci#
123f085823Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
133f085823Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
143f085823Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
153f085823Sopenharmony_ci# See the License for the specific language governing permissions and
163f085823Sopenharmony_ci# limitations under the License.
173f085823Sopenharmony_ci#
183f085823Sopenharmony_ci
193f085823Sopenharmony_ciimport os
203f085823Sopenharmony_ci
213f085823Sopenharmony_cifrom distributed.common.devices import DeviceShell
223f085823Sopenharmony_ci
233f085823Sopenharmony_ci
243f085823Sopenharmony_ci##############################################################################
253f085823Sopenharmony_ci##############################################################################
263f085823Sopenharmony_ci
273f085823Sopenharmony_ciclass DeviceManager:
283f085823Sopenharmony_ci    def __init__(self, result_path):
293f085823Sopenharmony_ci        self.is_hdc = True
303f085823Sopenharmony_ci        self.phone_device_list = []
313f085823Sopenharmony_ci        self.ivi_device_list = []
323f085823Sopenharmony_ci        self.tv_device_list = []
333f085823Sopenharmony_ci        self.watch_device_list = []
343f085823Sopenharmony_ci        self.make_device_list(result_path)
353f085823Sopenharmony_ci
363f085823Sopenharmony_ci    @staticmethod
373f085823Sopenharmony_ci    def get_device_info_list(result):
383f085823Sopenharmony_ci        device_info_list = []
393f085823Sopenharmony_ci        tmp_path = os.path.join(result, "temp")
403f085823Sopenharmony_ci        device_info_file_path = os.path.join(tmp_path,
413f085823Sopenharmony_ci                                             "device_info_file.txt")
423f085823Sopenharmony_ci
433f085823Sopenharmony_ci        if os.path.exists(device_info_file_path):
443f085823Sopenharmony_ci            with open(device_info_file_path, "r") as file_handle:
453f085823Sopenharmony_ci                lines = file_handle.readlines()
463f085823Sopenharmony_ci                for line in lines:
473f085823Sopenharmony_ci                    line = line.replace("\n", "")
483f085823Sopenharmony_ci                    line = line.strip()
493f085823Sopenharmony_ci                    temp = line.split(",")
503f085823Sopenharmony_ci                    device_info_list.append(temp)
513f085823Sopenharmony_ci        return device_info_list
523f085823Sopenharmony_ci
533f085823Sopenharmony_ci    def make_device_adapter(self, device_info_list, device_name):
543f085823Sopenharmony_ci        device = DeviceShell(self.is_hdc, device_sn=device_info_list[0],
553f085823Sopenharmony_ci                             remote_ip=device_info_list[2],
563f085823Sopenharmony_ci                             repote_port=device_info_list[3],
573f085823Sopenharmony_ci                             name=device_name)
583f085823Sopenharmony_ci        return device
593f085823Sopenharmony_ci
603f085823Sopenharmony_ci    def make_device_list(self, result_path):
613f085823Sopenharmony_ci        device_info_list = self.get_device_info_list(result_path)
623f085823Sopenharmony_ci        for item in device_info_list:
633f085823Sopenharmony_ci            if len(item) != 4:
643f085823Sopenharmony_ci                continue
653f085823Sopenharmony_ci            if item[1] == "phone":
663f085823Sopenharmony_ci                index = len(self.phone_device_list) + 1
673f085823Sopenharmony_ci                device_name = "PHONE%s" % index
683f085823Sopenharmony_ci                device = self.make_device_adapter(item, device_name)
693f085823Sopenharmony_ci                self.phone_device_list.append(device)
703f085823Sopenharmony_ci                setattr(self, device.name, device)
713f085823Sopenharmony_ci            elif item[1] == "ivi":
723f085823Sopenharmony_ci                index = len(self.ivi_device_list) + 1
733f085823Sopenharmony_ci                device_name = "IVI%s" % index
743f085823Sopenharmony_ci                device = self.make_device_adapter(item, device_name)
753f085823Sopenharmony_ci                self.ivi_device_list.append(device)
763f085823Sopenharmony_ci                setattr(self, device.name, device)
773f085823Sopenharmony_ci            elif item[1] == "tv":
783f085823Sopenharmony_ci                index = len(self.tv_device_list) + 1
793f085823Sopenharmony_ci                device_name = "TV%s" % index
803f085823Sopenharmony_ci                device = self.make_device_adapter(item, device_name)
813f085823Sopenharmony_ci                self.tv_device_list.append(device)
823f085823Sopenharmony_ci                setattr(self, device.name, device)
833f085823Sopenharmony_ci            elif item[1] == "watch":
843f085823Sopenharmony_ci                index = len(self.watch_device_list) + 1
853f085823Sopenharmony_ci                device_name = "WATCH%s" % index
863f085823Sopenharmony_ci                device = self.make_device_adapter(item, device_name)
873f085823Sopenharmony_ci                self.watch_device_list.append(device)
883f085823Sopenharmony_ci                setattr(self, device.name, device)
893f085823Sopenharmony_ci        return
903f085823Sopenharmony_ci
913f085823Sopenharmony_ci##############################################################################
923f085823Sopenharmony_ci##############################################################################
93