/****************************************************************************** | |
* | |
* 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_ */ |