#ifndef _VPDECC_H_ #define _VPDECC_H_ #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-parameter" #include #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 */ /* (won'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_ */