Skip to content

Commit fa5ff33

Browse files
committed
auto re-sample initial
1 parent df10da4 commit fa5ff33

3 files changed

Lines changed: 23 additions & 22 deletions

File tree

SdrsDecoder.Cli/Program.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ static void Main(string[] args)
4343
samples.Add(s);
4444
}
4545

46+
var baud = 1200;
47+
4648
//var sr = file.WaveFormat.SampleRate;
4749

4850
//var i = 256;
@@ -87,7 +89,7 @@ static void Main(string[] args)
8789
//}
8890

8991
var chain = new PocsagChain(
90-
1200,
92+
baud,
9193
file.WaveFormat.SampleRate,
9294
(message) =>
9395
{

SdrsDecoder/Flex/FlexChain.cs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using SdrsDecoder.Support;
22
using System;
33
using System.Collections.Generic;
4+
using System.Numerics;
45

56
namespace SdrsDecoder.Flex
67
{
@@ -20,21 +21,19 @@ public FlexChain(float baud, float sampleRate, Action<MessageBase> messageReceiv
2021
{
2122
this.baud = baud;
2223

23-
24+
var targetRate = (int)this.baud * 10;
25+
var gcd = (int)BigInteger.GreatestCommonDivisor((BigInteger)sampleRate, (BigInteger)targetRate);
2426

25-
var i = 1;
26-
var d = 1;
27+
// TODO: refactor this stuff
2728

28-
if (baud == 1600)
29-
{
30-
i = 32;
31-
d = 75;
32-
}
29+
int i = targetRate / gcd;
30+
int d = (int)sampleRate / gcd;
3331

34-
if (baud == 3200)
32+
// if I gets too big then filtering / performance becomes an issue
33+
if (i > 100)
3534
{
36-
i = 64;
37-
d = 75;
35+
i = 1;
36+
d = 1;
3837
}
3938

4039
var isr = sampleRate * i;

SdrsDecoder/Pocsag/PocsagChain.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using SdrsDecoder.Support;
22
using System;
3+
using System.Numerics;
34

45
namespace SdrsDecoder.Pocsag
56
{
@@ -20,19 +21,18 @@ public PocsagChain(float baud, float sampleRate, Action<MessageBase> messageRece
2021
{
2122
this.baud = baud;
2223

23-
var i = 1;
24-
var d = 1;
24+
// TODO: refactor this and stuff in flexchain
25+
var targetRate = (int)this.baud * 10;
26+
var gcd = (int)BigInteger.GreatestCommonDivisor((BigInteger)sampleRate, (BigInteger)targetRate);
2527

26-
if (baud == 1200)
27-
{
28-
i = 8;
29-
d = 25;
30-
}
28+
int i = targetRate / gcd;
29+
int d = (int)sampleRate / gcd;
3130

32-
if (baud == 2400)
31+
// if I gets too big then filtering / performance becomes an issue
32+
if (i > 100)
3333
{
34-
i = 16;
35-
d = 25;
34+
i = 1;
35+
d = 1;
3636
}
3737

3838
var isr = sampleRate * i;

0 commit comments

Comments
 (0)