# Return to Ritherdon: Eyes and Ears

Eyes and Ears is a Windows UWP 'Dashboard App.' which monitors the
overall artwork, 'Personal Flash in Real-Time' -- which is one of
several artworks in the 'Return to Ritherdon' project. For more
information on the 'Return to Ritherdon' project, please use the
following link:

- [Return to Ritherdon Overview](https://git.abbether.net/return-to-ritherdon/rtr-docs)

![Screenshot 1](./attachments/eyes-and-ears-screenshot-1.png)

![Screenshot 2](./attachments/eyes-and-ears-screenshot-2.png)

## Overview of Eyes and Ears Fits into the 'Personal Flash in Real-Time' System

For the purpose of this documentation, I will refer to 'Personal Flash
in Real-Time' as a 'system' instead of an 'artwork'. The reason why is
becaues of the context we are viewing the various (sub-)projects and
their components in.

First of all, Eyes and Ears is not an essential part of the system. It
is a nice to have. There are three smaller projects which combine to
create the whole 'Personal Flash in Real-Time' system. On top of that,
they reside in different places across the U.K. which makes it
difficult to see what state the whole system is in at any one
moment. It is not unsurmountable but this dashboard app. helps.

![System Overview](./attachments/system-overview.png)

For more information on the other parts of the system, use the following
links:

- [Light Meter Code](https://git.abbether.net/return-to-ritherdon/light-meter)
- [Light Meter Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/light-meter)
- [Relay Code](https://git.abbether.net/return-to-ritherdon/relay)
- [Relay Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/relay)
- [Midpoint Code](https://git.abbether.net/return-to-ritherdon/midpoint)
- [Midpoint Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/midpoint)
  
## Technology Overview

Because of the nature of 'Personal Flash in Real-Time', Eyes and Ears
has no long term maintainence concerns. So, the code is a bit of a
mess. The biggest mess is the lack of seperation between the code in
the view (`MainPage.cs`) and the view-model (`MainPageVM.cs`). If
anything, I think it would be easier to re-write Eyes and Ears than
look to add new features.

Eyes and Ears in written in C# and the Universal Windows Platform
(UWP) and targets Windows 10. I should point out **Microsoft is moving
away from UWP so you should view this application as obsolete**.

- [Universal Windows Platform (UWP)](https://docs.microsoft.com/en-us/windows/uwp/)
- [Article on Microsoft dropping UWP](https://www.techradar.com/news/microsoft-is-finally-dropping-uwp-app-support-windows-app-sdk-heres-why)

The project's structure is a typical UWP one. There are a lot of files
you do not need to touch so I have highlighted the files/directories
you will spend the most time in with `(AREA OF INTEREST)`.

```shell
./src
    └── EyesAndEars.UWP
        ├── EyesAndEars.UWP
        │   ├── AppPackages
        │   ├── App.xaml
        │   ├── App.xaml.cs
        │   ├── Assets
        │   ├── bin
        │   ├── BundleArtifacts
        │   ├── EyesAndEars.UWP.csproj
        │   ├── EyesAndEars.UWP.csproj.user
        │   ├── EyesAndEars.UWP_TemporaryKey.pfx
        │   ├── images
        │   ├── MainPage.xaml <------ (AREA OF INTEREST)
        │   ├── MainPage.xaml.cs <--- (AREA OF INTEREST)
        │   ├── Models <------------- (AREA OF INTEREST)
        │   ├── obj
        │   ├── Package.appxmanifest
        │   ├── Properties
        │   ├── Services <----------- (AREA OF INTEREST)
        │   └── ViewModels <--------- (AREA OF INTEREST)
        └── EyesAndEars.UWP.sln
```

Below is a diagram showing how the various pieces fit together. The
`Models`, `ViewModel` and `Services` sections are the
directories. There are further files in them. I should point out there
is only one ViewModel called `MainPageVM.cs` which binds to `MainPage.cs`.

![App-Internals](./attachments/app-internals.png)

## How-To Use Eyes and Ears

The first time you start Eyes and Ears, you need to input the URL to
the server part of the system (MidPoint). You do this by entering it
in the URL-bar (3) at the bottom of the screen and then press the
'Save' button (6). For all intents and purposes, that is all you need
to do. The rest of the features are secondary and you can get away
with not ever using them.

For more information on the other parts of the system, use the following
links:

- [Light Meter Code](https://git.abbether.net/return-to-ritherdon/light-meter)
- [Light Meter Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/light-meter)
- [Relay Code](https://git.abbether.net/return-to-ritherdon/relay)
- [Relay Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/relay)
- [Midpoint Code](https://git.abbether.net/return-to-ritherdon/midpoint)
- [Midpoint Documentation](https://git.abbether.net/return-to-ritherdon/rtr-docs/src/branch/master/midpoint)

The URL has changed throughout the course of developing the whole
system ('Personal Flash in Real-Time'). So, you will need to confirm
the URL is correct which means you will need to speak to whomever is
running the server (Midpoint) part of the system.

![GUI-Breakdown](./attachments/gui-breakdown.png)

1. Log Toggle (toggle debug logs (6) on/off)
2. Info. button (artist's website)
3. URL-Bar (to connect to (Midpoint) server
4. Play/Stop Button (stop and start updating system status)
5. Save Button (writes the URL to disk for future use)
6. Debug Logs (used to testing and you will probably never need to use
   it)
7. Main Info. Area (displays the status of the various devices making
   up the whole system)
8. Current Time (used to cross-reference the time-stamps of the
   various status updates)

When Eyes and Ears is running, the Main Info. (7) displays the
time-stamp of the latest event pushed to the server (Midpoint). The
main (biggest) numbers in `Factory 1` and `Factory 2` states the
latest light level reading taken from their respective
devices. `Gallery 1` and `Gallery 2` refers to when the devices are
either turned-on (and online) or turned-off (and offline as a
result). Refer to the Legend for the colour coded nature of the
various devices within the application itself. The 'Low Light' colour
refers to when the light meters (`Factory 1` and `Factory 2`) record
'negative light'. The reason why this happens is beyond the scope of
this documentation (and the Eyes and Ears application).

# Installing Eyes and Ears

The easiest way to install the program is by downloading a build in
the 'Releases' section on the main (I.E. code) repository:

- [Eyes and Ears Releases Page](https://git.abbether.net/return-to-ritherdon/eyes-and-ears/releases)
  
If you have Visual Studio, you can build from the source code either
by pressing `F5` and or using the `Publish` feature within Visual
Studio. I will not go into detail on how to do this becuase it is a
Visual Studio, .Net, C# and UWP specific concern -- which is outside
the scope of this documentation.
