lfrfid_app_scene_save_data.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include "lfrfid_app_scene_save_data.h"
  2. #include <dolphin/dolphin.h>
  3. void LfRfidAppSceneSaveData::on_enter(LfRfidApp* app, bool need_restore) {
  4. auto byte_input = app->view_controller.get<ByteInputVM>();
  5. RfidKey& key = app->worker.key;
  6. if(need_restore) printf("restored\r\n");
  7. if(need_restore) {
  8. key.set_data(old_key_data, key.get_type_data_count());
  9. } else {
  10. memcpy(old_key_data, key.get_data(), key.get_type_data_count());
  11. }
  12. memcpy(new_key_data, key.get_data(), key.get_type_data_count());
  13. byte_input->set_header_text("Enter the data in hex");
  14. byte_input->set_result_callback(
  15. save_callback, NULL, app, new_key_data, app->worker.key.get_type_data_count());
  16. app->view_controller.switch_to<ByteInputVM>();
  17. }
  18. bool LfRfidAppSceneSaveData::on_event(LfRfidApp* app, LfRfidApp::Event* event) {
  19. bool consumed = false;
  20. RfidKey& key = app->worker.key;
  21. if(event->type == LfRfidApp::EventType::Next) {
  22. key.set_data(new_key_data, key.get_type_data_count());
  23. DOLPHIN_DEED(DolphinDeedRfidAdd);
  24. app->scene_controller.switch_to_next_scene(LfRfidApp::SceneType::SaveName);
  25. }
  26. return consumed;
  27. }
  28. void LfRfidAppSceneSaveData::on_exit(LfRfidApp* app) {
  29. app->view_controller.get<ByteInputVM>()->clean();
  30. }
  31. void LfRfidAppSceneSaveData::save_callback(void* context) {
  32. LfRfidApp* app = static_cast<LfRfidApp*>(context);
  33. LfRfidApp::Event event;
  34. event.type = LfRfidApp::EventType::Next;
  35. app->view_controller.send_event(&event);
  36. }