1 #ifndef _VPDECC_H_ 2 #define _VPDECC_H_ 3 4 #pragma GCC diagnostic ignored "-Wunused-variable" 5 #pragma GCC diagnostic ignored "-Wunused-parameter" 6 7 #include <stdlib.h> 8 9 #define VPD_ECC_OK 0 10 #define VPD_ECC_NOT_ENOUGH_BUFFER 1 11 #define VPD_ECC_WRONG_ECC_SIZE 2 12 #define VPD_ECC_WRONG_BUFFER_SIZE 9 13 #define VPD_ECC_UNCORRECTABLE_DATA 90 14 #define VPD_ECC_CORRECTABLE_DATA 91 15 16 #ifdef __cplusplus 17 extern "C" 18 { 19 #endif 20 21 /* TODO doxygen !!!!!!!! */ 22 23 /******************************************************************************/ 24 /* vpdecc_create_ecc */ 25 /* */ 26 /* For a given data block (together with the length of the data block */ 27 /* this function creates the ECC */ 28 /* */ 29 /* @param pData In-Buffer containing the raw VPD data */ 30 /* (won't be changed) */ 31 /* */ 32 /* @param vDataLength In should contain the length of the 33 * Data */ 34 /* in the buffer given to vData */ 35 /* */ 36 /* @param pEcc Out-Buffer after execution this will be the */ 37 /* buffer for the calculated Ecc */ 38 /* */ 39 /* @param pEccLenght In/Out In : size of buffer */ 40 /* Out: contains the length of the Ecc 41 */ 42 /* */ 43 /* @return Error returncode */ 44 /******************************************************************************/ 45 int vpdecc_create_ecc(const unsigned char* data, size_t datalength, 46 unsigned char* ecc, size_t* ecc_buffersize); 47 48 /******************************************************************************/ 49 /* vpdecc_check_data */ 50 /* */ 51 /* For a given data block (together with the ecc) */ 52 /* this function checks the data for validness */ 53 /* */ 54 /* @param pData In-Buffer containing the raw VPD data */ 55 /* Out-Buffer containing the raw VPD data */ 56 /* No error : data unchanged 57 */ 58 /* Correctable error : data corrected 59 */ 60 /* Uncorrectable error: data unchanged 61 */ 62 /* */ 63 /* @param vDataLength In should contain the length of the 64 * Data */ 65 /* in the buffer given to vData */ 66 /* */ 67 /* @param pEcc In-Buffer should contain the Ecc for the data 68 */ 69 /* */ 70 /* */ 71 /* @param vEccLenght In should contain the length of the Ecc 72 */ 73 /* */ 74 /* @return Error returncode */ 75 /******************************************************************************/ 76 int vpdecc_check_data(unsigned char* data, size_t data_length, 77 const unsigned char* ecc, size_t ecc_length); 78 79 #ifdef __cplusplus 80 } /* end extern "C" */ 81 #endif 82 83 #endif /* endif _VPDECC_H_ */ 84