/* ###################################################################
**     This component module is generated by Processor Expert. Do not modify it.
**     Filename    : McuHD44780.h
**     Project     : FRDM-K64F_Generator
**     Processor   : MK64FN1M0VLL12
**     Component   : LCDHTA
**     Version     : Component 01.031, Driver 01.00, CPU db: 3.00.000
**     Compiler    : GNU C Compiler
**     Date/Time   : 2020-08-14, 06:24, # CodeGen: 679
**     Abstract    :
**          This component implements a driver for multiple 2x16 character displays.
**     Settings    :
**          Component name                                 : McuHD44780
**          HW Interface                                   : 
**            LCD Type                                     : generic
**            LCD Lines                                    : 2
**            Characters per Line                          : 16
**            Line Addresses                               : 
**              Line 1                                     : 0x00
**              Line 2                                     : 0x40
**              Line 3                                     : 0x10
**              Line 4                                     : 0x50
**            LCD Enable Signal                            : Disabled
**            Read from Display                            : Enabled
**              R/W signal                                 : SDK_BitIO
**              Check Busy Flag                            : yes
**            Wait (us)                                    : 0
**            E signal                                     : SDK_BitIO
**            E2                                           : Enabled
**              E2 signal                                  : SDK_BitIO
**            RS signal                                    : SDK_BitIO
**            Data/Control Bus                             : 
**              Data/Control Bus Width                     : 8bit
**              DB0..DB3                                   : Enabled
**                DB0                                      : SDK_BitIO
**                DB1                                      : SDK_BitIO
**                DB2                                      : SDK_BitIO
**                DB3                                      : SDK_BitIO
**              DB4..DB7                                   : Enabled
**                DB4                                      : SDK_BitIO
**                DB5                                      : SDK_BitIO
**                DB6                                      : SDK_BitIO
**                DB7                                      : SDK_BitIO
**              Bits/Byte Bus                              : Disabled
**          System Interface                               : 
**            Wait                                         : McuWait
**     Contents    :
**         WriteLCDCommand  - void McuHD44780_WriteLCDCommand(uint8_t cmd);
**         Write            - void McuHD44780_Write(char ch);
**         WriteLn          - void McuHD44780_WriteLn(void);
**         WriteLineStr     - void McuHD44780_WriteLineStr(uint8_t line, char *str);
**         WriteString      - void McuHD44780_WriteString(char *str);
**         LoadSoftChar     - void McuHD44780_LoadSoftChar(uint8_t charCode, uint8_t *softChar);
**         ShiftLeft        - void McuHD44780_ShiftLeft(void);
**         ShiftRight       - void McuHD44780_ShiftRight(void);
**         GotoXY           - void McuHD44780_GotoXY(uint8_t line, uint8_t column);
**         SetEntryMode     - void McuHD44780_SetEntryMode(bool increment, bool shiftLeft);
**         DisplayOn        - void McuHD44780_DisplayOn(void);
**         DisplayOff       - void McuHD44780_DisplayOff(void);
**         CursorOn         - void McuHD44780_CursorOn(void);
**         CursorOff        - void McuHD44780_CursorOff(void);
**         CursorShiftRight - void McuHD44780_CursorShiftRight(void);
**         CursorShiftLeft  - void McuHD44780_CursorShiftLeft(void);
**         BlinkingOn       - void McuHD44780_BlinkingOn(void);
**         BlinkingOff      - void McuHD44780_BlinkingOff(void);
**         Home             - void McuHD44780_Home(void);
**         Line             - void McuHD44780_Line(uint8_t line);
**         Clear            - void McuHD44780_Clear(void);
**         UseDisplay       - uint8_t McuHD44780_UseDisplay(uint8_t display);
**         DeInit           - void McuHD44780_DeInit(void);
**
** * Copyright (c) 2008-2020, Erich Styger
**  * Web:         https://mcuoneclipse.com
**  * SourceForge: https://sourceforge.net/projects/mcuoneclipse
**  * Git:         https://github.com/ErichStyger/McuOnEclipse_PEx
**  * All rights reserved.
**  *
**  * Redistribution and use in source and binary forms, with or without modification,
**  * are permitted provided that the following conditions are met:
**  *
**  * - Redistributions of source code must retain the above copyright notice, this list
**  *   of conditions and the following disclaimer.
**  *
**  * - Redistributions in binary form must reproduce the above copyright notice, this
**  *   list of conditions and the following disclaimer in the documentation and/or
**  *   other materials provided with the distribution.
**  *
**  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
**  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
**  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
**  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
**  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
**  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
**  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
**  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
**  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
**  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
** ###################################################################*/
/*!
** @file McuHD44780.h
** @version 01.00
** @brief
**          This component implements a driver for multiple 2x16 character displays.
*/         
/*!
**  @addtogroup McuHD44780_module McuHD44780 module documentation
**  @{
*/         

#ifndef __McuHD44780_H
#define __McuHD44780_H

/* MODULE McuHD44780. */
#include "McuLib.h" /* SDK and API used */
#include "McuHD44780config.h" /* configuration */



/* ID's for the soft characters which can be used as first argument for McuHD44780_LoadSoftChar().
  Note that ID's can start with zero, but if you want to use a zero byte in McuHD44780_WriteString()
  then this would be the zero delimiter byte, so not very useful. */
#define McuHD44780_SOFTCHAR_UE 1 /*<! ID for 'ü' */
#define McuHD44780_SOFTCHAR_AE 2 /*<! ID for 'ä' */
#define McuHD44780_SOFTCHAR_OE 3 /*<! ID for 'ö' */

/* support for custom soft characters in the display which can be used with McuHD44780_LoadSoftChar() */
extern const uint8_t McuHD44780_SoftCharUE[8]; /* ü */
extern const uint8_t McuHD44780_SoftCharAE[8]; /* ä */
extern const uint8_t McuHD44780_SoftCharOE[8]; /* ö */

#define McuHD44780_MAX_LCD_LINE_CHARS  16 /* number of chars of the LCD on a line */


void McuHD44780_WriteLCDData(uint8_t ch);
/*
** ===================================================================
**     Method      :  McuHD44780_WriteLCDData (component LCDHTA)
**
**     Description :
**         This method is internal. It is used by Processor Expert only.
** ===================================================================
*/

void McuHD44780_Init(void);
/*
** ===================================================================
**     Method      :  McuHD44780_Init (component LCDHTA)
**
**     Description :
**         This method is internal. It is used by Processor Expert only.
** ===================================================================
*/

void McuHD44780_Clear(void);
/*
** ===================================================================
**     Method      :  Clear (component LCDHTA)
**
**     Description :
**         Clears the display and moves the cursor to the first line.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_Home(void);
/*
** ===================================================================
**     Method      :  Home (component LCDHTA)
**
**     Description :
**         Moves the cursor to the beginning of the first line.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_GotoXY(uint8_t line, uint8_t column);
/*
** ===================================================================
**     Method      :  GotoXY (component LCDHTA)
**
**     Description :
**         Places the cursor on a specified position on the display.
**     Parameters  :
**         NAME            - DESCRIPTION
**         line            - Line number starting with 1
**         column          - Column number starting with 1
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_ShiftLeft(void);
/*
** ===================================================================
**     Method      :  ShiftLeft (component LCDHTA)
**
**     Description :
**         Shifts all characters to the left.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

#define McuHD44780_Write(ch)   McuHD44780_WriteLCDData((uint8_t)ch)
/*
** ===================================================================
**     Method      :  Write (component LCDHTA)
**
**     Description :
**         Write a single character to the display
**     Parameters  :
**         NAME            - DESCRIPTION
**         ch              - Character to write
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_WriteLn(void);
/*
** ===================================================================
**     Method      :  WriteLn (component LCDHTA)
**
**     Description :
**         Writes a new line to the display
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_WriteString(char *str);
/*
** ===================================================================
**     Method      :  WriteString (component LCDHTA)
**
**     Description :
**         Writes a string to the display at the current cursor
**         position.
**     Parameters  :
**         NAME            - DESCRIPTION
**       * str             - Pointer to string (zero byte terminated)
**                           to write to the display
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_WriteLineStr(uint8_t line, char *str);
/*
** ===================================================================
**     Method      :  WriteLineStr (component LCDHTA)
**
**     Description :
**         Writes a full line to the display (clears the rest of the
**         line).
**     Parameters  :
**         NAME            - DESCRIPTION
**         line            - Line number (starting with 1).
**       * str             - Pointer to the string which should be
**                           shown on the display.
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_LoadSoftChar(uint8_t charCode, uint8_t *softChar);
/*
** ===================================================================
**     Method      :  LoadSoftChar (component LCDHTA)
**
**     Description :
**         Loads a user defined (softchar) into the display CGRAM.
**     Parameters  :
**         NAME            - DESCRIPTION
**         charCode        - The character code to be defined
**                           (0..7)
**       * softChar        - Pointer to an array of 8 bytes
**                           defining the soft character
**                           Example of the soft character 'ü':
**                           const byte SoftCharUE[8] = { // ü
**                           0x11, 0x00, 0x11, 0x11, 0x11, 0x13, 0x0d, 0
**                           //  X...X
**                           //  .....
**                           //  X...X
**                           //  X...X
**                           //  X...X
**                           //  X..XX
**                           //  .XX.X
**                           };
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_Line(uint8_t line);
/*
** ===================================================================
**     Method      :  Line (component LCDHTA)
**
**     Description :
**         Sets the current line.
**     Parameters  :
**         NAME            - DESCRIPTION
**         line            - Line number, starting with 1
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_ShiftRight(void);
/*
** ===================================================================
**     Method      :  ShiftRight (component LCDHTA)
**
**     Description :
**         Shifts all characters to the right.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_CursorOn(void);
/*
** ===================================================================
**     Method      :  CursorOn (component LCDHTA)
**
**     Description :
**         Enables the cursor.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_CursorOff(void);
/*
** ===================================================================
**     Method      :  CursorOff (component LCDHTA)
**
**     Description :
**         Disables the cursor.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_DisplayOn(void);
/*
** ===================================================================
**     Method      :  DisplayOn (component LCDHTA)
**
**     Description :
**         Sends the display on command to the display.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_DisplayOff(void);
/*
** ===================================================================
**     Method      :  DisplayOff (component LCDHTA)
**
**     Description :
**         Sends the display off command to the display.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_BlinkingOn(void);
/*
** ===================================================================
**     Method      :  BlinkingOn (component LCDHTA)
**
**     Description :
**         Sends the display off command to the display.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_BlinkingOff(void);
/*
** ===================================================================
**     Method      :  BlinkingOff (component LCDHTA)
**
**     Description :
**         Puts the display in blinking off mode.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_SetEntryMode(bool increment, bool shiftLeft);
/*
** ===================================================================
**     Method      :  SetEntryMode (component LCDHTA)
**
**     Description :
**         Configures the display entry mode, if the cursor has to
**         shift and/or if the display shall shift content while
**         displaying text.
**     Parameters  :
**         NAME            - DESCRIPTION
**         increment       - Increments (TRUE) or
**                           decrements (FALSE) the display address by 1
**                           when a character code is written into or
**                           read from DDRAM. The cursor or blinking
**                           moves to the right when incremented by 1
**                           and to the left when decremented by 1.
**         shiftLeft       - The display does not shift if
**                           the 'shift' is FALSE. If 'shift' is TRUE,
**                           it will seem as if the cursor does not move
**                           but the display does.
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_WaitForLCDReady(void);
/*
** ===================================================================
**     Method      :  McuHD44780_WaitForLCDReady (component LCDHTA)
**
**     Description :
**         This method is internal. It is used by Processor Expert only.
** ===================================================================
*/

uint8_t McuHD44780_UseDisplay(uint8_t display);
/*
** ===================================================================
**     Method      :  UseDisplay (component LCDHTA)
**
**     Description :
**         
**     Parameters  :
**         NAME            - DESCRIPTION
**         display         - Has to be either 1 (top display,
**                           using E1) or 2 (bottom display, using E2)
**     Returns     :
**         ---             - Error code
** ===================================================================
*/

void McuHD44780_CursorShiftRight(void);
/*
** ===================================================================
**     Method      :  CursorShiftRight (component LCDHTA)
**
**     Description :
**         Shift the cursor to the right.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_CursorShiftLeft(void);
/*
** ===================================================================
**     Method      :  CursorShiftLeft (component LCDHTA)
**
**     Description :
**         Shift the cursor to the left.
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_WriteLCDCommand(uint8_t cmd);
/*
** ===================================================================
**     Method      :  WriteLCDCommand (component LCDHTA)
**
**     Description :
**         Writes a command to the display
**     Parameters  :
**         NAME            - DESCRIPTION
**         cmd             - command passed to the LCD
**     Returns     : Nothing
** ===================================================================
*/

void McuHD44780_DeInit(void);
/*
** ===================================================================
**     Method      :  DeInit (component LCDHTA)
**
**     Description :
**         Driver de-initialization routine
**     Parameters  : None
**     Returns     : Nothing
** ===================================================================
*/

/* END McuHD44780. */

#endif
/* ifndef __McuHD44780_H */
/*!
** @}
*/
