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. 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. 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 }