HRESULT Library_spot_native_Microsoft_SPOT_Hardware_Utility::Piezo___STATIC__VOID__U4__U4( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_RT_HeapBlock* pArgs = &(stack.Arg0()); ::Piezo_Tone( pArgs[ 0 ].NumericByRef().u4, pArgs[ 1 ].NumericByRef().u4 ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_DateTime::get_Second___I4( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); SYSTEMTIME st; Expand( stack, st ); stack.SetResult_I4( st.wSecond ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_native_Microsoft_SPOT_Hardware_Utility::GetMachineTime___STATIC__mscorlibSystemTimeSpan( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_INT64* pRes = Library_corlib_native_System_TimeSpan::NewObject( stack ); *pRes = Time_GetMachineTime(); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT CLR_RT_FileStream::AssignStorage( BYTE* bufferIn, size_t sizeIn, BYTE* bufferOut, size_t sizeOut ) { TINYCLR_HEADER(); m_dataIn = bufferIn; m_dataInSize = sizeIn; m_dataOut = bufferOut; m_dataOutSize = sizeOut; TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_Double::CompareTo___STATIC__I4__R8__R8( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_INT64 left = stack.Arg0().NumericByRef().s8; CLR_INT64 right = stack.Arg1().NumericByRef().s8; stack.SetResult_I4((left < right) ? -1 : (left > right) ? 1 : 0); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_Double::IsPositiveInfinity___STATIC__BOOLEAN__R8( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); double d = stack.Arg0().NumericByRefConst().r8; bool res = System::Double::IsPositiveInfinity( d ); stack.SetResult_Boolean( res ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_Math::Cosh___STATIC__R8__R8( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); double d = stack.Arg0().NumericByRefConst().r8; double res = System::Math::Cosh( d ); stack.SetResult_R8( res ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_native_Microsoft_SPOT_Reflection::IsTypeLoaded___STATIC__BOOLEAN__mscorlibSystemType( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_RT_TypeDef_Instance inst; CLR_RT_HeapBlock* hbType = stack.Arg0().Dereference(); stack.SetResult_Boolean( CLR_RT_ReflectionDef_Index::Convert( *hbType, inst, NULL ) ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_Math::Ceiling___STATIC__R8__R8( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_INT64 d = stack.Arg0().NumericByRefConst().r8; CLR_INT64 res = (CLR_INT64)(d + (CLR_INT64)CLR_RT_HeapBlock::HB_DoubleMask) & (~CLR_RT_HeapBlock::HB_DoubleMask); stack.SetResult_I8( res ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_BitConverter::DoubleToInt64Bits___STATIC__I8__R8( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); double input; input = stack.Arg0().NumericByRefConst().r8; __int64* p; p = reinterpret_cast<__int64*>(&input); stack.SetResult_I8(*p); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_Double::CompareTo___STATIC__I4__R8__R8( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); double d = stack.Arg0().NumericByRefConst().r8; double val = stack.Arg0().NumericByRefConst().r8; CLR_UINT32 res = System::Double::CompareTo( d, val ); stack.PushValue().SetInteger( res ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_hardware_native_Microsoft_SPOT_Hardware_Cpu::get_GlitchFilterTime___STATIC__mscorlibSystemTimeSpan( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_HARDWARE(); TINYCLR_HEADER(); CLR_INT64 val = (CLR_INT64)::CPU_GPIO_GetDebounce() * TIME_CONVERSION__TO_MILLISECONDS; stack.SetResult_I8( val ); stack.TopValue().ChangeDataType( DATATYPE_TIMESPAN ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_update_native_Microsoft_SPOT_MFUpdate_MFNativeUpdate::Authenticate___STATIC__BOOLEAN__I4__SZARRAY_U1( CLR_RT_StackFrame& stack ) { TINYCLR_HEADER(); CLR_INT32 handle = stack.Arg0().NumericByRef().s4; CLR_RT_HeapBlock_Array* paArgs = stack.Arg1().DereferenceArray(); CLR_UINT8* pArgs = paArgs == NULL ? NULL : paArgs->GetFirstElement(); CLR_INT32 argsLen = paArgs == NULL ? 0 : paArgs->m_numOfElements; stack.SetResult_Boolean(TRUE == MFUpdate_Authenticate(handle, pArgs, argsLen)); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_net_security_native_Microsoft_SPOT_Net_Security_SslNative::ExitSecureContext___STATIC__I4__I4( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_NETWORK(); TINYCLR_HEADER(); CLR_INT32 sslContext = stack.Arg0().NumericByRef().s4; int result = SSL_ExitContext( sslContext ) == TRUE ? 0 : -1; stack.SetResult_I4( result ); TINYCLR_NOCLEANUP_NOLABEL(); }
static HRESULT ComputeSinCos( CLR_RT_StackFrame& stack, bool fSin ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); int index = (stack.Arg0().NumericByRef().s4 % 360) / 6; if(index < 0) index += 60; const CLR_RADIAN& rec = c_CLR_radians[ index ]; stack.SetResult_I4( (int)(fSin ? rec.sin : rec.cos) ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_native_Microsoft_SPOT_Debug::Print___STATIC__VOID__STRING( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); LPCSTR szText0 = stack.Arg0().RecoverString(); if(!szText0) szText0 = "<null>"; CLR_Debug::Emit( szText0, -1 ); CLR_Debug::Emit( "\r\n" , -1 ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_hardware_native_Microsoft_SPOT_Hardware_HardwareProvider::NativeSupportsNonStandardBaudRate___BOOLEAN__I4( CLR_RT_StackFrame& stack ) { TINYCLR_HEADER(); CLR_UINT32 port; port = stack.Arg1().NumericByRef().u4; if (::CPU_USART_SupportNonStandardBaudRate( port )==TRUE) stack.SetResult_Boolean( true ); else stack.SetResult_Boolean( false ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT CLR_HW_Hardware::ManagedHardware_Initialize() { NATIVE_PROFILE_CLR_HARDWARE(); TINYCLR_HEADER(); m_interruptData.m_HalQueue.Initialize( (CLR_HW_Hardware::HalInterruptRecord*)&g_scratchInterruptDispatchingStorage, InterruptRecords() ); m_interruptData.m_applicationQueue.DblLinkedList_Initialize (); m_interruptData.m_queuedInterrupts = 0; TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_hardware_native_Microsoft_SPOT_Hardware_AnalogOutput::WriteRaw___VOID__I4( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_HARDWARE(); TINYCLR_HEADER(); CLR_RT_HeapBlock* pThis = stack.This(); DA_CHANNEL channel = (DA_CHANNEL)pThis[FIELD__m_channel].NumericByRef().s4; INT32 level = stack.Arg1().NumericByRef().s4; ::DA_Write(channel, level); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_BitConverter::DoubleToInt64Bits___STATIC__I8__R8(CLR_RT_StackFrame& stack) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); #if !defined(TINYCLR_EMULATED_FLOATINGPOINT) double input = stack.Arg0().NumericByRefConst().r8; #else CLR_INT64 input = stack.Arg0().NumericByRefConst().r8; #endif __int64* p = reinterpret_cast<__int64*>(&input); stack.SetResult_I8(*p); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_DateTime::DaysInMonth___STATIC__I4__I4__I4( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_INT32 year = stack.Arg0().NumericByRef().s4; CLR_INT32 month = stack.Arg1().NumericByRef().s4; CLR_INT32 days = 0; Time_DaysInMonth( year, month, &days ); stack.SetResult_I4( days ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_native_Microsoft_SPOT_Reflection::GetTypeFromHash___STATIC__mscorlibSystemType__U4( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_RT_HeapBlock& top = stack.PushValueAndClear(); CLR_RT_TypeDef_Index res; if(g_CLR_RT_TypeSystem.FindTypeDef( stack.Arg0().NumericByRefConst().u4, res )) { top.SetReflection( res ); } TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_hardware_native_Microsoft_SPOT_Hardware_AnalogInput::ReadRaw___I4( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_HARDWARE(); TINYCLR_HEADER(); CLR_RT_HeapBlock* pThis = stack.This(); const ANALOG_CHANNEL channel = (ANALOG_CHANNEL)pThis[FIELD__m_channel].NumericByRef().s4; const CLR_INT32 raw = ::AD_Read(channel); stack.SetResult_I4(raw); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_Math::Sign___STATIC__I4__R8( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); double d = stack.Arg0().NumericByRefConst().r8; INT32 res; if (d < 0) res = -1; else if (d > 0) res = +1; else res = 0; stack.SetResult_I4( res ); TINYCLR_NOCLEANUP_NOLABEL();; }
HRESULT Library_spot_native_Microsoft_SPOT_Reflection::GetTypeHash___STATIC__U4__mscorlibSystemType( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_UINT32 hash; if(CLR_RT_ReflectionDef_Index::Convert( stack.Arg0(), hash ) == false) { hash = 0; } stack.SetResult( hash, DATATYPE_U4 ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_Math::Round___STATIC__R8__R8( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_INT64 d = stack.Arg0().NumericByRefConst().r8; //for negative number we have to be banker's round, if -0.5, round to 0, but 0.5 to 0 if (d <0) d =d + 1; CLR_INT64 res = (CLR_INT64)(d + (CLR_INT64)(CLR_RT_HeapBlock::HB_DoubleMask>>1) ) & (~CLR_RT_HeapBlock::HB_DoubleMask); stack.SetResult_I8( res ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_Time_native_Microsoft_SPOT_Time_TimeService::SetUtcTime___STATIC__VOID__I8( CLR_RT_StackFrame& stack ) { TINYCLR_HEADER(); INT64 utc = stack.Arg0().NumericByRef().s8; INT64 utcBefore = Time_GetUtcTime(); INT64 utcNow = Time_SetUtcTime( utc, false ); // correct the uptime if(utcNow > utcBefore) { g_CLR_RT_ExecutionEngine.m_startTime += (utcNow - utcBefore); } else { g_CLR_RT_ExecutionEngine.m_startTime -= (utcBefore - utcNow); } TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_DateTime::get_Today___STATIC__SystemDateTime( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_INT64* pRes = NewObject( stack ); { SYSTEMTIME st; Time_ToSystemTime( Time_GetLocalTime(), &st ); st.wHour = 0; st.wMinute = 0; st.wSecond = 0; st.wMilliseconds = 0; *pRes = Time_FromSystemTime( &st ); } TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_native_Microsoft_SPOT_Reflection::GetAssemblyHash___STATIC__U4__mscorlibSystemReflectionAssembly( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_RT_Assembly_Instance inst; CLR_UINT32 hash; if(CLR_RT_ReflectionDef_Index::Convert( stack.Arg0(), inst )) { hash = inst.m_assm->ComputeAssemblyHash(); } else { hash = 0; } stack.SetResult( hash, DATATYPE_U4 ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_corlib_native_System_Math::Round___STATIC__R8__R8( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); double d = stack.Arg0().NumericByRefConst().r8; double hi = d + 0.5; double res = System::Math::Floor( hi ); //If the number was in the middle of two integers, we need to round to the even one. if(res==hi) { if(System::Math::Fmod( res, 2.0 ) != 0) { //Rounding up made the number odd so we should round down. res -= 1.0; } } stack.SetResult_R8( res ); TINYCLR_NOCLEANUP_NOLABEL(); }