blob: 6d4175d6e6ef61ce073cb5f88053bfde32acba33 [file] [log] [blame]
Alpana Kumaric0aeac32019-11-28 05:20:10 -06001/******************************************************************************
2 *
3 * IBM Confidential
4 *
5 * Licensed Internal Code Source Materials
6 *
7 * IBM Flexible Support Processor Licensed Internal Code
8 *
9 * (c) Copyright IBM Corp. 2004
10 *
11 * The source code is for this program is not published or otherwise divested
12 * of its trade secrets, irrespective of what has been deposited with the
13 * U.S. Copyright Office.
14 *
15 *****************************************************************************/
16
17#ifndef _VPDECC_H_
18#define _VPDECC_H_
19
Priyanga Ramasamy9d149342020-07-16 23:41:26 +053020#pragma GCC diagnostic ignored "-Wunused-variable"
21#pragma GCC diagnostic ignored "-Wunused-parameter"
22
Alpana Kumaric0aeac32019-11-28 05:20:10 -060023#include <stdlib.h>
24
25#define VPD_ECC_OK 0
26#define VPD_ECC_NOT_ENOUGH_BUFFER 1
27#define VPD_ECC_WRONG_ECC_SIZE 2
28#define VPD_ECC_WRONG_BUFFER_SIZE 9
29#define VPD_ECC_UNCORRECTABLE_DATA 90
30#define VPD_ECC_CORRECTABLE_DATA 91
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36/* TODO doxygen !!!!!!!! */
37
38/******************************************************************************/
39/* vpdecc_create_ecc */
40/* */
41/* For a given data block (together with the length of the data block */
42/* this function creates the ECC */
43/* */
44/* @param pData In-Buffer containing the raw VPD data */
45/* (wont't be changed) */
46/* */
47/* @param vDataLength In should contain the length of the Data */
48/* in the buffer given to vData */
49/* */
50/* @param pEcc Out-Buffer after execution this will be the */
51/* buffer for the calculated Ecc */
52/* */
53/* @param pEccLenght In/Out In : size of buffer */
54/* Out: contains the length of the Ecc */
55/* */
56/* @return Error returncode */
57/******************************************************************************/
58int vpdecc_create_ecc(const unsigned char* data, size_t datalength,
59 unsigned char* ecc, size_t* ecc_buffersize);
60
61/******************************************************************************/
62/* vpdecc_check_data */
63/* */
64/* For a given data block (together with the ecc) */
65/* this function checks the data for validness */
66/* */
67/* @param pData In-Buffer containing the raw VPD data */
68/* Out-Buffer containing the raw VPD data */
69/* No error : data unchanged */
70/* Correctable error : data corrected */
71/* Uncorrectable error: data unchanged */
72/* */
73/* @param vDataLength In should contain the length of the Data */
74/* in the buffer given to vData */
75/* */
76/* @param pEcc In-Buffer should contain the Ecc for the data */
77/* */
78/* */
79/* @param vEccLenght In should contain the length of the Ecc */
80/* */
81/* @return Error returncode */
82/******************************************************************************/
83int vpdecc_check_data(unsigned char* data, size_t data_length,
84 const unsigned char* ecc, size_t ecc_length);
85
86#ifdef __cplusplus
87} /* end extern "C" */
88#endif
89
90#endif /* endif _VPDECC_H_ */