private static string GetComposedValue( BitsRange bitsRange, int registerLength, int byteIndex, string[] byteParameterNames) { byte[] byteMasks = bitsRange.GetByteMasks(registerLength, byteIndex); bool anyMask = false; var byteMaskList = new List <string>(); for (int i = 0; i < byteMasks.Length; i++) { if (byteMasks[i] > 0) { bool needsMask = byteMasks[i] != 0xFF; string byteMask = !needsMask ? byteParameterNames[i] : $"({byteParameterNames[i]} & {ToHex(byteMasks[i], 2)})"; int shift = bitsRange.FromBits - (byteIndex - i) * 8; byteMask = ShiftValue(byteMask, shift); byteMaskList.Add(byteMask); if (needsMask) { anyMask = true; } } } string composedValue; bool needsCasting; if ((byteMaskList.Count == 1) && !anyMask) { needsCasting = false; composedValue = byteMaskList[0]; } else { needsCasting = true; composedValue = ((byteMaskList.Count == 1) && anyMask) ? $"{string.Join(" | ", byteMaskList)}" : $"({string.Join(" | ", byteMaskList)})"; } if (needsCasting) { composedValue = $"({GetIntegerType(bitsRange)})" + composedValue; } return(composedValue); }
private static string[] GetDecomposedValues( string name, BitsRange bitsRange, int registerLength, int byteIndex, bool isNumeric) { byte[] byteMasks = bitsRange.GetByteMasks(registerLength, byteIndex); var getAsBytesValues = new string[registerLength]; if (!isNumeric) { name = $"({GetIntegerType(bitsRange)}){name}"; } for (int i = 0; i < byteMasks.Length; i++) { if (byteMasks[i] > 0) { bool needsMask = byteMasks[i] != 0xFF; int shift = (byteIndex - i) * 8 - bitsRange.FromBits; string propertyMask = ShiftValue(name, shift); if (needsMask) { propertyMask = $"(byte)({propertyMask} & {ToHex(byteMasks[i], 2)})"; } else if (bitsRange.ByteCount > 1) { propertyMask = "(byte)" + propertyMask; } getAsBytesValues[i] = propertyMask; } } return(getAsBytesValues); }