Difference between revisions of "Codec Services"

From 3dbrew
Jump to navigation Jump to search
m (Neobrain moved page Codec Services to CDC Services: This has nothing to do with "codec" stuff at all)
m (Dazzozo moved page CDC Services to Codec Services over redirect: maybe actually look at it first before you make that judgement)

Revision as of 15:12, 25 September 2016

HID Codec "cdc:HID"

Command Header Description
0x00010000 GetData
0x00020000 Initialize
0x00030000 Finalize


The touchscreen is the SPI device number 3, so it uses the 0x10142XXX SPI registers. It is initialized by issuing the following SPI commands:

spi_select_reg(3, 0x67);
spi_offset_mask(3, 0x26, 0x80, 0x80);
spi_select_reg(3, 0x67);
spi_offset_mask(3, 0x24, 0, 0x80);
spi_select_reg(3, 0x67);
spi_offset_mask(3, 0x25, 0x10, 0x3C);

Once the touchscreen is initialized, you can start polling touch data:

u8 raw_touchdata[0x40];
spi_select_reg(3, 0x67);
spi_read_offset(3, 0x26); //The return value of this is checked against "& 2"
spi_select_reg(3, 0xFB);
spi_read_offset_array(3, 1, raw_touchdata, 0x34);

This is the format of the touchdata report:

Offset Width Description
0x00 2*5 Five Touchscreen X Coordinates (big-endian MSB,LSB each. 12 bits number)
0x0A 2*5 Five Touchscreen Y Coordinates (big-endian MSB,LSB each. 12 bits number)
0x20 ?? ??

When the touchscreen is not touched, all the coordinates report 0xFFFF, and since touch coordinates have only 12 bits, you can check if the touchscreen is pressed by checking the 4th bit of the MSB. For example: pendown = !(raw_touchdata[0] & BIT(4))

MIC Codec "cdc:MIC"

Command Header Description

CSN Codec "cdc:CSN"

Command Header Description

DSP Codec "cdc:DSP"

Command Header Description

Legacy Codec "cdc:LGY"

Command Header Description

CHK Codec "cdc:CHK"

Command Header Description