/* * Helper function for calculating PEC */ uint8_t LT_SMBus::calculate(uint8_t *data, uint8_t begining_value, uint8_t start_index, uint8_t length) { uint8_t i; uint8_t ret_value = begining_value; for (i = start_index; i < (start_index + length); i++) { ret_value = doCalculate(data[i], ret_value); } return ret_value; }
int doCalculate(string S, string T) { if (T.length() == 0) return 1; if (S.length() == 0) return 0; int num = 0; for (int i = 0; i < S.length(); i++) { if (S[i] == T[0]) { num += doCalculate(S.substr(i + 1), T.substr(1)); } } return num; }