Hexiwear OLED
Fork of Hexi_OLED_SSD1351 by
Hexi_OLED_SSD1351.h
- Committer:
- khuang
- Date:
- 2016-08-18
- Revision:
- 1:3b5be0ee5f0c
- Child:
- 2:fc06b5b5bf6a
File content as of revision 1:3b5be0ee5f0c:
#ifndef HG_OLED_DRIVER #define HG_OLED_DRIVER #include "mbed.h" #include "OLED_types.h" #include "OLED_info.h" class SSD1351{ public: SSD1351(PinName mosi,PinName sclk,PinName pwr, PinName cs,PinName rst, PinName dc); ~SSD1351(); /** * Send the command to OLED * @param self OLED handle * @param cmd OLED command from the datasheet * @param isFirst designate if this is the first byte in the command */ void SendCmd(uint32_t cmd, uint8_t isFirst); /** * Send data to OLED * @param dataToSend data to send to OLED * @param dataSize data-size */ void SendData ( const uint8_t* dataToSend, uint32_t dataSize); /** * draw box on OLED * @param xCrd x-coordinate for box's uper left corner * @param yCrd y-coordinate for box's uper left corner * @param width box's width * @param height box's height * @param color color of the box * @return status flag */ oled_status_t DrawBox ( uint16_t xCrd, uint16_t yCrd, uint16_t width, uint16_t height, uint16_t color ); /** * Fill the entire screen with specified color * @param color color to fill with */ void FillScreen( uint16_t color ); /** * Draw a single pixel * @param xCrd pixel's x coordinate * @param yCrd pixel's y coordinate * @param color pixel's color * @return status flag */ oled_status_t DrawPixel ( int16_t xCrd, int16_t yCrd, uint16_t color ); /** * Draw the whole screen * @param image image to draw * @param xCrd image x-coordinate * @param yCrd image y-coordinate * @param width image width * @param height image height * @param transition transition style for the new image arrival * @return status flag */ oled_status_t DrawScreen ( const uint8_t* image, uint8_t xCrd, uint8_t yCrd, uint8_t width, uint8_t height, oled_transition_t transition ); /** * Set the font to use * @param newFont desired font * @param newColor desired color * @return status flag */ oled_status_t SetFont( const uint8_t* newFont, uint16_t newColor ); /** * Set OLED dynamic area * @param dynamic_area data-structure with desired values */ void SetDynamicArea(oled_dynamic_area_t *dynamic_area); /** * Destroy current OLED dynamic area */ void DestroyDynamicArea(); /** * Set OLED text properties * @param textProperties data-structure with desired properties */ void SetTextProperties(oled_text_properties_t *textProperties); /** * Return the width in [px] required for the given string to be displayed * @param text desired string * @return required text width in [px] */ uint8_t GetTextWidth(const uint8_t* text); /** * Count the characters * @param width text width * @param font text font * @param text given text string * @param length text length * @return character count */ uint8_t CharCount(uint8_t width, const uint8_t* font, const uint8_t* text, uint8_t length); /** * Add text to the main screen buffer at position x,y. * @param text text to add * @param xCrd x-coordinate for the given text * @param yCrd y-coordinate for the given text * @return status flag */ oled_status_t AddText( const uint8_t* text,uint8_t xCrd, uint8_t yCrd ); /** * Add text to the main screen buffer. Used with SetDynamicArea() Function. * @param text text to add * @return status flag */ oled_status_t AddText( const uint8_t* text); /** * Write text on OLED at position x,y. * @param text desired text * @param xCrd x-coordinate for the given text * @param yCrd y-coordinate for the given text */ oled_status_t DrawText ( const uint8_t* text,uint8_t xCrd, uint8_t yCrd ); /** * Write text on OLED at position set in Dynamic Area Field. Used with SetDynamicArea() Function. * @param text desired text * @param x x-coordinate for the given text, set through dynamicArea_t variable * @param y y-coordinate for the given text, set through dynamicArea_t variable * */ oled_status_t DrawText ( const uint8_t* text); /** * Return the dimensions of image * @param width given image's width * @param height given image's height * @param image desired image */ void GetImageDimensions(uint8_t *width, uint8_t *height, const uint8_t* image); /** * Add image to the main screen buffer.Used with SetDynamicArea() Function. * @param image desired image * @return status flag */ oled_status_t AddImage ( const uint8_t* image ); /** * Add image to the main screen buffer at position x,y * @param image desired image * @return status flag */ oled_status_t AddImage ( const uint8_t* image, uint8_t xCrd, uint8_t yCrd ); /** * Draw image, i.e. send image to OLED GRAM.Used with SetDynamicArea() Function. * @param image desired image * @param transition desired transition style for the new image * @return status flag */ oled_status_t DrawImage ( const uint8_t* image ); /** * Draw image, i.e. send image to OLED GRAM at position x,y. * @param image desired image * @param transition desired transition style for the new image * @return status flag */ oled_status_t DrawImage ( const uint8_t* image, uint8_t xCrd, uint8_t yCrd ); /** * Dim OLED screen on */ void DimScreenON(); /** * Return OLED back to full contrast */ void DimScreenOFF(); /** * Swap image's bytes per pixel to obtain the correct color format * @param imgDst desired image * @param imgSrc original image * @param imgSize image's size */ void Swap( oled_pixel_t imgDst, const uint8_t* imgSrc, uint16_t imgSize ); /** * Turn on Power for OLED Display */ void PowerON(); /** * Turn off Power for OLED Display */ void PowerOFF(); /** * update the main screen buffer * with the given image * @param xCrd image x-coordinate * @param yCrd image y-coordinate * @param width image width * @param height image height * @param image image for buffer */ void UpdateBuffer ( uint8_t xCrd, uint8_t yCrd, uint8_t width, uint8_t height, const uint8_t* image ); private: SPI spi; DigitalOut power; DigitalOut cs; DigitalOut rst; DigitalOut dc; const uint8_t* selectedFont; uint8_t isFontInitialized, currentChar_width, currentChar_height, screenBuf[OLED_GRAM_SIZE]; uint16_t selectedFont_color, selectedFont_firstChar, // first character in the font table selectedFont_lastChar, // last character in the font table selectedFont_height, colorMask; oled_dynamic_area_t oled_dynamic_area; oled_text_properties_t oled_text_properties; //Internal Functions void Transpose( oled_pixel_t transImage, const oled_pixel_t image, uint8_t width, uint8_t height ); oled_status_t TopDown ( const uint8_t* image, uint8_t xCrd, uint8_t yCrd, uint8_t width, uint8_t height ); oled_status_t DownTop ( const uint8_t* image, uint8_t xCrd, uint8_t yCrd, uint8_t width, uint8_t height ); oled_status_t LeftRight ( const uint8_t* image, uint8_t xCrd, uint8_t yCrd, uint8_t width, uint8_t height ); oled_status_t RightLeft ( const uint8_t* image, uint8_t xCrd, uint8_t yCrd, uint8_t width, uint8_t height ); void SetBorders( uint8_t xCrd, uint8_t yCrd, uint8_t width, uint8_t height ); oled_status_t CreateTextBackground(); void WriteCharToBuf( uint16_t charToWrite, oled_pixel_t* chrBuf ); oled_status_t AddCharToTextArea( oled_pixel_t chrPtr, uint8_t chrWidth, uint8_t chrHeight, oled_pixel_t copyAddr, uint8_t imgWidth ); void* AllocateDynamicArea( uint32_t area ); oled_status_t DestroyDynamicArea(void * ptr); }; #endif