| /****************************************************************************** | |
| * | |
| * IBM Confidential | |
| * | |
| * Licensed Internal Code Source Materials | |
| * | |
| * IBM Flexible Support Processor Licensed Internal Code | |
| * | |
| * (c) Copyright IBM Corp. 2004 | |
| * | |
| * The source code is for this program is not published or otherwise divested | |
| * of its trade secrets, irrespective of what has been deposited with the | |
| * U.S. Copyright Office. | |
| * | |
| *****************************************************************************/ | |
| #ifndef _VPDECC_H_ | |
| #define _VPDECC_H_ | |
| #pragma GCC diagnostic ignored "-Wunused-variable" | |
| #pragma GCC diagnostic ignored "-Wunused-parameter" | |
| #include <stdlib.h> | |
| #define VPD_ECC_OK 0 | |
| #define VPD_ECC_NOT_ENOUGH_BUFFER 1 | |
| #define VPD_ECC_WRONG_ECC_SIZE 2 | |
| #define VPD_ECC_WRONG_BUFFER_SIZE 9 | |
| #define VPD_ECC_UNCORRECTABLE_DATA 90 | |
| #define VPD_ECC_CORRECTABLE_DATA 91 | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| /* TODO doxygen !!!!!!!! */ | |
| /******************************************************************************/ | |
| /* vpdecc_create_ecc */ | |
| /* */ | |
| /* For a given data block (together with the length of the data block */ | |
| /* this function creates the ECC */ | |
| /* */ | |
| /* @param pData In-Buffer containing the raw VPD data */ | |
| /* (wont't be changed) */ | |
| /* */ | |
| /* @param vDataLength In should contain the length of the Data */ | |
| /* in the buffer given to vData */ | |
| /* */ | |
| /* @param pEcc Out-Buffer after execution this will be the */ | |
| /* buffer for the calculated Ecc */ | |
| /* */ | |
| /* @param pEccLenght In/Out In : size of buffer */ | |
| /* Out: contains the length of the Ecc */ | |
| /* */ | |
| /* @return Error returncode */ | |
| /******************************************************************************/ | |
| int vpdecc_create_ecc(const unsigned char* data, size_t datalength, | |
| unsigned char* ecc, size_t* ecc_buffersize); | |
| /******************************************************************************/ | |
| /* vpdecc_check_data */ | |
| /* */ | |
| /* For a given data block (together with the ecc) */ | |
| /* this function checks the data for validness */ | |
| /* */ | |
| /* @param pData In-Buffer containing the raw VPD data */ | |
| /* Out-Buffer containing the raw VPD data */ | |
| /* No error : data unchanged */ | |
| /* Correctable error : data corrected */ | |
| /* Uncorrectable error: data unchanged */ | |
| /* */ | |
| /* @param vDataLength In should contain the length of the Data */ | |
| /* in the buffer given to vData */ | |
| /* */ | |
| /* @param pEcc In-Buffer should contain the Ecc for the data */ | |
| /* */ | |
| /* */ | |
| /* @param vEccLenght In should contain the length of the Ecc */ | |
| /* */ | |
| /* @return Error returncode */ | |
| /******************************************************************************/ | |
| int vpdecc_check_data(unsigned char* data, size_t data_length, | |
| const unsigned char* ecc, size_t ecc_length); | |
| #ifdef __cplusplus | |
| } /* end extern "C" */ | |
| #endif | |
| #endif /* endif _VPDECC_H_ */ |