DATA_TYPE_MINUTE_UNITS, // 分钟(单位)
DATA_TYPE_WEEK_NUM, // 星期(数字)
DATA_TYPE_STEPS_GOAL, // 运动步数目标
+ DATA_TYPE_SECOND_MAPPER, // 秒映射
+ DATA_TYPE_POWER_MAPPER, // 电量映射
DATA_TYPE_MULTI_FLOAT_BASE = 0x2fff, // 多个浮点数据类型基值
DATA_TYPE_HOUR_MIN, // 时分
--- /dev/null
+
+#ifndef DIAL_MODEL_PowerMapper_H
+#define DIAL_MODEL_PowerMapper_H
+
+#include "DialBaseModel.h"
+
+namespace OHOS {
+class DialModelPowerMapper : public DialBaseModel {
+public:
+ DialModelPowerMapper() {}
+ ~DialModelPowerMapper() override {}
+ static DialModelPowerMapper *GetInstance() {
+ static DialModelPowerMapper instance;
+ return &instance;
+ }
+ bool GetDialFloatData(DialDataType &type, float &out) override;
+ void UpdatePowerMapper();
+ void NotifyPowerMapperUpdate();
+
+private:
+ float powermapper_ = 0;
+ bool PowerMapperUpdated_{false};
+};
+} // namespace OHOS
+#endif
--- /dev/null
+
+
+#include "DialBoxProgressView.h"
+#include "DialModelPowerMapper.h"
+#include "RegisterDialModel.h"
+#include "battery_hal.h"
+#include "wearable_log.h"
+#include <string>
+extern uint8_t battery_get_voltage(float *voltage);
+
+REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_POWER_MAPPER,
+ OHOS::DialModelPowerMapper::GetInstance());
+
+namespace OHOS {
+bool DialModelPowerMapper::GetDialFloatData(DialDataType &type, float &out) {
+ (void)type;
+ float voltage = 0.0F;
+ powermapper_ = battery_get_voltage(&voltage);
+ //电量0~100
+ //映射0~1
+ powermapper_ = static_cast<float>(powermapper_) / 100.0f;
+ out = static_cast<float>(powermapper_);
+ return true;
+}
+
+void DialModelPowerMapper::UpdatePowerMapper() {
+ float voltage = 0.0F;
+ powermapper_ = battery_get_voltage(&voltage);
+ if (powermapper_ == 0) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to get battery voltage");
+ return;
+ }
+ PowerMapperUpdated_ = true;
+ NotifyPowerMapperUpdate();
+}
+
+void DialModelPowerMapper::NotifyPowerMapperUpdate() {
+ if (onChangeListener_ == nullptr) {
+ onChangeListener_ = new OnDialDataUpdateListener();
+ }
+ if (onChangeListener_ != nullptr) {
+ onChangeListener_->OnDialFloatDataUpdate(
+ DialDataType::DATA_TYPE_POWER_MAPPER, powermapper_);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[UpdatePowerMapper!]\r\n");
+ }
+}
+} // namespace OHOS
<label id="minute_label" color="0xFF666666" font="HarmonyOS_Sans_SC_Regular.ttf" break_mode="adapt" rect="240 162 200 60" text="%02.f" font_size="120" align="center" bind_data="14" period="10"></label>\r
\r
<!-- 电量 -->\r
- <arc_progress id="battery_progress" rect="0 0 466 436" color="0xFFf0c440" cap_type="round" radius="191" background_color="0x00FFFFFF" start_angle="290" end_angle="430" line_width="10" bind_data="25" period="10"></arc_progress>\r
+ <arc_progress id="battery_progress" rect="0 0 466 436" color="0xFFf0c440" cap_type="round" radius="191" background_color="0xff191919" start_angle="290" end_angle="430" line_width="10" bind_data="33" period="10"></arc_progress>\r
<!-- 步数目标 -->\r
<box_progress id="stepgoal_progress" rect="103 302 260 12" color="0xFFf0c440" cap_type="round" direction="left_to_right" background_color="0xff191919" bind_data="31"></box_progress>\r
\r