Skip to content

Commit

Permalink
Merge branch 'josephdadams:master' into feat_atem_aux
Browse files Browse the repository at this point in the history
  • Loading branch information
Jocke4f authored May 17, 2024
2 parents 255fe9d + 216b919 commit 1155f49
Show file tree
Hide file tree
Showing 24 changed files with 996 additions and 443 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build-listener-clients.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ jobs:
- uses: actions/checkout@v4
- name: Setup TFT_eSPI and select User Setup
run: |
git clone --branch v2.5.33 https://github.com/Bodmer/TFT_eSPI/
git clone https://github.com/Bodmer/TFT_eSPI/
cd TFT_eSPI
sed -i 's/#include <User_Setup.h>/\/\/#include <User_Setup.h>/g' User_Setup_Select.h
sed -i 's/\/\/#include <User_Setups\/Setup22_TTGO_T4.h>/#include <User_Setups\/Setup22_TTGO_T4.h>/g' User_Setup_Select.h
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ jobs:
docker build -t tallyarbiter-test-image:${{ github.sha }} .
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
uses: aquasecurity/trivy-action@0.18.0
with:
image-ref: 'tallyarbiter-test-image:${{ github.sha }}'
ignore-unfixed: true
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,18 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
node-version: 18
- name: Install dependencies and build
run: npm i -f; npm run build
- name: Set up QEMU
if: startsWith(github.ref, 'refs/tags/v')
uses: docker/setup-qemu-action@master
uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Set up Docker Buildx
if: startsWith(github.ref, 'refs/tags/v')
id: buildx
uses: docker/setup-buildx-action@master
uses: docker/setup-buildx-action@v3.2.0
- name: Get Docker meta
id: meta
uses: docker/metadata-action@v5
Expand Down Expand Up @@ -64,4 +64,4 @@ jobs:
push: ${{ startsWith(github.ref, 'refs/tags/v') }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
platforms: linux/amd64,linux/arm64,linux/s390x,linux/arm/v7,linux/arm/v6
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
4 changes: 2 additions & 2 deletions .github/workflows/docker_manual.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ jobs:
- name: Install dependencies and build
run: npm i -f; npm run build
- name: Set up QEMU
uses: docker/setup-qemu-action@master
uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@master
uses: docker/setup-buildx-action@v3.2.0
- name: Get Docker meta
id: meta
uses: docker/metadata-action@v5
Expand Down
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ RUN apk add --update nodejs npm \
&& npm i --ignore-script --omit=dev \
&& npm uninstall bcryptjs \
&& npm install bcryptjs \
&& node-gyp -C node_modules/@julusian/freetype2 rebuild \
&& npm uninstall node-gyp -g \
&& apk del .build-deps

Expand Down
97 changes: 50 additions & 47 deletions UI/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions UI/src/app/_components/settings/settings.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,11 @@ <h4>Clients</h4>
<a ngbNavLink>Testing</a>
<ng-template ngbNavContent>
<div *ngIf="checkTestMode() == false; else testModeOffButton">
<button class="btn btn-secondary mb-5" (click)="setTestMode(true)"><i class="fas fa-vial"></i> Turn On Test Mode</button>
<button class="btn btn-secondary mb-5" (click)="setTestMode(true, socketService.testModeInterval)"><i class="fas fa-vial"></i> Turn On Test Mode</button>
<div class="mb-3 form-check">
<label for="testModeInterval" class="form-label">Interval (ms) between changes</label>
<input type="number" class="form-control w-25" id="txtTestModeInterval" [(ngModel)]="socketService.testModeInterval" />
</div>
</div>
<ng-template #testModeOffButton>
<button class="btn btn-secondary mb-5" (click)="setTestMode(false)"><i class="fas fa-vial"></i> Turn Off Test Mode</button>
Expand Down Expand Up @@ -701,7 +705,7 @@ <h5>New Device Source</h5>
</select>
</div>
<div class="mb-3" *ngIf="socketService.sources[currentDeviceSource.sourceIdx!]">
<label for="deviceSource" class="form-label">Address
<label for="deviceSource" class="form-label">Input/Address Number
({{socketService.addresses[socketService.sources[currentDeviceSource.sourceIdx!].id].length > 0 ? 'select or ' : ''}}enter
manually):</label>
<div class="row">
Expand Down
4 changes: 2 additions & 2 deletions UI/src/app/_components/settings/settings.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -446,9 +446,9 @@ export class SettingsComponent {
return this.socketService.sourceTypes.find((obj) => obj.id === sourceTypeId)?.busses as SourceTypeBus[];
}

public setTestMode(state: boolean) {
public setTestMode(state: boolean, interval: number = 1000) {
if (state == true) {
this.socketService.socket.emit('testmode', true);
this.socketService.socket.emit('testmode', true, interval);
this.socketService.testModeOn = true;
} else if (state == false) {
this.socketService.socket.emit('testmode', false);
Expand Down
14 changes: 13 additions & 1 deletion UI/src/app/_services/socket.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ export class SocketService {
public sourceTypes: SourceType[] = [];
public sourceTypeDataFields: SourceTypeDataFields[] = [];
public testModeOn = false;
public testModeInterval: number = 1000;
public tslclients_1secupdate?: boolean;
public deviceSources: DeviceSource[] = [];
public addresses: Addresses = {};
Expand Down Expand Up @@ -183,9 +184,20 @@ export class SocketService {
if (this.tallyData.length > 1000) {
this.tallyData.shift();
}

let deviceSource = this.deviceSources.find((ds) => ds.id === address);
let deviceId = deviceSource?.deviceId || undefined;
let deviceName = '';
if (deviceId) {
let deviceObj = this.devices.find((d) => d.id === deviceId);
if (deviceObj) {
deviceName = deviceObj.name;
}
}

this.tallyData.push({
datetime: Date.now().toString(),
log: `Source: ${this.getSourceById(sourceId)?.name} Address: ${address} ${busses.length === 0 ? "No busses" : `Bus${busses.length > 1 ? "ses" : ""}: ${busses.map((b) => `${b[0].toUpperCase()}${b.slice(1)}`)}`}`,
log: `${this.getSourceById(sourceId)?.name} ${deviceName} ${busses.length === 0 ? "None" : `Bus${busses.length > 1 ? "ses" : ""}: ${busses.map((b) => `${b[0].toUpperCase()}${b.slice(1)}`)}`}`,
type: 'info',
});
this.scrollTallyDataSubject.next();
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/usage/sections/devices.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ sidebar_position: 2
Devices represent your inputs (like cameras) that you want to track with tally data. Devices can be assigned different addresses or inputs by each source. In Tally Arbiter, you can create as many devices as you would like and give each one a helpful name and description.

## Device Sources
In order to assciate tally data with a device, you must assign the source addresses to each device. These addresses can vary from source to source, so they must be manually assigned.
In order to assciate tally data with a device, you must assign the source addresses to each device. These addresses can vary from source to source, so they must be manually assigned. It is typically the physical input number on the device.

For example, a Camera can be connected to a `Blackmagic ATEM` on `Input 1`, but connected to an `OBS Studio` on `Scene 2`. Tally Arbiter will track the tally data from each source and arbitrate whether the device is ultimately in preview or program (or both) by aggregating all of the source data together.

Expand Down
2 changes: 1 addition & 1 deletion docs/docs/usage/sections/sources.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ OSC paths must be one of the following:
The device source address should be sent as an integer or a string. Send one argument of any type (integer, float, or string). If you send multiple arguments, they will be ignored.

## Panasonic AV-HS410
You will need the IP address of the switcher.
You will need the IP address of the switcher. Multicast must also be enabled on the switcher and your network in order to receive the tally data, therefore Tally Arbiter and the Panasonic device must reside on the same subnet.

## Analog Way Livecore Image Processors
You will need the IP address of the device, and the port (standard port is 10600).
Loading

0 comments on commit 1155f49

Please sign in to comment.