-
Notifications
You must be signed in to change notification settings - Fork 0
/
LinphoneManager.cs
87 lines (77 loc) · 2.65 KB
/
LinphoneManager.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.Threading;
using System.Diagnostics;
using Linphone;
namespace linphone_maui
{
public class LinphoneManager
{
public Core Core { get; set; }
LoggingService LoggingService
{
get; set;
}
private System.Timers.Timer Timer;
public LinphoneManager()
{
LoggingService = LoggingService.Instance;
LoggingService.LogLevel = LogLevel.Message;
LoggingService.Listener.OnLogMessageWritten = OnLog;
Debug.WriteLine("==== Phone information dump ====");
Debug.WriteLine("C# WRAPPER=" + LinphoneWrapper.VERSION);
}
public void Init(string configPath, string factoryPath, IntPtr context)
{
// Giving app context in CreateCore is mandatory for Android to be able to load grammars (and other assets) from AAR
Core = Factory.Instance.CreateCore(configPath, factoryPath, context);
// Required to be able to store logs as file
Core.SetLogCollectionPath(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
}
public void Start()
{
Timer = new System.Timers.Timer
{
Interval = 20
};
Timer.Elapsed += OnTimedEvent;
Timer.Enabled = true;
Core.Start();
// Factory.Instance.
}
private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e)
{
Device.BeginInvokeOnMainThread(() => Core.Iterate());
}
private void OnLog(LoggingService logService, string domain, LogLevel lev, string message)
{
string now = DateTime.Now.ToString("hh:mm:ss");
string log = now + " [";
switch (lev)
{
case LogLevel.Debug:
log += "DEBUG";
break;
case LogLevel.Error:
log += "ERROR";
break;
case LogLevel.Message:
log += "MESSAGE";
break;
case LogLevel.Warning:
log += "WARNING";
break;
case LogLevel.Fatal:
log += "FATAL";
break;
default:
break;
}
log += "] (" + domain + ") " + message;
Debug.WriteLine(log);
}
private void OnGlobal(Core lc, GlobalState gstate, string message)
{
Debug.WriteLine("Global state changed: " + gstate);
}
}
}