Skip to content

Commit

Permalink
Pass on MediaConfig from Isar
Browse files Browse the repository at this point in the history
  • Loading branch information
betaniat committed Sep 6, 2024
1 parent 375886c commit 6612e92
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 0 deletions.
22 changes: 22 additions & 0 deletions backend/api/EventHandlers/MqttEventHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ public override void Subscribe()
MqttService.MqttIsarPressureReceived += OnIsarPressureUpdate;
MqttService.MqttIsarPoseReceived += OnIsarPoseUpdate;
MqttService.MqttIsarCloudHealthReceived += OnIsarCloudHealthUpdate;
MqttService.MqttIsarTelemetryUpdateReceived += OnIsarTelemetryUpdate;
}

public override void Unsubscribe()
Expand All @@ -71,6 +72,7 @@ public override void Unsubscribe()
MqttService.MqttIsarPressureReceived -= OnIsarPressureUpdate;
MqttService.MqttIsarPoseReceived -= OnIsarPoseUpdate;
MqttService.MqttIsarCloudHealthReceived -= OnIsarCloudHealthUpdate;
MqttService.MqttIsarTelemetryUpdateReceived -= OnIsarTelemetryUpdate;
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken) { await stoppingToken; }
Expand Down Expand Up @@ -484,5 +486,25 @@ private async void OnIsarCloudHealthUpdate(object? sender, MqttReceivedArgs mqtt

TeamsMessageService.TriggerTeamsMessageReceived(new TeamsMessageEventArgs(message));
}

private async void OnIsarTelemetryUpdate(object? sender, MqttReceivedArgs mqttArgs)
{
var isarTelemetyUpdate = (IsarTelemetyUpdateMessage)mqttArgs.Message;

var robot = await RobotService.ReadByIsarId(isarTelemetyUpdate.IsarId);
if (robot == null)
{
_logger.LogInformation("Received message from unknown ISAR instance {Id} with robot name {Name}", isarTelemetyUpdate.IsarId, isarTelemetyUpdate.RobotName);
return;
}
await SignalRService.SendMessageAsync("Media stream config received", robot.CurrentInstallation,
new IsarMediaConfig
{
Url = isarTelemetyUpdate.Url,
AuthToken = isarTelemetyUpdate.Token,
RobotId = isarTelemetyUpdate.IsarId,
MediaConnectionType = isarTelemetyUpdate.MediaConnectionType
});
}
}
}
25 changes: 25 additions & 0 deletions backend/api/MQTT/MessageModels/IsarTelemetryUpdate.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System.Text.Json.Serialization;
using Api.Services.Models;

namespace Api.Mqtt.MessageModels
{
#nullable disable
public class IsarTelemetyUpdateMessage : MqttMessage
{
[JsonPropertyName("robot_name")]
public string RobotName { get; set; }

[JsonPropertyName("isar_id")]
public string IsarId { get; set; }

[JsonPropertyName("url")]
public string Url { get; set; }

[JsonPropertyName("token")]
public string Token { get; set; }

[JsonPropertyName("mediaConnectionType")]
public MediaConnectionType MediaConnectionType { get; set; }

}
}
2 changes: 2 additions & 0 deletions backend/api/MQTT/MqttService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ public MqttService(ILogger<MqttService> logger, IConfiguration config)
public static event EventHandler<MqttReceivedArgs>? MqttIsarPressureReceived;
public static event EventHandler<MqttReceivedArgs>? MqttIsarPoseReceived;
public static event EventHandler<MqttReceivedArgs>? MqttIsarCloudHealthReceived;
public static event EventHandler<MqttReceivedArgs>? MqttIsarTelemetryUpdateReceived;

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
Expand Down Expand Up @@ -301,6 +302,7 @@ private void OnIsarTopicReceived<T>(string content) where T : MqttMessage
_ when type == typeof(IsarPressureMessage) => MqttIsarPressureReceived,
_ when type == typeof(IsarPoseMessage) => MqttIsarPoseReceived,
_ when type == typeof(IsarCloudHealthMessage) => MqttIsarCloudHealthReceived,
_ when type == typeof(IsarTelemetyUpdateMessage) => MqttIsarTelemetryUpdateReceived,
_
=> throw new NotImplementedException(
$"No event defined for message type '{typeof(T).Name}'"
Expand Down
20 changes: 20 additions & 0 deletions backend/api/Services/Models/IsarMediaConfig.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using System.Text.Json.Serialization;
namespace Api.Services.Models
{
public struct IsarMediaConfig
{
[JsonPropertyName("url")]
public string? Url { get; set; }

[JsonPropertyName("authToken")]
public string? AuthToken { get; set; }

[JsonPropertyName("robotId")]
public string? RobotId { get; set; }

[JsonPropertyName("mediaConnectionType")]
public MediaConnectionType MediaConnectionType { get; set; }
}

public enum MediaConnectionType { LiveKit };
}

0 comments on commit 6612e92

Please sign in to comment.