Commit Graph

8 Commits

Author SHA1 Message Date
Anton Nikolaev
1fae3a24c9 Convert all connectivity logs from "log" to "info"
Summary: In a diff down the stack I introduced sending of info/warn/error logs to Scuba. Here I'm just changing level of all connectivity-related logging to "info" as they often required for investigations.

Reviewed By: mweststrate

Differential Revision: D31532770

fbshipit-source-id: 956d6712918291579b3beb12cb91ab69ce1e3859
2021-10-12 07:19:41 -07:00
Pascal Hartig
fe3eda024b Replace promisify(child_process.*)
Summary:
Promisify leads to weird types and sometimes unexpected runtime behaviour. Replacing it with the dep we use everywhere.

It's just really annoying that `stdout` is here explicitly `| null` which isn't the case in the default types.

Reviewed By: timur-valiev

Differential Revision: D31278303

fbshipit-source-id: eadbc49b287704e71a5ecba0d9a311eac91dc6f8
2021-10-01 08:06:11 -07:00
Pascal Hartig
7706b26d7a Exclusively use idb or xcrun for querying devices
Summary:
Simplifies the logic by only using idb when available to query *both* simulators and physical devices.

Changelog: Prefer idb for device listing when available.

Reviewed By: mweststrate

Differential Revision: D31271539

fbshipit-source-id: ac5b73ca5b00b7707bf87cd4d3a6af6e0c0ae214
2021-10-01 08:06:11 -07:00
Michel Weststrate
2d838efd4d Separate device in server and client version [2/n]
Summary:
This stack takes care of handling care of moving all device interactions over the (possible) async channel FlipperServer. The FlipperServer interface (see previous diff) allows listening to specific server events using `on`, and emit commands to be executed by the server by using `exec` (e.g. `exec('take-screenshot', serial) => Promise<buffer>`).

FlipperServerImpl implements this interface on the server side.

The device implementations are split as follows

```
server / backend process:

ServerDevice
- iOSDevice
- AndroidDevice
- MetroDevice
- DummyDevice
- Mac/Windows Device

frontend / ui:

BaseDevice: a normal connected, device, implements device apis as they already existed
- ArchivedDevice (note that this doesn't have a server counterpart)
- TestDevice (for unit tests, with stubbed backend communication)

```

All features of devices are for simplicity unified (since the deviations are small), where specific device types might not implement certain features like taking screenshots or running shell commands.

To avoid making this diff unnecessarily big, some open Todo's will be addressed later in this stack, and it shouldn't be landed alone.

Reviewed By: timur-valiev

Differential Revision: D30909346

fbshipit-source-id: cce0bee94fdd5db59bebe3577a6084219a038719
2021-09-22 09:03:32 -07:00
Michel Weststrate
3ee8aef154 Fix bug in iOSDevice detection if both physical and emulator are active
Summary:
When connecting both to an iOS emulator and physical device, the emulator devices would continuesly be replaced, and Flipper would print the warning

`Tried to replace still connected device XXX with a new instance`

Fixed the logical mistake that causes it. Not sure if this caused any actual bugs, but at least it was incorrect.

Reviewed By: lblasa

Differential Revision: D31015451

fbshipit-source-id: 32dd29043e9dc48357fdbf68cde930d3be11419a
2021-09-17 05:23:15 -07:00
Michel Weststrate
ea58f2b050 Decouple iOS devices from Store / core
Summary: Decouple iOS device detection from Redux

Reviewed By: timur-valiev

Differential Revision: D30309258

fbshipit-source-id: 74b4e3dd2e6b83fcefc75909794c39bfc8c987cf
2021-08-17 07:51:51 -07:00
Pascal Hartig
797007f367 Make error message unique
Summary: We're currently getting errors for every duplicate key and can't easily unify them, so we're adding the additional information to a warning instead.

Reviewed By: mweststrate

Differential Revision: D30337821

fbshipit-source-id: db9dc44d7d3424de169bed9b4447b482e411eb19
2021-08-16 05:32:36 -07:00
Michel Weststrate
c0cd32564a Organise files per device
Summary:
Moved all logic per device type we support to its own dir, including tools and utilities around it, which makes it easier to consolidate logic and decouple in turn per device type.

Per type, all logic can be found in

`server/devices/(desktop|metro|android|ios|webapp)`

Reviewed By: timur-valiev

Differential Revision: D30277817

fbshipit-source-id: 2b5339c363d5d31ceeba07cec03826fc67cf3748
2021-08-13 04:02:32 -07:00