charger: support screen rotation

Bug: 191831427
Test: charging animation can show in display correctly
Signed-off-by: Jack Wu <wjack@google.com>
Change-Id: Iedcd7d6c3cd841c44bdf1116701abcbd12a26959
diff --git a/healthd/healthd_draw.cpp b/healthd/healthd_draw.cpp
index 0e6fd27..3e73fcd 100644
--- a/healthd/healthd_draw.cpp
+++ b/healthd/healthd_draw.cpp
@@ -99,6 +99,15 @@
     gr_fb_blank(blank, drm);
 }
 
+/* support screen rotation for foldable phone */
+void HealthdDraw::rotate_screen(int drm) {
+    if (!graphics_available) return;
+    if (drm == 0)
+        gr_rotate(GRRotation::RIGHT /* landscape mode */);
+    else
+        gr_rotate(GRRotation::NONE /* Portrait mode */);
+}
+
 void HealthdDraw::clear_screen(void) {
     if (!graphics_available) return;
     gr_color(0, 0, 0, 255);
diff --git a/healthd/healthd_draw.h b/healthd/healthd_draw.h
index 0d7ac7a..3d4abbd 100644
--- a/healthd/healthd_draw.h
+++ b/healthd/healthd_draw.h
@@ -35,6 +35,9 @@
   // Blanks screen if true, unblanks if false.
   virtual void blank_screen(bool blank, int drm);
 
+  // Rotate screen.
+  virtual void rotate_screen(int drm);
+
   static std::unique_ptr<HealthdDraw> Create(animation *anim);
 
  protected:
diff --git a/healthd/healthd_mode_charger.cpp b/healthd/healthd_mode_charger.cpp
index 012e33b..9fe85d4 100644
--- a/healthd/healthd_mode_charger.cpp
+++ b/healthd/healthd_mode_charger.cpp
@@ -352,6 +352,7 @@
     if (screen_switch_ == SCREEN_SWITCH_ENABLE) {
         healthd_draw_->blank_screen(true, 0 /* drm */);
         healthd_draw_->blank_screen(true, 1 /* drm */);
+        healthd_draw_->rotate_screen(static_cast<int>(drm_));
         screen_blanked_ = true;
         screen_switch_ = SCREEN_SWITCH_DISABLE;
     }