61 lines
2.2 KiB
C#
61 lines
2.2 KiB
C#
|
using System;
|
|||
|
using System.IO;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using Monoculus;
|
|||
|
using NAudio.Wave;
|
|||
|
|
|||
|
namespace sharpFRN
|
|||
|
{
|
|||
|
class Program
|
|||
|
{
|
|||
|
static WebSocketAudioStreamer audioStreamer = new WebSocketAudioStreamer();
|
|||
|
static Settings settings = new Settings();
|
|||
|
|
|||
|
static async Task Main(string[] args)
|
|||
|
{
|
|||
|
settings = SettingsLoader.Load("settings.json");
|
|||
|
|
|||
|
audioStreamer.StartWebSocketServerAsync(settings.WebSocketHost);
|
|||
|
|
|||
|
// Initialize the FRN client
|
|||
|
var client = new FRNClient(
|
|||
|
host: settings.FRNClient.Host,
|
|||
|
port: settings.FRNClient.Port,
|
|||
|
callSign: settings.FRNClient.CallSign,
|
|||
|
name: settings.FRNClient.Name,
|
|||
|
email: settings.FRNClient.Email,
|
|||
|
password: settings.FRNClient.Password,
|
|||
|
network: settings.FRNClient.Network,
|
|||
|
country: settings.FRNClient.Country,
|
|||
|
city: settings.FRNClient.City,
|
|||
|
locator: settings.FRNClient.Locator,
|
|||
|
type: settings.FRNClient.Type,
|
|||
|
description: settings.FRNClient.Description
|
|||
|
);
|
|||
|
|
|||
|
client.OnConnect += () => Console.WriteLine("Connected to the server.");
|
|||
|
client.OnDisconnect += () => Console.WriteLine("Disconnected from the server.");
|
|||
|
client.OnLogin += () => Console.WriteLine("Logged in successfully.");
|
|||
|
client.OnMessageReceived += (message) => Console.WriteLine($"Message received: {message}");
|
|||
|
client.OnClientListReceived += (clients) =>
|
|||
|
{
|
|||
|
Console.WriteLine("Client list updated:");
|
|||
|
foreach (var c in clients)
|
|||
|
{
|
|||
|
Console.WriteLine($"- {c.CallsignAndUser} ({c.ID})");
|
|||
|
}
|
|||
|
};
|
|||
|
client.OnVoiceDataReceived += (voiceData, clientIndex) =>
|
|||
|
{
|
|||
|
Console.WriteLine($"Voice data received at index {clientIndex}");
|
|||
|
|
|||
|
// Decode and play the voice data chunk
|
|||
|
//PlayGSMChunk(voiceData);
|
|||
|
audioStreamer.PlayGSMChunk(voiceData);
|
|||
|
};
|
|||
|
|
|||
|
await client.RunAsync();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|