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 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); }
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 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); }