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