#ifdef        GLOBALS_API_DFLASH
    #define   EXTERN_API_DFLASH
    
#else
    #define   EXTERN_API_DFLASH     extern
#endif

#ifndef API_DFLASH_H_
#define API_DFLASH_H_

    #define   MaxDFlashCommandCounter           0x06
    #define   MaxDelayTime                      BusClock 
    #define   RunComplete                       0
    #define   RunErr                            1
    #define   RunParameterErr                   2
    #define   RunOverTimeErr                    3
    #define   RunErrACCERR                      4
    #define   RunErrFPVIOL                      5
    #define   RunErrMGSTAT1                     6
    #define   RunErrMGSTAT0                     7
    #define   RunErr                            1
    #define   WordSize                          0x02
                                                 //�ִ�С
    #define   GLOBAL_ADDRESS_DFLASH             0x0000
                                                 //D Flashȫ�ֵ�ַ[17:16]
    #define   DFLASH_BLOCK_START_ADDR           0x004400
                                                 // D Flash ��ʼ��ַ
                                                 
    #define   DFLASH_VEH_ADDR                   DFLASH_BLOCK_START_ADDR                                                
    #define   DFLASH_REV_ADDR                   DFLASH_VEH_ADDR + 256                                                
    #define   DFLASH_TMP_ADDR                   DFLASH_REV_ADDR + 256                                                
    #define   DFLASH_FUEL_ADDR                  DFLASH_TMP_ADDR + 256
    #define   DFLASH_RADIO_ADDR                 DFLASH_FUEL_ADDR + 256
    #define   DFLASH_SERKM_ADDR                 DFLASH_RADIO_ADDR + 256
    #define   DFLASH_POWER_ADDR                 DFLASH_SERKM_ADDR + 256
                                                                                                                                                                                                                                                                                                                                                                                                      
    #define   DFLASH_BLOCK_END_ADDR             0x0053FF
                                                 // D Flash ������ַ
    #define   DFLASH_SECTOR_SIZE                0x0100  
                                                 // 256 �ֽ���
    #define   DFLASH_ACC_START_ADD              0x004C00
                                                 //D-Falsh����ۼ���ʼ��ַ
    #define   DFLASH_ACC_END_ADD                0x004FFF
                                                 //D-Flash����ۼƽ�����ַ
    #define   DFLASH_MAXIMUM_SIZE               0x00001000  
                                                 //D Flash ���ߴ� 4 KB
    #define   DFLASH_ERASE_VERIFY               0x10 
                                                 //D Flash ������֤����
    #define   DFLASH_PROGRAM                    0x11  
                                                 //D Falsh �������
    #define   DFLASH_ERASE_SECTOR               0x12  
                                                 //D Flash ��������
    #define   DFLASH_ERASE_COM_LENGTH           0x01
                                                 //D Flash ���������
    #define   DFLASH_ERASE_VERIFY_COM_LENGTH    0x02
                                                 //D Flash ������������� 
    #define   DFLASH_PROGRAM_COM_LENGTH         0x04
                                                 //D Flash ������ֽڳ���  
    #define   MaxProgramByteNumber              0x08
                                                 //������ֽ��� 
    #define   DFlashAccSectorEndAdd             0x004F00 
    #define   DflashAccSectorStartAdd           0x004C00 
    #define   DFLASH_PROGRAM_OFFSET             0x4000 
    
    #define   DFlashAccReadStartAdd             (DFLASH_ACC_START_ADD - DFLASH_PROGRAM_OFFSET)
    #define   DFlashAccReadEndAdd               (DFLASH_ACC_END_ADD - DFLASH_PROGRAM_OFFSET)
    #define   DFlashAccBlockNumber              ((DFLASH_ACC_END_ADD - DFLASH_ACC_START_ADD + 1) / DFlashAccBlockLength)
                                               
                                              
    EXTERN_API_DFLASH     void    Api_Flash_Init(void);
    EXTERN_API_DFLASH     INT8U   Api_Flash_byte_read(INT16U _addr);                                                                                                                                      
    EXTERN_API_DFLASH     INT8U   Api_DFlashCommSequence(INT8U bCommandCounter);
    EXTERN_API_DFLASH     INT8U   Api_DFlashEraseSector(INT16U wDestination);
    EXTERN_API_DFLASH     INT8U   Api_DFalshProgram(INT16U wDest,INT16U wByteNub,INT16U *wSource);
    EXTERN_API_DFLASH     INT8U   Api_DFlashEraseVerify(INT16U wDestination, INT16U wSize);  



                             
#endif /* API_DFLASH_H_ */