34#if defined(EVE_MULTI_PLATFORM_TARGET)
36static size_t s_TotalDeviceCount = 0;
37static size_t s_DeviceCountBT8XXEMU = 0;
38static size_t s_DeviceCountMPSSE = 0;
39static size_t s_DeviceCountFT4222 = 0;
41DWORD g_NumDevsD2XX = 0;
51void EVE_HalImpl_BT8XXEMU_initialize();
52void EVE_HalImpl_FT4222_initialize();
53void EVE_HalImpl_MPSSE_initialize();
56 EVE_HalImpl_BT8XXEMU_initialize();
57 EVE_HalImpl_MPSSE_initialize();
58 EVE_HalImpl_FT4222_initialize();
62void EVE_HalImpl_BT8XXEMU_release();
63void EVE_HalImpl_FT4222_release();
64void EVE_HalImpl_MPSSE_release();
67 EVE_HalImpl_FT4222_release();
68 EVE_HalImpl_MPSSE_release();
69 EVE_HalImpl_BT8XXEMU_release();
72size_t EVE_Hal_BT8XXEMU_list();
73size_t EVE_Hal_FT4222_list();
74size_t EVE_Hal_MPSSE_list();
77 s_DeviceCountBT8XXEMU = EVE_Hal_BT8XXEMU_list();
78 s_DeviceCountMPSSE = EVE_Hal_MPSSE_list();
79 s_DeviceCountFT4222 = EVE_Hal_FT4222_list();
80 s_TotalDeviceCount = s_DeviceCountBT8XXEMU + s_DeviceCountMPSSE + s_DeviceCountFT4222;
81 return s_TotalDeviceCount;
84void EVE_Hal_BT8XXEMU_info(
EVE_DeviceInfo *deviceInfo,
size_t deviceIdx);
85void EVE_Hal_FT4222_info(
EVE_DeviceInfo *deviceInfo,
size_t deviceIdx);
86void EVE_Hal_MPSSE_info(
EVE_DeviceInfo *deviceInfo,
size_t deviceIdx);
89 if (deviceIdx < s_DeviceCountBT8XXEMU)
91 EVE_Hal_BT8XXEMU_info(deviceInfo, deviceIdx);
93 else if (deviceIdx < s_DeviceCountBT8XXEMU + s_DeviceCountMPSSE)
95 EVE_Hal_MPSSE_info(deviceInfo, deviceIdx - s_DeviceCountBT8XXEMU);
97 else if (deviceIdx < s_DeviceCountBT8XXEMU + s_DeviceCountMPSSE + s_DeviceCountFT4222)
99 EVE_Hal_FT4222_info(deviceInfo, deviceIdx - s_DeviceCountBT8XXEMU - s_DeviceCountMPSSE);
108bool EVE_Hal_BT8XXEMU_isDevice(
EVE_HalContext *phost,
size_t deviceIdx);
109bool EVE_Hal_FT4222_isDevice(
EVE_HalContext *phost,
size_t deviceIdx);
110bool EVE_Hal_MPSSE_isDevice(
EVE_HalContext *phost,
size_t deviceIdx);
113 if (deviceIdx < s_DeviceCountBT8XXEMU)
115 return EVE_Hal_BT8XXEMU_isDevice(phost, deviceIdx);
117 else if (deviceIdx < s_DeviceCountBT8XXEMU + s_DeviceCountMPSSE)
119 return EVE_Hal_MPSSE_isDevice(phost, deviceIdx - s_DeviceCountBT8XXEMU);
123 return EVE_Hal_FT4222_isDevice(phost, deviceIdx - s_DeviceCountBT8XXEMU - s_DeviceCountMPSSE);
128bool EVE_HalImpl_BT8XXEMU_defaults(
EVE_HalParameters *parameters,
size_t deviceIdx);
129bool EVE_HalImpl_FT4222_defaults(
EVE_HalParameters *parameters,
size_t deviceIdx);
134 if (deviceIdx < s_DeviceCountBT8XXEMU)
136 res = EVE_HalImpl_BT8XXEMU_defaults(parameters, deviceIdx);
139 else if (deviceIdx < s_DeviceCountBT8XXEMU + s_DeviceCountMPSSE)
141 res = EVE_HalImpl_MPSSE_defaults(parameters, deviceIdx - s_DeviceCountBT8XXEMU);
144 else if (deviceIdx < s_DeviceCountBT8XXEMU + s_DeviceCountMPSSE + s_DeviceCountFT4222)
146 res = EVE_HalImpl_FT4222_defaults(parameters, deviceIdx - s_DeviceCountBT8XXEMU - s_DeviceCountMPSSE);
149 else if ((res = EVE_HalImpl_FT4222_defaults(parameters, deviceIdx - s_DeviceCountBT8XXEMU - s_DeviceCountMPSSE)))
153 else if ((res = EVE_HalImpl_MPSSE_defaults(parameters, deviceIdx - s_DeviceCountBT8XXEMU)))
157 else if ((res = EVE_HalImpl_BT8XXEMU_defaults(parameters, deviceIdx)))
171 switch (parameters->Host)
174 res = EVE_HalImpl_BT8XXEMU_open(phost, parameters);
177 res = EVE_HalImpl_FT4222_open(phost, parameters);
180 res = EVE_HalImpl_MPSSE_open(phost, parameters);
186 phost->Host = parameters->Host;
199 EVE_HalImpl_BT8XXEMU_close(phost);
202 EVE_HalImpl_FT4222_close(phost);
205 EVE_HalImpl_MPSSE_close(phost);
221 EVE_HalImpl_BT8XXEMU_idle(phost);
224 EVE_HalImpl_FT4222_idle(phost);
227 EVE_HalImpl_MPSSE_idle(phost);
250 EVE_Hal_BT8XXEMU_startTransfer(phost, rw,
addr);
253 EVE_Hal_FT4222_startTransfer(phost, rw,
addr);
256 EVE_Hal_MPSSE_startTransfer(phost, rw,
addr);
271 EVE_Hal_BT8XXEMU_endTransfer(phost);
274 EVE_Hal_FT4222_endTransfer(phost);
277 EVE_Hal_MPSSE_endTransfer(phost);
292 EVE_Hal_BT8XXEMU_flush(phost);
295 EVE_Hal_FT4222_flush(phost);
298 EVE_Hal_MPSSE_flush(phost);
313 return EVE_Hal_BT8XXEMU_transfer8(phost, value);
315 return EVE_Hal_FT4222_transfer8(phost, value);
317 return EVE_Hal_MPSSE_transfer8(phost, value);
332 return EVE_Hal_BT8XXEMU_transfer16(phost, value);
334 return EVE_Hal_FT4222_transfer16(phost, value);
336 return EVE_Hal_MPSSE_transfer16(phost, value);
351 return EVE_Hal_BT8XXEMU_transfer32(phost, value);
353 return EVE_Hal_FT4222_transfer32(phost, value);
355 return EVE_Hal_MPSSE_transfer32(phost, value);
370 EVE_Hal_BT8XXEMU_transferMem(phost, result,
buffer, size);
373 EVE_Hal_FT4222_transferMem(phost, result,
buffer, size);
376 EVE_Hal_MPSSE_transferMem(phost, result,
buffer, size);
391 EVE_Hal_BT8XXEMU_transferProgMem(phost, result,
buffer, size);
394 EVE_Hal_FT4222_transferProgMem(phost, result,
buffer, size);
397 EVE_Hal_MPSSE_transferProgMem(phost, result,
buffer, size);
412 return EVE_Hal_BT8XXEMU_transferString(phost, str, index, size, padMask);
414 return EVE_Hal_FT4222_transferString(phost, str, index, size, padMask);
416 return EVE_Hal_MPSSE_transferString(phost, str, index, size, padMask);
439 EVE_Hal_BT8XXEMU_hostCommand(phost,
cmd);
442 EVE_Hal_FT4222_hostCommand(phost,
cmd);
445 EVE_Hal_MPSSE_hostCommand(phost,
cmd);
461 EVE_Hal_BT8XXEMU_hostCommandExt3(phost,
cmd);
464 EVE_Hal_FT4222_hostCommandExt3(phost,
cmd);
467 EVE_Hal_MPSSE_hostCommandExt3(phost,
cmd);
483 return EVE_Hal_BT8XXEMU_powerCycle(phost, up);
486 return EVE_Hal_FT4222_powerCycle(phost, up);
489 return EVE_Hal_MPSSE_powerCycle(phost, up);
505 EVE_Hal_BT8XXEMU_setSPI(phost, numchnls, numdummy);
508 EVE_Hal_FT4222_setSPI(phost, numchnls, numdummy);
511 EVE_Hal_MPSSE_setSPI(phost, numchnls, numdummy);
526 EVE_Hal_BT8XXEMU_restoreSPI(phost);
529 EVE_Hal_FT4222_restoreSPI(phost);
532 EVE_Hal_MPSSE_restoreSPI(phost);
547bool EVE_UtilImpl_BT8XXEMU_bootupDisplayGpio(
EVE_HalContext *phost);
555 return EVE_UtilImpl_BT8XXEMU_bootupDisplayGpio(phost);
557 return EVE_UtilImpl_FT4222_bootupDisplayGpio(phost);
559 return EVE_UtilImpl_MPSSE_bootupDisplayGpio(phost);
#define eve_progmem_const
EVE_HAL_EXPORT bool EVE_Hal_powerCycle(EVE_HalContext *phost, bool up)
Toggle PD_N pin of FT800 board for a power cycle.
EVE_HAL_EXPORT uint8_t EVE_Hal_transfer8(EVE_HalContext *phost, uint8_t value)
Write 8 bits to Coprocessor.
EVE_HAL_EXPORT uint16_t EVE_Hal_transfer16(EVE_HalContext *phost, uint16_t value)
Write 2 bytes to Coprocessor.
EVE_HAL_EXPORT bool EVE_Hal_isDevice(EVE_HalContext *phost, size_t deviceIdx)
Check whether the context is the specified device.
EVE_HAL_EXPORT void EVE_Hal_info(EVE_DeviceInfo *deviceInfo, size_t deviceIdx)
Get info of the specified device. Devices of type EVE_HOST_UNKNOWN should be ignored.
EVE_HAL_EXPORT void EVE_Hal_startTransfer(EVE_HalContext *phost, EVE_TRANSFER_T rw, uint32_t addr)
Start data transfer to Coprocessor.
EVE_HAL_EXPORT void EVE_Hal_hostCommand(EVE_HalContext *phost, uint8_t cmd)
Send a host command to Coprocessor.
EVE_HAL_EXPORT void EVE_Hal_setSPI(EVE_HalContext *phost, EVE_SPI_CHANNELS_T numchnls, uint8_t numdummy)
Set number of SPI channel.
EVE_HAL_EXPORT uint32_t EVE_Hal_transferString(EVE_HalContext *phost, const char *str, uint32_t index, uint32_t size, uint32_t padMask)
Transfer a string to EVE platform.
EVE_HAL_EXPORT size_t EVE_Hal_list()
List the available devices.
EVE_HAL_EXPORT void EVE_Hal_transferMem(EVE_HalContext *phost, uint8_t *result, const uint8_t *buffer, uint32_t size)
Transfer (read/write) a block data to Coprocessor.
EVE_HAL_EXPORT void EVE_Hal_transferProgMem(EVE_HalContext *phost, uint8_t *result, eve_progmem_const uint8_t *buffer, uint32_t size)
Transfer a block data from program memory.
EVE_HAL_EXPORT void EVE_Hal_restoreSPI(EVE_HalContext *phost)
EVE_HAL_EXPORT void EVE_Hal_endTransfer(EVE_HalContext *phost)
End data transfer.
EVE_HAL_EXPORT void EVE_Hal_flush(EVE_HalContext *phost)
Flush data to Coprocessor.
EVE_HAL_EXPORT void EVE_Hal_hostCommandExt3(EVE_HalContext *phost, uint32_t cmd)
This API sends a 3byte command to the phost.
EVE_HAL_EXPORT uint32_t EVE_Hal_transfer32(EVE_HalContext *phost, uint32_t value)
Write 4 bytes to Coprocessor.
bool EVE_HalImpl_open(EVE_HalContext *phost, const EVE_HalParameters *parameters)
Opens a new HAL context using the specified parameters.
bool EVE_HalImpl_defaults(EVE_HalParameters *parameters, size_t deviceIdx)
Get the default configuration parameters.
void EVE_HalImpl_close(EVE_HalContext *phost)
Close a HAL context.
void EVE_HalImpl_initialize()
Initialize HAL platform.
bool EVE_UtilImpl_bootupDisplayGpio(EVE_HalContext *phost)
Display GPIO pins.
void EVE_HalImpl_idle(EVE_HalContext *phost)
Idle. Call regularly to update frequently changing internal state.
void EVE_HalImpl_release()
Release HAL platform.
static ft_uint32_t ft_uint8_t * buffer
static ft_void_t ft_uint32_t * cmd