Skip to content
This repository was archived by the owner on Jun 5, 2019. It is now read-only.

Commit 2ddde0a

Browse files
committed
Merge pull request #165 from smaillet-ms/Support-GCC
Updating GCC support
2 parents 4d0adb1 + a1d43d2 commit 2ddde0a

39 files changed

+5422
-529
lines changed

CLR/Libraries/CorLib/corlib_native_System_String.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ HRESULT Library_corlib_native_System_String::FromCharArray( CLR_RT_StackFrame& s
548548
CLR_UINT32 len;
549549

550550
array = stack.Arg1().DereferenceArray(); if(!array) TINYCLR_SET_AND_LEAVE(S_OK);
551-
len = array->m_numOfElements ; if(!len ) TINYCLR_SET_AND_LEAVE(S_OK);
551+
len = array->m_numOfElements ;
552552

553553
if(length == -1) length = len - startIndex;
554554

CLR/Libraries/Windows_Devices/dotNetMF.proj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@
4646
<Compile Include="windows_devices_native.cpp" />
4747
<Compile Include="windows_devices_native_Windows_Devices_Gpio_GpioController.cpp" />
4848
<Compile Include="windows_devices_native_Windows_Devices_Gpio_GpioPin.cpp" />
49+
<Compile Include="windows_devices_native_Windows_Devices_Spi_SpiBusInfo.cpp" />
50+
<Compile Include="windows_devices_native_Windows_Devices_Spi_SpiDevice.cpp" />
4951
<ExtraProjects Include="dotNetMF_stub.proj" />
5052
<FastCompileCPPFile Include="windows_devices_fastcompile.cpp" />
5153
<IncludePaths Include="CLR\libraries\corlib" />

CLR/Libraries/Windows_Devices/windows_devices_native.cpp

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ static const CLR_RT_MethodHandler method_lookup[] =
1717
NULL,
1818
NULL,
1919
NULL,
20-
NULL,
21-
NULL,
22-
NULL,
2320
Library_windows_devices_native_Windows_Devices_Gpio_GpioController::get_PinCount___I4,
2421
NULL,
2522
NULL,
@@ -86,12 +83,49 @@ static const CLR_RT_MethodHandler method_lookup[] =
8683
NULL,
8784
NULL,
8885
NULL,
86+
NULL,
87+
NULL,
88+
Library_windows_devices_native_Windows_Devices_Spi_SpiBusInfo::get_ChipSelectLineCount___I4,
89+
NULL,
90+
NULL,
91+
NULL,
92+
NULL,
93+
NULL,
94+
NULL,
95+
NULL,
96+
NULL,
97+
NULL,
98+
NULL,
99+
NULL,
100+
NULL,
101+
NULL,
102+
NULL,
103+
NULL,
104+
NULL,
105+
NULL,
106+
NULL,
107+
NULL,
108+
NULL,
109+
NULL,
110+
NULL,
111+
NULL,
112+
NULL,
113+
Library_windows_devices_native_Windows_Devices_Spi_SpiDevice::InitNative___VOID,
114+
Library_windows_devices_native_Windows_Devices_Spi_SpiDevice::DisposeNative___VOID,
115+
Library_windows_devices_native_Windows_Devices_Spi_SpiDevice::TransferInternal___VOID__SZARRAY_U1__SZARRAY_U1__BOOLEAN,
116+
NULL,
117+
NULL,
118+
NULL,
119+
NULL,
120+
NULL,
121+
NULL,
122+
NULL,
89123
};
90124

91125
const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_Windows_Devices =
92126
{
93127
"Windows.Devices",
94-
0x64A1E3B7,
128+
0xF71D0B80,
95129
method_lookup
96130
};
97131

CLR/Libraries/Windows_Devices/windows_devices_native.h

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,6 @@
1313
#include <TinyCLR_Interop.h>
1414
struct Library_windows_devices_native_Windows_Devices_Enumeration_DeviceInformation
1515
{
16-
static const int FIELD_STATIC__s_I2cPrefix = 0;
17-
static const int FIELD_STATIC__s_SpiPrefix = 1;
18-
1916
static const int FIELD__m_id = 1;
2017
static const int FIELD__m_isDefault = 2;
2118

@@ -26,7 +23,7 @@ struct Library_windows_devices_native_Windows_Devices_Enumeration_DeviceInformat
2623

2724
struct Library_windows_devices_native_Windows_Devices_Gpio_GpioController
2825
{
29-
static const int FIELD_STATIC__s_instance = 2;
26+
static const int FIELD_STATIC__s_instance = 0;
3027

3128
TINYCLR_NATIVE_DECLARE(get_PinCount___I4);
3229

@@ -36,7 +33,7 @@ struct Library_windows_devices_native_Windows_Devices_Gpio_GpioController
3633

3734
struct Library_windows_devices_native_Windows_Devices_Gpio_GpioPin
3835
{
39-
static const int FIELD_STATIC__s_eventListener = 3;
36+
static const int FIELD_STATIC__s_eventListener = 1;
4037

4138
static const int FIELD__m_syncLock = 1;
4239
static const int FIELD__m_disposed = 2;
@@ -98,9 +95,10 @@ struct Library_windows_devices_native_Windows_Devices_I2c_I2cConnectionSettings
9895

9996
struct Library_windows_devices_native_Windows_Devices_I2c_I2cDevice
10097
{
101-
static const int FIELD_STATIC__s_deviceLock = 4;
102-
static const int FIELD_STATIC__s_deviceRefs = 5;
103-
static const int FIELD_STATIC__s_device = 6;
98+
static const int FIELD_STATIC__s_deviceLock = 2;
99+
static const int FIELD_STATIC__s_deviceRefs = 3;
100+
static const int FIELD_STATIC__s_device = 4;
101+
static const int FIELD_STATIC__s_I2cPrefix = 5;
104102

105103
static const int FIELD__m_deviceId = 1;
106104
static const int FIELD__m_settings = 2;
@@ -123,6 +121,49 @@ struct Library_windows_devices_native_Windows_Devices_I2c_I2cTransferResult
123121

124122
};
125123

124+
struct Library_windows_devices_native_Windows_Devices_Spi_SpiBusInfo
125+
{
126+
TINYCLR_NATIVE_DECLARE(get_ChipSelectLineCount___I4);
127+
128+
//--//
129+
130+
};
131+
132+
struct Library_windows_devices_native_Windows_Devices_Spi_SpiConnectionSettings
133+
{
134+
static const int FIELD__m_chipSelectionLine = 1;
135+
static const int FIELD__m_dataBitLength = 2;
136+
static const int FIELD__m_clockFrequency = 3;
137+
static const int FIELD__m_mode = 4;
138+
static const int FIELD__m_sharingMode = 5;
139+
140+
141+
//--//
142+
143+
};
144+
145+
struct Library_windows_devices_native_Windows_Devices_Spi_SpiDevice
146+
{
147+
static const int FIELD_STATIC__s_SpiPrefix = 6;
148+
static const int FIELD_STATIC__s_busInfo = 7;
149+
150+
static const int FIELD__m_deviceId = 1;
151+
static const int FIELD__m_settings = 2;
152+
static const int FIELD__m_syncLock = 3;
153+
static const int FIELD__m_disposed = 4;
154+
static const int FIELD__m_mskPin = 5;
155+
static const int FIELD__m_misoPin = 6;
156+
static const int FIELD__m_mosiPin = 7;
157+
static const int FIELD__m_spiBus = 8;
158+
159+
TINYCLR_NATIVE_DECLARE(InitNative___VOID);
160+
TINYCLR_NATIVE_DECLARE(DisposeNative___VOID);
161+
TINYCLR_NATIVE_DECLARE(TransferInternal___VOID__SZARRAY_U1__SZARRAY_U1__BOOLEAN);
162+
163+
//--//
164+
165+
};
166+
126167

127168

128169
extern const CLR_RT_NativeAssemblyData g_CLR_AssemblyNative_Windows_Devices;

CLR/Libraries/Windows_Devices/windows_devices_native_Windows_Devices_Gpio_GpioPin.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ enum GpioPinDriveMode
1010
GpioPinDriveMode_Output,
1111
GpioPinDriveMode_InputPullUp,
1212
GpioPinDriveMode_InputPullDown,
13-
GpioPinDriveMode_OutputStrongLow,
14-
GpioPinDriveMode_OutputStrongLowPullUp,
15-
GpioPinDriveMode_OutputStrongHigh,
16-
GpioPinDriveMode_OutputStrongHighPullDown,
13+
GpioPinDriveMode_OutputOpenDrain,
14+
GpioPinDriveMode_OutputOpenDrainPullUp,
15+
GpioPinDriveMode_OutputOpenSource,
16+
GpioPinDriveMode_OutputOpenSourcePullDown,
1717
};
1818

1919
enum GpioPinValue
@@ -27,11 +27,11 @@ static GPIO_RESISTOR GetResisterMode(GpioPinDriveMode driveMode)
2727
switch (driveMode)
2828
{
2929
case GpioPinDriveMode_InputPullUp:
30-
case GpioPinDriveMode_OutputStrongLowPullUp:
30+
case GpioPinDriveMode_OutputOpenDrainPullUp:
3131
return RESISTOR_PULLUP;
3232

3333
case GpioPinDriveMode_InputPullDown:
34-
case GpioPinDriveMode_OutputStrongHighPullDown:
34+
case GpioPinDriveMode_OutputOpenSourcePullDown:
3535
return RESISTOR_PULLDOWN;
3636
}
3737

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2+
// Copyright (c) Microsoft Corporation. All rights reserved.
3+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
4+
5+
#include "windows_devices.h"
6+
7+
HRESULT Library_windows_devices_native_Windows_Devices_Spi_SpiBusInfo::get_ChipSelectLineCount___I4( CLR_RT_StackFrame& stack )
8+
{
9+
TINYCLR_HEADER();
10+
11+
CLR_RT_HeapBlock* pThis = stack.This(); FAULT_ON_NULL(pThis);
12+
13+
stack.SetResult_I4( static_cast<INT32>(CPU_SPI_PortsCount()) );
14+
15+
TINYCLR_NOCLEANUP();
16+
}

0 commit comments

Comments
 (0)