wifi_ctrl.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. # SPDX-FileCopyrightText: 2018-2022 Espressif Systems (Shanghai) CO LTD
  2. # SPDX-License-Identifier: Apache-2.0
  3. #
  4. # APIs for interpreting and creating protobuf packets for Wi-Fi State Controlling
  5. import proto
  6. from utils import str_to_bytes
  7. def print_verbose(security_ctx, data):
  8. if (security_ctx.verbose):
  9. print(f'\x1b[32;20m++++ {data} ++++\x1b[0m')
  10. def ctrl_reset_request(security_ctx):
  11. # Form protobuf request packet for CtrlReset command
  12. cmd = proto.wifi_ctrl_pb2.WiFiCtrlPayload()
  13. cmd.msg = proto.wifi_ctrl_pb2.TypeCmdCtrlReset
  14. enc_cmd = security_ctx.encrypt_data(cmd.SerializeToString())
  15. print_verbose(security_ctx, f'Client -> Device (Encrypted CmdCtrlReset): 0x{enc_cmd.hex()}')
  16. return enc_cmd.decode('latin-1')
  17. def ctrl_reset_response(security_ctx, response_data):
  18. # Interpret protobuf response packet from CtrlReset command
  19. dec_resp = security_ctx.decrypt_data(str_to_bytes(response_data))
  20. resp = proto.wifi_ctrl_pb2.WiFiCtrlPayload()
  21. resp.ParseFromString(dec_resp)
  22. print_verbose(security_ctx, f'CtrlReset status: 0x{str(resp.status)}')
  23. if resp.status != 0:
  24. raise RuntimeError
  25. def ctrl_reprov_request(security_ctx):
  26. # Form protobuf request packet for CtrlReprov command
  27. cmd = proto.wifi_ctrl_pb2.WiFiCtrlPayload()
  28. cmd.msg = proto.wifi_ctrl_pb2.TypeCmdCtrlReprov
  29. enc_cmd = security_ctx.encrypt_data(cmd.SerializeToString())
  30. print_verbose(security_ctx, f'Client -> Device (Encrypted CmdCtrlReset): 0x{enc_cmd.hex()}')
  31. return enc_cmd.decode('latin-1')
  32. def ctrl_reprov_response(security_ctx, response_data):
  33. # Interpret protobuf response packet from CtrlReprov command
  34. dec_resp = security_ctx.decrypt_data(str_to_bytes(response_data))
  35. resp = proto.wifi_ctrl_pb2.WiFiCtrlPayload()
  36. resp.ParseFromString(dec_resp)
  37. print_verbose(security_ctx, f'CtrlReset status: 0x{str(resp.status)}')
  38. if resp.status != 0:
  39. raise RuntimeError