tree f7075cd349275e4e343077f9554e552e43649043
parent 37c2612b4497f4065a810187e3f99cfaccca368c
author Faisal Awada <faisal@us.ibm.com> 1730731580 -0600
committer Faisal Awada <faisal@us.ibm.com> 1731119193 -0600

Utility functions for download firmware

Added set of utility functions to be used within the classes for
managing the PSU firmware updates. Here is a breakdown of the key
functions:

- getDevicePath():
  Construct the PSU device path using I2C bus and address.

- getClassInstance():
  Determines the appropriate updater class to use based on PSU model
  number.

- getFWFilenamePath():
  Searches a directory for a firmware file matching a specified prefix
  and file extension (.bin or .hex).

- calculateCRC8():
  Computes the CRC-8 checksum for transferred data.

- delay():
  Pauses execution for a specified number of milliseconds.

- bigEndianToLittleEndian():
  Converts a 32-bit value from big-endian to little-endian.

- validateFWFile():
  Checks if a firmware file exists and is non-empty.

- openFirmwareFile():
  Opens a firmware file in binary mode, returning a file stream if
  successful.

- readFirmwareBytes():
  Reads specified number of data bytes from a firmware file into a
  buffer. Return data read or null to the caller.

- usePsuJsonFile():
  Wrapper to check the existence of the PSU JSON file.

- Class accessors to private data:
  getPsuInventoryPath(): Accessor for PSU inventory path.
  getDevPath(): Accessor for device path.
  getDevName(): Accessor for device name.
  getImageDir(): Accessor for image directory.
  getI2C(): I2C interface accessor.

Tested every function manually:

- getDevicePath() (using busctl):
  - Validate I2C bus and address values through psuInventoryPath
    validate expected result
  - Modified psuInventoryPath to invalid path
    validate returned invalid path.

- getClassInstance():
  - Validate with matching model number the function instantiate
    appropriate class.
  - Validate the default class instantiated.

- getFWFilenamePath():
  - Validate return of the correct file name in the PSU FW directory
  - Validate null returns when FW files don't exist

- calculaterCRC8():
  - Validate single byte 0x0 result 0x0, single byte 0x01 result 0x07

- delay():
  - Verified the task suspend execution.

- bigEndianToLittleEndian():
  - Verified input 0x12345678 resulted in 0x78563412

- validateFWFile():
  - Validate the existence of the file otherwise an error is logged
  - Validate the file size is greater than 0 otherwise an error is
    logged.

- openFirmwareFile():
  - Validate ifstream object is returned and was able to read from.
  - Validate error logged if the file name is null
  - validate error logged when unable to open the file

- readFirmwareBytes():
  - Validate data read from FW file
  - Validate number of bytes read.

- usePsuJsonFile():
  - Added JSON file to simulator and validated true return.

Change-Id: I0b8b24ae7d37724dab608d2c4977c1b42d4e1632
Signed-off-by: Faisal Awada <faisal@us.ibm.com>
