| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 | /******************************************************************************** Copyright 2011-2012, Cypress Semiconductor Corporation.  All rights reserved.* You may use this file only in accordance with the license, terms, conditions, * disclaimers, and limitations in the end user license agreement accompanying * the software package with which this file was provided.********************************************************************************/#ifndef __CYBTLDR_PARSE_H__#define __CYBTLDR_PARSE_H__#include "cybtldr_utils.h"/* Maximum number of bytes to allocate for a single row.  *//* NB: Rows should have a max of 592 chars (2-arrayID, 4-rowNum, 4-len, 576-data, 2-checksum, 4-newline) */#define MAX_BUFFER_SIZE 768/******************************************************************************** Function Name: CyBtldr_FromHex********************************************************************************* Summary:*   Converts the provided ASCII char into its hexadecimal numerical equivilant.** Parameters:*   value - the ASCII char to convert into a number** Returns:*   The hexadecimal numerical equivilant of the provided ASCII char.  If the*   provided char is not a valid ASCII char, it will return 0.********************************************************************************/unsigned char CyBtldr_FromHex(char value);/******************************************************************************** Function Name: CyBtldr_FromAscii********************************************************************************* Summary:*   Converts the provided ASCII array into its hexadecimal numerical equivilant.** Parameters:*   bufSize - The length of the buffer to convert*   buffer  - The buffer of ASCII characters to convert*   rowSize - The number of bytes of equivilant hex data generated*   rowData - The hex data generated for the buffer** Returns:*   CYRET_SUCCESS    - The buffer was converted successfully*   CYRET_ERR_LENGTH - The buffer does not have an even number of chars********************************************************************************/int CyBtldr_FromAscii(unsigned int bufSize, unsigned char* buffer, unsigned short* rowSize, unsigned char* rowData);/******************************************************************************** Function Name: CyBtldr_ReadLine********************************************************************************* Summary:*   Reads a single line from the open data file.  This function will remove*   any Windows, Linux, or Unix line endings from the data.** Parameters:*   size - The number of bytes of data read from the line and stored in buffer*   file - The preallocated buffer, with MAX_BUFFER_SIZE bytes, to store the *          read data in.** Returns:*   CYRET_SUCCESS  - The file was opened successfully.*   CYRET_ERR_FILE - An error occurred opening the provided file.*   CYRET_ERR_EOF  - The end of the file has been reached********************************************************************************/EXTERN int CyBtldr_ReadLine(unsigned int* size, char* buffer);/******************************************************************************** Function Name: CyBtldr_OpenDataFile********************************************************************************* Summary:*   Opens the provided file for reading.  Once open, it is expected that the*   first call will be to ParseHeader() to read the first line of data.  After*   that, successive calls to ParseRowData() are possible to read each line*   of data, one at a time, from the file.  Once all data has been read from*   the file, a call to CloseDataFile() should be made to release resources.** Parameters:*   file - The full canonical path to the *.cyacd file to open** Returns:*   CYRET_SUCCESS  - The file was opened successfully.*   CYRET_ERR_FILE - An error occurred opening the provided file.********************************************************************************/EXTERN int CyBtldr_OpenDataFile(const char* file);/******************************************************************************** Function Name: CyBtldr_ParseHeader********************************************************************************* Summary:*   Parses the hader information from the *.cyacd file.  The header information*   is stored as the first line, so this method should only be called once, *   and only immediatly after calling OpenDataFile and reading the first line.** Parameters:*   bufSize    - The number of bytes contained within buffer*   buffer     - The buffer containing the header data to parse*   siliconId  - The silicon ID that the provided *.cyacd file is for*   siliconRev - The silicon Revision that the provided *.cyacd file is for*   chksum     - The type of checksum to use for packet integrety check** Returns:*   CYRET_SUCCESS    - The file was opened successfully.*   CYRET_ERR_LENGTH - The line does not contain enough data********************************************************************************/EXTERN int CyBtldr_ParseHeader(unsigned int bufSize, unsigned char* buffer, unsigned long* siliconId, unsigned char* siliconRev, unsigned char* chksum);/******************************************************************************** Function Name: CyBtldr_ParseRowData********************************************************************************* Summary:*   Parses the contents of the provided buffer which is expected to contain*   the row data from the *.cyacd file.  This is expected to be called multiple*   times.  Once for each row of the *.cyacd file, excluding the header row.** Parameters:*   bufSize  - The number of bytes contained within buffer*   buffer   - The buffer containing the row data to parse*   arrayId  - The flash array that the row of data belongs in*   rowNum   - The flash row number that the data corresponds to*   rowData  - The preallocated buffer to store the flash row data*   size     - The number of bytes of rowData*   checksum - The checksum value for the entire row (rowNum, size, rowData)** Returns:*   CYRET_SUCCESS    - The file was opened successfully.*   CYRET_ERR_LENGTH - The line does not contain enough data*   CYRET_ERR_DATA   - The line does not contain a full row of data*   CYRET_ERR_CMD    - The line does not start with the cmd identifier ':'********************************************************************************/EXTERN int CyBtldr_ParseRowData(unsigned int bufSize, unsigned char* buffer, unsigned char* arrayId, unsigned short* rowNum, unsigned char* rowData, unsigned short* size, unsigned char* checksum);/******************************************************************************** Function Name: CyBtldr_CloseDataFile********************************************************************************* Summary:*   Closes the data file pointer.** Parameters:*   void.** Returns:*   CYRET_SUCCESS  - The file was opened successfully.*   CYRET_ERR_FILE - An error occured opening the provided file.********************************************************************************/EXTERN int CyBtldr_CloseDataFile(void);#endif
 |