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 Tangint 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 TangUINT8 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