xref: /openbmc/libcper/common-utils.c (revision fedd457d)
1*aacf0e26SLawrence Tang /**
2*aacf0e26SLawrence Tang  * Describes common utility functions shared between CPER projects within this repository.
3*aacf0e26SLawrence Tang  * No functions here depend on json-c or b64.c.
4*aacf0e26SLawrence Tang  *
5*aacf0e26SLawrence Tang  * Author: Lawrence.Tang@arm.com
6*aacf0e26SLawrence Tang  **/
7*aacf0e26SLawrence Tang 
8*aacf0e26SLawrence Tang #include "edk/BaseTypes.h"
9*aacf0e26SLawrence Tang #include "common-utils.h"
10*aacf0e26SLawrence Tang 
11*aacf0e26SLawrence Tang //Converts the given BCD byte to a standard integer.
bcd_to_int(UINT8 bcd)12*aacf0e26SLawrence Tang int bcd_to_int(UINT8 bcd)
13*aacf0e26SLawrence Tang {
14*aacf0e26SLawrence Tang 	return ((bcd & 0xF0) >> 4) * 10 + (bcd & 0x0F);
15*aacf0e26SLawrence Tang }
16*aacf0e26SLawrence Tang 
17*aacf0e26SLawrence Tang //Converts the given integer to a single byte BCD.
int_to_bcd(int value)18*aacf0e26SLawrence Tang UINT8 int_to_bcd(int value)
19*aacf0e26SLawrence Tang {
20*aacf0e26SLawrence Tang 	UINT8 result = 0;
21*aacf0e26SLawrence Tang 	int shift = 0;
22*aacf0e26SLawrence Tang 	while (value > 0) {
23*aacf0e26SLawrence Tang 		result |= (value % 10) << (shift++ << 2);
24*aacf0e26SLawrence Tang 		value /= 10;
25*aacf0e26SLawrence Tang 	}
26*aacf0e26SLawrence Tang 
27*aacf0e26SLawrence Tang 	return result;
28*aacf0e26SLawrence Tang }
29