/*******************************************************************************
*   ���W���[������      �F�萔/�ϐ�/�\����/�}�N����`                          *
*   ���W���[�����x��    �Fapp15_ext_hk.h                                       *
*   �^�X�N�敪          �F�Ȃ�                                                 *
*   �@�\                �F�萔/�ϐ�/�\����/�}�N����`                          *
*   �R�[�����O�V�[�P���X�F�Ȃ�                                                 *
*   ����                �F�Ȃ�                                                 *
*   �߂�l              �F�Ȃ�                                                 *
*   �g�p��̒���        �F�Ȃ�                                                 *
*   �G���[����          �F�Ȃ�                                                 *
*   �쐬���E�쐬��      �F2017/08/21  ����                                     *
*   �������E������      �F20XX/XX/XX                                           *
*******************************************************************************/
#ifndef _APP15_EXT_HK_H_
#define _APP15_EXT_HK_H_

#include <stdio.h>
#include <string.h>

/* ��� */
#define d_HK_OFF            0
#define d_HK_ON             1

/* �m�[�h�ԍ� */
#define d_HK_NODE_MGF_I     0x0D
#define d_HK_NODE_MDM       0x0E
#define d_HK_NODE_MSASI     0x0F
#define d_HK_NODE_EWO_E     0x10
//                          0x11
#define d_HK_NODE_SORBET    0x12
#define d_HK_NODE_MEFISTO   0x13
#define d_HK_NODE_MAST      0x14
#define d_HK_MIS_NUM        8       /* �z���~�b�V�����@��Node�� */

/* �z��C���f�b�N�X */
#define d_HK_INDEX_MGF_I     (d_HK_NODE_MGF_I   - d_HK_NODE_MGF_I)
#define d_HK_INDEX_MDM       (d_HK_NODE_MDM     - d_HK_NODE_MGF_I)
#define d_HK_INDEX_MSASI     (d_HK_NODE_MSASI   - d_HK_NODE_MGF_I)
#define d_HK_INDEX_EWO_E     (d_HK_NODE_EWO_E   - d_HK_NODE_MGF_I)
//                           (d_HK_NODE_EWO_B   - d_HK_NODE_MGF_I)
#define d_HK_INDEX_SORBET    (d_HK_NODE_SORBET  - d_HK_NODE_MGF_I)
#define d_HK_INDEX_MEFISTO   (d_HK_NODE_MEFISTO - d_HK_NODE_MGF_I)
#define d_HK_INDEX_MAST      (d_HK_NODE_MAST    - d_HK_NODE_MGF_I)

/* ����Slot�ԍ� */
#define d_HK_SLOT_EDITHK    7
#define d_HK_SLOT_CMD       2

/* �f�[�^�T�C�Y */
#define d_HK_MIS_HK_SIZE        128         /* �~�b�V�����@��HK�T�C�Y(byte)(1�@��) */
#define d_HK_APL_HK_MAST_SIZE   6           /* �A�v������HK�T�C�Y(MAST)(byte) */
#define d_HK_APL_HK_MEFI_SIZE   17          /* �A�v������HK�T�C�Y(MEFISTO)(byte) */
#define d_HK_APL_HK_CORE_SIZE   2           /* �A�v������HK�T�C�Y(CORE)(byte) */
#define d_HK_RDN_HK_SIZE       (200 - 8)    /* �璷��HK�T�C�Y(byte) (HW-HK 8byte���܂܂Ȃ�) */
#define d_HK_CMD_SIZE           266         /* �R�}���h�T�C�YMAX */
#define d_HK_EDIT_NUM           15          /* �L�WHK�ҏW�z��̗v�f�� */

/* �\���� */
/* �L�WHK�ҏW���ڃe�[�u���\���� */
typedef struct T_APP15_HK_EDIT_DATA
{
    char* cp_dest;                      /* �ҏW��A�h���X */
    char* cp_src;                       /* �ҏW���A�h���X */
    int i_size;                         /* �ҏW�f�[�^�T�C�Y( byte ) */
} T_APP15_HK_EDIT_DATA;

/* �O���[�o���ϐ� */
/* ���ԊǗ� */
extern volatile int  Gi_SlotNo;                                 /* Processing Slot �ԍ� */

/* ���L�f�[�^ */
extern char Gc_misHK[d_HK_MIS_NUM][d_HK_MIS_HK_SIZE];           /* �~�b�V�����@��HK(���L�̈�) */
extern char Gc_aplHK_MAST[d_HK_APL_HK_MAST_SIZE];               /* �A�v������HK(MAST)(���L�̈�) */
extern char Gc_aplHK_MEFI[d_HK_APL_HK_MEFI_SIZE];               /* �A�v������HK(MEFISTO)(���L�̈�) */
extern char Gc_aplHK_CORE[d_HK_APL_HK_CORE_SIZE];               /* �A�v������HK(CORE)(���L�̈�) */
extern char Gc_rdnHK[d_HK_RDN_HK_SIZE];                         /* �璷HK(���L�̈�) */
extern volatile char Gc_VALID_APLHK_MAST;                       /* �A�v������HK(MAST)�L���t���O */
extern volatile char Gc_VALID_APLHK_MEFI;                       /* �A�v������HK(MEFISTO)�L���t���O */
extern volatile char Gc_VALID_APLHK_CORE;                       /* �A�v������HK(CORE)�L���t���O */
extern volatile char Gc_VALID_APLHK_RDNHK;                      /* �璷HK�L���t���O */

/* HK�ҏW�� */
extern char Gc_misHK_Lcl[d_HK_MIS_NUM][d_HK_MIS_HK_SIZE];       /* �~�b�V�����@��HK(�L�WHK�̈�) */
extern char Gc_aplHK_MAST_Lcl[d_HK_APL_HK_MAST_SIZE];           /* �A�v������HK(MAST)(�L�WHK�̈�) */
extern char Gc_aplHK_MEFI_Lcl[d_HK_APL_HK_MEFI_SIZE];           /* �A�v������HK(MEFISTO)(�L�WHK�̈�) */
extern char Gc_aplHK_CORE_Lcl[d_HK_APL_HK_CORE_SIZE];           /* �A�v������HK(CORE)(�L�WHK�̈�) */
extern char Gc_rdnHK_Lcl[d_HK_RDN_HK_SIZE];                     /* �璷HK(�L�WHK�̈�) */
extern char Gc_rdnHK_out[d_HK_RDN_HK_SIZE];                     /* �~�h���E�F�AHK(�L�WHK�o�͗p) */

/* �R�}���h */
extern unsigned char Guc_app15Cmd[d_HK_CMD_SIZE];               /* �R�}���h */

/* HK�ҏW���� */
extern T_APP15_HK_EDIT_DATA Gt_hkEditData[2][d_HK_EDIT_NUM];    /* �L�WHK�ҏW���ڃf�[�^�x�[�X */
extern char Gc_DPU_SW_STATE;                                    /* DPU_SW_STATE (03�Œ�) */

/* �֐��v���g�^�C�v */
void app15_init( void );                                                                /* �N������ */
void app15_recvHK( void );                                                              /* HK��M���� */
void app15_recvHK_RDN( void );                                                          /* HK��M����(�璷�n) */
void app15_recvHK_NRM( void );                                                          /* HK��M����(����n) */
void app15_editHK( void );                                                              /* HK�ҏW���� */
void app15_cmd( void );                                                                 /* �R�}���h���� */
void app15_selfStop( void );                                                            /* APP15_SELFSTOP���� */
void app15_getAplHK_ALL( void );                                                        /* �A�v������HK�S�擾 */
void app15_getAplHK( volatile char* cp_flag, char* cp_src, char* cp_dest, int i_size ); /* �A�v������HK�擾 */
void app15_putAplHK( volatile char* cp_flag, char* cp_src, char* cp_dest, int i_size ); /* �A�v������HK�o�� */
void app15_editHK_CPY( void );                                                          /* HK�ҏW����(���ڃR�s�[) */

#endif /* _APP15_EXT_HK_H_ */