Skip to content

Commit 0346a73

Browse files
committed
Sim work
1 parent 5755d97 commit 0346a73

File tree

5 files changed

+45
-26
lines changed

5 files changed

+45
-26
lines changed

codehelp/CodeHelpers/LogGenerator/CodeFixer/LogGeneratorFixer.cs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,6 @@ public sealed override FixAllProvider GetFixAllProvider()
2323
return WellKnownFixAllProviders.BatchFixer;
2424
}
2525

26-
private SyntaxTrivia _detectLineBreakTrivia(SyntaxNode root)
27-
{
28-
var result = root.DescendantTokens()
29-
.SelectMany(token => token.TrailingTrivia)
30-
.FirstOrDefault(trivia => trivia.IsKind(SyntaxKind.EndOfLineTrivia));
31-
if (Equals(result, default(SyntaxTrivia)))
32-
result = SyntaxFactory.CarriageReturnLineFeed;
33-
return result;
34-
}
35-
3626
public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context)
3727
{
3828
var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);

dev/desktopDev/Program.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,15 @@ static void Main(string[] args)
2222
{
2323
var arr = typeof(HalAccelerometerData).Assembly.GetTypes().Where(x => x.Name.StartsWith("Hal") && x.Name.EndsWith("Data")).ToArray();
2424

25-
foreach (var item in arr) {
25+
foreach (var item in arr)
26+
{
2627
var nameWithoutHal = item.Name[3..];
2728
var nameWithoutData = nameWithoutHal[..^4];
2829
Console.WriteLine(nameWithoutData);
2930
var file2 = $@"C:\Users\thadh\Documents\GitHub\robotdotnet\WPILib\src\hal\Natives\Simulation\{item.Name}.cs";
3031
var txt = File.ReadAllText(file2);
31-
foreach (var func in item.GetMethods()) {
32+
foreach (var func in item.GetMethods())
33+
{
3234
var funcName = func.Name.Replace(nameWithoutData, "");
3335

3436
txt = txt.Replace($"{func.Name}(", $"{funcName}(");

src/wpilibsharp/Simulation/AddressableLEDSim.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,26 @@ public AddressableLEDSim()
1414

1515
public unsafe CallbackStore RegisterInitializedCallback(NotifyCallback callback, bool initialNotify)
1616
{
17-
return new CallbackStore(callback, m_index, initialNotify, &HalAddressableLEDData.RegisterInitializedCallback, &HalAddressableLEDData.CancelInitializedCallback);
17+
return new CallbackStore(callback, m_index, initialNotify, &HalAddressableLEDData.RegisterInitializedCallback, &HalAddressableLEDData.CancelInitializedCallback);
1818
}
1919

2020
public unsafe CallbackStore RegisterOutputPortCallback(NotifyCallback callback, bool initialNotify)
2121
{
22-
return new CallbackStore(callback, m_index, initialNotify, &HalAddressableLEDData.RegisterOutputPortCallback, &HalAddressableLEDData.CancelOutputPortCallback);
22+
return new CallbackStore(callback, m_index, initialNotify, &HalAddressableLEDData.RegisterOutputPortCallback, &HalAddressableLEDData.CancelOutputPortCallback);
2323
}
2424

2525
public unsafe CallbackStore RegisterLengthCallback(NotifyCallback callback, bool initialNotify)
2626
{
27-
return new CallbackStore(callback, m_index, initialNotify, &HalAddressableLEDData.RegisterLengthCallback, &HalAddressableLEDData.CancelLengthCallback);
27+
return new CallbackStore(callback, m_index, initialNotify, &HalAddressableLEDData.RegisterLengthCallback, &HalAddressableLEDData.CancelLengthCallback);
2828
}
2929

3030
public unsafe CallbackStore RegisterRunningCallback(NotifyCallback callback, bool initialNotify)
3131
{
32-
return new CallbackStore(callback, m_index, initialNotify, &HalAddressableLEDData.RegisterRunningCallback, &HalAddressableLEDData.CancelRunningCallback);
32+
return new CallbackStore(callback, m_index, initialNotify, &HalAddressableLEDData.RegisterRunningCallback, &HalAddressableLEDData.CancelRunningCallback);
3333
}
3434

3535
public unsafe CallbackStore RegisterDataCallback(ConstBufferCallback callback)
3636
{
37-
return new CallbackStore(callback, m_index, initialNotify, &HalAddressableLEDData.RegisterDataCallback, &HalAddressableLEDData.CancelDataCallback);
37+
return new CallbackStore(callback, m_index, &HalAddressableLEDData.RegisterDataCallback, &HalAddressableLEDData.CancelDataCallback);
3838
}
3939
}

src/wpilibsharp/Simulation/CallbackStore.cs

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System.Runtime.CompilerServices;
22
using System.Runtime.InteropServices;
33
using WPIHal;
4+
using unsafe HalConstBufferCreate = delegate* managed<int, delegate* unmanaged[Cdecl]<byte*, void*, byte*, uint, void>, void*, int>;
45
using unsafe HalGlobalCreate = delegate* managed<delegate* unmanaged[Cdecl]<byte*, void*, WPIHal.HalValue*, void>, void*, bool, int>;
56
using unsafe HalGlobalFree = delegate* managed<int, void>;
67
using unsafe HalIndexedCreate = delegate* managed<int, delegate* unmanaged[Cdecl]<byte*, void*, WPIHal.HalValue*, void>, void*, bool, int>;
@@ -9,25 +10,40 @@
910

1011
namespace WPILib.Simulation;
1112

12-
public class CallbackStore : IDisposable
13+
public delegate void NotifyCallback(string name, HalValue value);
14+
15+
public delegate void ConstBufferCallback(string name, ReadOnlySpan<byte> buffer);
16+
17+
public sealed class CallbackStore : IDisposable
1318
{
1419
private GCHandle delegateHandle;
1520
private readonly int nativeHandle;
1621
private readonly int? index;
17-
private unsafe readonly HalIndexedFree indexedFree;
18-
private unsafe readonly HalGlobalFree globalFree;
22+
private readonly unsafe HalIndexedFree indexedFree;
23+
private readonly unsafe HalGlobalFree globalFree;
1924

2025
[UnmanagedCallersOnly(CallConvs = [typeof(CallConvCdecl)])]
2126
public static unsafe void HalNotifyCallback(byte* name, void* param, HalValue* value)
2227
{
2328
GCHandle handle = GCHandle.FromIntPtr((nint)param);
24-
if (handle.Target is Action<string, HalValue> stringCallback)
29+
if (handle.Target is NotifyCallback stringCallback)
2530
{
2631
string n = Marshal.PtrToStringUTF8((nint)name) ?? "";
2732
stringCallback(n, *value);
2833
}
2934
}
3035

36+
[UnmanagedCallersOnly(CallConvs = [typeof(CallConvCdecl)])]
37+
public static unsafe void HalConstBufferCallback(byte* name, void* param, byte* buffer, uint len)
38+
{
39+
GCHandle handle = GCHandle.FromIntPtr((nint)param);
40+
if (handle.Target is ConstBufferCallback stringCallback)
41+
{
42+
string n = Marshal.PtrToStringUTF8((nint)name) ?? "";
43+
stringCallback(n, new ReadOnlySpan<byte>(buffer, (int)len));
44+
}
45+
}
46+
3147
public unsafe void Dispose()
3248
{
3349
GC.SuppressFinalize(this);
@@ -42,19 +58,27 @@ public unsafe void Dispose()
4258
delegateHandle.Free();
4359
}
4460

45-
public unsafe CallbackStore(Action<string, HalValue> callback, bool immediateNotify, HalGlobalCreate create, HalGlobalFree free)
61+
public unsafe CallbackStore(NotifyCallback callback, bool immediateNotify, HalGlobalCreate create, HalGlobalFree free)
4662
{
4763
delegateHandle = GCHandle.Alloc(callback);
4864
nativeHandle = create(&HalNotifyCallback, (void*)(nint)delegateHandle, immediateNotify);
4965
index = null;
5066
globalFree = free;
5167
}
5268

53-
public unsafe CallbackStore(Action<string, HalValue> callback, int index, bool immediateNotify, HalIndexedCreate create, HalIndexedFree free)
69+
public unsafe CallbackStore(NotifyCallback callback, int index, bool immediateNotify, HalIndexedCreate create, HalIndexedFree free)
5470
{
5571
delegateHandle = GCHandle.Alloc(callback);
5672
nativeHandle = create(index, &HalNotifyCallback, (void*)(nint)delegateHandle, immediateNotify);
5773
this.index = index;
5874
indexedFree = free;
5975
}
76+
77+
public unsafe CallbackStore(ConstBufferCallback callback, int index, HalConstBufferCreate create, HalIndexedFree free)
78+
{
79+
delegateHandle = GCHandle.Alloc(callback);
80+
nativeHandle = create(index, &HalConstBufferCallback, (void*)(nint)delegateHandle);
81+
this.index = index;
82+
indexedFree = free;
83+
}
6084
}

src/wpimath/Interpolation/InterpolatingMap.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,22 @@ public T this[T key]
2626
}
2727

2828
int idx = m_map.BinarySearch((key, T.Zero));
29-
if (idx >= 0) {
29+
if (idx >= 0)
30+
{
3031
return m_map[idx].value;
3132
}
3233

3334
int larger = ~idx;
3435

3536
// Request is smaller than all elements, return smallest
36-
if (larger == 0) {
37+
if (larger == 0)
38+
{
3739
return m_map[larger].value;
3840
}
3941

4042
// Request is larger than all elements, return largest
41-
if (larger == m_map.Count) {
43+
if (larger == m_map.Count)
44+
{
4245
return m_map[^1].value;
4346
}
4447

0 commit comments

Comments
 (0)