X-Git-Url: https://git.ao2.it/libam7xxx.git/blobdiff_plain/5e7d217e7f1d40fbfb6bc6375421a21bd5572788..48aab112af60be0f18c0e6fbf1534415af445a8f:/src/am7xxx.h diff --git a/src/am7xxx.h b/src/am7xxx.h index 49510eb..393c53f 100644 --- a/src/am7xxx.h +++ b/src/am7xxx.h @@ -29,7 +29,7 @@ extern "C" { typedef libusb_device_handle *am7xxx_device; typedef enum { - AM7XXX_PACKET_TYPE_INIT = 0x01, + AM7XXX_PACKET_TYPE_DEVINFO = 0x01, AM7XXX_PACKET_TYPE_IMAGE = 0x02, AM7XXX_PACKET_TYPE_POWER = 0x04, AM7XXX_PACKET_TYPE_UNKNOWN = 0x05, @@ -41,10 +41,11 @@ typedef enum { } am7xxx_image_format; typedef enum { - AM7XXX_POWER_OFF = 0, - AM7XXX_POWER_LOW = 1, - AM7XXX_POWER_MID = 2, - AM7XXX_POWER_HIGH = 3, + AM7XXX_POWER_OFF = 0, + AM7XXX_POWER_LOW = 1, + AM7XXX_POWER_MIDDLE = 2, + AM7XXX_POWER_HIGH = 3, + AM7XXX_POWER_TURBO = 4, } am7xxx_power_mode; struct am7xxx_generic_header { @@ -54,6 +55,13 @@ struct am7xxx_generic_header { uint32_t field3; }; +struct am7xxx_devinfo_header { + uint32_t native_width; + uint32_t native_height; + uint32_t unknown0; + uint32_t unknown1; +}; + struct am7xxx_image_header { uint32_t format; uint32_t width; @@ -62,9 +70,9 @@ struct am7xxx_image_header { }; struct am7xxx_power_header { - uint32_t power_low; - uint32_t power_mid; - uint32_t power_high; + uint32_t bit2; + uint32_t bit1; + uint32_t bit0; }; /* @@ -91,6 +99,7 @@ struct am7xxx_header { uint8_t unknown3; union { struct am7xxx_generic_header data; + struct am7xxx_devinfo_header devinfo; struct am7xxx_image_header image; struct am7xxx_power_header power; } header_data; @@ -100,6 +109,12 @@ am7xxx_device am7xxx_init(void); void am7xxx_shutdown(am7xxx_device dev); +int am7xxx_get_device_info(am7xxx_device dev, + unsigned int *native_width, + unsigned int *native_height, + unsigned int *unknown0, + unsigned int *unknown1); + int am7xxx_send_image(am7xxx_device dev, am7xxx_image_format format, unsigned int width, @@ -107,6 +122,14 @@ int am7xxx_send_image(am7xxx_device dev, uint8_t *image, unsigned int size); +/* + * NOTE: if we set the mode to AM7XXX_POWER_OFF we can't turn the + * display on again by using only am7xxx_set_power_mode(). + * + * Remember to mention that when writing the API doc. + */ +int am7xxx_set_power_mode(am7xxx_device dev, am7xxx_power_mode mode); + #ifdef __cplusplus } #endif