Module mbed_devices.device

Data model definition for Device and ConnectedDevices.

Expand source code
#
# Copyright (C) 2020 Arm Mbed. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
"""Data model definition for Device and ConnectedDevices."""
from dataclasses import dataclass, field
from pathlib import Path
from typing import Tuple, Optional, List
from mbed_targets import Board
from mbed_devices._internal.detect_candidate_devices import CandidateDevice


@dataclass(frozen=True, order=True)
class Device:
    """Definition of an Mbed Enabled Device.

    An Mbed Device is always a USB mass storage device, which sometimes also presents a USB serial port.
    A valid Mbed Device must have a Board associated with it.

    Attributes:
        mbed_board: The Board associated with this device.
        serial_number: The serial number presented by the device to the USB subsystem.
        serial_port: The serial port presented by this device, could be None.
        mount_points: The filesystem mount points associated with this device.
    """

    mbed_board: Board
    serial_number: str
    serial_port: Optional[str]
    mount_points: Tuple[Path, ...]


@dataclass(order=True)
class ConnectedDevices:
    """Definition of connected devices which may be Mbed Boards.

    If a connected device is identified as an Mbed Board by using the HTM file on the USB mass storage device (or
    sometimes by using the serial number), it will be included in the `identified_devices` list.

    However, if the device appears as if it could be an Mbed Board but it has not been possible to find a matching
    entry in the database then it will be included in the `unidentified_devices` list.

    Attributes:
        identified_devices: A list of devices that have been identified as MbedTargets.
        unidentified_devices: A list of devices that could potentially be MbedTargets.
    """

    identified_devices: List[Device] = field(default_factory=list)
    unidentified_devices: List[Device] = field(default_factory=list)

    def add_device(self, candidate_device: CandidateDevice, mbed_board: Optional[Board] = None) -> None:
        """Add a candidate device and optionally an Mbed Target to the connected devices.

        Args:
            candidate_device: a CandidateDevice object containing the device information.
            mbed_board: a Board object for identified devices, for unidentified devices this will be None.
        """
        new_device = Device(
            serial_port=candidate_device.serial_port,
            serial_number=candidate_device.serial_number,
            mount_points=candidate_device.mount_points,
            # Create an empty Board to ensure the device is fully populated and rendering is simple
            mbed_board=mbed_board if mbed_board is not None else Board.from_offline_board_entry({}),
        )

        if mbed_board is None:
            # Keep a list of devices that could not be identified but are Mbed Boards
            self.unidentified_devices.append(new_device)
        else:
            # Keep a list of devices that have been identified as Mbed Boards
            self.identified_devices.append(new_device)

Classes

class ConnectedDevices (identified_devices: List[Device] = <factory>, unidentified_devices: List[Device] = <factory>)

Definition of connected devices which may be Mbed Boards.

If a connected device is identified as an Mbed Board by using the HTM file on the USB mass storage device (or sometimes by using the serial number), it will be included in the identified_devices list.

However, if the device appears as if it could be an Mbed Board but it has not been possible to find a matching entry in the database then it will be included in the unidentified_devices list.

Attributes

identified_devices
A list of devices that have been identified as MbedTargets.
unidentified_devices
A list of devices that could potentially be MbedTargets.
Expand source code
class ConnectedDevices:
    """Definition of connected devices which may be Mbed Boards.

    If a connected device is identified as an Mbed Board by using the HTM file on the USB mass storage device (or
    sometimes by using the serial number), it will be included in the `identified_devices` list.

    However, if the device appears as if it could be an Mbed Board but it has not been possible to find a matching
    entry in the database then it will be included in the `unidentified_devices` list.

    Attributes:
        identified_devices: A list of devices that have been identified as MbedTargets.
        unidentified_devices: A list of devices that could potentially be MbedTargets.
    """

    identified_devices: List[Device] = field(default_factory=list)
    unidentified_devices: List[Device] = field(default_factory=list)

    def add_device(self, candidate_device: CandidateDevice, mbed_board: Optional[Board] = None) -> None:
        """Add a candidate device and optionally an Mbed Target to the connected devices.

        Args:
            candidate_device: a CandidateDevice object containing the device information.
            mbed_board: a Board object for identified devices, for unidentified devices this will be None.
        """
        new_device = Device(
            serial_port=candidate_device.serial_port,
            serial_number=candidate_device.serial_number,
            mount_points=candidate_device.mount_points,
            # Create an empty Board to ensure the device is fully populated and rendering is simple
            mbed_board=mbed_board if mbed_board is not None else Board.from_offline_board_entry({}),
        )

        if mbed_board is None:
            # Keep a list of devices that could not be identified but are Mbed Boards
            self.unidentified_devices.append(new_device)
        else:
            # Keep a list of devices that have been identified as Mbed Boards
            self.identified_devices.append(new_device)

Methods

def add_device(self, candidate_device: mbed_devices._internal.candidate_device.CandidateDevice, mbed_board: Union[mbed_targets.board.Board, NoneType] = None) -> NoneType

Add a candidate device and optionally an Mbed Target to the connected devices.

Args

candidate_device
a CandidateDevice object containing the device information.
mbed_board
a Board object for identified devices, for unidentified devices this will be None.
Expand source code
def add_device(self, candidate_device: CandidateDevice, mbed_board: Optional[Board] = None) -> None:
    """Add a candidate device and optionally an Mbed Target to the connected devices.

    Args:
        candidate_device: a CandidateDevice object containing the device information.
        mbed_board: a Board object for identified devices, for unidentified devices this will be None.
    """
    new_device = Device(
        serial_port=candidate_device.serial_port,
        serial_number=candidate_device.serial_number,
        mount_points=candidate_device.mount_points,
        # Create an empty Board to ensure the device is fully populated and rendering is simple
        mbed_board=mbed_board if mbed_board is not None else Board.from_offline_board_entry({}),
    )

    if mbed_board is None:
        # Keep a list of devices that could not be identified but are Mbed Boards
        self.unidentified_devices.append(new_device)
    else:
        # Keep a list of devices that have been identified as Mbed Boards
        self.identified_devices.append(new_device)
class Device (mbed_board: mbed_targets.board.Board, serial_number: str, serial_port: Union[str, NoneType], mount_points: Tuple[pathlib.Path, ...])

Definition of an Mbed Enabled Device.

An Mbed Device is always a USB mass storage device, which sometimes also presents a USB serial port. A valid Mbed Device must have a Board associated with it.

Attributes

mbed_board
The Board associated with this device.
serial_number
The serial number presented by the device to the USB subsystem.
serial_port
The serial port presented by this device, could be None.
mount_points
The filesystem mount points associated with this device.
Expand source code
class Device:
    """Definition of an Mbed Enabled Device.

    An Mbed Device is always a USB mass storage device, which sometimes also presents a USB serial port.
    A valid Mbed Device must have a Board associated with it.

    Attributes:
        mbed_board: The Board associated with this device.
        serial_number: The serial number presented by the device to the USB subsystem.
        serial_port: The serial port presented by this device, could be None.
        mount_points: The filesystem mount points associated with this device.
    """

    mbed_board: Board
    serial_number: str
    serial_port: Optional[str]
    mount_points: Tuple[Path, ...]