123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592 |
- /****************************************************************************
- * apps/include/graphics/ft80x.h
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership. The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- *
- ****************************************************************************/
- #ifndef __APPS_INCLUDE_GRAPHICS_FT80X_H
- #define __APPS_INCLUDE_GRAPHICS_FT80X_H
- /****************************************************************************
- * Included Files
- ****************************************************************************/
- #include <nuttx/config.h>
- #include <sys/types.h>
- #include <stdint.h>
- #ifdef CONFIG_GRAPHICS_FT80X
- /****************************************************************************
- * Pre-processor Definitions
- ****************************************************************************/
- /* Buffer size in units of words (truncating any unaligned bytes) */
- #define FT80X_DL_BUFSIZE (CONFIG_GRAPHICS_FT80X_BUFSIZE & ~3)
- #define FT80X_DL_BUFWORDS (CONFIG_GRAPHICS_FT80X_BUFSIZE >> 2)
- /****************************************************************************
- * Public Types
- ****************************************************************************/
- /* This structure defines the local display list buffer */
- struct ft80x_dlbuffer_s
- {
- bool coproc; /* True: Use co-processor FIFO; false: Use DL memory */
- uint16_t dlsize; /* Total sizeof the display list written to hardware */
- uint16_t dloffset; /* The number display list bytes buffered locally */
- uint32_t dlbuffer[FT80X_DL_BUFWORDS];
- };
- /* Describes touch sample */
- union ft80x_touchpos_u
- {
- uint32_t xy; /* To force 32-bit alignment */
- struct /* Little-endian */
- {
- int16_t x; /* Touch X position (-32768 if no touch) */
- int16_t y; /* Touch Y position (-32768 if no touch) */
- } u;
- };
- struct ft80x_touchinfo_s
- {
- uint8_t tag; /* Touch 0 tag */
- #if defined(CONFIG_LCD_FT800)
- int16_t pressure; /* Touch pressure (32767 if not touched) */
- #endif
- union ft80x_touchpos_u tagpos; /* Position associated with tag */
- #if defined(CONFIG_LCD_FT800) || !defined(CONFIG_LCD_FT801_MULTITOUCH)
- union ft80x_touchpos_u pos; /* Current touch position */
- #else
- union ft80x_touchpos_u pos[4]; /* Current touch position for up to 5 touches */
- #endif
- };
- /****************************************************************************
- * Public Function Prototypes
- ****************************************************************************/
- #ifdef __cplusplus
- #define EXTERN extern "C"
- extern "C"
- {
- #else
- #define EXTERN extern
- #endif
- /****************************************************************************
- * Name: ft80x_dl_start
- *
- * Description:
- * Start a new display list. This function will:
- *
- * 1) Set the total display list size to zero
- * 2) Set the display list buffer offset to zero
- * 3) Reposition the VFS so that subsequent writes will be to the
- * beginning of the hardware display list.
- * 4) Write the CMD_DLSTART command into the local display list buffer
- * (Only for co-processor commands)
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * buffer - An instance of struct ft80x_dlbuffer_s allocated by the caller.
- * coproc - True: Use co-processor FIFO; false: Use DL memory.
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_dl_start(int fd, FAR struct ft80x_dlbuffer_s *buffer, bool coproc);
- /****************************************************************************
- * Name: ft80x_dl_end
- *
- * Description:
- * Terminate the display list. This function will:
- *
- * 1) Add the DISPLAY command to the local display list buffer to finish
- * the last display
- * 2) If using co-processor RAM CMD, add the CMD_SWAP to the DL command
- * list
- * 3) Flush the local display buffer to hardware and set the display list
- * buffer offset to zero.
- * 4) Swap to the newly created display list (DL memory case only).
- * 5) For the case of the co-processor RAM CMD, it will also wait for the
- * FIFO to be emptied.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * buffer - An instance of struct ft80x_dlbuffer_s allocated by the caller.
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_dl_end(int fd, FAR struct ft80x_dlbuffer_s *buffer);
- /****************************************************************************
- * Name: ft80x_dl_data
- *
- * Description:
- * Add data to the display list and increment the display list buffer
- * offset. If the data will not fit into the local display buffer, then
- * the local display buffer will first be flushed to hardware in order to
- * free up space.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * buffer - An instance of struct ft80x_dlbuffer_s allocated by the caller.
- * data - The data to be added to the display list
- * datlen - The length of the data to be added to the display list. If
- * this is not an even multiple of 4 bytes, then the actual length
- * will be padded with zero bytes to achieve alignment.
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_dl_data(int fd, FAR struct ft80x_dlbuffer_s *buffer,
- FAR const void *data, size_t datlen);
- /****************************************************************************
- * Name: ft80x_dl_string
- *
- * Description:
- * Add the string along with its NUL terminator to the display list and
- * increment the display list buffer offset. If the length of the string
- * with its NUL terminator is not an even multiple of 4 bytes, then the
- * actual length will be padded with zero bytes to achieve alignment.
- *
- * If the data will not fit into the local display buffer, then the local
- * display buffer will first be flushed to hardware in order to free up
- * space.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * buffer - An instance of struct ft80x_dlbuffer_s allocated by the caller.
- * str - The string to be added to the display list. If NUL, then a
- * NUL string will be added to the display list.
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_dl_string(int fd, FAR struct ft80x_dlbuffer_s *buffer,
- FAR const char *str);
- /****************************************************************************
- * Name: ft80x_dl_flush
- *
- * Description:
- * Flush the current contents of the local local display list buffer to
- * hardware and reset the local display list buffer offset to zero.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * buffer - An instance of struct ft80x_dlbuffer_s allocated by the caller.
- * wait - True: wait until data has been consumed by the co-processor
- * (only for co-processor destination); false: Send to hardware
- * and return immediately.
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_dl_flush(int fd, FAR struct ft80x_dlbuffer_s *buffer, bool wait);
- /****************************************************************************
- * Name: ft80x_dl_create
- *
- * Description:
- * For simple display lists, this function combines all functionality into
- * a single combined. This function does the following:
- *
- * 1) Calls ft80x_dl_dlstart() to initialize the display list.
- * 2) Calls ft80x_dl_data() to transfer the simple display list
- * 3) Calls ft80x_dl_end() to complete the display list
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * buffer - An instance of struct ft80x_dlbuffer_s allocated by the caller.
- * data - Pointer to a uint32_t array containing the simple display list
- * nwords - The number of 32-bit words in the array.
- * coproc - True: Use co-processor FIFO; false: Use DL memory.
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_dl_create(int fd, FAR struct ft80x_dlbuffer_s *buffer,
- FAR const uint32_t *cmds, unsigned int nwords,
- bool coproc);
- /****************************************************************************
- * Name: ft80x_coproc_send
- *
- * Description:
- * Send commands to the co-processor via the CMD RAM FIFO. This function
- * will not return until the command has been consumed by the co-processor.
- *
- * NOTE: This command is not appropriate use while a display is being
- * formed. It is will mess up the CMD RAM FIFO offsets managed by the
- * display list logic.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * cmds - A list of 32-bit commands to be sent.
- * ncmds - The number of commands in the list.
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_coproc_send(int fd, FAR const uint32_t *cmds, size_t ncmds);
- /****************************************************************************
- * Name: ft80x_coproc_waitlogo
- *
- * Description:
- * Wait for the logo animation to complete. The logo command causes the
- * co-processor engine to play back a short animation of the FTDI logo.
- * During logo playback the MCU should not access any FT800 resources.
- * After 2.5 seconds have elapsed, the co-processor engine writes zero to
- * REG_CMD_READ and REG_CMD_WRITE, and starts waiting for commands. After
- * this command is complete, the MCU shall write the next command to the
- * starting address of RAM_CMD.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_coproc_waitlogo(int fd);
- /****************************************************************************
- * Name: ft80x_ramg_write
- *
- * Description:
- * Write to graphics memory
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * offset - Offset in graphics memory to write to (dest)
- * data - Pointer to a data to be written (src)
- * nbytes - The number of bytes to write to graphics memory.
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_ramg_write(int fd, unsigned int offset, FAR const void *data,
- unsigned int nbytes);
- /****************************************************************************
- * Name: ft80x_touch_gettransform
- *
- * Description:
- * Read the touch transform matrix
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * matrix - The location to return the transform matrix
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_touch_gettransform(int fd, FAR uint32_t matrix[6]);
- /****************************************************************************
- * Name: ft80x_touch_tag
- *
- * Description:
- * Read the current touch tag. The touch tag is an 8-bit value
- * identifying the specific graphics object on the screen that is being
- * touched. The value zero indicates that there is no graphic object being
- * touched.
- *
- * Only a single touch can be queried. For the FT801 in "extended",
- * multi-touch mode, this value indicates only the tag associated with
- * touch 0.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- *
- * Returned Value:
- * A value of 1-255 is returned if a graphics object is touched. Zero is
- * returned if no graphics object is touched. A negated errno value on
- * failure.
- *
- ****************************************************************************/
- int ft80x_touch_tag(int fd);
- /****************************************************************************
- * Name: ft80x_touch_waittag
- *
- * Description:
- * Wait until there is a change in the touch tag.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * oldtag - The previous tag value. This function will return when the
- * current touch tag differs from this value.
- *
- * Returned Value:
- * A value of 1-255 is returned if a graphics object is touched. Zero is
- * returned if no graphics object is touched. A negated errno value on
- * failure.
- *
- ****************************************************************************/
- int ft80x_touch_waittag(int fd, uint8_t oldtag);
- /****************************************************************************
- * Name: ft80x_touch_info
- *
- * Description:
- * Return the current touch tag and touch position information.
- *
- * For the FT801 in "extended", multi-touch mode, the tag value indicates
- * only the tag associated with touch 0.
- *
- * Touch positions of -32768 indicate that no touch is detected.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * info - Location in which to return the touch information
- *
- * Returned Value:
- * A value of 1-255 is returned if a graphics object is touched. Zero is
- * returned if no graphics object is touched. A negated errno value on
- * failure.
- *
- ****************************************************************************/
- int ft80x_touch_info(int fd, FAR struct ft80x_touchinfo_s *info);
- /****************************************************************************
- * Name: ft80x_audio_enable
- *
- * Description:
- * Play an short sound effect. If there is a audio amplifier on board
- * (such as TPA6205A or LM4864), then there may also be an active low
- * audio shutdown output. That output is controlled by this interface.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the
- * caller with write access.
- * enable - True: Enabled the audio amplifier; false: disable
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_audio_enable(int fd, bool enable);
- /****************************************************************************
- * Name: ft80x_audio_playsound
- *
- * Description:
- * Play an short sound effect.
- *
- * NOTE: It may be necessary to enable the audio amplifier with
- * ft80x_audio_enable() prior to calling this function.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the
- * caller with write access.
- * effect - The sound effect to use (see FT80X_EFFECT_* definitions).
- * pitch - Pitch associated with the sound effect (see FT80X_NOTE_*
- * definitions). May be zero if there is no pitch associated
- * with the effect.
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_audio_playsound(int fd, uint16_t effect, uint16_t pitch);
- /****************************************************************************
- * Name: ft80x_audio_playfile
- *
- * Description:
- * Play an audio file. Audio files must consist of raw sample data.
- *
- * NOTE: It may be necessary to enable the audio amplifier with
- * ft80x_audio_enable() prior to calling this function.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the
- * caller with write access.
- * buffer - An instance of struct ft80x_dlbuffer_s allocated by the
- * caller.
- * filepath - Absolute path to the audio file
- * format - Audio format. One of:
- *
- * AUDIO_FORMAT_LINEAR Linear Sample format
- * AUDIO_FORMAT_ULAW uLaw Sample format
- * AUDIO_FORMAT_ADPCM 4-bit IMA ADPCM Sample format
- *
- * frequency - Audio sample frequency (<65,536)
- * volume - Playback volume (0=mute; 255=max)
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_audio_playfile(int fd, FAR struct ft80x_dlbuffer_s *buffer,
- FAR const char *filepath, uint8_t format,
- uint16_t frequency, uint8_t volume);
- /****************************************************************************
- * Name: ft80x_backlight_set
- *
- * Description:
- * Set the backlight intensity via the PWM duty.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * duty - The new backlight duty (as a percentage 0..100)
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_backlight_set(int fd, uint8_t duty);
- /****************************************************************************
- * Name: ft80x_backlight_fade
- *
- * Description:
- * Change the backlight intensity with a controllable fade.
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * duty - The terminal duty (as a percentage 0..100)
- * delay - The duration of the fade in milliseconds (10..16700).
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_backlight_fade(int fd, uint8_t duty, uint16_t delay);
- /****************************************************************************
- * Name: ft80x_gpio_configure
- *
- * Description:
- * Configure an FT80x GPIO pin
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * gpio - Identifies the GPIO pin {0,1}
- * dir - Direction: 0=input, 1=output
- * drive - Common output drive strength for GPIO 0 and 1 (see
- * FT80X_GPIO_DRIVE_* definitions). Default is 4mA.
- * value - Initial value for output pins
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_gpio_configure(int fd, uint8_t gpio, uint8_t dir, uint8_t drive,
- bool value);
- /****************************************************************************
- * Name: ft80x_gpio_write
- *
- * Description:
- * Write a value to a pin configured for output
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * gpio - Identifies the GPIO pin {0,1}
- * value - True: high, false: low
- *
- * Returned Value:
- * Zero (OK) on success. A negated errno value on failure.
- *
- ****************************************************************************/
- int ft80x_gpio_write(int fd, uint8_t gpio, bool value);
- /****************************************************************************
- * Name: ft80x_gpio_read
- *
- * Description:
- * Read the value from a pin configured for input
- *
- * Input Parameters:
- * fd - The file descriptor of the FT80x device. Opened by the caller
- * with write access.
- * gpio - Identifies the GPIO pin {0,1}
- *
- * Returned Value:
- * True: high, false: low
- *
- ****************************************************************************/
- bool ft80x_gpio_read(int fd, uint8_t gpio);
- #undef EXTERN
- #ifdef __cplusplus
- }
- #endif
- #endif /* CONFIG_GRAPHICS_FT80X */
- #endif /* __APPS_INCLUDE_GRAPHICS_FT80X_H */
|