| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 | 
							- /*******************************************************************************
 
- * 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_API_H__
 
- #define __CYBTLDR_API_H__
 
- #include "cybtldr_utils.h"
 
- /*
 
-  * This struct defines all of the items necessary for the bootloader
 
-  * host to communicate over an arbitrary communication protocol. The
 
-  * caller must provide implementations of these items to use their
 
-  * deisred communication protocol.
 
-  */
 
- typedef struct
 
- {
 
-     /* Function used to open the communications connection */
 
-     int (*OpenConnection)(void);
 
-     /* Function used to close the communications connection */
 
-     int (*CloseConnection)(void);
 
-     /* Function used to read data over the communications connection */
 
-     int (*ReadData)(unsigned char*, int);
 
-     /* Function used to write data over the communications connection */
 
-     int (*WriteData)(unsigned char*, int);
 
-     /* Value used to specify the maximum number of bytes that can be trasfered at a time */
 
-     unsigned int MaxTransferSize;
 
- } CyBtldr_CommunicationsData;
 
- /*******************************************************************************
 
- * Function Name: CyBtldr_TransferData
 
- ********************************************************************************
 
- * Summary:
 
- *   This function is responsible for transfering a buffer of data to the target
 
- *   device and then reading a response packet back from the device.
 
- *
 
- * Parameters:
 
- *   inBuf   - The buffer containing data to send to the target device
 
- *   inSize  - The number of bytes to send to the target device
 
- *   outBuf  - The buffer to store the data read from the device
 
- *   outSize - The number of bytes to read from the target device
 
- *
 
- * Returns:
 
- *   CYRET_SUCCESS  - The transfer completed successfully
 
- *   CYRET_ERR_COMM - There was a communication error talking to the device
 
- *
 
- *******************************************************************************/
 
- int CyBtldr_TransferData(unsigned char* inBuf, int inSize, unsigned char* outBuf, int outSize);
 
- /*******************************************************************************
 
- * Function Name: CyBtldr_ValidateRow
 
- ********************************************************************************
 
- * Summary:
 
- *   This function is responsible for verifying that the provided arrayId and
 
- *   row number are valid for a bootload operation.
 
- *
 
- * Parameters:
 
- *   arrayId - The array to check
 
- *   rowNum  - The row number within the array to check
 
- *
 
- * Returns:
 
- *   CYRET_SUCCESS   - The array and row are available for communication
 
- *   CYRET_ERR_ARRAY - The array is not valid for communication
 
- *   CYRET_ERR_ROW   - The array/row number is not valid for communication
 
- *
 
- *******************************************************************************/
 
- int CyBtldr_ValidateRow(unsigned char arrayId, unsigned short rowNum);
 
- /*******************************************************************************
 
- * Function Name: CyBtldr_StartBootloadOperation
 
- ********************************************************************************
 
- * Summary:
 
- *   Initiates a new bootload operation.  This must be called before any other 
 
- *   request to send data to the bootloader.  A corresponding call to 
 
- *   CyBtldr_EndBootloadOperation() should be made once all transactions are 
 
- *   complete.
 
- *
 
- * Parameters:
 
- *   comm     – Communication struct used for communicating with the target device
 
- *   expSiId  - The Silicon ID of the device we expect to communicate with
 
- *   expSiRev - The Silicon Rev of the device we expect to communicate with
 
- *   blVer    - The Bootloader version that is running on the device
 
- *
 
- * Returns:
 
- *   CYRET_SUCCESS     - The start request was sent successfully
 
- *   CYRET_ERR_DEVICE  - The detected device does not match the desired device
 
- *   CYRET_ERR_VERSION - The detected bootloader version is not compatible
 
- *   CYRET_ERR_BTLDR   - The bootloader experienced an error
 
- *   CYRET_ERR_COMM    - There was a communication error talking to the device
 
- *
 
- *******************************************************************************/
 
- EXTERN int CyBtldr_StartBootloadOperation(CyBtldr_CommunicationsData* comm, unsigned long expSiId, unsigned char expSiRev, unsigned long* blVer);
 
- /*******************************************************************************
 
- * Function Name: CyBtldr_EndBootloadOperation
 
- ********************************************************************************
 
- * Summary:
 
- *   Terminates the current bootload operation.  This should be called once all 
 
- *   bootload commands have been sent and no more communication is desired.
 
- *
 
- * Parameters:
 
- *   void.
 
- *
 
- * Returns:
 
- *   CYRET_SUCCESS   - The end request was sent successfully
 
- *   CYRET_ERR_BTLDR - The bootloader experienced an error
 
- *   CYRET_ERR_COMM  - There was a communication error talking to the device
 
- *
 
- *******************************************************************************/
 
- EXTERN int CyBtldr_EndBootloadOperation(void);
 
- /*******************************************************************************
 
- * Function Name: CyBtldr_GetApplicationStatus
 
- ********************************************************************************
 
- * Summary:
 
- *   Gets the status for the provided application id. The status includes whether
 
- *   the application is valid and whether it is currently marked as active.  This
 
- *   should be called immediatly after enter bootloader in order to determine if
 
- *   the application is suitable for bootloading.
 
- *   NOTE: This is only valid for multi application bootloaders.
 
- *
 
- * Parameters:
 
- *   appID    - The application ID to get status information for
 
- *   isValid  - Is the provided application valid to be executed
 
- *   isActive - Is the provided application already marked as the active app
 
- *
 
- * Returns:
 
- *   CYRET_SUCCESS   - The end request was sent successfully
 
- *   CYRET_ERR_BTLDR - The bootloader experienced an error
 
- *   CYRET_ERR_COMM  - There was a communication error talking to the device
 
- *   CYRET_ERR_LENGTH- The result packet does not have enough data
 
- *   CYRET_ERR_DATA  - The result packet does not contain valid data
 
- *
 
- *******************************************************************************/
 
- EXTERN int CyBtldr_GetApplicationStatus(unsigned char appID, unsigned char* isValid, unsigned char* isActive);
 
- /*******************************************************************************
 
- * Function Name: CyBtldr_SetApplicationStatus
 
- ********************************************************************************
 
- * Summary:
 
- *   Sets the application that the bootloader will run.  This should be called
 
- *   after a new application has been programmed in and verified 
 
- *   NOTE: This is only valid for multi application bootloaders.
 
- *
 
- * Parameters:
 
- *   appID    - The application ID to set as the active application 
 
- *
 
- * Returns:
 
- *   CYRET_SUCCESS   - The end request was sent successfully
 
- *   CYRET_ERR_BTLDR - The bootloader experienced an error
 
- *   CYRET_ERR_COMM  - There was a communication error talking to the device
 
- *   CYRET_ERR_LENGTH- The result packet does not have enough data
 
- *   CYRET_ERR_DATA  - The result packet does not contain valid data
 
- *   CYRET_ERR_APP   - The application is not valid and cannot be set as active
 
- *
 
- *******************************************************************************/
 
- EXTERN int CyBtldr_SetApplicationStatus(unsigned char appID);
 
- /*******************************************************************************
 
- * Function Name: CyBtldr_ProgramRow
 
- ********************************************************************************
 
- * Summary:
 
- *   Sends a single row of data to the bootloader to be programmed into flash
 
- *
 
- * Parameters:
 
- *   arrayID – The flash array that is to be reprogrammed
 
- *   rowNum  – The row number within the array that is to be reprogrammed
 
- *   buf     – The buffer of data to program into the devices flash
 
- *   size    – The number of bytes in data that need to be sent to the bootloader
 
- *
 
- * Returns:
 
- *   CYRET_SUCCESS    - The row was programmed successfully
 
- *   CYRET_ERR_LENGTH - The result packet does not have enough data
 
- *   CYRET_ERR_DATA   - The result packet does not contain valid data
 
- *   CYRET_ERR_ARRAY  - The array is not valid for programming
 
- *   CYRET_ERR_ROW    - The array/row number is not valid for programming
 
- *   CYRET_ERR_BTLDR  - The bootloader experienced an error
 
- *   CYRET_ERR_ACTIVE - The application is currently marked as active
 
- *
 
- *******************************************************************************/
 
- EXTERN int CyBtldr_ProgramRow(unsigned char arrayID, unsigned short rowNum, unsigned char* buf, unsigned short size);
 
- /*******************************************************************************
 
- * Function Name: CyBtldr_EraseRow
 
- ********************************************************************************
 
- * Summary:
 
- *   Erases a single row of flash data from the device.
 
- *
 
- * Parameters:
 
- *   arrayID – The flash array that is to have a row erased
 
- *   rowNum  – The row number within the array that is to be erased
 
- *
 
- * Returns:
 
- *   CYRET_SUCCESS    - The row was erased successfully
 
- *   CYRET_ERR_LENGTH - The result packet does not have enough data
 
- *   CYRET_ERR_DATA   - The result packet does not contain valid data
 
- *   CYRET_ERR_ARRAY  - The array is not valid for programming
 
- *   CYRET_ERR_ROW    - The array/row number is not valid for programming
 
- *   CYRET_ERR_BTLDR  - The bootloader experienced an error
 
- *   CYRET_ERR_COMM   - There was a communication error talking to the device
 
- *   CYRET_ERR_ACTIVE - The application is currently marked as active
 
- *
 
- *******************************************************************************/
 
- EXTERN int CyBtldr_EraseRow(unsigned char arrayID, unsigned short rowNum);
 
- /*******************************************************************************
 
- * Function Name: CyBtldr_VerifyRow
 
- ********************************************************************************
 
- * Summary:
 
- *   Verifies that the data contained within the specified flash array and row 
 
- *   matches the expected value.
 
- *
 
- * Parameters:
 
- *   arrayID  – The flash array that is to be verified
 
- *   rowNum   – The row number within the array that is to be verified
 
- *   checksum – The expected checksum value for the row
 
- *
 
- * Returns:
 
- *   CYRET_SUCCESS      - The row was verified successfully
 
- *   CYRET_ERR_LENGTH   - The result packet does not have enough data
 
- *   CYRET_ERR_DATA     - The result packet does not contain valid data
 
- *   CYRET_ERR_ARRAY	   - The array is not valid for programming
 
- *   CYRET_ERR_ROW      - The array/row number is not valid for programming
 
- *   CYRET_ERR_CHECKSUM - The checksum does not match the expected value
 
- *   CYRET_ERR_BTLDR    - The bootloader experienced an error
 
- *   CYRET_ERR_COMM     - There was a communication error talking to the device
 
- *
 
- *******************************************************************************/
 
- EXTERN int CyBtldr_VerifyRow(unsigned char arrayID, unsigned short rowNum, unsigned char checksum);
 
- /*******************************************************************************
 
- * Function Name: CyBtldr_VerifyApplication
 
- ********************************************************************************
 
- * Summary:
 
- *   Verifies that the checksum for the entire bootloadable application matches 
 
- *   the expected value.  This is used to verify that the entire bootloadable
 
- *   image is valid and ready to execute.
 
- *
 
- * Parameters:
 
- *   void
 
- *
 
- * Returns:
 
- *   CYRET_SUCCESS      - The application was verified successfully
 
- *   CYRET_ERR_LENGTH   - The result packet does not have enough data
 
- *   CYRET_ERR_DATA     - The result packet does not contain valid data
 
- *   CYRET_ERR_CHECKSUM - The checksum does not match the expected value
 
- *   CYRET_ERR_BTLDR    - The bootloader experienced an error
 
- *   CYRET_ERR_COMM     - There was a communication error talking to the device
 
- *
 
- *******************************************************************************/
 
- EXTERN int CyBtldr_VerifyApplication();
 
- #endif
 
 
  |