ChameleonUltra icon indicating copy to clipboard operation
ChameleonUltra copied to clipboard

Some suggestions for firmware compatibility.

Open xianglin1998 opened this issue 11 months ago • 23 comments

  1. The part related to the communication protocol cannot be changed at will.
  2. Those involving communication command codes and communication return parameters cannot be changed at will.
  3. When adding any command, its function definition should be considered, and the functions related to HF should not be placed in the Device category.
  4. If you need to delete the command, you can only mark it for deletion, remember not to rearrange the communication command code.
  5. In any case, the client must be able to obtain the software version code for compatibility processing.
  6. The current firmware version lacks many commands, which will lead to the client's functions being too simple or too difficult to use. It is necessary to wait for the v1.1 version to be released when the firmware is relatively complete, and update iteratively and perform compatibility processing from the v1.1 version.
  7. After the v1.1 version of the firmware is released in the future, changes that affect compatibility should be more strictly reviewed to prevent the new firmware from being unable to run on the old client.
  8. Ideally, when a user uses a new client with an old device firmware, there should be no compatibility issues. In other words, users can still use the old functions, but only the functions provided by the new version of the firmware cannot be used. (For example, the device firmware v1.2 provides the function of StaticNested decryption, but the GUI/CLI recognizes that the device firmware version used by the user is v1.1, then the user should be prohibited from running this function, and the user should be guided to update the firmware)
  9. Starting from version v1.1, a compatibility adaptation document needs to be provided, and any client can perform compatibility adaptation according to the guidance of this document. For example, it is described in the document that the v1.2 version adds the collection command of StaticNested decryption parameters, and describes the specific meaning of the collected parameters, then any client can provide the StaticNested function when it detects that the firmware version is v1.2. (ideally)

Note: We are currently in the stage of ChameleonUltra's firmware function construction and community ecological construction, and we can temporarily ignore the strict restrictions on adding/modifying commands.

xianglin1998 avatar Jul 23 '23 13:07 xianglin1998