File "DLL_interface.h"
Full Path: /home/analogde/www/PIC18F452/DLL_interface.h
File size: 14.19 KB
MIME-type: text/x-c
Charset: utf-8
/**********************************************************************/
/* */
/* File name: DLL_interface.h */
/* */
/* Since: 2002/12/03 */
/* */
/* Version: 1.02 */
/* */
/* Author: MONTAGNE Xavier [XM] {link xavier.montagne@wanadoo.fr} */
/* */
/* Purpose: Offer high level interface for PIC programming operations:*/
/* parsing or creat an HEX file, updating the PIC structures */
/* after parsing, reading or programming the PIC,... */
/* */
/* Distribution: This file is part of PP18. */
/* PP18 is free software; you can redistribute it */
/* and/or modify it under the terms of the GNU General */
/* Public License as published by the Free Software */
/* Foundation; either version 2, or (at your option) */
/* any later version. */
/* */
/* PP18 is distributed in the hope that it will be */
/* useful, but WITHOUT ANY WARRANTY; without even the */
/* implied warranty of MERCHANTABILITY or FITNESS FOR A */
/* PARTICULAR PURPOSE. See the GNU General Public */
/* License for more details. */
/* */
/* You should have received a copy of the GNU General */
/* Public License along with PP18; see the file */
/* COPYING.txt. If not, write to the Free Software */
/* Foundation, 59 Temple Place - Suite 330, */
/* Boston, MA 02111-1307, USA. */
/* */
/* History: */
/* 2002/12/03 [XM] Create this file */
/* */
/**********************************************************************/
#if !defined(__DLL_INTERFACE_H__)
#define __DLL_INTERFACE_H__
/***********************************************************************
* INCLUDES
**********************************************************************/
#include <windows.h>
#include "com.h"
/***********************************************************************
* DEFINES
**********************************************************************/
#define FromPIC 1
#define FromFile 0
#define DISPLAY_READ 0
#define DISPLAY_WRITE 1
#define DLL_EXPORT __declspec(dllexport)
/***********************************************************************
* FUNCTION DEFINITIONS
**********************************************************************/
#if defined(__cplusplus)
extern "C"
{
#endif
/***********************************************************************
* Only fill the SHexFile structure. Do not proceed to any programming
* sequences. This function fills the Hex_from_file structure, so it has
* to be called first to initialyze.
*
* @param char *ucFilename IN HEX filename to parse
* @return Status_t FILE_ERROR if something wrong appends
* (Hex larger than PIC memory size)
* ALL_RIGHT otherwise
**********************************************************************/
Status_t DLL_EXPORT ParseFile(char *ucFilename);
/***********************************************************************
* Give the memory size of the chip (and not the memory size of usefull
* data inside the PIC), or the data size of the HEX file parsed.
*
* @param u_int *uiSize OUT PIC memory size
* @param u_int uiFrom IN Flag (PIC or File)
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT GetMemorySize(unsigned int *uiSize, unsigned int uiFrom);
/***********************************************************************
* Copy the memory content from the PIC or FILE structure to the buffer
* parameter.
*
* @param u_short *usMemory OUT Memory buffer
* @param u_int uiFrom IN Flag (PIC or File)
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT GetMemoryBuffer(unsigned short *usMemory, unsigned int uiFrom);
/***********************************************************************
* Copy the memory content from the buffer to the PIC or FILE structure.
*
* @param u_short *usMemory IN Memory buffer
* @param u_int uiFrom IN Flag (PIC or File)
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT SetMemoryBuffer(unsigned short *usMemory, unsigned int uiFrom);
/***********************************************************************
* Rebuil a HEX File from memory, config and ID. Do not proceed to any
* programming sequences. This function creats a new HEX file a replace
* an existing one.
*
* @param char *ucFilename IN HEX filename to build
* @param u_int uiFrom IN Flag (PIC or File)
* @return Status_t FILE_ERROR if something wrong appends
* (cannot creat a new file)
* ALL_RIGHT otherwise
**********************************************************************/
Status_t DLL_EXPORT UnParseFile(char *ucFilename, unsigned int uiFrom);
/***********************************************************************
* Perform a programmation process to the hardware programmer and the
* chip on it concerning memory area only.
*
* @param u_int uiFrom IN Flag (PIC or File)
* @return Status_t BAD_PROGRAMMED if something wrong appends
* PROGRAMMED if not
* ALL_RIGHT otherwise
**********************************************************************/
Status_t DLL_EXPORT ProgramMem(unsigned int uiFrom);
/***********************************************************************
* Perform a programmation process to the hardware programmer and the
* chip on it concerning config area only.
*
* @param u_int uiFrom IN Flag (PIC or File)
* @return Status_t BAD_PROGRAMMED if something wrong appends
* PROGRAMMED if not
* ALL_RIGHT otherwise
**********************************************************************/
Status_t DLL_EXPORT ProgramConfig(unsigned int uiFrom);
/***********************************************************************
* Perform a programmation process to the hardware programmer and the
* chip on it concerning ID area only.
*
* @param u_int uiFrom IN Flag (PIC or File)
* @return Status_t BAD_PROGRAMMED if something wrong appends
* PROGRAMMED if not
* ALL_RIGHT otherwise
**********************************************************************/
Status_t DLL_EXPORT ProgramID(unsigned int uiFrom);
/***********************************************************************
* Download the code memory field from the PIC device, and update the
* PIC structure.
*
* @param void
* @return Status_t BLANK if all memory set to 0xFFFF
* NOT_BLANK if not
* ALL_RIGHT otherwise
**********************************************************************/
Status_t DLL_EXPORT ReadMem(void);
/***********************************************************************
* Download the config field from the PIC device, and update the PIC
* structure.
*
* @param void
* @return Status_t LOCKED if Code Prection ON
* ALL_RIGHT otherwise
**********************************************************************/
Status_t DLL_EXPORT ReadConfig(void);
/***********************************************************************
* Download the ID field from the PIC device, and update the PIC
* structure.
*
* @param void
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT ReadID(void);
/***********************************************************************
* Download REV+DEV from the chip present in the device chip.
* This function fills the Hex_from_file structure, so it has
* to be called first to initialyze the PIC structure.
*
* @param char *PICname IN PIC name reference (name of DLL)
* @return Status_t PIC_DETECTED if right PIC detected
* HARDWARE_ERROR if not detected
**********************************************************************/
Status_t DLL_EXPORT ReadRevDev(char *PICname);
/***********************************************************************
* Get the ID field of the structure specify by uiFrom with the ucValue.
* The field is 8 bytes long, so just the byte specified by ucIndex is
* modified.
*
* @param u_char *ucValue IN Value of the ID to get at ucIndex pos
* @param u_char ucIndex IN Index of the ID to get
* @param u_int uiFrom IN Flag (PIC or File)
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT GetIDValue(unsigned char *ucValue, unsigned char ucIndex, \
unsigned int uiFrom);
/***********************************************************************
* Fill the ID field of the structure specify by uiFrom with the ucValue.
* The field is 8 bytes long, so just the byte specified by ucIndex is
* modified.
*
* @param u_char ucValue IN Value of the ID to set at ucIndex pos
* @param u_char ucIndex IN Index of the ID to set
* @param u_int uiFrom IN Flag (PIC or File)
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT SetIDValue(unsigned char ucValue, unsigned char ucIndex, \
unsigned int uiFrom);
/***********************************************************************
* Extract the checksum info from every line of an INTEL HEX file.
* Compare it with the value computed by the HEX parser.
*
* @param u_short *usChecksum IN Reference to the checksum computed
* @param u_int uiFrom IN Flag (PIC or File)
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT ComputeGeneralChecksum(unsigned short *usChecksum, unsigned int uiFrom);
/***********************************************************************
* Check the presence of a programmer on LPT port.
* Hardware present if DATA_FROM_PIC == DATA_TO_PIC[0 or 1]
*
* @param void
* @return Status_t ALL_RIGHT if hardware present
* HARDWARE_ERROR if not present
**********************************************************************/
Status_t DLL_EXPORT IsHWPresent(void);
/***********************************************************************
* Stuck at 0 all of the signals (logical 0, not necessarily physical 0).
*
* @param void
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT InitHardware(void);
/***********************************************************************
* Stuck at 1 the VCC signal (logical 1, not necessarily physical 1).
*
* @param void
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT PowerOn(void);
/***********************************************************************
* Stuck at 0 the VCC signal (logical 0, not necessarily physical 0).
*
* @param void
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT PowerOff(void);
/***********************************************************************
* About window of the DLL.
* Catch the HWND handle of the application.
*
* @param HWND hWnd IN Handle of the main window
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT ShowDLL(HWND hWnd);
/***********************************************************************
* Show Settings window.
*
* @param HWND hWnd IN Handle of the main window
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT ShowSettings(HWND hWnd);
/***********************************************************************
* Display the "Config" window of the DLL.
*
* @param HWND hWnd IN Handle of the main window
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT ShowConfig(HWND hWnd, unsigned int uiFrom);
/***********************************************************************
* Erase all the programmable bits of the PIC18.
*
* @param HWND hWnd IN Handle of the main window
* @return Status_t Always ALL_RIGHT
**********************************************************************/
Status_t DLL_EXPORT DoBulkErase(HWND hWnd);
#if defined(__cplusplus)
}
#endif
#endif /* __DLL_INTERFACE_H__ */
/* End of File */