Hexiwear OLED Display Driver
Dependents: Hexi_OLED_TextImage_Example Hexi_OLED_Text_Example Hexi_OLED_Image_Example security-console-app ... more
Diff: Hexi_OLED_SSD1351.cpp
- Revision:
- 7:9961c525e249
- Parent:
- 6:0060ffa3f4dc
- Child:
- 8:ae5fad429790
--- a/Hexi_OLED_SSD1351.cpp Fri Aug 26 19:56:07 2016 +0000
+++ b/Hexi_OLED_SSD1351.cpp Fri Aug 26 22:54:49 2016 +0000
@@ -170,35 +170,31 @@
{
- uint16_t* arrayPtr = (uint16_t*)dataToSend;
+ uint16_t* arrayPtr = (uint16_t*)dataToSend;
- for( uint32_t i = 0; i < dataSize/2; i++ )
- {
- arrayPtr[i] &= colorMask;
- }
+ for( uint32_t i = 0; i < dataSize/2; i++ )
+ {
+ arrayPtr[i] &= colorMask;
+ }
- this->SendCmd( OLED_CMD_WRITERAM, CMD_BYTE );
+ SendCmd( OLED_CMD_WRITERAM, CMD_BYTE );
-
- // sending data -> set DC pin
-
+ /* sending data -> set DC pin */
dc = 1;
cs = 0 ;
+ const uint8_t*
+ /* traversing pointer */
+ bufPtr = dataToSend;
- const uint8_t*
- // traversing pointer
- bufPtr = dataToSend;
-
- for ( uint32_t i = 0; i < dataSize; i++)
- {
- spi.write(*bufPtr);
- bufPtr += 1;
- }
+ for ( uint32_t i = 0; i < dataSize; i++)
+ {
+ spi.write(*bufPtr);
+ bufPtr += 1;
+ }
-
cs = 1;
}
@@ -226,7 +222,7 @@
SetDynamicArea( &boxArea );
- // helper pointer
+ /* helper pointer */
uint8_t*
boxBuf = (uint8_t*)oled_dynamic_area.areaBuffer;
@@ -236,7 +232,7 @@
return OLED_STATUS_ERROR;
}
- // check the bounds
+ /* check the bounds */
if AreCoordsNotValid( xCrd, yCrd, width, height )
{
status = OLED_STATUS_INIT_ERROR;
@@ -244,7 +240,7 @@
else
{
- /** fill the buffer with color */
+ /* fill the buffer with color */
for ( uint16_t i = 0; i < boxSize; i++ )
{
@@ -252,9 +248,9 @@
boxBuf[ 2*i + 1 ] = color;
}
- /** set the locations */
+ /* set the locations */
- // adjust for the offset
+ /* adjust for the offset */
OLED_AdjustColumnOffset(xCrd);
OLED_AdjustRowOffset(yCrd);
@@ -263,12 +259,10 @@
SendCmd( xCrd + (width-1), DATA_BYTE );
SendCmd( OLED_CMD_SET_ROW, CMD_BYTE );
SendCmd( yCrd, DATA_BYTE );
- SendCmd( yCrd + (height-1), DATA_BYTE );
+ SendCmd( yCrd + (height-1), DATA_BYTE );
-
- // fill the GRAM
+ /* fill the GRAM */
SendData( (uint8_t*)boxBuf, boxSize*OLED_BYTES_PER_PIXEL );
-
DestroyDynamicArea();
}
@@ -283,17 +277,17 @@
*/
void SSD1351::FillScreen( uint16_t color )
{
- /** fill the screen buffer with color */
+ /* fill the screen buffer with color */
for ( uint16_t i = 0; i < ( OLED_SCREEN_WIDTH * OLED_SCREEN_HEIGHT ); i++ )
{
screenBuf[ 2*i ] = color >> 8;
screenBuf[ 2*i + 1 ] = color;
}
- /** set the locations */
+ /* set the locations */
SetBorders( 0, 0, OLED_SCREEN_WIDTH, OLED_SCREEN_HEIGHT );
- /** fill GRAM */
+ /* fill GRAM */
SendData( (uint8_t*)screenBuf, OLED_SCREEN_WIDTH * OLED_SCREEN_HEIGHT * OLED_BYTES_PER_PIXEL );
}
@@ -306,7 +300,7 @@
uint16_t color
)
{
- // check the bounds
+ /* check the bounds */
if AreCoordsNotValid( xCrd, yCrd, 1, 1 )
{
return OLED_STATUS_INIT_ERROR;
@@ -314,16 +308,16 @@
else
{
- // set directions
+ /* set directions */
SetBorders( xCrd, yCrd, OLED_SCREEN_WIDTH, OLED_SCREEN_HEIGHT);
uint16_t
- // swap bytes
+ /* swap bytes */
dot = color;
OLED_SwapMe(dot);
- // fill the GRAM
+ /* fill the GRAM */
SendData( (uint8_t*)&dot, 2 );
return OLED_STATUS_SUCCESS;
@@ -351,10 +345,10 @@
switch ( transition )
{
case OLED_TRANSITION_NONE: {
- /** set the locations */
+ /* set the locations */
SetBorders( xCrd, yCrd, width, height);
- // fill the GRAM
+ /* fill the GRAM */
SendData( (const uint8_t*)image, width * height * OLED_BYTES_PER_PIXEL );
break;
}
@@ -391,12 +385,10 @@
uint16_t newColor
)
{
- /** save the new values in intern variables */
+ /* save the new values in intern variables */
selectedFont = newFont;
- // selectedFont_firstChar = newFont[2] + (newFont[3] << 8);
selectedFont_firstChar = newFont[2] | ( (uint16_t)newFont[3] << 8 );
- // selectedFont_lastChar = newFont[4] + (newFont[5] << 8);
selectedFont_lastChar = newFont[4] | ( (uint16_t)newFont[5] << 8 );
selectedFont_height = newFont[6];
selectedFont_color = newColor;
@@ -450,8 +442,13 @@
SetFont( oled_text_properties.font, oled_text_properties.fontColor );
}
-
-
+void SSD1351::GetTextProperties(oled_text_properties_t *textProperties)
+{
+ textProperties->font = oled_text_properties.font;
+ textProperties->fontColor = oled_text_properties.fontColor;
+ textProperties->alignParam = oled_text_properties.alignParam;
+ textProperties->background = oled_text_properties.background;
+}
uint8_t SSD1351::GetTextWidth(const uint8_t* text)
{
@@ -461,10 +458,10 @@
while ( 0 != text[chrCnt] )
{
text_width += *( selectedFont + 8 + (uint16_t)( ( text[chrCnt++] - selectedFont_firstChar ) << 2 ) );
- // make 1px space between chars
+ /* make 1px space between chars */
text_width++;
}
- // remove the final space
+ /* remove the final space */
text_width--;
return text_width;
@@ -488,7 +485,7 @@
chrCnt--;
break;
}
- // make 1px space between chars
+ /* make 1px space between chars */
text_width++;
}
@@ -515,21 +512,19 @@
text_width = GetTextWidth(text);
- /**
+ /*
* set default values, if necessary
*/
text_height = selectedFont_height;
oled_dynamic_area_t textArea;
-
textArea.width = text_width;
textArea.height = text_height;
textArea.xCrd = xCrd;
textArea.yCrd = yCrd;
SetDynamicArea(&textArea);
-
currentChar_y = ( oled_dynamic_area.height - text_height ) >> 1;
switch ( oled_text_properties.alignParam & OLED_TEXT_HALIGN_MASK )
@@ -565,7 +560,7 @@
return OLED_STATUS_ERROR;
}
- /**
+ /*
* write the characters into designated space, one by one
*/
@@ -591,7 +586,7 @@
return OLED_STATUS_ERROR;
}
- // copy data
+ /* copy data */
oled_pixel_t
copyAddr = oled_dynamic_area.areaBuffer + ( currentChar_y * oled_dynamic_area.width + currentChar_x );
@@ -710,7 +705,7 @@
return OLED_STATUS_ERROR;
}
- // copy data
+ /* copy data */
oled_pixel_t
copyAddr = oled_dynamic_area.areaBuffer + ( currentChar_y * oled_dynamic_area.width + currentChar_x );
@@ -746,12 +741,12 @@
}
AddText(text);
- // set the locations
+ /* set the locations */
SetBorders( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height );
- // fill the GRAM
+ /* fill the GRAM */
SendData( (const uint8_t*)oled_dynamic_area.areaBuffer, oled_dynamic_area.width * oled_dynamic_area.height * OLED_BYTES_PER_PIXEL );
-// free( currentTextAreaImage );
+ //free( currentTextAreaImage );
return OLED_STATUS_SUCCESS;
}
@@ -768,7 +763,7 @@
oled_status_t
status = OLED_STATUS_SUCCESS;
- // check the bounds
+ /* check the bounds */
if AreCoordsNotValid( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height )
{
status = OLED_STATUS_INIT_ERROR;
@@ -778,7 +773,7 @@
{
Swap( (oled_pixel_t)oled_dynamic_area.areaBuffer, BMP_SkipHeader(image), oled_dynamic_area.width*oled_dynamic_area.height );
- // update the main screen buffer
+ /* update the main screen buffer */
UpdateBuffer( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height, (const uint8_t *)oled_dynamic_area.areaBuffer );
}
@@ -799,7 +794,7 @@
GetImageDimensions(&image_dynamicArea.width, &image_dynamicArea.height, image);
SetDynamicArea(&image_dynamicArea);
- // check the bounds
+ /* check the bounds */
if AreCoordsNotValid( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height )
{
status = OLED_STATUS_INIT_ERROR;
@@ -809,7 +804,7 @@
{
Swap( (oled_pixel_t)oled_dynamic_area.areaBuffer, BMP_SkipHeader(image), oled_dynamic_area.width*oled_dynamic_area.height );
- // update the main screen buffer
+ /* update the main screen buffer */
UpdateBuffer( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height, (const uint8_t *)oled_dynamic_area.areaBuffer );
}
@@ -826,10 +821,10 @@
status = AddImage( image );
- // set the locations
+ /* set the locations */
SetBorders( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height );
- // fill the GRAM
+ /* fill the GRAM */
SendData( (const uint8_t*)oled_dynamic_area.areaBuffer, oled_dynamic_area.width * oled_dynamic_area.height * OLED_BYTES_PER_PIXEL );
@@ -844,10 +839,10 @@
status = AddImage( image,xCrd,yCrd);
- // set the locations
+ /* set the locations */
SetBorders( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height );
- // fill the GRAM
+ /* fill the GRAM */
SendData( (const uint8_t*)oled_dynamic_area.areaBuffer, oled_dynamic_area.width * oled_dynamic_area.height * OLED_BYTES_PER_PIXEL );
@@ -863,7 +858,7 @@
SendCmd( OLED_CMD_CONTRASTMASTER, CMD_BYTE );
SendCmd( 0xC0 | (0xF-i), DATA_BYTE );
wait_ms(20);
- //OSA_TimeDelay( 20 );
+ // OSA_TimeDelay( 20 );
}
}
@@ -905,7 +900,7 @@
- //Formerly Known as GuiDriver_UpdateScreen
+ /* Formerly Known as GuiDriver_UpdateScreen */
void SSD1351::UpdateBuffer (
int8_t xCrd,
int8_t yCrd,
@@ -914,7 +909,7 @@
const uint8_t* image
)
{
- // copy data
+ /* copy data */
oled_pixel_t
copyAddr = (oled_pixel_t)screenBuf + ( yCrd*OLED_SCREEN_WIDTH + xCrd );
@@ -937,13 +932,13 @@
AddText(text,xCrd,yCrd);
- // set the locations
+ /* set the locations */
SetBorders( oled_dynamic_area.xCrd, oled_dynamic_area.yCrd, oled_dynamic_area.width, oled_dynamic_area.height );
- // fill the GRAM
+ /* fill the GRAM */
SendData( (const uint8_t*)oled_dynamic_area.areaBuffer, oled_dynamic_area.width * oled_dynamic_area.height * OLED_BYTES_PER_PIXEL );
-// free( currentTextAreaImage );
+ //free( currentTextAreaImage );
return OLED_STATUS_SUCCESS;
}
@@ -1101,7 +1096,7 @@
|| ( yCrd_moving < yCrd )
)
{
- // draw full image
+ /* draw full image */
SetBorders( xCrd, yCrd, width, height );
SendData( (const uint8_t*)image, width * height * OLED_BYTES_PER_PIXEL );
break;
@@ -1159,7 +1154,7 @@
SetDynamicArea( &transImageArea );
- // helper pointer
+ /* helper pointer */
oled_pixel_t
transImage = (oled_pixel_t)oled_dynamic_area.areaBuffer;
@@ -1168,8 +1163,7 @@
return OLED_STATUS_INIT_ERROR;
}
- // Transpose( (oled_pixel_t)transImage, (const oled_pixel_t)image, width, height );
- Transpose( transImage,(oled_pixel_t)image, width, height );
+ Transpose( transImage,(oled_pixel_t)image, width, height );
SendCmd( OLED_CMD_SET_REMAP, CMD_BYTE );
SendCmd( OLED_REMAP_SETTINGS | REMAP_VERTICAL_INCREMENT, DATA_BYTE );
@@ -1210,7 +1204,6 @@
SendCmd( OLED_CMD_SET_REMAP, CMD_BYTE );
SendCmd( OLED_REMAP_SETTINGS, DATA_BYTE );
-
DestroyDynamicArea();
return status;
}
@@ -1245,7 +1238,7 @@
SetDynamicArea( &transImageArea );
- // helper pointer
+ /* helper pointer */
oled_pixel_t
transImage = oled_dynamic_area.areaBuffer;
@@ -1254,7 +1247,6 @@
return OLED_STATUS_INIT_ERROR;
}
- //Transpose( (oled_pixel_t)transImage, (const oled_pixel_t)image, width, height );
Transpose(transImage, (oled_pixel_t)image, width, height );
SendCmd( OLED_CMD_SET_REMAP, CMD_BYTE );
@@ -1320,7 +1312,7 @@
)
{
- // adjust for the offset
+ /* adjust for the offset*/
OLED_AdjustColumnOffset(xCrd);
OLED_AdjustRowOffset(yCrd);
@@ -1355,7 +1347,7 @@
const uint8_t*
background = oled_text_properties.background;
- /** copy data */
+ /* copy data */
if (
( NULL == imgBuf )
@@ -1418,7 +1410,7 @@
const uint8_t*
pChBitMap = selectedFont + offset;
- // allocate space for char image
+ /* allocate space for char image */
*chrBuf = (oled_pixel_t)AllocateDynamicArea( currentChar_height * currentChar_width );
if ( NULL == *chrBuf )
@@ -1454,7 +1446,6 @@
}
-
/**
* Add subimage/character to the active image buffer
* @param xOffset offset for the x-coordinate
@@ -1525,10 +1516,3 @@
return OLED_STATUS_SUCCESS;
}
-
-
-
-
-
-
-