Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: RA8875.h
- Revision:
- 79:544eb4964795
- Parent:
- 78:faf49c381591
- Child:
- 81:01da2e34283d
--- a/RA8875.h Sun Dec 28 03:14:35 2014 +0000
+++ b/RA8875.h Sun Dec 28 19:55:16 2014 +0000
@@ -67,7 +67,7 @@
// What better place for some test code than in here and the companion
// .cpp file. See also the bottom of this file.
-#define TESTENABLE
+//#define TESTENABLE
/// DOS colors - slightly color enhanced
#define Black (color_t)(RGB(0,0,0))
@@ -121,6 +121,7 @@
///
/// int main()
/// {
+/// lcd.init(480,272,16);
/// lcd.printf("printing 3 x 2 = %d", 3*2);
/// lcd.circle( 400,25, 25, BrightRed);
/// lcd.fillcircle( 400,25, 15, RGB(128,255,128));
@@ -223,6 +224,7 @@
///
/// int main()
/// {
+ /// lcd.init(true,255,480,272,16); // powerup, backlight full, w x h x c
/// lcd.printf("printing 3 x 2 = %d", 3*2);
/// lcd.circle(400,25, 25, BrightRed);
/// }
@@ -245,6 +247,29 @@
// at startup, and not at runtime.
//~RA8875();
+ /// Initialize the driver.
+ ///
+ /// @param[in] power defines if the display should be left in the power-on or off state.
+ /// If power is true (on), the backlight is set to 100%.
+ /// @param[in] width in pixels to configure the display for.
+ /// @param[in] height in pixels to configure the display for.
+ /// @param[in] color_bpp can be either 8 or 16, but must be consistent
+ /// with the width and height parameters.
+ /// @returns success/failure code. @see RetCode_t.
+ ///
+ RetCode_t init(bool poweron, int width, int height, int color_bpp);
+
+ /// Get a pointer to the error code.
+ ///
+ /// This method returns a pointer to a text string that matches the
+ /// code. @see RetCode_t.
+ ///
+ /// @param[in] code is the return value from RetCode_t to look up.
+ /// @returns a pointer to the text message representing code. If code
+ /// is not a valid value, then it returns the text for bad_parameter;
+ const char * GetErrorMessage(RetCode_t code);
+
+
/// Select the drawing layer for subsequent commands.
///
/// If the screen configuration is 480 x 272, or if it is 800 x 480
@@ -409,34 +434,40 @@
RetCode_t TouchPanelInit(uint8_t bTpEnable, uint8_t bTpAutoManual, uint8_t bTpDebounce,
uint8_t bTpManualMode, uint8_t bTpAdcClkDiv, uint8_t bTpAdcSampleTime);
- /// Poll the TouchPanel and on a touch event return the filtered x, y coordinates.
+ /// Poll the TouchPanel and on a touch event return the a to d filtered x, y coordinates.
///
/// This method reads the touch controller, which has a 10-bit range for each the
- /// x and the y axis. The returned values are not in display (pixel) units.
+ /// x and the y axis.
+ ///
+ /// @note The returned values are not in display (pixel) units but are in analog to
+ /// digital converter units.
///
/// @note This API is usually not needed. @see TouchPanelCalibrate.
- /// @see TouchPanelPoint.
+ /// @see TouchPanelReadable.
///
- /// @param[out] x is the x position where the touch was registered.
- /// @param[out] y is the y position where the touch was registered.
+ /// @param[out] x is the x scale a/d value.
+ /// @param[out] y is the y scale a/d value.
/// @returns true if touch was detected, in which case the x and y values were set.
///
- uint8_t TouchPanelRead(loc_t *x, loc_t *y);
+ bool TouchPanelA2DFiltered(loc_t *x, loc_t *y);
- /// Poll the TouchPanel and on a touch event return the raw x, y coordinates.
+ /// Poll the TouchPanel and on a touch event return the a to d raw x, y coordinates.
///
/// This method reads the touch controller, which has a 10-bit range for each the
/// x and the y axis. A number of samples of the raw data are taken, filtered,
- /// and the results are returned. The returned values are not in display (pixel) units.
+ /// and the results are returned.
///
+ /// @note The returned values are not in display (pixel) units but are in analog to
+ /// digital converter units.
+ ///
/// @note This API is usually not needed. @see TouchPanelCalibrate.
- /// @see TouchPanelPoint.
+ /// @see TouchPanelReadable.
///
- /// @param[out] x is the x position where the touch was registered.
- /// @param[out] y is the y position where the touch was registered.
+ /// @param[out] x is the x scale a/d value.
+ /// @param[out] y is the y scale a/d value.
/// @returns true if touch was detected, in which case the x and y values were set.
///
- uint8_t TouchPanelReadRaw(loc_t *x, loc_t *y);
+ bool TouchPanelA2DRaw(loc_t *x, loc_t *y);
/// Calibrate the touch panel.
///
@@ -448,7 +479,7 @@
/// matrix on the next power cycle. By doing so, it can avoid the
/// need to calibrate on every power cycle.
///
- /// @note The methods "TouchPanelCalibrate", "TouchPanelPoint", and
+ /// @note The methods "TouchPanelCalibrate", "TouchPanelReadable", and
/// indirectly the "TouchPanelSetMatrix" methods are all derived
/// from a program by Carlos E. Vidales. See the copyright note
/// for further details. See also the article
@@ -487,26 +518,52 @@
/// Get the screen calibrated point of touch.
///
/// This method determines if there is a touch and if so it will provide
- /// the screen-relative touch coordinates.
+ /// the screen-relative touch coordinates. This method can be used in
+ /// a manner similar to Serial.readable(), to determine if there was a
+ /// touch and indicate that - but not care about the coordinates. Alternately,
+ /// if a valid pointer to a point_t is provided, then if a touch is detected
+ /// the point_t will be populated with data.
///
/// @code
/// Timer t;
/// t.start();
/// do {
/// point_t point = {0, 0};
- /// if (display.TouchPanelPoint(&point)) {
+ /// if (display.TouchPanelReadable(&point)) {
/// display.pixel(point.x, point.y, Red);
/// }
/// } while (t.read_ms() < 30000);
/// @endcode
///
/// @param[out] touch is the touch point, if a touch is registered.
- /// @returns
- /// - touch: if a touch was registered,
- /// - no_touch: if no touch was detected,
- /// - bad_parameter: if the calibration matrix is not defined.
+ /// @returns true if a touch was registered, and touch is updated.
+ /// @returns false if no touch was detected, or if the calibration matrix is not defined.
+ ///
+ bool TouchPanelReadable(point_t * touch = NULL);
+
+ /// Wait for a touch panel touch and return it.
+ ///
+ /// This method is similar to Serial.getc() in that it will wait for a touch
+ /// and then return. In order to extract the coordinates of the touch, a
+ /// valid pointer to a point_t must be provided.
+ ///
+ /// @note There is no timeout on this function, so its use is not recommended.
///
- RetCode_t TouchPanelPoint(point_t * touch);
+ /// @code
+ /// Timer t;
+ /// t.start();
+ /// do {
+ /// point_t point = {0, 0};
+ /// display.TouchPanelGet(&point);
+ /// display.pixel(point.x, point.y, Red);
+ /// } while (t.read_ms() < 30000);
+ /// @endcode
+ ///
+ /// @param[out] touch is the touch point, if a touch is registered.
+ /// @returns true if a touch was registered, and touch is updated.
+ /// @returns false if no touch was detected, or if the calibration matrix is not defined.
+ ///
+ bool TouchPanelGet(point_t * touch);
/// Set the calibration matrix for the touch panel.
///
@@ -584,7 +641,6 @@
uint8_t longTimeAdjustment = 0,
bool interruptEnable = false, bool wakeupEnable = false);
-
/// Create Key Code definitions for the key matrix.
///
/// This API provides a table of 22 key-code assignments for the matrix of keys.
@@ -1579,22 +1635,6 @@
/// Touch Panel calibration matrix.
tpMatrix_t tpMatrix;
- /// Initialize the chip, which is normally done as part of the
- /// constructor, so not typically called by the user.
- ///
- /// @note This API permits configuration, however it is not [yet]
- /// available to the end user. Be sure the parameters
- /// are consistent with each other - see the RA8875 user
- /// manual.
- ///
- /// @param[in] width in pixels to configure the display for.
- /// @param[in] height in pixels to configure the display for.
- /// @param[in] color_bpp can be either 8 or 16, but must be consistent
- /// with the width and height parameters.
- /// @returns success/failure code. @see RetCode_t.
- ///
- RetCode_t init(int width, int height, int color_bpp);
-
/// Internal function to put a character using the built-in (internal) font engine
///
/// @param[in] is the character to put to the screen.
@@ -1616,7 +1656,7 @@
/// the pin selection is the invert of this.
/// @returns success/failure code. @see RetCode_t.
///
- RetCode_t select(bool chipsel);
+ RetCode_t _select(bool chipsel);
/// Wait while the status register indicates the controller is busy.
///
@@ -1652,7 +1692,7 @@
/// @returns a value read from the port, since SPI is often shift
/// in while shifting out.
///
- unsigned char spiwrite(unsigned char data);
+ unsigned char _spiwrite(unsigned char data);
/// The most primitive - to read a data value to the SPI interface.
///
@@ -1662,7 +1702,7 @@
/// @returns a value read from the port, since SPI is often shift
/// in while shifting out.
///
- unsigned char spiread();
+ unsigned char _spiread();
const uint8_t * pKeyMap;