/*
 * XPT2046_TP_Key_In.h
 *
 *  Created on: 2024/11/18
 *      Author: egaono-electronics
 */

#ifndef XPT2046_TP_KEY_IN_H_
#define XPT2046_TP_KEY_IN_H_

#include "Dev_Conf.h"

#include def_Header_HAL

#include "Color_Code.h"
#include "XPT2046_TP_Detect.h"



//------------------------------------------
// タッチパネル Key入力 スイッチ番号の定義
//------------------------------------------
// Alpha Numeric
//------------------------------------------
#define def_Num_TP_SW_Key_0    0
#define def_Num_TP_SW_Key_1    1
#define def_Num_TP_SW_Key_2    2
#define def_Num_TP_SW_Key_3    3
#define def_Num_TP_SW_Key_4    4
#define def_Num_TP_SW_Key_5    5
#define def_Num_TP_SW_Key_6    6
#define def_Num_TP_SW_Key_7    7
#define def_Num_TP_SW_Key_8    8
#define def_Num_TP_SW_Key_9    9
//------------------------------------------
#define def_Num_TP_SW_Key_A    10
#define def_Num_TP_SW_Key_B    11
#define def_Num_TP_SW_Key_C    12
#define def_Num_TP_SW_Key_D    13
#define def_Num_TP_SW_Key_E    14
#define def_Num_TP_SW_Key_F    15
//------------------------------------------
#define def_Num_TP_SW_Key_G    16
#define def_Num_TP_SW_Key_H    17
#define def_Num_TP_SW_Key_I    18
#define def_Num_TP_SW_Key_J    19
#define def_Num_TP_SW_Key_K    20
#define def_Num_TP_SW_Key_L    21
#define def_Num_TP_SW_Key_M    22
#define def_Num_TP_SW_Key_N    23
#define def_Num_TP_SW_Key_O    24
#define def_Num_TP_SW_Key_P    25
#define def_Num_TP_SW_Key_Q    26
#define def_Num_TP_SW_Key_R    27
#define def_Num_TP_SW_Key_S    28
#define def_Num_TP_SW_Key_T    29
#define def_Num_TP_SW_Key_U    30
#define def_Num_TP_SW_Key_V    31
//------------------------------------------
#define def_Num_TP_SW_Key_W    32
#define def_Num_TP_SW_Key_X    33
#define def_Num_TP_SW_Key_Y    34
#define def_Num_TP_SW_Key_Z    35
//----------------------------------------------------------
#define def_Num_TP_SW_Key_SP  def_Num_TP_SW_Key_Z + 1
#define def_Num_TP_SW_Key_CR  def_Num_TP_SW_Key_SP + 1
#define def_Num_TP_SW_Key_LF  def_Num_TP_SW_Key_CR + 1
//----------------------------------------------------------
// Function
//----------------------------------------------------------
#define def_Num_TP_SW_Func_BK  def_Num_TP_SW_Key_LF + 1
#define def_Num_TP_SW_Func_FW  def_Num_TP_SW_Func_BK + 1
#define def_Num_TP_SW_Func_BS  def_Num_TP_SW_Func_FW + 1
#define def_Num_TP_SW_Func_DL  def_Num_TP_SW_Func_BS + 1

#define def_Num_TP_SW_Func_ET  def_Num_TP_SW_Func_DL + 1

#define def_Num_TP_SW_Func_AH  def_Num_TP_SW_Func_ET + 1

#define def_Num_TP_SW_Func_CL  def_Num_TP_SW_Func_AH + 1

#define def_Num_TP_SW_Func_UL  def_Num_TP_SW_Func_CL + 1
//----------------------------------------------------------


// HEX入力 SW番号最大値
#define def_Num_TP_SW_HEX  def_Num_TP_SW_Key_F

// Alpha Numeric入力 SW番号最大値
#define def_Num_TP_SW_Al_Nu    def_Num_TP_SW_Key_LF

// Key and Function SW番号最大値
#define def_Num_TP_SW_Key_Func  def_Num_TP_SW_Func_UL


//------------------------------------------
// Key InのDataのサイズ
//------------------------------------------
#define def_Width_TP_Data_In   16
#define def_Height_TP_Data_In  16
//------------------------------------------



//------------------------------------------
// Key InのSwitchのサイズ
//------------------------------------------
#define def_Width_Button_Key_In   16
#define def_Height_Button_Key_In  16
//------------------------------------------



//------------------------------------------
// FunctionのSwitchのサイズ
//------------------------------------------
#define def_Width_Button_Func_In   32
#define def_Height_Button_Func_In  16
//------------------------------------------



//--------------------------------------------------
// タッチパネルスイッチ表示色の定義
//--------------------------------------------------
#define def_Color_TP_Key_In_Data  def_Code_Yellow
//--------------------------------------------------


//--------------------------------------------------
// タッチパネルスイッチ表示色の定義
//--------------------------------------------------
#define def_Color_TP_SW_0_9    def_Code_Hotpink

#define def_Color_TP_SW_Key    def_Code_Lime

#define def_Color_TP_SW_SP    def_Code_Orange
#define def_Color_TP_SW_CR    def_Code_Orange
#define def_Color_TP_SW_LF    def_Code_Orange
//--------------------------------------------------


//--------------------------------------------------
// Functionの表示色の定義
//--------------------------------------------------
#define def_Color_TP_SW_Function  def_Code_White
//--------------------------------------------------


//--------------------------------------------------
// ULの表示色の定義
//--------------------------------------------------
#define def_Color_TP_SW_UL  def_Code_Blue
//--------------------------------------------------


//--------------------------------------------------
// ASCII/HEXの表示色の定義
//--------------------------------------------------
#define def_Color_Msg_ASC_HEX  def_Code_Brown
//--------------------------------------------------



//------------------------------------------
// ASCII/HEX 表示文字
//------------------------------------------
#define def_aStr_Label_ASCII  "ASC"
#define def_aStr_Label_HEX    "HEX"
//------------------------------------------



//----------------------------------------------------------
// Key入力スイッチ幅と間隔
//----------------------------------------------------------
#define def_Width_TP_SW_Key    def_Width_Button_Key_In

#define def_Clearance_TP_SW_Key_X   4
#define def_Clearance_TP_SW_Key_Y  12

#define def_Interval_TP_SW_Key  \
            def_Width_TP_SW_Key + def_Clearance_TP_SW_Key_X
//----------------------------------------------------------



//--------------------------------------------------
// タッチパネルスイッチ表示位置の定義 : Function
//--------------------------------------------------

//----------------------------------------------------------
// Message ASCII/HEX
//----------------------------------------------------------
// ASCII/HEX
#define def_Pos_X_Msg_ASC_HEX  (def_Width_TP_Data_In * 14)
#define def_Pos_Y_Msg_ASC_HEX  \
                    240 - def_Height_Button_Key_In * 4\
                    - def_Clearance_TP_SW_Key_Y * 3


// HEX入力回数
#define def_Pos_X_Num_HEX  \
            (def_Pos_X_Msg_ASC_HEX + def_Width_TP_Data_In * 5)
#define def_Pos_Y_Num_HEX  def_Pos_Y_Msg_ASC_HEX


//--------------------------------------------------------------
// TP Key Function
//--------------------------------------------------------------
// BK : Back
#define def_Pos_X_TP_SW_Func_BK  (def_Width_Button_Key_In * 2)
#define def_Pos_Y_TP_SW_Func_BK  (def_Height_TP_Data_In * 6)


// FW : Forward
#define def_Pos_X_TP_SW_Func_FW  \
    (def_Pos_X_TP_SW_Func_BK + def_Width_Button_Key_In * 3)
#define def_Pos_Y_TP_SW_Func_FW  def_Pos_Y_TP_SW_Func_BK


// BS : Back Space
#define def_Pos_X_TP_SW_Func_BS  \
    (def_Pos_X_TP_SW_Func_FW + def_Width_Button_Key_In * 4)
#define def_Pos_Y_TP_SW_Func_BS  def_Pos_Y_TP_SW_Func_BK


// DL : Delete
#define def_Pos_X_TP_SW_Func_DL  \
    (def_Pos_X_TP_SW_Func_BS + def_Width_Button_Key_In * 3)
#define def_Pos_Y_TP_SW_Func_DL  def_Pos_Y_TP_SW_Func_BK


// ET : Enter
#define def_Pos_X_TP_SW_Func_ET  \
    (def_Pos_X_TP_SW_Func_DL + def_Width_Button_Key_In * 4)
#define def_Pos_Y_TP_SW_Func_ET  def_Pos_Y_TP_SW_Func_BK




// AH : ASCII/HEX
#define def_Pos_X_TP_SW_Func_AH  def_Pos_X_TP_SW_Func_BK
#define def_Pos_Y_TP_SW_Func_AH  \
    (def_Pos_Y_TP_SW_Func_BK + def_Height_Button_Func_In * 2)


// CL : Clear
#define def_Pos_X_TP_SW_Func_CL  \
    (def_Pos_X_TP_SW_Func_AH + def_Width_Button_Key_In * 3)
#define def_Pos_Y_TP_SW_Func_CL  def_Pos_Y_TP_SW_Func_AH


// UL : Upper case/Lower case : 大文字/小文字
#define def_Pos_X_TP_SW_Func_UL  \
    (def_Pos_X_Msg_ASC_HEX + def_Width_TP_Data_In * 4)
#define def_Pos_Y_TP_SW_Func_UL  def_Pos_Y_Msg_ASC_HEX
//--------------------------------------------------------------



//--------------------------------------------------
// タッチパネルスイッチ位置の定義 : Alpha Numeric
//--------------------------------------------------

//----------------------------------------------------------
// Alpha Numeric
//----------------------------------------------------------
// Key入力 : 0
#define def_Pos_X_TP_SW_Key_0  2
#define def_Pos_Y_TP_SW_Key_0  \
                    240 - def_Height_Button_Key_In * 3\
                    - def_Clearance_TP_SW_Key_Y * 2


// Key入力 : 1
#define def_Pos_X_TP_SW_Key_1  \
            def_Pos_X_TP_SW_Key_0 + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_1  def_Pos_Y_TP_SW_Key_0


// Key入力 : 2
#define def_Pos_X_TP_SW_Key_2  \
            def_Pos_X_TP_SW_Key_1 + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_2  def_Pos_Y_TP_SW_Key_0


// Key入力 : 3
#define def_Pos_X_TP_SW_Key_3  \
            def_Pos_X_TP_SW_Key_2 + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_3  def_Pos_Y_TP_SW_Key_0


// Key入力 : 4
#define def_Pos_X_TP_SW_Key_4  \
            def_Pos_X_TP_SW_Key_3 + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_4  def_Pos_Y_TP_SW_Key_0


// Key入力 : 5
#define def_Pos_X_TP_SW_Key_5  \
            def_Pos_X_TP_SW_Key_4 + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_5  def_Pos_Y_TP_SW_Key_0


// Key入力 : 6
#define def_Pos_X_TP_SW_Key_6  \
            def_Pos_X_TP_SW_Key_5 + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_6  def_Pos_Y_TP_SW_Key_0


// Key入力 : 7
#define def_Pos_X_TP_SW_Key_7  \
            def_Pos_X_TP_SW_Key_6 + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_7  def_Pos_Y_TP_SW_Key_0


// Key入力 : 8
#define def_Pos_X_TP_SW_Key_8  \
            def_Pos_X_TP_SW_Key_7 + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_8  def_Pos_Y_TP_SW_Key_0


// Key入力 : 9
#define def_Pos_X_TP_SW_Key_9  \
            def_Pos_X_TP_SW_Key_8 + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_9  def_Pos_Y_TP_SW_Key_0


// Key入力 : A
#define def_Pos_X_TP_SW_Key_A  \
            def_Pos_X_TP_SW_Key_9 + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_A  def_Pos_Y_TP_SW_Key_0


// Key入力 : B
#define def_Pos_X_TP_SW_Key_B  \
            def_Pos_X_TP_SW_Key_A + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_B  def_Pos_Y_TP_SW_Key_0


// Key入力 : C
#define def_Pos_X_TP_SW_Key_C  \
            def_Pos_X_TP_SW_Key_B + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_C  def_Pos_Y_TP_SW_Key_0


// Key入力 : D
#define def_Pos_X_TP_SW_Key_D  \
            def_Pos_X_TP_SW_Key_C + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_D  def_Pos_Y_TP_SW_Key_0


// Key入力 : E
#define def_Pos_X_TP_SW_Key_E  \
            def_Pos_X_TP_SW_Key_D + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_E  def_Pos_Y_TP_SW_Key_0


// Key入力 : F
#define def_Pos_X_TP_SW_Key_F  \
            def_Pos_X_TP_SW_Key_E + def_Interval_TP_SW_Key
#define def_Pos_Y_TP_SW_Key_F  def_Pos_Y_TP_SW_Key_0


//----------------------------------------------------------
// Key入力 : G
#define def_Pos_X_TP_SW_Key_G  def_Pos_X_TP_SW_Key_0
#define def_Pos_Y_TP_SW_Key_G  \
        def_Pos_Y_TP_SW_Key_0 + def_Height_Button_Key_In\
        + def_Clearance_TP_SW_Key_Y


// Key入力 : H
#define def_Pos_X_TP_SW_Key_H  def_Pos_X_TP_SW_Key_1
#define def_Pos_Y_TP_SW_Key_H  def_Pos_Y_TP_SW_Key_G


// Key入力 : I
#define def_Pos_X_TP_SW_Key_I  def_Pos_X_TP_SW_Key_2
#define def_Pos_Y_TP_SW_Key_I  def_Pos_Y_TP_SW_Key_G


// Key入力 : J
#define def_Pos_X_TP_SW_Key_J  def_Pos_X_TP_SW_Key_3
#define def_Pos_Y_TP_SW_Key_J  def_Pos_Y_TP_SW_Key_G


// Key入力 : K
#define def_Pos_X_TP_SW_Key_K  def_Pos_X_TP_SW_Key_4
#define def_Pos_Y_TP_SW_Key_K  def_Pos_Y_TP_SW_Key_G


// Key入力 : L
#define def_Pos_X_TP_SW_Key_L  def_Pos_X_TP_SW_Key_5
#define def_Pos_Y_TP_SW_Key_L  def_Pos_Y_TP_SW_Key_G


// Key入力 : M
#define def_Pos_X_TP_SW_Key_M  def_Pos_X_TP_SW_Key_6
#define def_Pos_Y_TP_SW_Key_M  def_Pos_Y_TP_SW_Key_G


// Key入力 : N
#define def_Pos_X_TP_SW_Key_N  def_Pos_X_TP_SW_Key_7
#define def_Pos_Y_TP_SW_Key_N  def_Pos_Y_TP_SW_Key_G


// Key入力 : O
#define def_Pos_X_TP_SW_Key_O  def_Pos_X_TP_SW_Key_8
#define def_Pos_Y_TP_SW_Key_O  def_Pos_Y_TP_SW_Key_G


// Key入力 : P
#define def_Pos_X_TP_SW_Key_P  def_Pos_X_TP_SW_Key_9
#define def_Pos_Y_TP_SW_Key_P  def_Pos_Y_TP_SW_Key_G


// Key入力 : Q
#define def_Pos_X_TP_SW_Key_Q  def_Pos_X_TP_SW_Key_A
#define def_Pos_Y_TP_SW_Key_Q  def_Pos_Y_TP_SW_Key_G


// Key入力 : R
#define def_Pos_X_TP_SW_Key_R  def_Pos_X_TP_SW_Key_B
#define def_Pos_Y_TP_SW_Key_R  def_Pos_Y_TP_SW_Key_G


// Key入力 : S
#define def_Pos_X_TP_SW_Key_S  def_Pos_X_TP_SW_Key_C
#define def_Pos_Y_TP_SW_Key_S  def_Pos_Y_TP_SW_Key_G


// Key入力 : T
#define def_Pos_X_TP_SW_Key_T  def_Pos_X_TP_SW_Key_D
#define def_Pos_Y_TP_SW_Key_T  def_Pos_Y_TP_SW_Key_G


// Key入力 : U
#define def_Pos_X_TP_SW_Key_U  def_Pos_X_TP_SW_Key_E
#define def_Pos_Y_TP_SW_Key_U  def_Pos_Y_TP_SW_Key_G


// Key入力 : V
#define def_Pos_X_TP_SW_Key_V  def_Pos_X_TP_SW_Key_F
#define def_Pos_Y_TP_SW_Key_V  def_Pos_Y_TP_SW_Key_G


//----------------------------------------------------------
// Key入力 : W
#define def_Pos_X_TP_SW_Key_W  def_Pos_X_TP_SW_Key_0
#define def_Pos_Y_TP_SW_Key_W  \
        def_Pos_Y_TP_SW_Key_G + def_Height_Button_Key_In\
        + def_Clearance_TP_SW_Key_Y


// Key入力 : X
#define def_Pos_X_TP_SW_Key_X  def_Pos_X_TP_SW_Key_1
#define def_Pos_Y_TP_SW_Key_X  def_Pos_Y_TP_SW_Key_W


// Key入力 : Y
#define def_Pos_X_TP_SW_Key_Y  def_Pos_X_TP_SW_Key_2
#define def_Pos_Y_TP_SW_Key_Y  def_Pos_Y_TP_SW_Key_W


// Key入力 : Z
#define def_Pos_X_TP_SW_Key_Z  def_Pos_X_TP_SW_Key_3
#define def_Pos_Y_TP_SW_Key_Z  def_Pos_Y_TP_SW_Key_W
//----------------------------------------------------------



//------------------------------------------------------
// Control Code : 制御コード
//------------------------------------------------------
// Key入力 : Space
#define def_Pos_X_TP_SW_Key_SP  def_Pos_X_TP_SW_Key_5
#define def_Pos_Y_TP_SW_Key_SP  def_Pos_Y_TP_SW_Key_W


// Key入力 : CR
#define def_Pos_X_TP_SW_Key_CR  def_Pos_X_TP_SW_Key_6
#define def_Pos_Y_TP_SW_Key_CR  def_Pos_Y_TP_SW_Key_W


// Key入力 : LF
#define def_Pos_X_TP_SW_Key_LF  def_Pos_X_TP_SW_Key_7
#define def_Pos_Y_TP_SW_Key_LF  def_Pos_Y_TP_SW_Key_W



//----------------------------------------------------------
#define def_Num_Col_TP_Key_In  16  // 1 Lineの表示データ数
#define def_Num_Line_TP_Key_In  4  // 表示行数
#define def_Size_TP_Key_Data_Buffer  \
    (def_Num_Col_TP_Key_In * def_Num_Line_TP_Key_In)
                        // TP Keyデータ入力バッファのサイズ


#define def_Clearance_TP_Data_X_Top    2
                        // X方向表示データの先頭の間隔

#define def_Clearance_TP_Data_X    4  // 表示データ間隔X
#define def_Clearance_TP_Data_Y    4  // 表示データ間隔Y
//----------------------------------------------------------



//----------------------------------------------------------
// TP Key入力データのタイプ
//----------------------------------------------------------
#define def_Type_TP_Key_In_Data  0  // Key In
#define def_Type_TP_Key_In_BK    1  // BK : Back : 戻る
#define def_Type_TP_Key_In_FW    2  // FW : Forward : 進む
#define def_Type_TP_Key_In_BS    3  // BS : Back Space
#define def_Type_TP_Key_In_DL    4  // DL : Delete : 削除
#define def_Type_TP_Key_In_ET    5  // ET : Enter

#define def_Type_TP_Key_In_AH    6  // AH : ASCII/HEX
#define def_Type_TP_Key_In_CL    7  // CL : Clear
                                    // : Key Inデータクリア
//----------------------------------------------------------



//------------------------------------------------------
// タッチパネル文字表示色の定義
//------------------------------------------------------
#define def_Color_Label_Input_Data  def_Code_Cyan
#define def_Color_Input_Data        def_Code_Yellow
//------------------------------------------------------


//--------------------------------------------------
// 入力 表示文字
//--------------------------------------------------
#define def_aStr_Label_Input_Data    "Input Data"
//--------------------------------------------------


//------------------------------------------
// 表示位置の定義 : 入力
//------------------------------------------
// 入力 Data Label表示位置
#define def_Pos_X_Label_Input_Data  64
#define def_Pos_Y_Label_Input_Data  0

#define def_Pos_X_Data_Input  2
#define def_Pos_Y_Data_Input  16
//------------------------------------------


//------------------------------------------
// TP SW 入力
//------------------------------------------
// データ入力 表示位置 Y
#define def_Offset_Draw_Input_Data_Y  16
//------------------------------------------



//----------------------------------------------------------
// タッチパネルのスイッチ表示
//----------------------------------------------------------
// 引数;
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// int16_t int16_Num_SW : スイッチ番号

// uint8_t uint8_R : 反転表示フラグ
//    0 : 通常表示
//    1 : 反転表示

// struct sParam_TP_SW *pstructParam_TP_SW :
//          タッチパネルスイッチ用パラメータの構造体のポインタ


// 戻り値;
//   -1 : 処理中
//    0 : OK終了
//    1 : NG終了
//----------------------------------------------------------
int16_t Draw_TP_SW(uint8_t *puint8_JobNum,
                   int16_t int16_Num_SW,
                   uint8_t uint8_R,
                   struct sParam_TP_SW *pstructParam_TP_SW);



//----------------------------------------------------------
// タッチパネルのスイッチ消去
//----------------------------------------------------------
// 引数;
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// int16_t int16_Num_SW : スイッチ番号


// 戻り値;
//   -1 : 処理中
//    0 : OK終了
//    1 : NG終了
//----------------------------------------------------------
int16_t Erase_TP_SW(uint8_t *puint8_JobNum,
                    int16_t int16_Num_SW);



//----------------------------------------------------------
// タッチパネルのスイッチ表示 :
//    開始スイッチ番号から終了スイッチ番号までを表示する。
//----------------------------------------------------------
// 引数;
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// int16_t int16_Num_SW_Start : 開始スイッチ番号
// int16_t int16_Num_SW_End : 終了スイッチ番号

// uint8_t uint8_R : 反転表示フラグ
//    0 : 通常表示
//    1 : 反転表示


// 戻り値;
//   -1 : 処理中
//    0 : OK終了
//    1 : NG終了
//----------------------------------------------------------
int16_t Print_TP_SW_Num(uint8_t *puint8_JobNum,
                        int16_t int16_Num_SW_Start,
                        int16_t int16_Num_SW_End,
                        uint8_t uint8_R);



//----------------------------------------------------------
// タッチパネルのスイッチ消去 :
//    開始スイッチ番号から終了スイッチ番号までを消去する。
//----------------------------------------------------------
// 引数;
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// int16_t int16_Num_SW_Start : 開始スイッチ番号
// int16_t int16_Num_SW_End : 終了スイッチ番号


// 戻り値;
//   -1 : 処理中
//    0 : OK終了
//    1 : NG終了
//----------------------------------------------------------
int16_t Erase_TP_SW_Num(uint8_t *puint8_JobNum,
                        int16_t int16_Num_SW_Start,
                        int16_t int16_Num_SW_End);



//----------------------------------------------------------
// TP SW入力キャラクタをセット : 0 - 9, A - Z, Control Code
//----------------------------------------------------------
// 引数;
// int16_t int16_U_L : Upper case/Lower case
//    0 : Upper case
//    1 : Lower case


// 戻り値;
//    なし
//----------------------------------------------------------
void Set_Char_TP_SW_In(int16_t int16_U_L);



//----------------------------------------------------------
// タッチパネルKeyデータ入力
//----------------------------------------------------------
// 引数;
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// struct sParam_Position_TP *pstructParam_Position_TP :
//      タッチパネル位置取得用パラメータの構造体のポインタ

// struct sParam_TP_SW *pstructParam_TP_SW :
//      タッチパネルスイッチ用パラメータの構造体のポインタ

// int16_t int16_Sel : 動作選択
//    0 : Alpha Numeric
//    1 : HEX_In

// int16_t int16_Max_Num_SW : スイッチ番号最大値


// 戻り値;
//    -2 : NG終了
//    -1 : 処理中
// 0以上 : OK : Switch番号
//----------------------------------------------------------
int16_t TP_Key_In_Data(uint8_t *puint8_JobNum,
        struct sParam_Position_TP *pstructParam_Position_TP,
                       struct sParam_TP_SW *pstructParam_TP_SW,
                        int16_t int16_Sel,
                        int16_t int16_Max_Num_SW);



//----------------------------------------------------------
// TP Key入力データをBufferにセットする。
//----------------------------------------------------------
// 引数;
// int16_t int16_Type : 動作選択
//  -1 : BK : 戻る
//   0 : Key In : Keyデータ入力
//   1 : FW : 進む

// uint8_t uint8_Data : Key入力データ
// uint16_t *puint16_Position : 入力データの位置変数のポインタ
// int16_t *pint16_Buffer :
//                  入力データを格納するバッファのポインタ
// int16_t *pint16_Count : データ数変数のポインタ
// int16_t int16_Size_Buffer : Bufferのサイズ


// 戻り値;
//   -1 : Buffer Empty
//    0 : OK
//    1 : Buffer Full
//    2 : End Position
//    3 : NG
//----------------------------------------------------------
int16_t Put_TP_Key_In_Data(int16_t int16_Type,
                           uint8_t uint8_Data,
                           uint16_t *puint16_Position,
                           int16_t *pint16_Buffer,
                           int16_t *pint16_Count,
                           int16_t int16_Size_Buffer);



//----------------------------------------------------------
// TP Key入力データ表示
//----------------------------------------------------------
// 引数;
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// int16_t int16_Type : 表示選択
//  0 : ASCII
//  1 : HEX

// int16_t int16_Invert : 反転表示選択
//  0 : 通常表示
//  1 : 反転表示

// uint16_t uint16_Offset_Draw_Y : 表示位置オフセット Y

// int16_t *pint16_aData :
//          入力データが格納されているバッファのポインタ
// uint16_t uint16_Position : 入力データの位置


// 戻り値;
//   -1 : 処理中
//    0 : OK終了
//    1 : NG終了
//----------------------------------------------------------
int16_t Draw_TP_Key_In_Data(uint8_t *puint8_JobNum,
                            int16_t int16_Type,
                            int16_t int16_Invert,
                            uint16_t uint16_Offset_Draw_Y,
            int16_t *pint16_aData, uint16_t uint16_Position);



//----------------------------------------------------------
// ASC/HEX表示
//----------------------------------------------------------
// 引数;
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// int16_t int16_Sel : 表示選択
//   -1 : ASCII : ASC without UL
//    0 : ASCII : ASC
//    1 : HEX : HEX 1
//    2 : HEX : HEX 2


// 戻り値;
//   -1 : 処理中
//    0 : OK終了
//    1 : NG終了
//----------------------------------------------------------
int16_t Draw_Msg_ASC_HEX(uint8_t *puint8_JobNum,
                         int16_t int16_Sel);



//----------------------------------------------------------
// HEX入力回数表示
//----------------------------------------------------------
// 引数;
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// int16_t int16_Sel : 表示選択
//  0 : " "
//  1 : "1"
//  2 : "2"


// 戻り値;
//   -1 : 処理中
//    0 : OK終了
//    1 : NG終了
//----------------------------------------------------------
int16_t Draw_Num_HEX(
                uint8_t *puint8_JobNum, int16_t int16_Sel);



//----------------------------------------------------------
// タッチパネル HEX Key入力
//----------------------------------------------------------
// 引数;
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// struct sParam_Position_TP *pstructParam_Position_TP :
//          タッチパネル位置取得用パラメータの構造体のポインタ

// struct sParam_TP_SW *pstructParam_TP_SW :
//          タッチパネルスイッチ用パラメータの構造体のポインタ

// int16_t int16_Max_Num_SW : スイッチ番号最大値


// 戻り値;
//    -2 : NG終了
//    -1 : 処理中
//    def_Num_TP_SW_Func_BK ～ def_Num_TP_SW_Func_CL :
//                                      OK : Function Key
//    0x100以上 : OK : HEXデータ
//----------------------------------------------------------
int16_t TP_HEX_Key_In(uint8_t *puint8_JobNum,
        struct sParam_Position_TP *pstructParam_Position_TP,
                      struct sParam_TP_SW *pstructParam_TP_SW,
                      int16_t int16_Max_Num_SW);



extern uint8_t GLB_uint8_aTP_Key_In_Char[64];
                                    // TP 入力データキャラクタ
extern int16_t GLB_int16_aTP_Key_In_Buffer[
                                def_Size_TP_Key_Data_Buffer];
                                    // TP Key入力データバッファ

extern int16_t GLB_int16_Count_TP_Key_In;  // TP Key入力データ数
extern uint16_t GLB_uint16_Position_TP_Key_In;
                                    // TP Key入力データ位置


//------------------------------------------
// Alpha Numeric/HEX フラグ
//------------------------------------------
//    0 : Alpha Numeric
//    1 : HEX
//------------------------------------------
extern int16_t GLB_int16_Flag_AN_HEX;


//----------------------------------------------
// Upper case/Lower case フラグ : 大文字/小文字
//----------------------------------------------
//    0 : Upper case
//    1 : Lower case
//----------------------------------------------
extern int16_t GLB_int16_Flag_U_L;



#endif /* XPT2046_TP_KEY_IN_H_ */
