General Category > Discussion - EVE

CMD_GETMATRIX

<< < (2/2)

Rudolph:
Hello,

my implementation for my V5 library is this now:


--- Code: ---void EVE_cmd_getmatrix(int32_t *get_a, int32_t *get_b, int32_t *get_c, int32_t *get_d, int32_t *get_e, int32_t *get_f)
{
if(!cmd_burst)
{
uint16_t cmdoffset;

EVE_start_command(CMD_GETMATRIX);

spi_transmit(0);
spi_transmit(0);
spi_transmit(0);
spi_transmit(0);

spi_transmit(0);
spi_transmit(0);
spi_transmit(0);
spi_transmit(0);

spi_transmit(0);
spi_transmit(0);
spi_transmit(0);
spi_transmit(0);

spi_transmit(0);
spi_transmit(0);
spi_transmit(0);
spi_transmit(0);

spi_transmit(0);
spi_transmit(0);
spi_transmit(0);
spi_transmit(0);

spi_transmit(0);
spi_transmit(0);
spi_transmit(0);
spi_transmit(0);

EVE_cs_clear();
while (EVE_busy());
cmdoffset = EVE_memRead16(REG_CMD_WRITE);  /* read the graphics processor write pointer */

if(get_f)
{
*get_f = EVE_memRead32(EVE_RAM_CMD + ((cmdoffset - 4) & 0xfff));
}
if(get_e)
{
*get_e = EVE_memRead32(EVE_RAM_CMD + ((cmdoffset - 8) & 0xfff));
}
if(get_d)
{
*get_d = EVE_memRead32(EVE_RAM_CMD + ((cmdoffset - 12) & 0xfff));
}
if(get_c)
{
*get_c = EVE_memRead32(EVE_RAM_CMD + ((cmdoffset - 16) & 0xfff));
}
if(get_b)
{
*get_b = EVE_memRead32(EVE_RAM_CMD + ((cmdoffset - 20) & 0xfff));
}
if(get_a)
{
*get_a = EVE_memRead32(EVE_RAM_CMD + ((cmdoffset - 24) & 0xfff));
}
}
}

--- End code ---

I used to write the data to EVE_RAM_CMD + offset and REG_CMD_WRITE at the end of an command.
But now I have removed the support for FT80x entirely and only use REG_CMDB_WRITE.
This has two implications for this command.
The first is that the offset can not be stored anymore before writing the dummy bytes as there is no offset.
The second is that this function can not skip writing the dummy bytes anymore by just writing the correct offset value to REG_CMD_WRITE.

I went for providing individual pointers in order to to have it consistent with other functions that return two or more parameters like CMD_GETPROPS: void EVE_cmd_getprops(uint32_t *pointer, uint32_t *width, uint32_t *height)

Apart from consistency, this way parameters can be skipped: EVE_cmd_getprops(0, &width, &height);

Navigation

[0] Message Index

[*] Previous page

Go to full version