void AddressSpace::Read( UINT32 param0, CLR_RT_TypedArray_UINT8 param1, INT32 param2, INT32 param3, HRESULT &hr ) { if( (param2 < 0) || (param3 < 0) || ((param2 + param3) > param1.GetSize()) ) { hr = CLR_E_OUT_OF_RANGE; return; } memcpy(param1.GetBuffer() + param2, (void*)param0, param3); }
INT8 SoftwareI2CBus::NativeI2CWriteRead( INT32 clockPin, INT32 dataPin, INT32 clockRateKhz, UINT16 address, CLR_RT_TypedArray_UINT8 writeBuffer, INT32 writeOffset, INT32 writeLength, CLR_RT_TypedArray_UINT8 readBuffer, INT32 readOffset, INT32 readLength, INT32 * numWritten, INT32 * numRead, HRESULT &hr ) { if( (writeOffset < 0) || (writeLength < 0) || ((writeOffset + writeLength) > writeBuffer.GetSize()) || (readOffset < 0) || (readLength < 0) || ((readOffset + readLength) > readBuffer.GetSize()) ) { hr = CLR_E_INDEX_OUT_OF_RANGE; return FALSE; } GHI_OSHW_HAL_SoftwareI2C i2c; i2c.scl = clockPin; i2c.sda = dataPin; i2c.clockSpeed = clockRateKhz; i2c.address = address; return GHI_OSHW_HAL_SoftwareI2C_WriteRead(&i2c, writeBuffer.GetBuffer() + writeOffset, writeLength, readBuffer.GetBuffer() + readOffset, readLength, (UINT32*)numWritten, (UINT32*)numRead); }
void Stm32F4Random::NativeGetBytes( CLR_RT_TypedArray_UINT8 param0, HRESULT &hr ) { unsigned char* arr = param0.GetBuffer(); unsigned int length = param0.GetSize(); unsigned int offset = 0; UINT32 rand; if (length > sizeof(rand)) { for (offset = 0; offset < length-sizeof(rand); offset += sizeof(rand)) { rand = Random_Generate(); memcpy(arr+offset, &rand, sizeof(rand)); } } if (offset < length) { unsigned int difference = length - offset; rand = Random_Generate(); memcpy(arr+offset, &rand, difference); } }
void Util::PlayPCMAudio( UINT8 param0, CLR_RT_TypedArray_UINT8 param1, INT32 param2, INT32 param3, INT32 param4, HRESULT &hr ) { int i; UINT32 delay = 1000000 / param4 ; INT32 resMax=0; BYTE *buffer = param1.GetBuffer() + param2; INT32 value; DA_CHANNEL channel = (DA_CHANNEL)param0; //delay = delay+(delay/4); //if ((mask_channel & (1<<param0) )==0) // Initialize one time { UINT32 size=0; INT32 precisions[1]; if (DA_GetAvailablePrecisionsForChannel(channel,precisions,size)== FALSE) { hr = CLR_E_INVALID_OPERATION; return; } if (DA_Initialize(channel,precisions[0])== FALSE) { hr = CLR_E_INVALID_OPERATION; return; } for (i=0; i< precisions[0]; i++) { resMax = (resMax<<1) | 1; } //mask_channel |= (1<<param0); } for(i = 0; i < param3; i++) { value = (resMax * (buffer[i] - ANALOG_OUT_SCALE_VALUE_MIN)) / (ANALOG_OUT_SCALE_VALUE_MAX - ANALOG_OUT_SCALE_VALUE_MIN); DA_Write( channel, value ); HAL_Time_Sleep_MicroSeconds_InterruptEnabled(delay); } }
void PacketRadio::GetPacket( CLR_RT_TypedArray_UINT8 param0, HRESULT &hr ) { int len = param0.GetSize(); memcpy(param0.GetBuffer(), Radio_PacketReceived_RxPacket, len); }
void PacketRadio::Transmit( CLR_RT_TypedArray_UINT8 param0, HRESULT &hr ) { PacketRadio_Send(param0.GetBuffer(), param0.GetSize()); }
void Util::BitmapConvertBPP( CLR_RT_TypedArray_UINT8 bitmap, CLR_RT_TypedArray_UINT8 output, UINT8 bpp, HRESULT &hr ) { hr = OSHW_PAL_Bitmap_ConvertBPP(bitmap.GetBuffer(), bitmap.GetSize(), output.GetBuffer(), output.GetSize(), bpp); }