Hello,
So the development team have informed me that it is actually possible to emulate two screens at once.
They have provided the below initialization code:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
BT8XXEMU_EmulatorParameters params;
BT8XXEMU_defaults(BT8XXEMU_VERSION_API, ¶ms,
#if defined(BT815EMU_MODE)
BT8XXEMU_EmulatorBT815
#elif defined(FT810EMU_MODE)
BT8XXEMU_EmulatorFT810
#else
BT8XXEMU_EmulatorFT801
#endif
);
params.Flags =
BT8XXEMU_EmulatorEnableKeyboard
| BT8XXEMU_EmulatorEnableMouse
| BT8XXEMU_EmulatorEnableAudio
| BT8XXEMU_EmulatorEnableDebugShortkeys
| BT8XXEMU_EmulatorEnableCoprocessor
| BT8XXEMU_EmulatorEnableGraphicsMultithread
| BT8XXEMU_EmulatorEnableStdOut
| BT8XXEMU_EmulatorEnableMainPerformance
;
params.UserContext = this;
#if defined(BT815EMU_MODE)
params.Flash = flash;
#endif
BT8XXEMU_run(BT8XXEMU_VERSION_API, &emulator, ¶ms);
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
More code to implement the read/write EVE by passing the pointers of different instances:
void swrbegin(size_t address)
{
BT8XXEMU_chipSelect(emulator, 1);
BT8XXEMU_transfer(emulator, (2 << 6) | ((address >> 16) & 0x3F));
BT8XXEMU_transfer(emulator, (address >> 8) & 0xFF);
BT8XXEMU_transfer(emulator, address & 0xFF);
// BT8XXEMU_transfer(0x00);
}
void swr8(uint8_t value)
{
BT8XXEMU_transfer(emulator, value);
}
void swr16(uint16_t value)
{
BT8XXEMU_transfer(emulator, value & 0xFF);
BT8XXEMU_transfer(emulator, (value >> 8) & 0xFF);
}
void swr32(uint32_t value)
{
BT8XXEMU_transfer(emulator, value & 0xFF);
BT8XXEMU_transfer(emulator, (value >> 8) & 0xFF);
BT8XXEMU_transfer(emulator, (value >> 16) & 0xFF);
BT8XXEMU_transfer(emulator, (value >> 24) & 0xFF);
}
void swrend()
{
BT8XXEMU_chipSelect(emulator, 0);
}
void wr32(size_t address, uint32_t value)
{
swrbegin(address);
swr32(value);
swrend();
}
uint32_t rd32(size_t address)
{
BT8XXEMU_chipSelect(emulator, 1);
BT8XXEMU_transfer(emulator, (address >> 16) & 0x3F);
BT8XXEMU_transfer(emulator, (address >> 8) & 0xFF);
BT8XXEMU_transfer(emulator, address & 0xFF);
BT8XXEMU_transfer(emulator, 0x00);
uint32_t value;
value = BT8XXEMU_transfer(emulator, 0);
value |= BT8XXEMU_transfer(emulator, 0) << 8;
value |= BT8XXEMU_transfer(emulator, 0) << 16;
value |= BT8XXEMU_transfer(emulator, 0) << 24;
BT8XXEMU_chipSelect(emulator, 0);
return value;
}
Best Regards,
FTDI Community