mirror of
https://github.com/apache/nuttx.git
synced 2026-05-31 23:40:19 +08:00
Minor OLED-related updates (still doesn't work)
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3522 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
@@ -1701,7 +1701,7 @@
|
|||||||
and a failure to get a CGI page. The consequence can be a very serious bug!
|
and a failure to get a CGI page. The consequence can be a very serious bug!
|
||||||
* configs/lpcxpresso-lpc1768/usbstorage, thttpd, and dhcpd: Add an USB storage,
|
* configs/lpcxpresso-lpc1768/usbstorage, thttpd, and dhcpd: Add an USB storage,
|
||||||
THTTPD web server, and DHCP server configurations for the NXP LPCXpresso board.
|
THTTPD web server, and DHCP server configurations for the NXP LPCXpresso board.
|
||||||
* drivers/lcd/ug-9664hswag01.c and ssd1305.h: Add support for Univision UG-9664SWAG01
|
* drivers/lcd/ug-9664hswag01.c and ssd1305.h: Add support for Univision UG-9664HSWAG01
|
||||||
OLED with Solomon Systech SD1305 LCD controller.
|
OLED with Solomon Systech SD1305 LCD controller.
|
||||||
* configs/lpcxpresso-lpc1668/nx: Add a NX graphics configuration for the LPCXPRESO
|
* configs/lpcxpresso-lpc1668/nx: Add a NX graphics configuration for the LPCXPRESO
|
||||||
board.
|
board.
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<tr align="center" bgcolor="#e4e4e4">
|
<tr align="center" bgcolor="#e4e4e4">
|
||||||
<td>
|
<td>
|
||||||
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
|
<h1><big><font color="#3c34ec"><i>NuttX RTOS</i></font></big></h1>
|
||||||
<p>Last Updated: April 15, 2011</p>
|
<p>Last Updated: April 18, 2011</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -2232,6 +2232,12 @@ nuttx-6.2 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
|||||||
'#if CONFIG_NFILE_DESCRIPTOR > 0' was wrong in both of these files. It should
|
'#if CONFIG_NFILE_DESCRIPTOR > 0' was wrong in both of these files. It should
|
||||||
be '#if CONFIG_NFILE_DESCRIPTORS > 0'. This causes a dup2() failure in THTTPD
|
be '#if CONFIG_NFILE_DESCRIPTORS > 0'. This causes a dup2() failure in THTTPD
|
||||||
and a failure to get a CGI page. The consequence can be a very serious bug!
|
and a failure to get a CGI page. The consequence can be a very serious bug!
|
||||||
|
* configs/lpcxpresso-lpc1768/usbstorage, thttpd, and dhcpd: Add an USB storage,
|
||||||
|
THTTPD web server, and DHCP server configurations for the NXP LPCXpresso board.
|
||||||
|
* drivers/lcd/ug-9664hswag01.c and ssd1305.h: Add support for Univision UG-9664HSWAG01
|
||||||
|
OLED with Solomon Systech SD1305 LCD controller.
|
||||||
|
* configs/lpcxpresso-lpc1668/nx: Add a NX graphics configuration for the LPCXPRESO
|
||||||
|
board.
|
||||||
|
|
||||||
apps-6.1 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
apps-6.1 2011-xx-xx Gregory Nutt <spudmonkey@racsa.co.cr>
|
||||||
|
|
||||||
|
|||||||
@@ -140,7 +140,8 @@ USB Device
|
|||||||
PIO0_3-VBUS_SENSE** 39 P0.5
|
PIO0_3-VBUS_SENSE** 39 P0.5
|
||||||
|
|
||||||
These jumper settings are listed for information only. They are *not*
|
These jumper settings are listed for information only. They are *not*
|
||||||
required for use with NuttX and LPCXpresso.
|
required for use with NuttX and LPCXpresso. The configurable pins
|
||||||
|
(P0.21 and P0.5) are not used!
|
||||||
|
|
||||||
*J14 must be set to permit GPIO control of the USB connect pin
|
*J14 must be set to permit GPIO control of the USB connect pin
|
||||||
**J12 must be set to permit GPIO control of the USB vbus sense pin
|
**J12 must be set to permit GPIO control of the USB vbus sense pin
|
||||||
@@ -163,7 +164,7 @@ USB Device
|
|||||||
P0.5/I2SRX-WS/TD2/CAP2.1 P0[5] | 39 | PIO0_3-VBUS_SENSE VBUS via J12
|
P0.5/I2SRX-WS/TD2/CAP2.1 P0[5] | 39 | PIO0_3-VBUS_SENSE VBUS via J12
|
||||||
------------------------------ --------------+------+------------------- ---------------------------
|
------------------------------ --------------+------+------------------- ---------------------------
|
||||||
|
|
||||||
*P2.9 Connect to a transistor driven USB-D+ pullup on the LPCXpresso board.
|
*P2.9 connects to a transistor driven USB-D+ pullup on the LPCXpresso board.
|
||||||
|
|
||||||
96x64 White OLED with I2C/SPI interface
|
96x64 White OLED with I2C/SPI interface
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
@@ -719,6 +720,9 @@ Where <subdir> is one of the following:
|
|||||||
(for execution from FLASH.) See apps/examples/README.txt for information
|
(for execution from FLASH.) See apps/examples/README.txt for information
|
||||||
about the dhcpd example.
|
about the dhcpd example.
|
||||||
|
|
||||||
|
Jumpers: Nothing special. Use the default base board jumper
|
||||||
|
settings.
|
||||||
|
|
||||||
nsh:
|
nsh:
|
||||||
Configures the NuttShell (nsh) located at apps/examples/nsh. The
|
Configures the NuttShell (nsh) located at apps/examples/nsh. The
|
||||||
Configuration enables both the serial and telnet NSH interfaces.
|
Configuration enables both the serial and telnet NSH interfaces.
|
||||||
@@ -730,9 +734,28 @@ Where <subdir> is one of the following:
|
|||||||
removes the problem. TODO: Tune this frequency to some optimal
|
removes the problem. TODO: Tune this frequency to some optimal
|
||||||
value.
|
value.
|
||||||
|
|
||||||
|
Jumpers: J55 must be set to provide chip select PIO1_11 signal as
|
||||||
|
the SD slot chip select.
|
||||||
|
|
||||||
|
nx:
|
||||||
|
And example using the NuttX graphics system (NX). This example
|
||||||
|
uses the UG-9664HSWAG01 driver.
|
||||||
|
|
||||||
|
Jumpers: There are several jumper settings needed by the OLED.
|
||||||
|
All are the default settings:
|
||||||
|
|
||||||
|
J42: Close to select the SPI interface (Default: closed)
|
||||||
|
J43: Close to support OLED command/data select (Default: closed)
|
||||||
|
J44: Close to allow control of OLED voltage (Default: closed)
|
||||||
|
J45: Close to select SPI clock (Default: closed)
|
||||||
|
J46: Close SPI data input (MOSI) (Default:closed)
|
||||||
|
|
||||||
ostest:
|
ostest:
|
||||||
This configuration directory, performs a simple OS test using
|
This configuration directory, performs a simple OS test using
|
||||||
apps/examples/ostest.
|
apps/examples/ostest.
|
||||||
|
|
||||||
|
Jumpers: Nothing special. Use the default base board jumper
|
||||||
|
settings.
|
||||||
|
|
||||||
thttpd:
|
thttpd:
|
||||||
This builds the THTTPD web server example using the THTTPD and
|
This builds the THTTPD web server example using the THTTPD and
|
||||||
@@ -741,6 +764,9 @@ Where <subdir> is one of the following:
|
|||||||
NOTE: You will need to build the NXFLAT toolchain as described
|
NOTE: You will need to build the NXFLAT toolchain as described
|
||||||
above in order to use this example.
|
above in order to use this example.
|
||||||
|
|
||||||
|
Jumpers: Nothing special. Use the default base board jumper
|
||||||
|
settings.
|
||||||
|
|
||||||
usbstorage:
|
usbstorage:
|
||||||
This configuration directory exercises the USB mass storage
|
This configuration directory exercises the USB mass storage
|
||||||
class driver at apps/examples/usbstorage. See apps/examples/README.txt
|
class driver at apps/examples/usbstorage. See apps/examples/README.txt
|
||||||
@@ -750,3 +776,7 @@ Where <subdir> is one of the following:
|
|||||||
high and the SD will fail. Setting that frequency to 400000
|
high and the SD will fail. Setting that frequency to 400000
|
||||||
removes the problem. TODO: Tune this frequency to some optimal
|
removes the problem. TODO: Tune this frequency to some optimal
|
||||||
value.
|
value.
|
||||||
|
|
||||||
|
Jumpers: J55 must be set to provide chip select PIO1_11 signal as
|
||||||
|
the SD slot chip select.
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ CONFIG_ARCH_CHIP=lpc17xx
|
|||||||
CONFIG_ARCH_CHIP_LPC1768=y
|
CONFIG_ARCH_CHIP_LPC1768=y
|
||||||
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
||||||
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
||||||
CONFIG_BOARD_LOOPSPERMSEC=7982
|
CONFIG_BOARD_LOOPSPERMSEC=8079
|
||||||
CONFIG_DRAM_SIZE=(32*1024)
|
CONFIG_DRAM_SIZE=(32*1024)
|
||||||
CONFIG_DRAM_START=0x10000000
|
CONFIG_DRAM_START=0x10000000
|
||||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ CONFIG_ARCH_CHIP=lpc17xx
|
|||||||
CONFIG_ARCH_CHIP_LPC1768=y
|
CONFIG_ARCH_CHIP_LPC1768=y
|
||||||
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
||||||
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
||||||
CONFIG_BOARD_LOOPSPERMSEC=7982
|
CONFIG_BOARD_LOOPSPERMSEC=8079
|
||||||
CONFIG_DRAM_SIZE=(32*1024)
|
CONFIG_DRAM_SIZE=(32*1024)
|
||||||
CONFIG_DRAM_START=0x10000000
|
CONFIG_DRAM_START=0x10000000
|
||||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ CONFIG_ARCH_CHIP=lpc17xx
|
|||||||
CONFIG_ARCH_CHIP_LPC1768=y
|
CONFIG_ARCH_CHIP_LPC1768=y
|
||||||
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
||||||
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
||||||
CONFIG_BOARD_LOOPSPERMSEC=7982
|
CONFIG_BOARD_LOOPSPERMSEC=8079
|
||||||
CONFIG_DRAM_SIZE=(32*1024)
|
CONFIG_DRAM_SIZE=(32*1024)
|
||||||
CONFIG_DRAM_START=0x10000000
|
CONFIG_DRAM_START=0x10000000
|
||||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ CONFIG_ARCH_CHIP=lpc17xx
|
|||||||
CONFIG_ARCH_CHIP_LPC1768=y
|
CONFIG_ARCH_CHIP_LPC1768=y
|
||||||
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
||||||
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
||||||
CONFIG_BOARD_LOOPSPERMSEC=7982
|
CONFIG_BOARD_LOOPSPERMSEC=8079
|
||||||
CONFIG_DRAM_SIZE=(32*1024)
|
CONFIG_DRAM_SIZE=(32*1024)
|
||||||
CONFIG_DRAM_START=0x10000000
|
CONFIG_DRAM_START=0x10000000
|
||||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ FAR struct lcd_dev_s *up_nxdrvinit(unsigned int devno)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/****************************************************************************
|
||||||
* Name: lpc17_ssp1cmddata
|
* Name: lpc17_ssp1cmddata
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
@@ -172,7 +172,7 @@ FAR struct lcd_dev_s *up_nxdrvinit(unsigned int devno)
|
|||||||
* Returned Value:
|
* Returned Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
******************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int lpc17_ssp1cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd)
|
int lpc17_ssp1cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd)
|
||||||
{
|
{
|
||||||
@@ -203,12 +203,12 @@ int lpc17_ssp1cmddata(FAR struct spi_dev_s *dev, enum spi_dev_e devid, bool cmd)
|
|||||||
* Returned Value:
|
* Returned Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
**************************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#ifdef CONFIG_UG9664HSWAG01_POWER
|
#ifdef CONFIG_UG9664HSWAG01_POWER
|
||||||
void ug_power(unsigned int devno, bool on)
|
void ug_power(unsigned int devno, bool on)
|
||||||
{
|
{
|
||||||
gllvdbg("on: \n", on ? "TRUE" : "FALSE");
|
gllvdbg("power %s\n", on ? "ON" : "OFF");
|
||||||
(void)lpc17_gpiowrite(LPCXPRESSO_OLED_POWER, on);
|
(void)lpc17_gpiowrite(LPCXPRESSO_OLED_POWER, on);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ CONFIG_ARCH_CHIP=lpc17xx
|
|||||||
CONFIG_ARCH_CHIP_LPC1768=y
|
CONFIG_ARCH_CHIP_LPC1768=y
|
||||||
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
||||||
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
||||||
CONFIG_BOARD_LOOPSPERMSEC=7982
|
CONFIG_BOARD_LOOPSPERMSEC=8079
|
||||||
CONFIG_DRAM_SIZE=(32*1024)
|
CONFIG_DRAM_SIZE=(32*1024)
|
||||||
CONFIG_DRAM_START=0x10000000
|
CONFIG_DRAM_START=0x10000000
|
||||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ CONFIG_ARCH_CHIP=lpc17xx
|
|||||||
CONFIG_ARCH_CHIP_LPC1768=y
|
CONFIG_ARCH_CHIP_LPC1768=y
|
||||||
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
CONFIG_ARCH_BOARD=lpcxpresso-lpc1768
|
||||||
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
CONFIG_ARCH_BOARD_LPCXPRESSO=y
|
||||||
CONFIG_BOARD_LOOPSPERMSEC=7982
|
CONFIG_BOARD_LOOPSPERMSEC=8079
|
||||||
CONFIG_DRAM_SIZE=(32*1024)
|
CONFIG_DRAM_SIZE=(32*1024)
|
||||||
CONFIG_DRAM_START=0x10000000
|
CONFIG_DRAM_START=0x10000000
|
||||||
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
CONFIG_DRAM_END=(CONFIG_DRAM_START+CONFIG_DRAM_SIZE)
|
||||||
|
|||||||
@@ -189,7 +189,7 @@
|
|||||||
|
|
||||||
/* The size of the shadow frame buffer */
|
/* The size of the shadow frame buffer */
|
||||||
|
|
||||||
#define UG_FBSIZE (UG_XRES * (UG_XRES >> 3))
|
#define UG_FBSIZE (UG_STRIDE * UG_YRES)
|
||||||
|
|
||||||
/* Debug ******************************************************************************/
|
/* Debug ******************************************************************************/
|
||||||
|
|
||||||
@@ -215,14 +215,14 @@ struct ug_dev_s
|
|||||||
|
|
||||||
FAR struct spi_dev_s *spi;
|
FAR struct spi_dev_s *spi;
|
||||||
uint8_t contrast;
|
uint8_t contrast;
|
||||||
bool powered;
|
uint8_t powered;
|
||||||
|
|
||||||
/* The SSD1305 does not support reading from the display memory in SPI mode.
|
/* The SSD1305 does not support reading from the display memory in SPI mode.
|
||||||
* Since there is 1 BPP and access is byte-by-byte, it is necessary to kee
|
* Since there is 1 BPP and access is byte-by-byte, it is necessary to keep
|
||||||
* a shadow copy of the framebuffer memory.
|
* a shadow copy of the framebuffer memory.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
uint8_t fb[UG_XRES >> 3][UG_YRES];
|
uint8_t fb[UG_FBSIZE];
|
||||||
};
|
};
|
||||||
|
|
||||||
/**************************************************************************************
|
/**************************************************************************************
|
||||||
@@ -291,7 +291,7 @@ static inline void up_clear(FAR struct ug_dev_s *priv);
|
|||||||
* if there are multiple LCD devices, they must each have unique run buffers.
|
* if there are multiple LCD devices, they must each have unique run buffers.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static uint8_t g_runbuffer[UG_XRES >> 8];
|
static uint8_t g_runbuffer[UG_STRIDE];
|
||||||
|
|
||||||
/* This structure describes the overall LCD video controller */
|
/* This structure describes the overall LCD video controller */
|
||||||
|
|
||||||
@@ -340,6 +340,35 @@ static struct ug_dev_s g_ugdev =
|
|||||||
* Private Functions
|
* Private Functions
|
||||||
**************************************************************************************/
|
**************************************************************************************/
|
||||||
|
|
||||||
|
/**************************************************************************************
|
||||||
|
* Name: ug_powerstring
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Convert the power setting to a string.
|
||||||
|
*
|
||||||
|
**************************************************************************************/
|
||||||
|
|
||||||
|
|
||||||
|
static inline FAR const char *ug_powerstring(uint8_t power)
|
||||||
|
{
|
||||||
|
if (power == UG_POWER_OFF)
|
||||||
|
{
|
||||||
|
return "OFF";
|
||||||
|
}
|
||||||
|
else if (power == UG_POWER_DIM)
|
||||||
|
{
|
||||||
|
return "DIM";
|
||||||
|
}
|
||||||
|
else if (power == UG_POWER_ON)
|
||||||
|
{
|
||||||
|
return "ON";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "ERROR";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**************************************************************************************
|
/**************************************************************************************
|
||||||
* Function: ug_select
|
* Function: ug_select
|
||||||
*
|
*
|
||||||
@@ -460,14 +489,14 @@ static int ug_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffer,
|
|||||||
|
|
||||||
/* Verify that some portion of the run remains on the display */
|
/* Verify that some portion of the run remains on the display */
|
||||||
|
|
||||||
if (pixlen <= 0 || row > UG_YRES)
|
if (pixlen <= 0 || row > UG_YRES)
|
||||||
{
|
{
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the shadow frame buffer memory */
|
/* Update the shadow frame buffer memory */
|
||||||
|
|
||||||
fbptr = &priv->fb[0][row];
|
fbptr = &priv->fb[row * UG_STRIDE];
|
||||||
pixelno = 0;
|
pixelno = 0;
|
||||||
endcol = col + pixlen;
|
endcol = col + pixlen;
|
||||||
|
|
||||||
@@ -475,7 +504,7 @@ static int ug_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffer,
|
|||||||
{
|
{
|
||||||
/* Point to the byte to be modified */
|
/* Point to the byte to be modified */
|
||||||
|
|
||||||
FAR uint8_t *ptr = &fbptr[i >> 8];
|
FAR uint8_t *ptr = &fbptr[i >> 3];
|
||||||
|
|
||||||
/* Set or clear the corresponding bit */
|
/* Set or clear the corresponding bit */
|
||||||
|
|
||||||
@@ -555,7 +584,7 @@ static int ug_putrun(fb_coord_t row, fb_coord_t col, FAR const uint8_t *buffer,
|
|||||||
**************************************************************************************/
|
**************************************************************************************/
|
||||||
|
|
||||||
static int ug_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
static int ug_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
||||||
size_t npixels)
|
size_t npixels)
|
||||||
{
|
{
|
||||||
/* Because of this line of code, we will only be able to support a single UG device */
|
/* Because of this line of code, we will only be able to support a single UG device */
|
||||||
|
|
||||||
@@ -577,13 +606,16 @@ static int ug_getrun(fb_coord_t row, fb_coord_t col, FAR uint8_t *buffer,
|
|||||||
pixlen = (int)UG_XRES - (int)col;
|
pixlen = (int)UG_XRES - (int)col;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fetch the data from the shadow frame buffer memory */
|
/* Verify that some portion of the run is actually the display */
|
||||||
|
|
||||||
fbptr = &priv->fb[0][row];
|
if (pixlen <= 0 || row > UG_YRES)
|
||||||
|
{
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Then transfer all of the data */
|
/* Then transfer the display data from the shadow frame buffer memory */
|
||||||
|
|
||||||
fbptr = &priv->fb[0][row];
|
fbptr = &priv->fb[row * UG_STRIDE];
|
||||||
pixelno = 0;
|
pixelno = 0;
|
||||||
endcol = col + pixlen;
|
endcol = col + pixlen;
|
||||||
*buffer = 0;
|
*buffer = 0;
|
||||||
@@ -662,8 +694,8 @@ static int ug_getpower(struct lcd_dev_s *dev)
|
|||||||
{
|
{
|
||||||
struct ug_dev_s *priv = (struct ug_dev_s *)dev;
|
struct ug_dev_s *priv = (struct ug_dev_s *)dev;
|
||||||
DEBUGASSERT(priv);
|
DEBUGASSERT(priv);
|
||||||
gvdbg("powered: %s\n", priv->powered ? "TRUE" : "FALSE");
|
gvdbg("powered: %s\n", ug_powerstring(priv->powered));
|
||||||
return priv->powered ? 1 : 0;
|
return priv->powered;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************************
|
/**************************************************************************************
|
||||||
@@ -679,16 +711,14 @@ static int ug_setpower(struct lcd_dev_s *dev, int power)
|
|||||||
{
|
{
|
||||||
struct ug_dev_s *priv = (struct ug_dev_s *)dev;
|
struct ug_dev_s *priv = (struct ug_dev_s *)dev;
|
||||||
|
|
||||||
gvdbg("power: %s powered: %s\n",
|
|
||||||
power != 0 ? "TRUE" : "FALSE",
|
|
||||||
priv->powered != 0 ? "TRUE" : "FALSE");
|
|
||||||
|
|
||||||
DEBUGASSERT(priv && (unsigned)power <= CONFIG_LCD_MAXPOWER);
|
DEBUGASSERT(priv && (unsigned)power <= CONFIG_LCD_MAXPOWER);
|
||||||
|
gvdbg("power: %s powered: %s\n",
|
||||||
|
ug_powerstring(power), ug_powerstring(priv->powered));
|
||||||
|
|
||||||
/* Select and lock the device */
|
/* Select and lock the device */
|
||||||
|
|
||||||
ug_select(priv->spi);
|
ug_select(priv->spi);
|
||||||
if (power <= 0)
|
if (power <= UG_POWER_OFF)
|
||||||
{
|
{
|
||||||
/* Turn the display off */
|
/* Turn the display off */
|
||||||
|
|
||||||
@@ -697,26 +727,27 @@ static int ug_setpower(struct lcd_dev_s *dev, int power)
|
|||||||
/* Remove power to the device */
|
/* Remove power to the device */
|
||||||
|
|
||||||
ug_power(0, false);
|
ug_power(0, false);
|
||||||
priv->powered = false;
|
priv->powered = UG_POWER_OFF;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Turn the display on, dim or normal */
|
/* Turn the display on, dim or normal */
|
||||||
|
|
||||||
if (power == 1)
|
if (power == UG_POWER_DIM)
|
||||||
{
|
{
|
||||||
(void)SPI_SEND(priv->spi, SSD1305_DISPONDIM); /* Display on, dim mode */
|
(void)SPI_SEND(priv->spi, SSD1305_DISPONDIM); /* Display on, dim mode */
|
||||||
}
|
}
|
||||||
else /* if (power > 1) */
|
else /* if (power > UG_POWER_DIM) */
|
||||||
{
|
{
|
||||||
(void)SPI_SEND(priv->spi, SSD1305_DISPON); /* Display on, normal mode */
|
(void)SPI_SEND(priv->spi, SSD1305_DISPON); /* Display on, normal mode */
|
||||||
|
power = UG_POWER_ON;
|
||||||
}
|
}
|
||||||
(void)SPI_SEND(priv->spi, SSD1305_DISPRAM); /* Resume to RAM content display */
|
(void)SPI_SEND(priv->spi, SSD1305_DISPRAM); /* Resume to RAM content display */
|
||||||
|
|
||||||
/* Restore power to the device */
|
/* Restore power to the device */
|
||||||
|
|
||||||
ug_power(0, true);
|
ug_power(0, true);
|
||||||
priv->powered = true;
|
priv->powered = power;
|
||||||
}
|
}
|
||||||
ug_deselect(priv->spi);
|
ug_deselect(priv->spi);
|
||||||
|
|
||||||
@@ -823,7 +854,7 @@ static inline void up_clear(FAR struct ug_dev_s *priv)
|
|||||||
|
|
||||||
for (j = 0; j < 8; j++, row++)
|
for (j = 0; j < 8; j++, row++)
|
||||||
{
|
{
|
||||||
(void)SPI_SNDBLOCK(priv->spi, &priv->fb[0][row], UG_XRES >> 3);
|
(void)SPI_SNDBLOCK(priv->spi, &priv->fb[row * UG_STRIDE], UG_STRIDE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -837,12 +868,23 @@ static inline void up_clear(FAR struct ug_dev_s *priv)
|
|||||||
**************************************************************************************/
|
**************************************************************************************/
|
||||||
|
|
||||||
/**************************************************************************************
|
/**************************************************************************************
|
||||||
* Name: up_oledinitialize
|
* Name: ug_initialize
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Initialize the LCD video hardware. The initial state of the LCD is fully
|
* Initialize the UG-9664HSWAG01 video hardware. The initial state of the
|
||||||
* initialized, display memory cleared, and the LCD ready to use, but with the power
|
* OLED is fully initialized, display memory cleared, and the OLED ready to
|
||||||
* setting at 0 (full off).
|
* use, but with the power setting at 0 (full off == sleep mode).
|
||||||
|
*
|
||||||
|
* Input Parameters:
|
||||||
|
*
|
||||||
|
* spi - A reference to the SPI driver instance.
|
||||||
|
* devno - A value in the range of 0 through CONFIG_UG9664HSWAG01_NINTERFACES-1.
|
||||||
|
* This allows support for multiple OLED devices.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
*
|
||||||
|
* On success, this function returns a reference to the LCD object for the specified
|
||||||
|
* OLED. NULL is returned on any failure.
|
||||||
*
|
*
|
||||||
**************************************************************************************/
|
**************************************************************************************/
|
||||||
|
|
||||||
|
|||||||
@@ -105,21 +105,21 @@ extern "C" {
|
|||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Initialize the UG-9664HSWAG01 video hardware. The initial state of the
|
* Initialize the UG-9664HSWAG01 video hardware. The initial state of the
|
||||||
* OLED is fully initialized, display memory cleared, and the OLED ready to
|
* OLED is fully initialized, display memory cleared, and the OLED ready
|
||||||
* use, but with the power setting at 0 (full off == sleep mode).
|
* to use, but with the power setting at 0 (full off == sleep mode).
|
||||||
*
|
*
|
||||||
* Input Parameters:
|
* Input Parameters:
|
||||||
*
|
*
|
||||||
* spi - A reference to the SPI driver instance.
|
* spi - A reference to the SPI driver instance.
|
||||||
* devno - A value in the range of 0 throuh CONFIG_UG9664HSWAG01_NINTERFACES-1.
|
* devno - A value in the range of 0 through CONFIG_UG9664HSWAG01_NINTERFACES-1.
|
||||||
* This allows support for multiple OLED devices.
|
* This allows support for multiple OLED devices.
|
||||||
*
|
*
|
||||||
* Returned Value:
|
* Returned Value:
|
||||||
*
|
*
|
||||||
* On success, this function returns a reference to the LCD object for the specified
|
* On success, this function returns a reference to the LCD object for
|
||||||
* OLED. NULL is returned on any failure.
|
* the specified OLED. NULL is returned on any failure.
|
||||||
*
|
*
|
||||||
**************************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
struct lcd_dev_s; /* see nuttx/lcd.h */
|
struct lcd_dev_s; /* see nuttx/lcd.h */
|
||||||
struct spi_dev_s; /* see nuttx/spi.h */
|
struct spi_dev_s; /* see nuttx/spi.h */
|
||||||
|
|||||||
Reference in New Issue
Block a user