version=HEAD
DATE=$(date +%Y%m%d_%H%M%S)
HOMEDIR=$PWD
-DEFAULT_BUILD_TYPE=debug
+DEFAULT_BUILD_TYPE=release
DEFAULT_TARGET_PACK_NAME=pack_brandy_native_js
TARGET_PACK_NAME=$DEFAULT_TARGET_PACK_NAME
board_init(ssb_to_app_table.ssb_to_application_flash_id, ssb_to_app_table.ssb_to_application_flash_unique_id);
service_init();
- /**
- * TODO: 在此处初始化配置信息,为后面服务启动提供参数信息
- *
- * ConfigModel 初始化
- *
- */
+
thread_pri_init();
(void)osKernelStart();
uapi_pm_control(PM_DISPLAY_POWER_OFF);\r
#endif\r
\r
+ /**\r
+ * TODO: 在此处初始化配置信息,为后面服务启动提供参数信息\r
+ * \r
+ * ConfigModel 初始化\r
+ * \r
+ */\r
+ ConfigModelInit();\r
+ \r
+\r
#if DSP_EXIST == YES\r
audio_init();\r
#endif\r
#ifdef ENABLE_SLIP\r
slip_uart_init();\r
#endif\r
-#ifdef SUPPORT_CAT1_SERVICE\r
- cat1_server_init();\r
-#endif\r
+\r
\r
#ifdef ENABLE_CYWEE\r
uapi_cywee_service_init();\r
#endif \r
\r
#ifdef SUPPORT_BLE_SERVICE\r
- svr_bluetooth_init();\r
+ if(start_ble_service_on_bootup_flag())\r
+ {\r
+ PRINT("start custom protocol classic bt ble service !\r\n");\r
+ openBle();\r
+\r
+ }\r
#endif \r
\r
#ifdef SUPPORT_ALIPAY_SEC\r
uapi_alipay_svr_init();\r
#endif\r
// ble_hid_server_init();\r
+\r
+#ifdef SUPPORT_CAT1_SERVICE\r
+ cat1_server_init();\r
+#endif\r
+\r
+ startup_post_init();\r
+\r
set_startup_finish_flag();\r
\r
\r
${CMAKE_CURRENT_SOURCE_DIR}/nativelauncher/include
${CMAKE_CURRENT_SOURCE_DIR}/nativelauncher/include/slices/main
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screennotify/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/nativeui
)
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/screensetting/include
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uiservice/include
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/include
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/
+ # ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/UIInitializer/
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/InitComponent/include
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/uisample/uitest/framework/include
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherReportView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/FutureWeatherPresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/FutureWeatherView.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/GetWeatherDataErrorPresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/GetWeatherDataErrorView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherControlView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/weather/src/WeatherView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rotate/src/RotateView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/rotate/src/RotatePresenter.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dialupdate/src/DialUpdateView.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dialupdate/src/DialUpdatePresenter.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dialupdate/src/DialUpdateModel.cpp
+ # ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dialupdate/src/DialUpdateView.cpp
+ # ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dialupdate/src/DialUpdatePresenter.cpp
+ # ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/dialupdate/src/DialUpdateModel.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phoneservice/src/PhoneService.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/phoneservice/src/PhoneAudio.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetTimePresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetCaluliView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingSetCaluliPresenter.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnoteView.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnotePresenter.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnote2View.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEndnote2Presenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEnddataView.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingEnddataPresenter.cpp
${CMAKE_CURRENT_SOURCE_DIR}/nativeui/traing/src/TraingWinView.cpp
VIEW_SHUTDOWN_OR_REBOOT, // 关机或重启界面
VIEW_WEATHER, // 天气
VIEW_FUTURE_WEATHER, // 未来天气
- VIEW_GET_WEATHER_DATA_ERROR, // 获取天气数据失败
VIEW_SYSTEM, // 系统
VIEW_SOUND_VIBRATION, // 声音与震动
VIEW_SYSTEM_VOLUME, // 系统音量
VIEW_TRAININGSETDIST, // 设置训练路程
VIEW_TRAININGSETSTEP, // 设置训练步数
VIEW_TRAININGCRAD, // 训练控制卡片
- VIEW_TRAININGENDNOTE, // 结束训练提醒
- VIEW_TRAININGENDNOTE2, // 结束训练时间太短
VIEW_TRAININGENDDATA, // 训练结束详细数据
VIEW_TRAININGSTRONG, // 训练强度介绍
VIEW_TRAININGWIN, // 目标达成
/* -------------------------------------------------------------------------- */
void InitWeatherSlice(void);
void InitFutureWeatherSlice(void);
- void InitGetWeatherDataErrorSlice(void);
void InitSystemSlice(void);
void InitSoundAndVibrationSlice(void);
void InitSystemVolumeSlice(void);
void InitBloodSlice(void);
void InitHeartSlice(void);
void InitMainAlipaySlice(void);
- void InitDialUpdateSlice(void);
+ // void InitDialUpdateSlice(void);
void InitSaveEleSlice(void);
void InitSaveBatSlice(void);
void InitMessageSlice(void);
void InitTraingSetDistSlice(void);
void InitTraingSetStepSlice(void);
void InitTraingCardSlice(void);
- void InitTraingEndnoteSlice(void);
- void InitTraingEndnote2Slice(void);
void InitTraingEnddataSlice(void);
void InitTraingWinSlice(void);
#include "weather/include/MainWeatherView.h"
#include "weather/include/FutureWeatherPresenter.h"
#include "weather/include/FutureWeatherView.h"
-#include "weather/include/GetWeatherDataErrorPresenter.h"
-#include "weather/include/GetWeatherDataErrorView.h"
#include "system/include/SystemPresenter.h"
#include "system/include/SystemView.h"
#include "rotate/include/RotateView.h"
#include "rotate/include/RotatePresenter.h"
-#include "dialupdate/include/DialUpdatePresenter.h"
-#include "dialupdate/include/DialUpdateView.h"
+// #include "dialupdate/include/DialUpdatePresenter.h"
+// #include "dialupdate/include/DialUpdateView.h"
#include "config/include/ConfigModel.h"
#include "rebootdevice/include/RebootModel.h"
#include "traing/include/TraingSetDistView.h"
#include "traing/include/TraingSetSeptPresenter.h"
#include "traing/include/TraingSetSeptView.h"
-#include "traing/include/TraingEndnotePresenter.h"
-#include "traing/include/TraingEndnoteView.h"
-#include "traing/include/TraingEndnote2Presenter.h"
-#include "traing/include/TraingEndnote2View.h"
#include "traing/include/TraingEnddataPresenter.h"
#include "traing/include/TraingEnddataView.h"
#include "traing/include/TraingStrongPresenter.h"
{VIEW_SHUTDOWN_OR_REBOOT, &NativeLauncher::InitRebootSlice},
{VIEW_WEATHER, &NativeLauncher::InitWeatherSlice}, // 天气
{VIEW_FUTURE_WEATHER, &NativeLauncher::InitFutureWeatherSlice}, // 未来天气
- {VIEW_GET_WEATHER_DATA_ERROR, &NativeLauncher::InitGetWeatherDataErrorSlice}, // 获取天气数据失败
{VIEW_SYSTEM, &NativeLauncher::InitSystemSlice}, // 系统实例化地址
{VIEW_SOUND_VIBRATION, &NativeLauncher::InitSoundAndVibrationSlice}, // 声音与震动实例化地址
{VIEW_SYSTEM_VOLUME, &NativeLauncher::InitSystemVolumeSlice}, // 系统音量
{VIEW_MESSAGE, &NativeLauncher::InitMessageSlice},
{VIEW_ROTATE, &NativeLauncher::InitRotateSlice},
- {VIEW_DIALUPDATE, &NativeLauncher::InitDialUpdateSlice},
+ // {VIEW_DIALUPDATE, &NativeLauncher::InitDialUpdateSlice},
{VIEW_BLOODOXY, &NativeLauncher::InitMainBloodOxyView},
{VIEW_HEART, &NativeLauncher::InitHeartSlice},
{VIEW_TRAININGSETDIST, &NativeLauncher::InitTraingSetDistSlice}, // 设置目标距离
{VIEW_TRAININGSETSTEP, &NativeLauncher::InitTraingSetStepSlice}, // 设置目标步数
{VIEW_TRAININGCRAD, &NativeLauncher::InitTraingCardSlice}, // 训练卡片
- {VIEW_TRAININGENDNOTE, &NativeLauncher::InitTraingEndnoteSlice}, // 训练结束提醒
- {VIEW_TRAININGENDNOTE2, &NativeLauncher::InitTraingEndnote2Slice}, // 训练结束时间太短提醒
{VIEW_TRAININGENDDATA, &NativeLauncher::InitTraingEnddataSlice}, // 训练结束详细数据
{VIEW_TRAININGWIN, &NativeLauncher::InitTraingWinSlice}, // 训练目标达成
{VIEW_TRAINING_RECORD, &NativeLauncher::InitTraingRecordSlice}, // 训练目标达成
NativeAbility::GetInstance().AddSliceProxy(VIEW_FUTURE_WEATHER, futureweather);
}
- void NativeLauncher::InitGetWeatherDataErrorSlice(void)
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitGetWeatherDataErrorSlice");
- SliceProxy *getweatherdataerror = new AbilitySliceProxy<GetWeatherDataErrorView, GetWeatherDataErrorPresenter>;
- if (getweatherdataerror == nullptr)
- {
- return;
- }
- NativeAbility::GetInstance().AddSliceProxy(VIEW_GET_WEATHER_DATA_ERROR, getweatherdataerror);
- }
+
void NativeLauncher::InitSystemSlice(void) // 系统
{
}
NativeAbility::GetInstance().AddSliceProxy(VIEW_ROTATE, rotate);
}
- void NativeLauncher::InitDialUpdateSlice(void) // 切换表盘
- {
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitDialUpdateSlice");
- SliceProxy *dialupdate = new AbilitySliceProxy<DialUpdateView, DialUpdatePresenter>;
- if (dialupdate == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dialupdate");
- return;
- }
- NativeAbility::GetInstance().AddSliceProxy(VIEW_DIALUPDATE, dialupdate);
- }
+ // void NativeLauncher::InitDialUpdateSlice(void) // 切换表盘
+ // {
+ // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitDialUpdateSlice");
+ // SliceProxy *dialupdate = new AbilitySliceProxy<DialUpdateView, DialUpdatePresenter>;
+ // if (dialupdate == nullptr)
+ // {
+ // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "dialupdate");
+ // return;
+ // }
+ // NativeAbility::GetInstance().AddSliceProxy(VIEW_DIALUPDATE, dialupdate);
+ // }
void NativeLauncher::InitClassicBluetoothSlice(void)
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "NativeLauncher::InitClassicBluetoothSlice");
NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGCRAD, traingcardview);
}
- void NativeLauncher::InitTraingEndnoteSlice(void)
- {
- SliceProxy *traingendnoteview = new AbilitySliceProxy<TraingEndnoteView, TraingEndnotePresenter>;
- NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGENDNOTE, traingendnoteview);
- }
- void NativeLauncher::InitTraingEndnote2Slice(void)
- {
- SliceProxy *traingendnote2view = new AbilitySliceProxy<TraingEndnote2View, TraingEndnote2Presenter>;
- NativeAbility::GetInstance().AddSliceProxy(VIEW_TRAININGENDNOTE2, traingendnote2view);
- }
void NativeLauncher::InitTraingEnddataSlice(void)
{
SliceProxy *traingenddataview = new AbilitySliceProxy<TraingEnddataView, TraingEnddataPresenter>;
{VIEW_COMPASS, PNG_APPLIST_COMPASS_IMAGE, PNG_APPLIST_COMPASS_IMAGE, "指南针", nullptr},
{VIEW_BLOODOXY, PNG_APPLIST_SPO2_IMAGE, PNG_APPLIST_SPO2_IMAGE, "血氧饱和度", nullptr},
{VIEW_HEART, PNG_APPLIST_HEART_IMAGE, PNG_APPLIST_HEART_IMAGE, "心率检测", nullptr},
- {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, "室内步行", nullptr},
{VIEW_WEATHER, PNG_APPLIST_WEATHER_IMAGE, PNG_APPLIST_WEATHER_IMAGE, "天气", nullptr},
{VIEW_TRAINING, PNG_APPLIST_TRAINING_IMAGE, PNG_APPLIST_TRAINING_IMAGE, "体能训练", nullptr},
{VIEW_TRAINING_RECORD, PNG_APPLIST_TRAINING_RECORD_IMAGE, PNG_APPLIST_TRAINING_RECORD_IMAGE, "训练记录", nullptr},
{VIEW_OFFLINEVOICE, PNG_APPLIST_VOCASSIST_IMAGE, PNG_APPLIST_VOCASSIST_IMAGE, "语音助手", nullptr},
{VIEW_UISAMPLE, PNG_APPLIST_UI_SAMPLE_IMAGE, PNG_APPLIST_UI_SAMPLE_IMAGE, "示例", nullptr},
{VIEW_MESSAGE, PNG_APPLIST_CALLER_IMAGE, PNG_APPLIST_CALLER_IMAGE, "信息通知", nullptr},
+ {VIEW_INDOORWALK, PNG_APPLIST_WALK_IMAGE, PNG_APPLIST_WALK_IMAGE, "室内步行", nullptr},
#endif
};
// WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "bt enable_bt_stack ret = %d", ret);\r
\r
BtInitCallBacks();\r
-\r
- // svr_bluetooth_init();\r
+#ifdef SUPPORT_ALIPAY_SEC\r
+ // svr_alipay_bluetooth_init();\r
+#else\r
BtInitCallBacksEx();\r
BtInitGatts();\r
-\r
+#endif\r
BtInitSpp();\r
\r
SetUpListCase();\r
\r
private:\r
// 用来记录蓝牙开关状态,默认关闭状态\r
- bool TradionalBlueToothToggleButtonState{false}; \r
+ bool ClassicBlueToothState{false}; \r
};\r
} // namespace OHOS\r
#endif
\ No newline at end of file
static ClassicBlueToothView *GetInstance(void);\r
void ClassicBlueToothViewInit(void);\r
void ClearAll(void);\r
- bool GetTradionalBlueToothToggleButtonState(void);\r
- void SetTradionalBlueToothToggleButtonState(bool state);\r
+ bool GetClassicBlueToothState(void);\r
+ void SetClassicBlueToothState(bool state);\r
\r
public:\r
virtual void OnStart() override;\r
ClassicBlueToothModel::ClassicBlueToothModel()\r
{\r
ConfigModel *p_ConfigModel = ConfigModel::GetInstance();\r
- TradionalBlueToothToggleButtonState = p_ConfigModel->GetTradionalBlueToothToggleButtonState();\r
+ ClassicBlueToothState = p_ConfigModel->GetClassicBlueToothState();\r
}\r
\r
ClassicBlueToothModel::~ClassicBlueToothModel() {}\r
/// @param value true 开启状态 false 关闭状态\r
void ClassicBlueToothModel::MarkTradionalBlueToothToggleButtonStatus(bool value)\r
{\r
- TradionalBlueToothToggleButtonState = value;\r
+ ClassicBlueToothState = value;\r
}\r
\r
/// @brief 根据标记蓝牙开关的状态来确定蓝牙切换按钮是"开"还是"关状态\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TradionalBlueToothToggleButtonStatusInit ClassicBlueToothPresenter GetInstance fail");\r
return false;\r
}\r
- Classicbluetoothpresenter->SetBluetoothDeviceSwitchState(TradionalBlueToothToggleButtonState); // 蓝牙开关状态\r
+ Classicbluetoothpresenter->SetBluetoothDeviceSwitchState(ClassicBlueToothState); // 蓝牙开关状态\r
return true;\r
}\r
} // namespace OHOS\r
}\r
if (value != false)\r
{\r
- classicBlueToothView->SetTradionalBlueToothToggleButtonState(true);\r
+ classicBlueToothView->SetClassicBlueToothState(true);\r
ClassicBlueToothModel::GetInstance()->MarkTradionalBlueToothToggleButtonStatus(false); // 将Model层保存的状态清除\r
}\r
}\r
{\r
case UICheckBox::SELECTED:\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BlueTooth Capability Is Enabled");\r
+\r
+ ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON,true);\r
+\r
#ifdef SUPPORT_BLE_SERVICE\r
- // openBle();//主动开启蓝牙\r
+ openBle();//主动开启蓝牙\r
#endif\r
break;\r
case UICheckBox::UNSELECTED:\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "BlueTooth Capability Is Disabled");\r
+ ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON,false);\r
+\r
#ifdef SUPPORT_BLE_SERVICE\r
- // closeBle();\r
+ closeBle();\r
#endif \r
break;\r
default:\r
{\r
BlueToothScrollView->RemoveAll();\r
\r
- bool state = GetTradionalBlueToothToggleButtonState();\r
+ bool state = GetClassicBlueToothState();\r
if (state == true)\r
{\r
ClassicBlueToothModel::GetInstance()->MarkTradionalBlueToothToggleButtonStatus(true);\r
- ConfigModel::GetInstance()->WriteJsonData_Bool(ConfigModel::GetInstance()->GetcJSON(), "TradionalBlueToothToggleButtonState", true);\r
+ // ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON,true);\r
+ // ConfigModel::GetInstance()->WriteJsonData_Bool(ConfigModel::GetInstance()->GetcJSON(), "ClassicBlueToothState", true);\r
}\r
else\r
{\r
ClassicBlueToothModel::GetInstance()->MarkTradionalBlueToothToggleButtonStatus(false);\r
- ConfigModel::GetInstance()->WriteJsonData_Bool(ConfigModel::GetInstance()->GetcJSON(), "TradionalBlueToothToggleButtonState", false);\r
+ // ConfigModel::GetInstance()->WriteJsonData_Bool(ConfigModel::GetInstance()->GetcJSON(), "ClassicBlueToothState", false);\r
}\r
\r
delete Title;\r
/// @brief 获取蓝牙切换按钮的状态\r
/// @param void\r
/// @return true 表示开启状态 false 表示开启状态\r
- bool ClassicBlueToothView::GetTradionalBlueToothToggleButtonState(void)\r
+ bool ClassicBlueToothView::GetClassicBlueToothState(void)\r
{\r
return TradionalBlueToothToggleButton->GetState();\r
}\r
\r
/// @brief 设置蓝牙切换按钮的状态\r
/// @param state true 开启 false 关闭\r
- void ClassicBlueToothView::SetTradionalBlueToothToggleButtonState(bool state)\r
+ void ClassicBlueToothView::SetClassicBlueToothState(bool state)\r
{\r
if (TradionalBlueToothToggleButton == nullptr)\r
{\r
{
class ConfigModel
{
- struct cat1_msg_config
+ public:
+ enum ConfigDataType
{
- char *imei;
- int sim;
- char *oper;
- // uint8_t signal;
+ DATATYPE_INT,
+ DATATYPE_DOUBLE,
+ DATATYPE_STRING,
+ DATATYPE_BOOL,
+ DATATYPE_VECTOR_INT,
+ DATATYPE_VECTOR_DOUBLE,
+ DATATYPE_VECTOR_STRING,
+ DATATYPE_UNKNOWN,
+ } ;
+ enum ConfigItem
+ {
+ CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON, //关机前经典蓝牙服务状态,启动时仍然恢复其当时状态
+ CONFIGMODEL_ITEM_SCREEN_BRIGHTNESS_VALUE, //屏幕亮度
+ CONFIGMODEL_ITEM_SCREEN_OFF_TIMEOUT_VALUE, //屏幕自动息屏时间 默认 5秒 5000ms
+ CONFIGMODEL_ITEM_CAT1_SERVICE_ON, // 关机前Cat1 Service启动着,则重启仍然启动,反之亦然
+ CONFIGMODEL_ITEM_CAT1_IMEI, //Cat1 imei
+ CONFIGMODEL_ITEM_CAT1_MODEMVER, //Cat1 modem version
+ CONFIGMODEL_ITEM_CAT1_PYVER, //Cat1 Python app version
+ CONFIGMODEL_ITEM_LANGUAGE_ID, //语言ID int id
+ CONFIGMODEL_ITEM_LANGUAGE_CODE, //语言Code string "zh","en"
+ CONFIGMODEL_ITEM_SILENT_MODE, //勿扰模式
+ CONFIGMODEL_ITEM_VIBRATOR_SWITCH, // 马达 开关, 0 关, 1 弱, 2 中,3 强
+ // CONFIGMODEL_ITEM_HRS_QUICKACCESS,
+ // CONFIGMODEL_ITEM_SPO2_QUICKACCESS,
+ CONFIGMODEL_ITEM_RAISE_TO_WAKE, //抬腕亮屏开关
+ CONFIGMODEL_ITEM_ACTIVITY_VALUES_STEPCOUNT, //活动数据步数
+ CONFIGMODEL_ITEM_ACTIVITY_VALUES_CALORIES, //活动数据卡路里,
+ CONFIGMODEL_ITEM_ACTIVITY_VALUES_STANDUP_TIMES, //活动数据站立次数
+ CONFIGMODEL_ITEM_ACTIVITY_VALUES_DURATION, //活动数据运动时间
+ CONFIGMODEL_ITEM_ACTIVITY_VALUES_DISTANCE, //活动数据运动距离
+ CONFIGMODEL_ITEM_ACTIVITY_VALUES_TIMESTAMP, //活动数据更新时间戳
+ CONFIGMODEL_ITEM_CUSTOM_DATA_HEIGHT, //用户数据身高
+ CONFIGMODEL_ITEM_CUSTOM_DATA_WEIGHT, //用户数据体重
+ CONFIGMODEL_ITEM_CUSTOM_DATA_SEX, //用户数据性别
+ CONFIGMODEL_ITEM_CUSTOM_DATA_AGE, //用户数据年龄
+ CONFIGMODEL_ITEM_CUSTOM_DATA_WEARING_MODE, //用户数据佩戴方式
+ CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT, //运动目标步数
+ CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES, //运动目标卡路里
+ CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES, //运动目标站立次数
+ CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION, //运动目标时长
+ CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE, //运动目标距离
+ CONFIGMODEL_ITEM_MAX,
+ } ;
+
+ struct configmodel_item{
+ ConfigDataType type;
+ const char* itemname;
+ char *defaultValue;
};
- public:
+
+ const char* get_config_name(ConfigItem item)
+ {
+ return configmodel_item_key_name[item].itemname;
+ }
+
+ ConfigDataType get_config_datatype(ConfigItem item)
+ {
+ return configmodel_item_key_name[item].type;
+ }
static ConfigModel *GetInstance();
- cJSON *GetcJSON(void);
- bool LoadJsonData(void);
- // template <class T>
- // T ReadJsonData(const cJSON *json_obj, const char *field_name);
- // template <class T>
- // void WriteJsonData(cJSON *json_obj, const char *field_name, T data);
+ void Init(void);
+ /* -------------- 通用 读值 赋值 函数 ----------------- */
+ int get_configData_int(ConfigItem item);
+ double get_configData_double(ConfigItem item);
+ bool get_configData_bool(ConfigItem item);
+ std::string get_configData_string(ConfigItem item);
- /* -------------------------------------------------------------------------- */
- std::string ReadJsonData_String(const cJSON *json_obj, const char *field_name);
- double ReadJsonData_Double(const cJSON *json_obj, const char *field_name);
- int ReadJsonData_Int(const cJSON *json_obj, const char *field_name);
- bool ReadJsonData_Bool(const cJSON *json_obj, const char *field_name);
- int ReadJsonData_ArraySize(const cJSON *json_obj, const char *field_name);
+ void set_condigData_Int(ConfigItem item, int data);
+ void set_condigData_Double(ConfigItem item, double data);
+ void set_condigData_Bool(ConfigItem item, bool data);
+ void set_condigData_String(ConfigItem item, const char *data);
+ void set_condigData_VectorInt(ConfigItem item, const std::vector<int> &data);
+ void set_condigData_VectorDouble(ConfigItem item, const std::vector<double> &data);
+ void set_condigData_VectorString(ConfigItem item, const std::vector<std::string> &data);
- void WriteJsonData_Int(cJSON *json_obj, const char *field_name, int data);
- void WriteJsonData_Double(cJSON *json_obj, const char *field_name, double data);
- void WriteJsonData_Bool(cJSON *json_obj, const char *field_name, bool data);
- void WriteJsonData_String(cJSON *json_obj, const char *field_name, const char *data);
- void WriteJsonData_VectorInt(cJSON *json_obj, const char *field_name, const std::vector<int> &data);
- void WriteJsonData_VectorDouble(cJSON *json_obj, const char *field_name, const std::vector<double> &data);
- void WriteJsonData_VectorString(cJSON *json_obj, const char *field_name, const std::vector<std::string> &data);
+ void reset_item_to_default(ConfigItem item);
+
+ int sync_all_to_disk(void);
+
+
+ /* --------------------------------自定义封装 set与get方法 ------------------------------- */
+
+ bool GetRaiseToWake(void);
- void WriteJsonToFile(char *json_string, const char *file_path);
- /* -------------------------------------------------------------------------- */
- void ShowReadJsonData(void);
- void Init(void);
- /* -------------------------------- set与get方法 ------------------------------- */
- void SetRaiseToBrightnessCheckBoxButtonState(void);
- bool GetRaiseToBrightnessCheckBoxButtonState(void);
- void SetScreenBrightnessValue(void);
unsigned GetScreenBrightnessValue(void);
- void SetScreenDurationRadioButtonSlectValue(void);
- unsigned int GetScreenDurationRadioButtonSlectValue(void);
- void SetTradionalBlueToothToggleButtonState(void);
- bool GetTradionalBlueToothToggleButtonState(void);
- void SetHeartRateOrBloodOxygenQuickAccessSwitch(void);
- int GetHeartRateOrBloodOxygenQuickAccessSwitch(void);
- void SetDialId(dial_config *dial);
- dial_config *GetDialId();
+
+ unsigned int GetScreenDuration(void);
+
+ bool GetClassicBlueToothState(void);
+
void SetLanguage(int languageid);
int GetLanguage();
- char *Getimei();
- char *GetpyVer();
- char *GetmoderVer();
+ void SetLanguageCode(char *languagecode);
+ std::string GetLanguageCode(void);
+
+ std::string Getimei();
+ std::string GetpyVer();
+ std::string GetmoderVer();
+
void Setimei(char *str);
void SetpyVer(char *str);
void SetmoderVer(char *str);
- void SetLanguageCode(char *languagecode);
- const char *GetLanguageCode(void);
- void SetVibrationReminder(bool state);
- bool GetVibrationReminder(void);
+
+ void SetVibrationReminder(int state);
+ int GetVibrationReminder(void);
+
void SetSilentMode(bool state);
bool GetSilentMode(void);
+
void SetCat1_4Gability(bool state);
bool GetCat1_4Gability();
+
// -------------------------------------------------------------------------- */
private:
+ configmodel_item configmodel_item_key_name[CONFIGMODEL_ITEM_MAX] =
+ {
+ {ConfigDataType::DATATYPE_BOOL, "ClassicBT_Service_On", "false" },//CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON, //关机前经典蓝牙服务状态,启动时仍然恢复其当时状态
+ {ConfigDataType::DATATYPE_INT, "ScreenBrightness", "255" },//CONFIGMODEL_ITEM_SCREEN_BRIGHTNESS_VALUE,
+ {ConfigDataType::DATATYPE_INT, "ScreenOffTimeoutValue", "5000" },//CONFIGMODEL_ITEM_SCREEN_OFF_TIMEOUT_VALUE, 自动息屏时间,默认5秒 5000ms
+ {ConfigDataType::DATATYPE_BOOL, "Cat1_Service_On", "false" },//CONFIGMODEL_ITEM_CAT1_SERVICE_ON, // 关机前Cat1 Service启动着,则重启仍然启动,反之亦然
+ {ConfigDataType::DATATYPE_STRING, "Cat1_IMEI", "" },//CONFIGMODEL_ITEM_CAT1_IMEI,
+ {ConfigDataType::DATATYPE_STRING, "Cat1_ModemVer", "" },//CONFIGMODEL_ITEM_CAT1_MODEMVER,
+ {ConfigDataType::DATATYPE_STRING, "Cat1_PYVer", "" },//CONFIGMODEL_ITEM_CAT1_PYVER,
+ {ConfigDataType::DATATYPE_INT, "LanguageID", "-1" },//CONFIGMODEL_ITEM_LANGUAGE_ID, //默认没有选择语言
+ {ConfigDataType::DATATYPE_STRING, "LanguageCode", "zh" },//CONFIGMODEL_ITEM_LANGUAGE_CODE, //默认没有选择语言
+ {ConfigDataType::DATATYPE_BOOL, "SlientMode", "false" },//CONFIGMODEL_ITEM_SILENT_MODE,
+ {ConfigDataType::DATATYPE_INT, "VibratorSwitch", "1" },//CONFIGMODEL_ITEM_VIBRATOR_SWITCH, // 马达 开关, 0 关, 1 弱, 2 中,3 强
+ // {ConfigDataType::DATATYPE_BOOL, "HRS_QuickAccess", "false"},//CONFIGMODEL_ITEM_HRS_SPO2_QUICKACCESS,
+ // {ConfigDataType::DATATYPE_BOOL, "SPO2_QuickAccess", "false"},//CONFIGMODEL_ITEM_HRS_SPO2_QUICKACCESS,
+ {ConfigDataType::DATATYPE_BOOL, "Rase2Wake", "true" },//CONFIGMODEL_ITEM_RAISE_TO_WAKE,
+ {ConfigDataType::DATATYPE_INT, "StepCount", "0" },//CONFIGMODEL_ITEM_ACTIVITY_VALUES_STEPCOUNT, //活动数据步数
+ {ConfigDataType::DATATYPE_INT, "Calories", "0" },// CONFIGMODEL_ITEM_ACTIVITY_VALUES_CALORIES, //活动数据卡路里,
+ {ConfigDataType::DATATYPE_INT, "StandupTimes", "0" },// CONFIGMODEL_ITEM_ACTIVITY_VALUES_STANDUP_TIMES, //活动数据站立次数
+ {ConfigDataType::DATATYPE_INT, "Duration", "0" },// CONFIGMODEL_ITEM_ACTIVITY_VALUES_DURATION, //活动数据运动时间
+ {ConfigDataType::DATATYPE_DOUBLE, "Distance", "0.0" },// CONFIGMODEL_ITEM_ACTIVITY_VALUES_DISTANCE, //活动数据运动距离
+ {ConfigDataType::DATATYPE_INT, "ActivityTimestamp", "0" },// CONFIGMODEL_ITEM_ACTIVITY_VALUES_TIMESTAMP, //活动数据更新时间戳
+ {ConfigDataType::DATATYPE_INT, "height", "175" },// CONFIGMODEL_ITEM_CUSTOM_DATA_HEIGHT, //用户数据身高 (cm)(身高)(default : 175)(30 - 300)
+ {ConfigDataType::DATATYPE_DOUBLE, "weight", "70.0" },// CONFIGMODEL_ITEM_CUSTOM_DATA_WEIGHT, //用户数据体重 (kg)(體重)(default : 70)(10 - 300)
+ {ConfigDataType::DATATYPE_INT, "sex", "1" },// CONFIGMODEL_ITEM_CUSTOM_DATA_SEX, //用户数据性别 (default : 1 男性)(0 : 女性, 1 : 男性)
+ {ConfigDataType::DATATYPE_INT, "age", "30" },// CONFIGMODEL_ITEM_CUSTOM_DATA_AGE, //用户数据年龄 (年紀)(default : 30)(1 - 99)
+ {ConfigDataType::DATATYPE_INT, "WearingMode", "0" },// CONFIGMODEL_ITEM_CUSTOM_DATA_WEARING_MODE, //用户数据佩戴方式 (default : 左手)(0 : 左手 1 : 右手)
+ {ConfigDataType::DATATYPE_INT, "GoalStepCount", "10000" },// CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT, //运动目标步数 10000
+ {ConfigDataType::DATATYPE_INT, "GoalCalories", "300" },// CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES, //运动目标卡路里 300(kcal)
+ {ConfigDataType::DATATYPE_INT, "GoalStandupTimes", "10" },// CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES, //运动目标站立次数 10
+ {ConfigDataType::DATATYPE_INT, "GoalDuration", "30" },// CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION, //运动目标时长 30(分钟)
+ {ConfigDataType::DATATYPE_DOUBLE, "GoalDistance", "8.0" },// CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE, //运动目标距离 8.0(km)
+ };
ConfigModel(); // 私有构造函数,确保无法在外部实例化
ConfigModel(const ConfigModel &) = delete; // 禁止拷贝构造
ConfigModel &operator=(const ConfigModel &) = delete; // 禁止赋值运算符
~ConfigModel();
+ cJSON *GetcJSON(void);
+ bool LoadJsonData(void);
+ void DumpJsonItem(ConfigItem item);
+ /* --------------------------私有 通用 读写Json数据函数------------------------------------------------ */
+ std::string ReadJsonData_String(const cJSON *json_obj, const char *field_name);
+ double ReadJsonData_Double(const cJSON *json_obj, const char *field_name);
+ int ReadJsonData_Int(const cJSON *json_obj, const char *field_name);
+ bool ReadJsonData_Bool(const cJSON *json_obj, const char *field_name);
+ int ReadJsonData_ArraySize(const cJSON *json_obj, const char *field_name);
- private:
- const std::string filePath = "/system/ConfigModel.json";
- cJSON *cjson_json{nullptr};
- /* ------------------------------- json中要读取的键 ------------------------------- */
- bool RaiseToBrightnessCheckBoxButtonState{false}; // 抬腕按钮状态 ,默认补选中
- unsigned char ScreenBrightnessValue{255}; // 亮度值 ,默认最大亮度
- unsigned int ScreenDurationRadioButtonSlectValue{1}; // 亮屏时长按钮选中编号 ,0对应5秒熄屏,1对应10秒熄屏,2对应15秒熄屏
- bool TradionalBlueToothToggleButtonState{false}; // 用来记录蓝牙开关状态,默认关闭状态
- int HeartRateOrBloodOxygenQuickAccessSwitch{0}; // 心率或血氧快速访问开关,默认快速访问血氧打开
- int dialid_; // 表盘Id
- std::string dialname_; // 表盘名称
- int languageid_; // 语言状态
- char *imei_str = NULL;
- char *pyVer = NULL;
- char *moderVer = NULL;
- std::string LanguageCode = "zh";
- bool VibrationReminder{false}; // 震动提醒
- bool SilentMode{false}; // 静音模式
- bool Cat1_4Gability{false}; // 4G能力开关
- cat1_msg_config cat1_msg_config_t;
- /* -------------------------------------------------------------------------- */
- };
-
- /// @brief 通用的读取数据函数,根据字段名称从 JSON 对象中读取对应值
- /// @tparam T
- /// @param json_obj json 对象 field_name 字段名称
- /// @return 读取到的对应值
- // template <class T>
- // T ConfigModel::ReadJsonData(const cJSON *json_obj, const char *field_name)
- // {
- // const cJSON *field_item = cJSON_GetObjectItem(json_obj, field_name);
- // if (field_item != NULL)
- // {
- // if (cJSON_IsString(field_item))
- // {
- // return T(field_item->string);
- // }
- // else if (cJSON_IsNumber(field_item))
- // {
- // return T(field_item->valuedouble);
- // }
- // else if (cJSON_IsBool(field_item))
- // {
- // return T(field_item->valueint);
- // }
- // else if (cJSON_IsArray(field_item))
- // {
- // return T(cJSON_GetArraySize(field_item));
- // }
- // else
- // {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Unsupported data type");
- // return T("Unsupported data type");
- // }
- // }
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Field not found");
- // return T("Field not found");
- // }
-
- /// @brief 通用的写JSON数据函数
- /// @tparam T
- /// @param json_obj json对象
- /// @param field_name 字段名称
- /// @param data 要写入的数据
- // template <class T>
- // void ConfigModel::WriteJsonData(cJSON *json_obj, const char *field_name, T data)
- // {
- // if (json_obj == nullptr)
- // {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "json_obj is nullptr!");
- // return;
- // }
-
- // cJSON *data_obj = cJSON_CreateNull();
- // if constexpr (std::is_same<T, int>::value || std::is_same<T, unsigned char>::value || std::is_same<T, unsigned int>::value)
- // {
- // data_obj = cJSON_CreateNumber(static_cast<double>(data));
- // }
- // else if constexpr (std::is_same<T, double>::value || std::is_same<T, float>::value)
- // {
- // data_obj = cJSON_CreateNumber(data);
- // }
- // else if constexpr (std::is_same<T, bool>::value)
- // {
- // data_obj = cJSON_CreateBool(data);
- // }
- // else if constexpr (std::is_same<T, const char *>::value || std::is_same<T, std::string>::value)
- // {
- // data_obj = cJSON_CreateString(data);
- // }
-
- // if (data_obj != nullptr)
- // {
- // cJSON_ReplaceItemInObject(json_obj, field_name, data_obj);
-
- // char *jsonString = cJSON_Print(json_obj);
- // WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString);
- // if (jsonString != nullptr)
- // {
- // FILE *file = fopen(filePath.c_str(), "wb");
- // if (file)
- // {
- // if (fputs(jsonString, file) != EOF) // 将 JSON 字符串写入文件
- // {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WriteJsonData success\n");
- // }
- // fclose(file);
- // }
- // free(jsonString);
- // }
- // else
- // {
- // WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jsonString is nullptr");
- // return;
- // }
- // }
- // }
- /* ------------------------------ ImageAnimator ----------------------------- */
- /*
- * 图片动画类
- */
- class ImageAnimator
- {
- public:
- struct ImageAnimatorConfig
- {
- int16_t x;
- int16_t y;
- int16_t w;
- int16_t h;
-
- int numFrames;
- int time; // 更新的时间间隔
- } imageAnimatorConfig;
- // 构造函数
- ImageAnimator();
- // 析构函数
- ~ImageAnimator();
+ void WriteJsonData_Int(cJSON *json_obj, const char *field_name, int data);
+ void WriteJsonData_Double(cJSON *json_obj, const char *field_name, double data);
+ void WriteJsonData_Bool(cJSON *json_obj, const char *field_name, bool data);
+ void WriteJsonData_String(cJSON *json_obj, const char *field_name, const char *data);
+ void WriteJsonData_VectorInt(cJSON *json_obj, const char *field_name, const std::vector<int> &data);
+ void WriteJsonData_VectorDouble(cJSON *json_obj, const char *field_name, const std::vector<double> &data);
+ void WriteJsonData_VectorString(cJSON *json_obj, const char *field_name, const std::vector<std::string> &data);
- const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages);
+ void WriteJsonToFile(char *json_string, const char *file_path);
+ /* -------------------------------------------------------------------------- */
+ void DumpJsonData(void);
- void InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, ImageAnimatorInfo *&imageAnimatorInfo, const char **imagePaths, const ImageAnimatorConfig &imageAnimatorConfig);
+ cJSON *get_item(ConfigItem item);
- void FreeImagePathsArray(const char **imagePaths, const int numImages);
+ private:
+ const std::string filePath = "/system/ConfigModel.json";
+ cJSON *cjson_json{nullptr};
- void DeleteImageAnimatorInfo(ImageAnimatorInfo *&imageAnimatorInfo);
+ bool model_initialled{false};
+ /* -------------------------------------------------------------------------- */
};
}
#endif
\ No newline at end of file
--- /dev/null
+#ifndef _CONFIG_MODEL_C_H_
+#define _CONFIG_MODEL_C_H_
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+#include <stdint.h>
+
+/**
+ * 从存档文件初始化配置信息
+*/
+uint32_t ConfigModelInit(void);
+
+/***
+ * 蓝牙服务是否开启
+ */
+bool start_ble_service_on_bootup_flag(void);
+/***
+ * Cat1服务是否开启
+ */
+bool poweron_cat1_on_bootup_flag(void);
+
+void sync_all_config_to_disk(void);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
+#endif
\ No newline at end of file
#include "config/include/ConfigModel.h"
+#include "config/include/ConfigModelC.h"
namespace OHOS
{
ConfigModel::~ConfigModel()
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " ConfigModel::~ConfigModel");
+ //手表全生命周期存在,所以不考虑析构释放内存
}
ConfigModel *ConfigModel::GetInstance()
return cjson_json;
}
+ cJSON *ConfigModel::get_item(ConfigItem item)
+ {
+ return cJSON_GetObjectItem(GetcJSON(),get_config_name(item));
+ }
+
+ void ConfigModel::reset_item_to_default(ConfigItem item)
+ {
+ switch(get_config_datatype(item))
+ {
+ case ConfigDataType::DATATYPE_BOOL:
+
+ {
+ bool defaultvalue = false;
+ if (strncmp(configmodel_item_key_name[item].defaultValue,"true",sizeof("true"))==0) defaultvalue = true;
+ set_condigData_Bool(item,defaultvalue);
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(bool):value(%d)",
+ get_config_name(item),
+ get_configData_bool(item));
+ break;
+ case ConfigDataType::DATATYPE_DOUBLE:
+ {
+ double defaultvalue = atof(configmodel_item_key_name[item].defaultValue);
+ set_condigData_Double(item,defaultvalue);
+ }
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(double):value(%f)",
+ get_config_name(item),
+ get_configData_double(item));
+ break;
+ case ConfigDataType::DATATYPE_INT :
+ {
+ int defaultvalue = atoi(configmodel_item_key_name[item].defaultValue);
+ set_condigData_Int(item,defaultvalue);
+ }
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(int):value(%d)",
+ get_config_name(item),
+ get_configData_int(item));
+ break;
+ case ConfigDataType::DATATYPE_STRING:
+
+ set_condigData_String(item,configmodel_item_key_name[item].defaultValue);
+
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(string):value(%s)",
+ get_config_name(item),
+ get_configData_string(item).c_str());
+ break;
+ case ConfigDataType::DATATYPE_VECTOR_DOUBLE:
+ /**
+ * configmodel_item_key_name[item].defaultValue 转换成jsongArrayObj 再存入
+ */
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(vector_double):value(%s)",
+ get_config_name(item),
+ "");
+ break;
+ case ConfigDataType::DATATYPE_VECTOR_INT:
+ /**
+ * configmodel_item_key_name[item].defaultValue 转换成jsongArrayObj 再存入
+ */
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(vector_int):value(%s)",
+ get_config_name(item),
+ "");
+ break;
+ case ConfigDataType::DATATYPE_VECTOR_STRING:
+ /**
+ * configmodel_item_key_name[item].defaultValue 转换成jsongArrayObj 再存入
+ */
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(vector_string):value(%s)",
+ get_config_name(item),
+ "");
+ break;
+
+ }
+ }
+
/// @brief 加载json文件
/// @param filePath 指定要加载和解析的 JSON 文件的路径
/// @return true 加载json文件成功,反之失败
file.close();
// 解析JSON数据
cjson_json = cJSON_Parse(json_string.c_str());
+
+ for (int i = 0; i< ConfigItem::CONFIGMODEL_ITEM_MAX;i++)
+ {
+ ConfigItem item = (ConfigItem)i;
+ cJSON *obj=get_item(item);
+ if (obj == NULL) //没有变量则用默认值初始化
+ {
+ reset_item_to_default(item);
+ }
+ }
return true;
}
else
cJSON *data_obj = cJSON_CreateNumber(static_cast<double>(data));
if (data_obj != nullptr)
{
- cJSON_ReplaceItemInObject(json_obj, field_name, data_obj);
- char *jsonString = cJSON_Print(json_obj);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString);
- // Write to file as before
- WriteJsonToFile(jsonString, filePath.c_str());
+ if (cJSON_GetObjectItem(json_obj,field_name)!=NULL){
+ cJSON_ReplaceItemInObject(json_obj, field_name, data_obj);
+ }else{
+ cJSON_AddItemToObject(json_obj,field_name,data_obj);
+ }
}
else
{
cJSON *data_obj = cJSON_CreateNumber(data);
if (data_obj != nullptr)
{
- cJSON_ReplaceItemInObject(json_obj, field_name, data_obj);
- char *jsonString = cJSON_Print(json_obj);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString);
- // Write to file as before
- WriteJsonToFile(jsonString, filePath.c_str());
+ if (cJSON_GetObjectItem(json_obj,field_name)!=NULL){
+ cJSON_ReplaceItemInObject(json_obj, field_name, data_obj);
+ }else{
+ cJSON_AddItemToObject(json_obj,field_name,data_obj);
+ }
}
else
{
cJSON *data_obj = cJSON_CreateBool(data);
if (data_obj != nullptr)
- {
- cJSON_ReplaceItemInObject(json_obj, field_name, data_obj);
- char *jsonString = cJSON_Print(json_obj);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString);
- // Write to file as before
- WriteJsonToFile(jsonString, filePath.c_str());
+ {
+ if (cJSON_GetObjectItem(json_obj,field_name)!=NULL){
+ cJSON_ReplaceItemInObject(json_obj, field_name, data_obj);
+ }else{
+ cJSON_AddItemToObject(json_obj,field_name,data_obj);
+ }
}
else
{
cJSON *data_obj = cJSON_CreateString(data);
if (data_obj != nullptr)
{
- cJSON_ReplaceItemInObject(json_obj, field_name, data_obj);
- char *jsonString = cJSON_Print(json_obj);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString);
- // Write to file as before
- WriteJsonToFile(jsonString, filePath.c_str());
+ if (cJSON_GetObjectItem(json_obj,field_name)!=NULL){
+ cJSON_ReplaceItemInObject(json_obj, field_name, data_obj);
+ }else{
+ cJSON_AddItemToObject(json_obj,field_name,data_obj);
+ }
}
else
{
cJSON_AddItemToArray(array_obj, cJSON_CreateNumber(static_cast<double>(item)));
}
cJSON_ReplaceItemInObject(json_obj, field_name, array_obj);
- char *jsonString = cJSON_Print(json_obj);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString);
- // Write to file as before
- WriteJsonToFile(jsonString, filePath.c_str());
}
void ConfigModel::WriteJsonData_VectorDouble(cJSON *json_obj, const char *field_name, const std::vector<double> &data)
cJSON_AddItemToArray(array_obj, cJSON_CreateNumber(item));
}
cJSON_ReplaceItemInObject(json_obj, field_name, array_obj);
- char *jsonString = cJSON_Print(json_obj);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString);
- // Write to file as before
- WriteJsonToFile(jsonString, filePath.c_str());
}
void ConfigModel::WriteJsonData_VectorString(cJSON *json_obj, const char *field_name, const std::vector<std::string> &data)
cJSON_AddItemToArray(array_obj, cJSON_CreateString(item.c_str()));
}
cJSON_ReplaceItemInObject(json_obj, field_name, array_obj);
- char *jsonString = cJSON_Print(json_obj);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString);
- // Write to file as before
- WriteJsonToFile(jsonString, filePath.c_str());
+
}
/*
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WriteJsonData to file success\n");
}
fclose(fp);
- free(json_string);
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "JSON data written to file: %s", file_path);
void ConfigModel::Init(void)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConfigModel::Init");
+ if (model_initialled == true)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConfigModel::Init already done");
+ return ;
+ }
/* -------------------------------- 1.加载json文件 -------------------------------- */
- LoadJsonData();
+ bool ret = LoadJsonData();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ConfigModel::Init %d",ret);
+
+ /* ------------------------------ 2.显示读取到的json数据 ------------------------------ */
+ DumpJsonData();
+ model_initialled = true;
+ }
+ void ConfigModel::DumpJsonItem(ConfigItem item)
+ {
+ switch(get_config_datatype(item))
+ {
+ case ConfigDataType::DATATYPE_BOOL:
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(bool):value(%d)",
+ get_config_name(item),
+ get_configData_bool(item));
+ break;
+ case ConfigDataType::DATATYPE_DOUBLE:
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(double):value(%f)",
+ get_config_name(item),
+ get_configData_double(item));
+ break;
+ case ConfigDataType::DATATYPE_INT :
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(int):value(%d)",
+ get_config_name(item),
+ get_configData_int(item));
+ break;
+ case ConfigDataType::DATATYPE_STRING:
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(string):value(%s)",
+ get_config_name(item),
+ get_configData_string(item).c_str());
+ break;
+ case ConfigDataType::DATATYPE_VECTOR_DOUBLE:
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(vector_double):value(%f)",
+ get_config_name(item),
+ "");
+ break;
+ case ConfigDataType::DATATYPE_VECTOR_INT:
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(vector_int):value(%d)",
+ get_config_name(item),
+ "");
+ break;
+ case ConfigDataType::DATATYPE_VECTOR_STRING:
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "item(%s):type(vector_string):value(%s)",
+ get_config_name(item),
+ "");
+ break;
- /* ---------------------------- 2.从加载的json文件读取数据初始化 --------------------------- */
- SetRaiseToBrightnessCheckBoxButtonState();
- SetScreenBrightnessValue();
- SetScreenDurationRadioButtonSlectValue();
- SetHeartRateOrBloodOxygenQuickAccessSwitch();
- SetHeartRateOrBloodOxygenQuickAccessSwitch();
- /* ------------------------------ 3.显示读取到的json数据 ------------------------------ */
- ShowReadJsonData();
+ }
}
-
/// @brief 显示读取到的json数据
- void ConfigModel::ShowReadJsonData(void)
+ void ConfigModel::DumpJsonData(void)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "/* -------------------------------- JsonData: ------------------------------- */\n");
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "RaiseToBrightnessCheckBoxButtonState:%d", RaiseToBrightnessCheckBoxButtonState);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenBrightnessValue:%d", ScreenBrightnessValue);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ScreenDurationRadioButtonSlectValue:%d", ScreenDurationRadioButtonSlectValue);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TradionalBlueToothToggleButtonState:%d", TradionalBlueToothToggleButtonState);
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HeartRateOrBloodOxygenQuickAccessSwitch:%d", HeartRateOrBloodOxygenQuickAccessSwitch);
+ for (int i = 0; i< ConfigItem::CONFIGMODEL_ITEM_MAX;i++)
+ {
+ DumpJsonItem((ConfigItem)i);
+ }
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "/* -------------------------------------------------------------------------- */\n");
}
/* -------------------------------- set与get方法 ------------------------------- */
- void ConfigModel::SetRaiseToBrightnessCheckBoxButtonState()
+
+ bool ConfigModel::GetRaiseToWake(void)
{
- RaiseToBrightnessCheckBoxButtonState = ReadJsonData_Bool(GetcJSON(), "RaiseToBrightnessCheckBoxButtonState");
+ return get_configData_bool(CONFIGMODEL_ITEM_RAISE_TO_WAKE);
}
-
- /// @brief 获取抬腕按钮状态
- bool ConfigModel::GetRaiseToBrightnessCheckBoxButtonState(void)
- {
- return RaiseToBrightnessCheckBoxButtonState;
- }
-
- void ConfigModel::SetScreenBrightnessValue()
- {
- ScreenBrightnessValue = static_cast<unsigned char>(ReadJsonData_Int(GetcJSON(), "ScreenBrightnessValue"));
- }
-
/// @brief 获取亮度值
unsigned ConfigModel::GetScreenBrightnessValue(void)
{
- return ScreenBrightnessValue;
- }
-
- void ConfigModel::SetScreenDurationRadioButtonSlectValue()
- {
- ScreenDurationRadioButtonSlectValue = static_cast<unsigned int>(ReadJsonData_Int(GetcJSON(), "ScreenDurationRadioButtonSlectValue"));
+ return get_configData_int(CONFIGMODEL_ITEM_SCREEN_BRIGHTNESS_VALUE) ;
}
/// @brief 获取亮屏时长三个单选框选中状况,0对应5秒熄屏,1对应10秒熄屏,2对应15秒熄屏
- unsigned int ConfigModel::GetScreenDurationRadioButtonSlectValue(void)
+ unsigned int ConfigModel::GetScreenDuration(void)
{
- return ScreenDurationRadioButtonSlectValue;
- }
-
- void ConfigModel::SetTradionalBlueToothToggleButtonState(void)
- {
- TradionalBlueToothToggleButtonState = (ReadJsonData_Bool(GetcJSON(), "TradionalBlueToothToggleButtonState"));
+ return get_configData_int(CONFIGMODEL_ITEM_SCREEN_OFF_TIMEOUT_VALUE);
}
/// @brief 获取蓝牙开关状态
- bool ConfigModel::GetTradionalBlueToothToggleButtonState(void)
- {
- return TradionalBlueToothToggleButtonState;
- }
-
- void ConfigModel::SetHeartRateOrBloodOxygenQuickAccessSwitch(void)
- {
- HeartRateOrBloodOxygenQuickAccessSwitch = (ReadJsonData_Int(GetcJSON(), "HeartRateOrBloodOxygenQuickAccessSwitch"));
- }
-
- /// @brief 获取“心率或血氧”快速访问开关
- int ConfigModel::GetHeartRateOrBloodOxygenQuickAccessSwitch(void)
- {
- return HeartRateOrBloodOxygenQuickAccessSwitch;
- }
-
- /* --------------------------------- 表盘信息操作 --------------------------------- */
- void ConfigModel::SetDialId(dial_config *dial)
+ bool ConfigModel::GetClassicBlueToothState(void)
{
- dialid_ = dial->dialid;
- dialname_ = dial->dialname;
- // 写入json数据
- WriteJsonData_Int(GetcJSON(), "Dial_Id", dialid_);
- WriteJsonData_String(GetcJSON(), "Dial_Name", dialname_.c_str());
+ return get_configData_bool(CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON);
}
- dial_config *ConfigModel::GetDialId()
- {
- // 读取json数据
- dialid_ = (ReadJsonData_Int(GetcJSON(), "Dial_Id"));
- dialname_ = ReadJsonData_String(GetcJSON(), "Dial_Name");
- dial_config *dial = new dial_config();
- dial->dialid = dialid_;
- dial->dialname = dialname_;
- return dial;
- }
/* -------------------------------------------------------------------------- */
void ConfigModel::SetLanguage(int language)
{
- languageid_ = language;
- WriteJsonData_Int(GetcJSON(), "Language_Id", languageid_);
+ set_condigData_Int(CONFIGMODEL_ITEM_LANGUAGE_ID,language);
}
int ConfigModel::GetLanguage()
{
- languageid_ = (ReadJsonData_Int(GetcJSON(), "Language_Id"));
- return languageid_;
+ return get_configData_int(CONFIGMODEL_ITEM_LANGUAGE_ID);
}
void ConfigModel::SetLanguageCode(char *languagecode)
{
- LanguageCode = languagecode;
- WriteJsonData_String(GetcJSON(), "Language_Code", LanguageCode.c_str()); // 应该放到关机时候写
+ set_condigData_String(CONFIGMODEL_ITEM_LANGUAGE_CODE,languagecode);
}
- const char *ConfigModel::GetLanguageCode(void)
+ std::string ConfigModel::GetLanguageCode(void)
{
- LanguageCode = ReadJsonData_String(GetcJSON(), "Language_Code"); // 应该放到开机时候读
- return LanguageCode.c_str();
+ return get_configData_string(CONFIGMODEL_ITEM_LANGUAGE_CODE);
}
- char *ConfigModel::Getimei()
+ std::string ConfigModel::Getimei()
{
- return imei_str;
+ return get_configData_string(CONFIGMODEL_ITEM_CAT1_IMEI);
}
- char *ConfigModel::GetpyVer()
+ std::string ConfigModel::GetpyVer()
{
-
- return pyVer;
+ return get_configData_string(CONFIGMODEL_ITEM_CAT1_PYVER);
}
- char *ConfigModel::GetmoderVer()
+ std::string ConfigModel::GetmoderVer()
{
-
- return moderVer;
+ return get_configData_string(CONFIGMODEL_ITEM_CAT1_MODEMVER);
}
void ConfigModel::Setimei(char *str)
{
- if (imei_str == NULL || strcmp(imei_str, str) != 0)
- {
- if (imei_str == NULL)
- {
- imei_str = (char *)malloc(strlen(str));
- strcpy(imei_str, str);
- }
- else
- {
- memset(imei_str, 0, strlen(imei_str));
- strcpy(imei_str, str);
- }
- }
- return;
+ set_condigData_String(CONFIGMODEL_ITEM_CAT1_IMEI,str);
}
void ConfigModel::SetpyVer(char *str)
{
- if (pyVer == NULL || strcmp(pyVer, str) != 0)
- {
- if (pyVer == NULL)
- {
- pyVer = (char *)malloc(strlen(str));
- strcpy(pyVer, str);
- }
- else
- {
- memset(pyVer, 0, strlen(pyVer));
- strcpy(pyVer, str);
- }
- }
- return;
+ set_condigData_String(CONFIGMODEL_ITEM_CAT1_PYVER,str);
}
void ConfigModel::SetmoderVer(char *str)
{
- if (moderVer == NULL || strcmp(moderVer, str) != 0)
- {
- if (moderVer == NULL)
- {
- moderVer = (char *)malloc(strlen(str));
- strcpy(moderVer, str);
- }
- else
- {
- memset(moderVer, 0, strlen(moderVer));
- strcpy(moderVer, str);
- }
- }
- return;
+ set_condigData_String(CONFIGMODEL_ITEM_CAT1_MODEMVER,str);
}
/*
* @brief 设置震动提醒
- * @param {bool} true 开启
- * @param {bool} false 关闭
+ * @param 马达 开关, 0 关, 1 弱, 2 中,3 强
*/
- void ConfigModel::SetVibrationReminder(bool state)
+ void ConfigModel::SetVibrationReminder(int state)
{
- VibrationReminder = state;
- WriteJsonData_Bool(GetcJSON(), "VibrationReminder", VibrationReminder); // 应该放到关机时候写
+ set_condigData_Bool(CONFIGMODEL_ITEM_VIBRATOR_SWITCH,state);
}
/*获取震动提醒是否开启*/
- bool ConfigModel::GetVibrationReminder(void)
+ int ConfigModel::GetVibrationReminder(void)
{
- VibrationReminder = ReadJsonData_Bool(GetcJSON(), "VibrationReminder"); // 应该放到开机时候读
- return VibrationReminder;
+ return get_configData_int(CONFIGMODEL_ITEM_VIBRATOR_SWITCH);
}
/*
*/
void ConfigModel::SetSilentMode(bool state)
{
- SilentMode = state;
- WriteJsonData_Bool(GetcJSON(), "SilentMode", SilentMode); // 应该放到关机时候写
+ set_condigData_Bool(CONFIGMODEL_ITEM_SILENT_MODE,state);
}
/*获取静音模式是否开启*/
bool ConfigModel::GetSilentMode(void)
{
- SilentMode = ReadJsonData_Bool(GetcJSON(), "SilentMode"); // 应该放到开机时候读
- return SilentMode;
+ return get_configData_bool(CONFIGMODEL_ITEM_SILENT_MODE);
}
/*
*/
void ConfigModel::SetCat1_4Gability(bool state)
{
- Cat1_4Gability = state;
- WriteJsonData_Bool(GetcJSON(), "Cat1_4Gability", Cat1_4Gability); // 应该放到开机时候读
+ set_condigData_Bool(CONFIGMODEL_ITEM_CAT1_SERVICE_ON,state);
}
/*
*/
bool ConfigModel::GetCat1_4Gability()
{
- Cat1_4Gability = ReadJsonData_Bool(GetcJSON(), "Cat1_4Gability"); // 应该放到关机机时候写
- return Cat1_4Gability;
+ return get_configData_bool(CONFIGMODEL_ITEM_CAT1_SERVICE_ON);
}
- /* ------------------------------ ImageAnimator ----------------------------- */
+/* ---------------------------------------------------------------------------- */
+ int ConfigModel::get_configData_int(ConfigItem item)
+ {
+ return ReadJsonData_Int(GetcJSON(),get_config_name(item));
- ImageAnimator::ImageAnimator()
+ }
+ double ConfigModel::get_configData_double(ConfigItem item)
{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ImageAnimator::ImageAnimator");
+ return ReadJsonData_Double(GetcJSON(),get_config_name(item));
+
}
+ bool ConfigModel::get_configData_bool(ConfigItem item)
+ {
+ return ReadJsonData_Bool(GetcJSON(),get_config_name(item));
- ImageAnimator::~ImageAnimator()
+ }
+ std::string ConfigModel::get_configData_string(ConfigItem item)
{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ImageAnimator::~ImageAnimator");
+ return ReadJsonData_String(GetcJSON(),get_config_name(item));
}
-
- /*
- * @brief 创建并初始化图像路径数组
- * @param basePath 包含图片文件的基本路径
- * @param fileExtension 图片文件的扩展名
- * @param numImages 图片文件的数量
- * @return 返回包含图片文件路径的数组
- */
- const char **ImageAnimator::CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages)
+
+ void ConfigModel::set_condigData_Int(ConfigItem item, int data)
{
- const char **imagePaths = new const char *[numImages];
- char buffer[256];
- for (int i = 0; i < numImages; i++)
- {
- snprintf(buffer, sizeof(buffer), "%s%d.%s", basePath, i + 1, fileExtension);
- imagePaths[i] = strdup(buffer);
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " imagePaths[%d] = %s", i, imagePaths[i]);
- }
- return imagePaths;
+ WriteJsonData_Int(GetcJSON(),get_config_name(item),data);
}
-
- /*
- * @brief 初始化UIImageAnimatorView,并设置为GIF动画
- * 该函数用于使用提供的GIF图像和属性初始化UIImageAnimatorView
- * @param imageAnimator 要初始化的UIImageAnimatorView对象的引用
- * @param imagePaths 图片路径
- * @param imageAnimatorInfo 图片映像的信息
- * @param imageAnimatorConfig 样式配置信息
- */
- void ImageAnimator::InitImageAnimatorSource(UIImageAnimatorView *&imageAnimator, ImageAnimatorInfo *&imageAnimatorInfo, const char **imagePaths, const ImageAnimatorConfig &imageAnimatorConfig)
+ void ConfigModel::set_condigData_Double(ConfigItem item, double data)
{
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ImageAnimator::InitImageAnimatorSource");
-
- if (imageAnimator == nullptr)
- {
- imageAnimator = new UIImageAnimatorView();
- }
- imageAnimator->SetPosition(imageAnimatorConfig.x, imageAnimatorConfig.y, imageAnimatorConfig.w, imageAnimatorConfig.h);
- imageAnimator->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
- imageAnimator->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ WriteJsonData_Double(GetcJSON(),get_config_name(item),data);
- imageAnimatorInfo = new ImageAnimatorInfo[imageAnimatorConfig.numFrames];
- for (int i = 0; i < imageAnimatorConfig.numFrames; i++)
- {
- imageAnimatorInfo[i].imagePath = imagePaths[i];
- imageAnimatorInfo[i].pos.x = imageAnimatorConfig.x;
- imageAnimatorInfo[i].pos.y = imageAnimatorConfig.y;
- imageAnimatorInfo[i].width = imageAnimatorConfig.w;
- imageAnimatorInfo[i].height = imageAnimatorConfig.h;
- imageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;
- }
+ }
+ void ConfigModel::set_condigData_Bool(ConfigItem item, bool data)
+ {
+ WriteJsonData_Bool(GetcJSON(),get_config_name(item),data);
- imageAnimator->SetImageAnimatorSrc(imageAnimatorInfo, imageAnimatorConfig.numFrames, imageAnimatorConfig.time); // 200 is the default delay time
- imageAnimator->SetTimeOfPause(imageAnimatorConfig.time);
- imageAnimator->SetRepeat(true);
}
- /*
- * 释放图片文件路径数组占用的内存
- * @param imagePaths 图片文件路径数组
- * @param numImages 图片文件的数量
- */
- void ImageAnimator::FreeImagePathsArray(const char **imagePaths, const int numImages)
+ void ConfigModel::set_condigData_String(ConfigItem item, const char *data)
{
- for (int i = 0; i < numImages; i++)
- {
- delete imagePaths[i];
- imagePaths[i] = nullptr;
- }
+ WriteJsonData_String(GetcJSON(),get_config_name(item),data);
+ }
+ void ConfigModel::set_condigData_VectorInt(ConfigItem item, const std::vector<int> &data)
+ {
+ WriteJsonData_VectorInt(GetcJSON(),get_config_name(item),data);
+
}
+ void ConfigModel::set_condigData_VectorDouble(ConfigItem item, const std::vector<double> &data)
+ {
+ WriteJsonData_VectorDouble(GetcJSON(),get_config_name(item),data);
- void ImageAnimator::DeleteImageAnimatorInfo(ImageAnimatorInfo *&imageAnimatorInfo)
+ }
+ void ConfigModel::set_condigData_VectorString(ConfigItem item, const std::vector<std::string> &data)
{
- if (imageAnimatorInfo != nullptr)
- {
- // 由于 imageAnimatorInfo 是一个数组,我们需要使用 delete[] 来删除它
- delete[] imageAnimatorInfo;
+ WriteJsonData_VectorString(GetcJSON(),get_config_name(item),data);
- // 重置指针防止悬空指针
- imageAnimatorInfo = nullptr;
- }
+ }
+ int ConfigModel::sync_all_to_disk(void)
+ {
+ char *jsonString = cJSON_Print(GetcJSON());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString);
+ // Write to file as before
+ WriteJsonToFile(jsonString, filePath.c_str());
+ cJSON_free(jsonString);
}
+}
-}
\ No newline at end of file
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif
+#endif
+
+uint32_t ConfigModelInit(void)
+{
+ OHOS::ConfigModel::GetInstance()->Init();
+ return 0;
+}
+
+/***
+ * 蓝牙服务是否开启
+ */
+bool start_ble_service_on_bootup_flag(void)
+{
+ return OHOS::ConfigModel::GetInstance()->GetClassicBlueToothState();
+}
+/***
+ * Cat1服务是否开启
+ */
+bool poweron_cat1_on_bootup_flag(void)
+{
+ return OHOS::ConfigModel::GetInstance()->GetCat1_4Gability();
+}
+void sync_all_config_to_disk(void)
+{
+ OHOS::ConfigModel::GetInstance()->sync_all_to_disk();
+}
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif
+#endif
\ No newline at end of file
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetDialConfigPath:%d", Current_dial);
- dial_config *dial = ConfigModel::GetInstance()->GetDialId();
+ // dial_config *dial = ConfigModel::GetInstance()->GetDialId();
Current_dialname = dial->dialname;
Current_dial = dial->dialid;
private:\r
bool RaiseToBrightnessCheckBoxButtonState{false}; // 抬腕按钮状态 ,默认补选中\r
unsigned char ScreenBrightnessValue{255}; // 亮度值 ,默认最大亮度\r
- unsigned int ScreenDurationRadioButtonSlectValue{1}; // 亮屏时长 ,1对应10秒后熄屏\r
+ unsigned int ScreenDurationIndex{1}; // 亮屏时长 ,1对应10秒后熄屏\r
unsigned int ScreenDurationTime{10000};\r
};\r
}\r
\r
unsigned char value = BrightnessControlViewSlider->GetValue();\r
DisplayBrightnessModel::GetInstance()->KeepScreenBrightnessValues(value);\r
- ConfigModel::GetInstance()->WriteJsonData_Int(ConfigModel::GetInstance()->GetcJSON(),"ScreenBrightnessValue",value);\r
-\r
+ // ConfigModel::GetInstance()->WriteJsonData_Int(ConfigModel::GetInstance()->GetcJSON(),"ScreenBrightnessValue",value);\r
+ ConfigModel::GetInstance()->set_condigData_Int(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_SCREEN_BRIGHTNESS_VALUE,value);\r
delete BrightnessControlViewSlider;\r
BrightnessControlViewSlider = nullptr;\r
\r
DisplayBrightnessModel::DisplayBrightnessModel()
{
ConfigModel *p_ConfigModel = ConfigModel::GetInstance();
- RaiseToBrightnessCheckBoxButtonState = p_ConfigModel->GetRaiseToBrightnessCheckBoxButtonState();
+ RaiseToBrightnessCheckBoxButtonState = p_ConfigModel->GetRaiseToWake();
ScreenBrightnessValue = p_ConfigModel->GetScreenBrightnessValue();
- ScreenDurationRadioButtonSlectValue =p_ConfigModel->GetScreenDurationRadioButtonSlectValue();
+ ScreenDurationIndex =p_ConfigModel->GetScreenDuration();
}
DisplayBrightnessModel::~DisplayBrightnessModel() {}
/// @param value 0 5秒后熄屏 1 10秒后熄屏 2 15秒后熄屏
void DisplayBrightnessModel::KeepScreenDurationRadioButtonSlectStatus(unsigned int value)
{
- ScreenDurationRadioButtonSlectValue = value;
+ ScreenDurationIndex = value*5000+5000;
}
/// @brief 亮屏时长按钮选中状态初始化
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "DisplayBrightnessViewAndSubViewComponentsStatusInit DisplayBrightnessPresenter GetInstance fail");
return false;
}
- displayBrightnessPresent->SetScreenDurationRadioButtonSlectStatus(ScreenDurationRadioButtonSlectValue);
+ displayBrightnessPresent->SetScreenDurationRadioButtonSlectStatus( (ScreenDurationIndex - 5000)/5000);
return true;
}
if (state == UICheckBox::UICheckBoxState::SELECTED)\r
{\r
DisplayBrightnessModel::GetInstance()->SetRaiseToBrightnessCheckBoxButtonStatus(true);\r
- ConfigModel::GetInstance()->WriteJsonData_Bool(ConfigModel::GetInstance()->GetcJSON(),"RaiseToBrightnessCheckBoxButtonState",true);\r
+ ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_RAISE_TO_WAKE,true);\r
}\r
else\r
{\r
DisplayBrightnessModel::GetInstance()->SetRaiseToBrightnessCheckBoxButtonStatus(false);\r
- ConfigModel::GetInstance()->WriteJsonData_Bool(ConfigModel::GetInstance()->GetcJSON(),"RaiseToBrightnessCheckBoxButtonState",false);\r
+ ConfigModel::GetInstance()->set_condigData_Bool(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_RAISE_TO_WAKE,false);\r
}\r
\r
delete RaiseToBrightnessCheckBoxButton;\r
}\r
}\r
DisplayBrightnessModel::GetInstance()->KeepScreenDurationRadioButtonSlectStatus(i);\r
- ConfigModel::GetInstance()->WriteJsonData_Int(ConfigModel::GetInstance()->GetcJSON(),"ScreenDurationRadioButtonSlectValue",i);\r
+ /** 0 5000ms, 1 10000ms, 2 15000ms */\r
+ ConfigModel::GetInstance()->set_condigData_Int(ConfigModel::ConfigItem::CONFIGMODEL_ITEM_SCREEN_OFF_TIMEOUT_VALUE,i*5000+5000);\r
\r
delete ScreenDurationTitleLabel;\r
ScreenDurationTitleLabel = nullptr;\r
char *defaultJsonString = cJSON_Print(defaultJson);
outFile << defaultJsonString; // 写入包含默认值的JSON对象
outFile.close();
+ cJSON_free(defaultJsonString);
cJSON_Delete(defaultJson);
inFile.open(jsonFilePath); // 重新打开文件
}
// static const char *ja = "user/res/font/ja.lang";
// static const char *de = "user/res/font/de.lang";
- static const uint8_t langcount = 2;
- const char *resFiles[langcount] = {zh, en};
+ // static const uint8_t langcount = 2;
+ const char *resFiles[MAX_LANGUAGE] = {
+ "user/res/font/zh.lang",// ZH_CN = 0,
+ "user/res/font/en.lang",// EN,
+ "user/res/font/zh.lang",// JA,
+ "user/res/font/zh.lang",// KO,
+ "user/res/font/zh.lang",// ES,
+ "user/res/font/zh.lang",// RU,
+ "user/res/font/zh.lang",// HR,
+ "user/res/font/zh.lang",// DE,
+ "user/res/font/zh.lang",// PT,
+ "user/res/font/zh.lang",// FR,
+ "user/res/font/zh.lang",// NL,
+ "user/res/font/zh.lang",// IT,
+ "user/res/font/zh.lang",// CS,
+ "user/res/font/zh.lang",// EL,
+ "user/res/font/zh.lang",// HI,
+ "user/res/font/zh.lang",// ID,
+ "user/res/font/zh.lang",// MS,
+ "user/res/font/zh.lang",// PL,
+ "user/res/font/zh.lang",// TH,
+ "user/res/font/zh.lang",// VI,
+ "user/res/font/zh.lang",// FI,
+ "user/res/font/zh.lang",// RO,
+ "user/res/font/zh.lang",// TR,
+ "user/res/font/zh.lang",// FA,
+ "user/res/font/zh.lang",// AR,
+ "user/res/font/zh.lang",// HE,
+ "user/res/font/zh.lang",// UK,
+ "user/res/font/zh.lang",// SV,
+ "user/res/font/zh.lang",// UZ,
+ "user/res/font/zh.lang"// AZ,
+ };
static language *g_planguage{nullptr};
// 获取json里面的语言
int thelanguage = ConfigModel::GetInstance()->GetLanguage();
- FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, langcount, thelanguage);
+ FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, MAX_LANGUAGE, thelanguage);
return true;
}
return false;
}
- FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, langcount, language_status);
+ FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, MAX_LANGUAGE, language_status);
UIFont::GetInstance()->SetCurrentLangId(language_status);
ConfigModel::GetInstance()->SetLanguage(language_status);
// 获取语言Code对应的语言Id
LanguageId currentLanguageId = LanguageManager::GetInstance().GetLanguageIdByCode(language_code);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d %s", currentLanguageId, language_code);
- FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, langcount, currentLanguageId);
+ FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, MAX_LANGUAGE, currentLanguageId);
UIFont::GetInstance()->SetCurrentLangId(currentLanguageId);
ConfigModel::GetInstance()->SetLanguageCode(language_code);
LanguageSwitchModel::LanguageSwitchModel()
{
p_ConfigModel = ConfigModel::GetInstance();
- if (p_ConfigModel->GetLanguageCode() != nullptr)
+ // if (p_ConfigModel->GetLanguageCode().c_str() != nullptr)
{
//printf("%s\n", p_ConfigModel->GetLanguageCode());
- CurLanguageCode = const_cast<char *>(p_ConfigModel->GetLanguageCode());
+ CurLanguageCode = const_cast<char *>(p_ConfigModel->GetLanguageCode().c_str());
}
}
#include "PlayersModel.h"\r
#include "PlayersCaseListAdapter.h"\r
#include "MainViewSample.h"\r
+#include "traing/training_card/include/TraingCardView.h"\r
\r
-namespace OHOS {\r
-static PlayersView* g_pPlayersView = nullptr;\r
+namespace OHOS\r
+{\r
+ static PlayersView *g_pPlayersView = nullptr;\r
\r
#define STEP_LABEL_X 166\r
#define STEP_LABEL_Y 30\r
#define TEXT_WIDTH 120\r
#define TEXT_HEIGHT 30\r
\r
-PlayersView::PlayersView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::PlayersView");\r
- SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- g_pPlayersView = this;\r
-}\r
-\r
-PlayersView::~PlayersView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::~PlayersView");\r
- if (viewiInitStatus == true) {\r
- state = GetPlayerButtonState();\r
- if (state == UICheckBox::UICheckBoxState::SELECTED) {\r
- PlayersModel::GetInstance()->SetPlayButtonState(true);\r
- }\r
- RemoveAll();\r
- listGroup->RemoveAll();\r
- delete list;\r
- list = nullptr;\r
- delete playerlistener;\r
- playerlistener = nullptr;\r
- delete playerButton;\r
- playerButton = nullptr;\r
- delete soundlistener;\r
- soundlistener = nullptr;\r
- delete nextButton;\r
- nextButton = nullptr;\r
- delete nextlistener;\r
- nextlistener = nullptr;\r
- delete preButton;\r
- preButton = nullptr;\r
- TearDownView();\r
- delete adapterText;\r
- adapterText = nullptr;\r
- delete backGround;\r
- delete titleLabel;\r
- delete subTitleLabel;\r
- delete MusciSourceLabel;\r
- MusciSourceLabel = nullptr;\r
- if(music_list_button != nullptr)\r
- {\r
- delete music_list_button;\r
- music_list_button = nullptr;\r
- }\r
- if(PhoneMusicConnectStatusLabel != nullptr)\r
- {\r
- delete PhoneMusicConnectStatusLabel;\r
- PhoneMusicConnectStatusLabel = nullptr;\r
- }\r
- backGround = nullptr;\r
- titleLabel = nullptr;\r
- subTitleLabel = nullptr;\r
- delete playbackProgress;\r
- playbackProgress = nullptr;\r
- delete jumpView;\r
- jumpView = nullptr;\r
- delete playersPresenter;\r
- playersPresenter = nullptr;\r
- delete playerOnDragListener;\r
- playerOnDragListener = nullptr;\r
- }\r
- g_pPlayersView = nullptr;\r
-}\r
+ PlayersView::PlayersView()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::PlayersView");\r
+ SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+ g_pPlayersView = this;\r
+ }\r
\r
-void PlayersView::TitleSetText(const char *text)\r
-{\r
- titleLabel->SetText(text);\r
- titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
- titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
- UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ PlayersView::~PlayersView()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView::~PlayersView");\r
+ if (viewiInitStatus == true)\r
+ {\r
+ state = GetPlayerButtonState();\r
+ if (state == UICheckBox::UICheckBoxState::SELECTED)\r
+ {\r
+ PlayersModel::GetInstance()->SetPlayButtonState(true);\r
+ }\r
+ RemoveAll();\r
+ listGroup->RemoveAll();\r
+ delete list;\r
+ list = nullptr;\r
+ delete playerlistener;\r
+ playerlistener = nullptr;\r
+ delete playerButton;\r
+ playerButton = nullptr;\r
+ delete soundlistener;\r
+ soundlistener = nullptr;\r
+ delete nextButton;\r
+ nextButton = nullptr;\r
+ delete nextlistener;\r
+ nextlistener = nullptr;\r
+ delete preButton;\r
+ preButton = nullptr;\r
+ TearDownView();\r
+ delete adapterText;\r
+ adapterText = nullptr;\r
+ delete backGround;\r
+ delete titleLabel;\r
+ delete subTitleLabel;\r
+ delete MusciSourceLabel;\r
+ MusciSourceLabel = nullptr;\r
+ if (music_list_button != nullptr)\r
+ {\r
+ delete music_list_button;\r
+ music_list_button = nullptr;\r
+ }\r
+ if (PhoneMusicConnectStatusLabel != nullptr)\r
+ {\r
+ delete PhoneMusicConnectStatusLabel;\r
+ PhoneMusicConnectStatusLabel = nullptr;\r
+ }\r
+ backGround = nullptr;\r
+ titleLabel = nullptr;\r
+ subTitleLabel = nullptr;\r
+ delete playbackProgress;\r
+ playbackProgress = nullptr;\r
+ delete jumpView;\r
+ jumpView = nullptr;\r
+ delete playersPresenter;\r
+ playersPresenter = nullptr;\r
+ delete playerOnDragListener;\r
+ playerOnDragListener = nullptr;\r
+ }\r
+ g_pPlayersView = nullptr;\r
+ }\r
\r
-}\r
+ void PlayersView::TitleSetText(const char *text)\r
+ {\r
+ titleLabel->SetText(text);\r
+ titleLabel->SetLineBreakMode(UILabel::LINE_BREAK_MARQUEE);\r
+ titleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER,\r
+ UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ }\r
\r
-void PlayersView::PlayerModelButtonSetSrc(uint32_t playMode)\r
-{\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(playMode, PLAYER_IAMGES);\r
- playerModelButton->SetSrc(image);\r
-}\r
+ void PlayersView::PlayerModelButtonSetSrc(uint32_t playMode)\r
+ {\r
+ ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(playMode, PLAYER_IAMGES);\r
+ playerModelButton->SetSrc(image);\r
+ }\r
\r
-int16_t PlayersView::GetVolumeRank(void)\r
-{\r
- return volumeSet;\r
-}\r
+ int16_t PlayersView::GetVolumeRank(void)\r
+ {\r
+ return volumeSet;\r
+ }\r
\r
-void PlayersView::SetVolumeRank(int16_t value)\r
-{\r
- volumeSet = value;\r
-}\r
+ void PlayersView::SetVolumeRank(int16_t value)\r
+ {\r
+ volumeSet = value;\r
+ }\r
\r
-void PlayersView::SetVolumeAddOne(void)\r
-{\r
- volumeSet++;\r
-}\r
+ void PlayersView::SetVolumeAddOne(void)\r
+ {\r
+ volumeSet++;\r
+ }\r
\r
-UIButton *PlayersView::GetPullButton(void)\r
-{\r
- return pullButton;\r
-}\r
+ UIButton *PlayersView::GetPullButton(void)\r
+ {\r
+ return pullButton;\r
+ }\r
\r
-UIButton *PlayersView::GetOptionsButton(void)\r
-{\r
- return optionsButton;\r
-}\r
+ UIButton *PlayersView::GetOptionsButton(void)\r
+ {\r
+ return optionsButton;\r
+ }\r
\r
-UIButton *PlayersView::GetPreButton(void)\r
-{\r
- return preButton;\r
-}\r
+ UIButton *PlayersView::GetPreButton(void)\r
+ {\r
+ return preButton;\r
+ }\r
\r
-UIButton *PlayersView::GetNextButton(void)\r
-{\r
- return nextButton;\r
-}\r
+ UIButton *PlayersView::GetNextButton(void)\r
+ {\r
+ return nextButton;\r
+ }\r
\r
-//获取音乐列表按钮\r
-UIButton *PlayersView::GetMusicListButton(void)\r
-{\r
- return music_list_button;\r
-}\r
+ // 获取音乐列表按钮\r
+ UIButton *PlayersView::GetMusicListButton(void)\r
+ {\r
+ return music_list_button;\r
+ }\r
\r
-UILabel *PlayersView::GetTitleLabel(void)\r
-{\r
- return titleLabel;\r
-}\r
+ UILabel *PlayersView::GetTitleLabel(void)\r
+ {\r
+ return titleLabel;\r
+ }\r
\r
-//获取音乐来源标签\r
-UILabel *PlayersView::GetMusicSourceLabel(void)\r
-{\r
- return MusciSourceLabel;\r
-}\r
+ // 获取音乐来源标签\r
+ UILabel *PlayersView::GetMusicSourceLabel(void)\r
+ {\r
+ return MusciSourceLabel;\r
+ }\r
\r
-//获手机音乐连接状态标签\r
-UILabel *PlayersView::GetPhoneMusicConnectStatusLabel(void)\r
-{\r
- return PhoneMusicConnectStatusLabel;\r
-}\r
+ // 获手机音乐连接状态标签\r
+ UILabel *PlayersView::GetPhoneMusicConnectStatusLabel(void)\r
+ {\r
+ return PhoneMusicConnectStatusLabel;\r
+ }\r
\r
-UICheckBox *PlayersView::GetPlayerButton(void)\r
-{\r
- return playerButton;\r
-}\r
+ UICheckBox *PlayersView::GetPlayerButton(void)\r
+ {\r
+ return playerButton;\r
+ }\r
\r
-UIImageView *PlayersView::GetSoundButton(void)\r
-{\r
- return soundButton;\r
-}\r
+ UIImageView *PlayersView::GetSoundButton(void)\r
+ {\r
+ return soundButton;\r
+ }\r
\r
-UICircleProgress *PlayersView::GetPlaybackProgress(void)\r
-{\r
- return playbackProgress;\r
-}\r
+ UICircleProgress *PlayersView::GetPlaybackProgress(void)\r
+ {\r
+ return playbackProgress;\r
+ }\r
\r
-UIImageView *PlayersView::GetPlayerModelButton(void)\r
-{\r
- return playerModelButton;\r
-}\r
+ UIImageView *PlayersView::GetPlayerModelButton(void)\r
+ {\r
+ return playerModelButton;\r
+ }\r
\r
-UICheckBox::UICheckBoxState PlayersView::GetPlayerButtonState(void)\r
-{\r
- return playerButton->GetState();\r
-}\r
+ UICheckBox::UICheckBoxState PlayersView::GetPlayerButtonState(void)\r
+ {\r
+ return playerButton->GetState();\r
+ }\r
\r
-void PlayersView::SetPlayerButtonState(UICheckBox::UICheckBoxState state)\r
-{\r
- if (playerButton == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetPlayerButtonState playerButton NULL");\r
- return;\r
+ void PlayersView::SetPlayerButtonState(UICheckBox::UICheckBoxState state)\r
+ {\r
+ if (playerButton == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetPlayerButtonState playerButton NULL");\r
+ return;\r
+ }\r
+ return playerButton->SetState(state);\r
}\r
- return playerButton->SetState(state);\r
-}\r
\r
-UIList *PlayersView::GetPlayerList(void)\r
-{\r
- return list;\r
-}\r
-/// @brief 根据传入的status参数来控制歌曲列表组的显示与隐藏。\r
-/// @param status \r
-void PlayersView::SetPlayerListGroupStatus(bool status)\r
-{\r
- if (listGroup == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView listGroup is NULL");\r
- return;\r
+ UIList *PlayersView::GetPlayerList(void)\r
+ {\r
+ return list;\r
}\r
- UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
- if (vew != nullptr) {\r
- vew->SetVisible(!status);\r
+ /// @brief 根据传入的status参数来控制歌曲列表组的显示与隐藏。\r
+ /// @param status\r
+ void PlayersView::SetPlayerListGroupStatus(bool status)\r
+ {\r
+ if (listGroup == nullptr)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView listGroup is NULL");\r
+ return;\r
+ }\r
+ UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
+ if (vew != nullptr)\r
+ {\r
+ vew->SetVisible(!status);\r
+ }\r
+ /*增加训练卡片控制*/\r
+ UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad();\r
+ if (cardview != nullptr)\r
+ {\r
+ cardview->SetVisible(!status);\r
+ }\r
+ listGroup->SetVisible(status);\r
+ return;\r
}\r
- listGroup->SetVisible(status);\r
- return;\r
-}\r
\r
-/// @brief 根据传入的status参数来控制删除歌曲视图的显示与隐藏。\r
-/// @param status \r
-void PlayersView::SetPlayerDelSongViewStatus(bool status)\r
-{\r
- if (DelSongView == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView DelSongView is NULL");\r
+ /// @brief 根据传入的status参数来控制删除歌曲视图的显示与隐藏。\r
+ /// @param status\r
+ void PlayersView::SetPlayerDelSongViewStatus(bool status)\r
+ {\r
+ if (DelSongView == nullptr)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "PlayersView DelSongView is NULL");\r
+ return;\r
+ }\r
+ UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
+ if (vew != nullptr)\r
+ {\r
+ vew->SetVisible(!status);\r
+ }\r
+ /*增加训练卡片控制*/\r
+ UIView *cardview = TraingCardView::GetInstance()->GetTraingCrad();\r
+ if (cardview != nullptr)\r
+ {\r
+ cardview->SetVisible(!status);\r
+ }\r
+ DelSongView->SetVisible(status);\r
+ RootView::GetInstance()->Invalidate();\r
return;\r
}\r
- UIView *vew = MainViewSample::GetInstance()->GetMainViewGroup();\r
- if (vew != nullptr) {\r
- vew->SetVisible(!status);\r
- }\r
- DelSongView->SetVisible(status);\r
- RootView::GetInstance()->Invalidate();\r
- return;\r
-\r
-}\r
-\r
-void PlayersView::SetPlayerCtrVolume(float leftVolume, float rightVolume)\r
-{\r
- PlayersModel::GetInstance()->GetPlayerCtr()->SetVolume(leftVolume, rightVolume);\r
-}\r
-\r
-void PlayersView::TearDownView()\r
-{\r
- delete prelistener;\r
- prelistener = nullptr;\r
- delete playerModelButton;\r
- playerModelButton = nullptr;\r
- delete modellistener;\r
- modellistener = nullptr;\r
- delete soundButton;\r
- soundButton = nullptr;\r
- delete optionslistener;\r
- optionslistener = nullptr;\r
- delete optionsButton;\r
- optionsButton = nullptr;\r
- delete pullButton;\r
- pullButton = nullptr;\r
- delete listGroup;\r
- listGroup = nullptr;\r
-}\r
\r
-PlayersView* PlayersView::GetInstance(void)\r
-{\r
- return g_pPlayersView;\r
-}\r
-\r
-// 显示音乐列表\r
-void PlayersView::ShowUpListView()\r
-{\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView");\r
- listGroup = new UIScrollView();\r
- if (listGroup == nullptr) {\r
- return;\r
+ void PlayersView::SetPlayerCtrVolume(float leftVolume, float rightVolume)\r
+ {\r
+ PlayersModel::GetInstance()->GetPlayerCtr()->SetVolume(leftVolume, rightVolume);\r
}\r
- listGroup->SetPosition(0, 0);\r
- listGroup->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
- listGroup->SetScrollBlankSize(20);\r
- listGroup->SetReboundSize(50);\r
- listGroup->SetDirection(1);\r
\r
- musicListTitle = new UILabel();\r
- if(musicListTitle ==nullptr)\r
+ void PlayersView::TearDownView()\r
{\r
- return;\r
+ delete prelistener;\r
+ prelistener = nullptr;\r
+ delete playerModelButton;\r
+ playerModelButton = nullptr;\r
+ delete modellistener;\r
+ modellistener = nullptr;\r
+ delete soundButton;\r
+ soundButton = nullptr;\r
+ delete optionslistener;\r
+ optionslistener = nullptr;\r
+ delete optionsButton;\r
+ optionsButton = nullptr;\r
+ delete pullButton;\r
+ pullButton = nullptr;\r
+ delete listGroup;\r
+ listGroup = nullptr;\r
+ }\r
+\r
+ PlayersView *PlayersView::GetInstance(void)\r
+ {\r
+ return g_pPlayersView;\r
}\r
- musicListTitle->SetPosition(173, 52,120,35); \r
- musicListTitle->SetStyle(STYLE_TEXT_FONT, 30);\r
- musicListTitle->SetStyle(STYLE_LINE_HEIGHT, 36);\r
- musicListTitle->SetText("音乐列表");\r
- musicListTitle->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);\r
- musicListTitle->SetTextColor(Color::GetColorFromRGBA(0xff, 0xf3, 0xff, 0xff));\r
- musicListTitle->SetRollSpeed(0);\r
- musicListTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- listGroup->Add(musicListTitle);\r
-\r
- // list type\r
- if (adapterText == nullptr) {\r
- adapterText = new PlayersCaseListAdapter();\r
- if (adapterText == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "adapterText new fail");\r
+\r
+ // 显示音乐列表\r
+ void PlayersView::ShowUpListView()\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView");\r
+ listGroup = new UIScrollView();\r
+ if (listGroup == nullptr)\r
+ {\r
return;\r
}\r
- }\r
- if (list == nullptr) {\r
- list = new UIList(UIList::VERTICAL);\r
- if (list == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "list new fail");\r
+ listGroup->SetPosition(0, 0);\r
+ listGroup->Resize(VERTICAL_RESOLUTION, HORIZONTAL_RESOLUTION);\r
+ listGroup->SetScrollBlankSize(20);\r
+ listGroup->SetReboundSize(50);\r
+ listGroup->SetDirection(1);\r
+\r
+ musicListTitle = new UILabel();\r
+ if (musicListTitle == nullptr)\r
+ {\r
return;\r
}\r
- list->SetPosition(67, 138, 332, 500);\r
- list->SetStartIndex(0); // 0 : list start index\r
- list->SetAdapter(adapterText);\r
- }\r
- listGroup->Add(list);\r
- RootView::GetInstance()->Add(listGroup);\r
- UIView::OnDragListener *dragListener = (UIView::OnDragListener*)OHOS::PlayerOnDragListener::GetInstance();\r
- if (dragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::OnDragListener fail");\r
- return;\r
+ musicListTitle->SetPosition(173, 52, 120, 35);\r
+ musicListTitle->SetStyle(STYLE_TEXT_FONT, 30);\r
+ musicListTitle->SetStyle(STYLE_LINE_HEIGHT, 36);\r
+ musicListTitle->SetText("音乐列表");\r
+ musicListTitle->SetLineBreakMode(UILabel::LINE_BREAK_ELLIPSIS);\r
+ musicListTitle->SetTextColor(Color::GetColorFromRGBA(0xff, 0xf3, 0xff, 0xff));\r
+ musicListTitle->SetRollSpeed(0);\r
+ musicListTitle->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ listGroup->Add(musicListTitle);\r
+\r
+ // list type\r
+ if (adapterText == nullptr)\r
+ {\r
+ adapterText = new PlayersCaseListAdapter();\r
+ if (adapterText == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "adapterText new fail");\r
+ return;\r
+ }\r
+ }\r
+ if (list == nullptr)\r
+ {\r
+ list = new UIList(UIList::VERTICAL);\r
+ if (list == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "list new fail");\r
+ return;\r
+ }\r
+ list->SetPosition(67, 138, 332, 500);\r
+ list->SetStartIndex(0); // 0 : list start index\r
+ list->SetAdapter(adapterText);\r
+ }\r
+ listGroup->Add(list);\r
+ RootView::GetInstance()->Add(listGroup);\r
+ UIView::OnDragListener *dragListener = (UIView::OnDragListener *)OHOS::PlayerOnDragListener::GetInstance();\r
+ if (dragListener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::OnDragListener fail");\r
+ return;\r
+ }\r
+ listGroup->SetDraggable(true);\r
+ listGroup->SetTouchable(true);\r
+ listGroup->SetOnDragListener(dragListener);\r
+ listGroup->SetVisible(false);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView end");\r
}\r
- listGroup->SetDraggable(true);\r
- listGroup->SetTouchable(true);\r
- listGroup->SetOnDragListener(dragListener);\r
- listGroup->SetVisible(false);\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpListView end");\r
-}\r
\r
-/// @brief 创建删除歌曲视图\r
-/// @param songName \r
-void PlayersView::ShowUpDelSongView()\r
-{\r
- if(p_PlayerListDelSongView == nullptr)\r
+ /// @brief 创建删除歌曲视图\r
+ /// @param songName\r
+ void PlayersView::ShowUpDelSongView()\r
{\r
- p_PlayerListDelSongView = new PlayerListDelSongView();\r
+ if (p_PlayerListDelSongView == nullptr)\r
+ {\r
+ p_PlayerListDelSongView = new PlayerListDelSongView();\r
+ }\r
+ DelSongView = p_PlayerListDelSongView->InitDelSongView();\r
+ RootView::GetInstance()->Add(DelSongView);\r
+ DelSongView->SetTouchable(true);\r
+ DelSongView->SetVisible(false);\r
}\r
- DelSongView = p_PlayerListDelSongView->InitDelSongView();\r
- RootView::GetInstance()->Add(DelSongView);\r
- DelSongView->SetTouchable(true);\r
- DelSongView->SetVisible(false);\r
-}\r
\r
-//设置按钮的位置和监听\r
-void PlayersView::SetUpButton(UIButton *btn, const Point& point,\r
- int16_t width, int16_t height, UIView::OnClickListener *listener)\r
-{\r
- if (btn == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetUpButton nullptr");\r
- return;\r
- }\r
- Add(btn);\r
- btn->SetPosition(point.x, point.y, width, height);\r
- btn->SetOnClickListener(listener);\r
-}\r
-//复选框:选中播放未选中暂停\r
-int PlayersView::ShowUpCheckBoxButton()\r
-{\r
- ImageInfo *ImagePlay;\r
- ImageInfo *ImagerPause;\r
- if (playerButton == nullptr) {\r
- playerButton = new UICheckBox();\r
- }\r
- if (soundButton == nullptr) {\r
- soundButton = new UIImageView();\r
- }\r
- if ((playerButton == nullptr) || (soundButton == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new fail");\r
- return OHOS_FAILURE;\r
- }\r
- playerlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(playerButton));\r
- if (playerlistener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerlistener new fail");\r
- return OHOS_FAILURE;\r
- }\r
- playerButton->SetPosition(195, 195, 80, 80); // 140:x 139:y 172:width 172:height\r
- playerButton->SetOnClickListener(playerlistener);\r
- ImagePlay = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PLAY, PLAYER_IAMGES); //播放图片\r
- ImagerPause = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PAUSE, PLAYER_IAMGES);//暂停图片\r
- playerButton->SetImages(ImagePlay, ImagerPause);\r
- Add(playerButton);\r
-\r
- soundlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(soundButton));\r
- if (soundlistener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soundlistener new fail");\r
- return OHOS_FAILURE;\r
- }\r
- soundButton->SetTouchable(true);\r
- soundButton->SetPosition(321, 321, 60, 60); \r
- soundButton->SetOnClickListener(soundlistener);\r
- if (LoadPlayerImage(soundButton, PLAYER_MUSIC_VOICE) == false) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerModelButton LoadPlayerImage fail");\r
- return false;\r
+ // 设置按钮的位置和监听\r
+ void PlayersView::SetUpButton(UIButton *btn, const Point &point,\r
+ int16_t width, int16_t height, UIView::OnClickListener *listener)\r
+ {\r
+ if (btn == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::SetUpButton nullptr");\r
+ return;\r
+ }\r
+ Add(btn);\r
+ btn->SetPosition(point.x, point.y, width, height);\r
+ btn->SetOnClickListener(listener);\r
}\r
- Add(soundButton);\r
- return OHOS_SUCCESS;\r
-}\r
-//显示按钮:下一首,上一首,播放模式\r
-int PlayersView::ShowUpButton()\r
-{\r
- struct Point pointBtn;\r
- ImageInfo *image;\r
- pointBtn.x = 366; // 366:x\r
- pointBtn.y = 213; // 213:y\r
- nextlistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(nextButton));\r
- if (nextlistener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nextlistener new fail");\r
- return OHOS_FAILURE;\r
- }\r
- SetUpButton(nextButton, pointBtn, 60, 60, nextlistener); // 93:width 116:height\r
- image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_NEXT, PLAYER_IAMGES);\r
- nextButton->SetImageSrc(image, image);\r
- nextButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
- nextButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- nextButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
- nextButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
- nextButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- pointBtn.x = 60; // 60:x\r
- pointBtn.y = 213; // 213:y\r
- prelistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(preButton));\r
- if (prelistener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "prelistener new fail");\r
- return OHOS_FAILURE;\r
- }\r
- SetUpButton(preButton, pointBtn, 60, 60, prelistener); // 86:width 116:height\r
- image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PROVE, PLAYER_IAMGES);\r
- preButton->SetImageSrc(image, image);\r
- preButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
- preButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- preButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
- preButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
- preButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
- pointBtn.x = 105; // 105:x\r
- pointBtn.y = 321; // 321:y\r
- modellistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(playerModelButton));\r
- if (modellistener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "modellistener new fail");\r
- return OHOS_FAILURE;\r
- }\r
- playerModelButton->SetTouchable(true);\r
- playerModelButton->SetPosition(pointBtn.x, pointBtn.y, 60, 60); \r
- playerModelButton->SetOnClickListener(modellistener);\r
- if (ShowUpPlayerMode() == false) {\r
- return OHOS_FAILURE;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModel %d", PlayersModel::GetInstance()->GetPlayerModel());\r
- Add(playerModelButton);\r
-\r
- return OHOS_SUCCESS;\r
-}\r
-//显示音乐播放模式:LOOP 循环播放 SEQUENCE 循序播放 REPEATS 单曲循环 RANDOM 随机播放\r
-bool PlayersView::ShowUpPlayerMode()\r
-{\r
- if (PlayersModel::GetInstance()->GetPlayerModel() == LOOP) {\r
- if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_LOOP) == false) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYER_PLAYERSMODEL_LOOP fail");\r
- return false;\r
+ // 复选框:选中播放未选中暂停\r
+ int PlayersView::ShowUpCheckBoxButton()\r
+ {\r
+ ImageInfo *ImagePlay;\r
+ ImageInfo *ImagerPause;\r
+ if (playerButton == nullptr)\r
+ {\r
+ playerButton = new UICheckBox();\r
}\r
- } else if (PlayersModel::GetInstance()->GetPlayerModel() == SEQUENCE) {\r
- if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_SEQUENCE) == false) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_SEQUENCE fail");\r
- return false;\r
+ if (soundButton == nullptr)\r
+ {\r
+ soundButton = new UIImageView();\r
}\r
- } else if (PlayersModel::GetInstance()->GetPlayerModel() == REPEATS) {\r
- if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_REPEATS) == false) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_REPEATS fail");\r
- return false;\r
+ if ((playerButton == nullptr) || (soundButton == nullptr))\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ playerlistener = new ButtonOnClickListener(reinterpret_cast<UIView *>(playerButton));\r
+ if (playerlistener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerlistener new fail");\r
+ return OHOS_FAILURE;\r
}\r
- } else if (PlayersModel::GetInstance()->GetPlayerModel() == RANDOM) {\r
- if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_RANDOM) == false) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_RANDOM fail");\r
+ playerButton->SetPosition(195, 195, 80, 80); // 140:x 139:y 172:width 172:height\r
+ playerButton->SetOnClickListener(playerlistener);\r
+ ImagePlay = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PLAY, PLAYER_IAMGES); // 播放图片\r
+ ImagerPause = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_PAUSE, PLAYER_IAMGES); // 暂停图片\r
+ playerButton->SetImages(ImagePlay, ImagerPause);\r
+ Add(playerButton);\r
+\r
+ soundlistener = new ButtonOnClickListener(reinterpret_cast<UIView *>(soundButton));\r
+ if (soundlistener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "soundlistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ soundButton->SetTouchable(true);\r
+ soundButton->SetPosition(321, 321, 60, 60);\r
+ soundButton->SetOnClickListener(soundlistener);\r
+ if (LoadPlayerImage(soundButton, PLAYER_MUSIC_VOICE) == false)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerModelButton LoadPlayerImage fail");\r
return false;\r
}\r
+ Add(soundButton);\r
+ return OHOS_SUCCESS;\r
}\r
- return true;\r
-}\r
-//显示按钮视图\r
-int PlayersView::ShowUpButtonView()\r
-{\r
- int ret;\r
- ret = ShowUpCheckBoxButton();\r
- if (ret == OHOS_FAILURE) {\r
- return OHOS_FAILURE;\r
- }\r
- if (nextButton == nullptr) {\r
- nextButton = new UIButton();\r
- }\r
- if (preButton == nullptr) {\r
- preButton = new UIButton();\r
- }\r
- if (optionsButton == nullptr) {\r
- optionsButton = new UIButton();\r
- }\r
- if (music_list_button == nullptr) {\r
- music_list_button = new UIButton();\r
- }\r
- if (pullButton == nullptr) {\r
- pullButton = new UIButton();\r
- }\r
- if (playerModelButton == nullptr) {\r
- playerModelButton = new UIImageView();\r
- }\r
- if ((nextButton == nullptr) || (preButton == nullptr) || (playerModelButton == nullptr) || (optionsButton == nullptr) ||\r
- (pullButton == nullptr)) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UIButton new fail");\r
- return OHOS_FAILURE;\r
- }\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpButtonView");\r
+ // 显示按钮:下一首,上一首,播放模式\r
+ int PlayersView::ShowUpButton()\r
+ {\r
+ struct Point pointBtn;\r
+ ImageInfo *image;\r
+ pointBtn.x = 366; // 366:x\r
+ pointBtn.y = 213; // 213:y\r
+ nextlistener = new ButtonOnClickListener(reinterpret_cast<UIView *>(nextButton));\r
+ if (nextlistener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "nextlistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ SetUpButton(nextButton, pointBtn, 60, 60, nextlistener); // 93:width 116:height\r
+ image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_NEXT, PLAYER_IAMGES);\r
+ nextButton->SetImageSrc(image, image);\r
+ nextButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ nextButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ nextButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+ nextButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ nextButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+ pointBtn.x = 60; // 60:x\r
+ pointBtn.y = 213; // 213:y\r
+ prelistener = new ButtonOnClickListener(reinterpret_cast<UIView *>(preButton));\r
+ if (prelistener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "prelistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ SetUpButton(preButton, pointBtn, 60, 60, prelistener); // 86:width 116:height\r
+ image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_PROVE, PLAYER_IAMGES);\r
+ preButton->SetImageSrc(image, image);\r
+ preButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ preButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ preButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+ preButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ preButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+ pointBtn.x = 105; // 105:x\r
+ pointBtn.y = 321; // 321:y\r
+ modellistener = new ButtonOnClickListener(reinterpret_cast<UIView *>(playerModelButton));\r
+ if (modellistener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "modellistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ playerModelButton->SetTouchable(true);\r
+ playerModelButton->SetPosition(pointBtn.x, pointBtn.y, 60, 60);\r
+ playerModelButton->SetOnClickListener(modellistener);\r
+ if (ShowUpPlayerMode() == false)\r
+ {\r
+ return OHOS_FAILURE;\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playerModel %d", PlayersModel::GetInstance()->GetPlayerModel());\r
+ Add(playerModelButton);\r
\r
- ret = ShowUpButton();\r
- if (ret == OHOS_FAILURE) {\r
- return OHOS_FAILURE;\r
- }\r
- ret = ShowUpButtonOptions();\r
- if (ret == OHOS_FAILURE) {\r
- return OHOS_FAILURE;\r
- }\r
- ret = ShowUpCircleProgress();\r
- if (ret == OHOS_FAILURE) {\r
- return OHOS_FAILURE;\r
+ return OHOS_SUCCESS;\r
}\r
- ret = ShowUpMusicListbutton();\r
- if (ret == OHOS_FAILURE) {\r
- return OHOS_FAILURE;\r
+ // 显示音乐播放模式:LOOP 循环播放 SEQUENCE 循序播放 REPEATS 单曲循环 RANDOM 随机播放\r
+ bool PlayersView::ShowUpPlayerMode()\r
+ {\r
+ if (PlayersModel::GetInstance()->GetPlayerModel() == LOOP)\r
+ {\r
+ if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_LOOP) == false)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYER_PLAYERSMODEL_LOOP fail");\r
+ return false;\r
+ }\r
+ }\r
+ else if (PlayersModel::GetInstance()->GetPlayerModel() == SEQUENCE)\r
+ {\r
+ if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_SEQUENCE) == false)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_SEQUENCE fail");\r
+ return false;\r
+ }\r
+ }\r
+ else if (PlayersModel::GetInstance()->GetPlayerModel() == REPEATS)\r
+ {\r
+ if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_REPEATS) == false)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_REPEATS fail");\r
+ return false;\r
+ }\r
+ }\r
+ else if (PlayersModel::GetInstance()->GetPlayerModel() == RANDOM)\r
+ {\r
+ if (LoadPlayerImage(playerModelButton, PLAYER_PLAYERSMODEL_RANDOM) == false)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "load PLAYERSMODEL_RANDOM fail");\r
+ return false;\r
+ }\r
+ }\r
+ return true;\r
}\r
- return OHOS_SUCCESS;\r
-}\r
+ // 显示按钮视图\r
+ int PlayersView::ShowUpButtonView()\r
+ {\r
+ int ret;\r
+ ret = ShowUpCheckBoxButton();\r
+ if (ret == OHOS_FAILURE)\r
+ {\r
+ return OHOS_FAILURE;\r
+ }\r
+ if (nextButton == nullptr)\r
+ {\r
+ nextButton = new UIButton();\r
+ }\r
+ if (preButton == nullptr)\r
+ {\r
+ preButton = new UIButton();\r
+ }\r
+ if (optionsButton == nullptr)\r
+ {\r
+ optionsButton = new UIButton();\r
+ }\r
+ if (music_list_button == nullptr)\r
+ {\r
+ music_list_button = new UIButton();\r
+ }\r
+ if (pullButton == nullptr)\r
+ {\r
+ pullButton = new UIButton();\r
+ }\r
+ if (playerModelButton == nullptr)\r
+ {\r
+ playerModelButton = new UIImageView();\r
+ }\r
+ if ((nextButton == nullptr) || (preButton == nullptr) || (playerModelButton == nullptr) || (optionsButton == nullptr) ||\r
+ (pullButton == nullptr))\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UIButton new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ShowUpButtonView");\r
\r
-//显示音乐列表按钮\r
-int PlayersView::ShowUpMusicListbutton()\r
-{\r
- struct Point pointBtn;\r
- pointBtn.x = 213; \r
- pointBtn.y = 35; \r
- music_list_button_listener = new ButtonOnClickListener(reinterpret_cast<UIView*>(music_list_button));\r
- if (music_list_button_listener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "music_list_button_listener new fail");\r
- return OHOS_FAILURE;\r
- }\r
- SetUpButton(music_list_button, pointBtn, 60, 60, music_list_button_listener); // 75:width 76:height\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_LIST, PLAYER_IAMGES);\r
- music_list_button->SetImageSrc(image, image);\r
- music_list_button->SetViewId("music_list_button");\r
- music_list_button->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
- music_list_button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- music_list_button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
- music_list_button->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
- music_list_button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
- return OHOS_SUCCESS;\r
-}\r
-/*\r
- 创建了两个按钮:optionslistener:显示选项按钮,点击后里面有三种模式:1手机音乐,2本地音乐,3蓝牙耳机\r
- pullButton:上拉按钮上拉后显示歌单 \r
-*/\r
-int PlayersView::ShowUpButtonOptions()\r
-{\r
- struct Point pointBtn;\r
- pointBtn.x = 213; \r
- pointBtn.y = 366; \r
- optionslistener = new ButtonOnClickListener(reinterpret_cast<UIView*>(optionsButton));\r
- if (optionslistener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "optionslistener new fail");\r
- return OHOS_FAILURE;\r
- }\r
- SetUpButton(optionsButton, pointBtn, 60, 60, optionslistener); // 75:width 76:height\r
- ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_LOCAL_MUSIC_COLOR, PLAYER_IAMGES);\r
- optionsButton->SetImageSrc(image, image);\r
- optionsButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
- optionsButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- optionsButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
- optionsButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
- optionsButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
-\r
- pointBtn.x = 178; // 178:x\r
- pointBtn.y = 394; // 394:y\r
- SetUpButton(pullButton, pointBtn, 95, 48, nullptr); // 95:width 48:height\r
- pullButton->SetImageSrc(PNG_PULLBUTTON_FACE_IMAGE, PNG_PULLBUTTON_FACE_IMAGE);\r
- pullButton->SetVisible(false);\r
- return OHOS_SUCCESS;\r
-}\r
-//显示播放进度条\r
-int PlayersView::ShowUpCircleProgress()\r
-{\r
- if (playbackProgress == nullptr) {\r
- playbackProgress = new UICircleProgress();\r
- if (playbackProgress == nullptr) {\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playbackProgress new fail");\r
+ ret = ShowUpButton();\r
+ if (ret == OHOS_FAILURE)\r
+ {\r
+ return OHOS_FAILURE;\r
+ }\r
+ ret = ShowUpButtonOptions();\r
+ if (ret == OHOS_FAILURE)\r
+ {\r
return OHOS_FAILURE;\r
}\r
+ ret = ShowUpCircleProgress();\r
+ if (ret == OHOS_FAILURE)\r
+ {\r
+ return OHOS_FAILURE;\r
+ }\r
+ ret = ShowUpMusicListbutton();\r
+ if (ret == OHOS_FAILURE)\r
+ {\r
+ return OHOS_FAILURE;\r
+ }\r
+ return OHOS_SUCCESS;\r
}\r
- playbackProgress->SetPosition(158, 158, 150, 150); \r
- playbackProgress->SetCenterPosition(75, 75);\r
- playbackProgress->SetRange(PLAY_PROGRESS_MAX, PLAY_PROGRESS_MIN);\r
- playbackProgress->SetRadius(70); \r
- playbackProgress->SetStartAngle(0);\r
- playbackProgress->SetEndAngle(360); // 360: end angle\r
- playbackProgress->SetValue(0);\r
- playbackProgress->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
- playbackProgress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
- playbackProgress->SetBackgroundStyle(STYLE_LINE_COLOR, 0xfff61313);\r
- playbackProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, 0);\r
- playbackProgress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xfffbfbfb);\r
- playbackProgress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xffffffff);\r
- playbackProgress->SetForegroundStyle(STYLE_LINE_COLOR, 0xffffffff);\r
- playbackProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 6); // 6:width\r
- Add(playbackProgress);\r
- return OHOS_SUCCESS;\r
-}\r
-//创建跳转视图\r
-void PlayersView::CreateJumpView(void)\r
-{\r
- if (jumpView == nullptr) {\r
- jumpView = new JumpView();\r
- if (jumpView == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView new fail");\r
- return;\r
+\r
+ // 显示音乐列表按钮\r
+ int PlayersView::ShowUpMusicListbutton()\r
+ {\r
+ struct Point pointBtn;\r
+ pointBtn.x = 213;\r
+ pointBtn.y = 35;\r
+ music_list_button_listener = new ButtonOnClickListener(reinterpret_cast<UIView *>(music_list_button));\r
+ if (music_list_button_listener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "music_list_button_listener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ SetUpButton(music_list_button, pointBtn, 60, 60, music_list_button_listener); // 75:width 76:height\r
+ ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_MUSIC_LIST, PLAYER_IAMGES);\r
+ music_list_button->SetImageSrc(image, image);\r
+ music_list_button->SetViewId("music_list_button");\r
+ music_list_button->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ music_list_button->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ music_list_button->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+ music_list_button->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ music_list_button->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+ return OHOS_SUCCESS;\r
+ }\r
+ /*\r
+ 创建了两个按钮:optionslistener:显示选项按钮,点击后里面有三种模式:1手机音乐,2本地音乐,3蓝牙耳机\r
+ pullButton:上拉按钮上拉后显示歌单\r
+ */\r
+ int PlayersView::ShowUpButtonOptions()\r
+ {\r
+ struct Point pointBtn;\r
+ pointBtn.x = 213;\r
+ pointBtn.y = 366;\r
+ optionslistener = new ButtonOnClickListener(reinterpret_cast<UIView *>(optionsButton));\r
+ if (optionslistener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "optionslistener new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ SetUpButton(optionsButton, pointBtn, 60, 60, optionslistener); // 75:width 76:height\r
+ ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(PLAYER_LOCAL_MUSIC_COLOR, PLAYER_IAMGES);\r
+ optionsButton->SetImageSrc(image, image);\r
+ optionsButton->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ optionsButton->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ optionsButton->SetStyleForState(STYLE_BACKGROUND_COLOR, 0xfffbfbfb, UIButton::PRESSED);\r
+ optionsButton->SetStyleForState(STYLE_BACKGROUND_OPA, 0x00, UIButton::PRESSED);\r
+ optionsButton->SetStyleForState(STYLE_BORDER_COLOR, 0xff0b1928, UIButton::PRESSED);\r
+\r
+ pointBtn.x = 178; // 178:x\r
+ pointBtn.y = 394; // 394:y\r
+ SetUpButton(pullButton, pointBtn, 95, 48, nullptr); // 95:width 48:height\r
+ pullButton->SetImageSrc(PNG_PULLBUTTON_FACE_IMAGE, PNG_PULLBUTTON_FACE_IMAGE);\r
+ pullButton->SetVisible(false);\r
+ return OHOS_SUCCESS;\r
+ }\r
+ // 显示播放进度条\r
+ int PlayersView::ShowUpCircleProgress()\r
+ {\r
+ if (playbackProgress == nullptr)\r
+ {\r
+ playbackProgress = new UICircleProgress();\r
+ if (playbackProgress == nullptr)\r
+ {\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "playbackProgress new fail");\r
+ return OHOS_FAILURE;\r
+ }\r
+ }\r
+ playbackProgress->SetPosition(158, 158, 150, 150);\r
+ playbackProgress->SetCenterPosition(75, 75);\r
+ playbackProgress->SetRange(PLAY_PROGRESS_MAX, PLAY_PROGRESS_MIN);\r
+ playbackProgress->SetRadius(70);\r
+ playbackProgress->SetStartAngle(0);\r
+ playbackProgress->SetEndAngle(360); // 360: end angle\r
+ playbackProgress->SetValue(0);\r
+ playbackProgress->SetStyle(STYLE_BACKGROUND_OPA, 0x00);\r
+ playbackProgress->SetBackgroundStyle(STYLE_BACKGROUND_COLOR, 0xff000000);\r
+ playbackProgress->SetBackgroundStyle(STYLE_LINE_COLOR, 0xfff61313);\r
+ playbackProgress->SetBackgroundStyle(STYLE_LINE_WIDTH, 0);\r
+ playbackProgress->SetForegroundStyle(STYLE_BACKGROUND_COLOR, 0xfffbfbfb);\r
+ playbackProgress->SetForegroundStyle(STYLE_BORDER_COLOR, 0xffffffff);\r
+ playbackProgress->SetForegroundStyle(STYLE_LINE_COLOR, 0xffffffff);\r
+ playbackProgress->SetForegroundStyle(STYLE_LINE_WIDTH, 6); // 6:width\r
+ Add(playbackProgress);\r
+ return OHOS_SUCCESS;\r
+ }\r
+ // 创建跳转视图\r
+ void PlayersView::CreateJumpView(void)\r
+ {\r
+ if (jumpView == nullptr)\r
+ {\r
+ jumpView = new JumpView();\r
+ if (jumpView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "jumpView new fail");\r
+ return;\r
+ }\r
}\r
}\r
-}\r
-//创建一个音乐播放器的逻辑层\r
-void PlayersView::CreatePlayersPresenter(void)\r
-{\r
- if (playersPresenter == nullptr) {\r
- playersPresenter = new PlayersPresenter();\r
- if (playersPresenter == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersPresenter new fail");\r
- return;\r
+ // 创建一个音乐播放器的逻辑层\r
+ void PlayersView::CreatePlayersPresenter(void)\r
+ {\r
+ if (playersPresenter == nullptr)\r
+ {\r
+ playersPresenter = new PlayersPresenter();\r
+ if (playersPresenter == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playersPresenter new fail");\r
+ return;\r
+ }\r
}\r
}\r
-}\r
-//创建一个音乐播放器的拖拽监听\r
-void PlayersView::CreatePlayerOnDragListener(void)\r
-{\r
- if (playerOnDragListener == nullptr) {\r
- playerOnDragListener = new PlayerOnDragListener();\r
- if (playerOnDragListener == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail");\r
- return;\r
+ // 创建一个音乐播放器的拖拽监听\r
+ void PlayersView::CreatePlayerOnDragListener(void)\r
+ {\r
+ if (playerOnDragListener == nullptr)\r
+ {\r
+ playerOnDragListener = new PlayerOnDragListener();\r
+ if (playerOnDragListener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "playerOnDragListener new fail");\r
+ return;\r
+ }\r
}\r
}\r
-}\r
-//初始化背景图片\r
-bool PlayersView::InitBackGround(void)\r
-{\r
- if (backGround == nullptr) {\r
- backGround = new UIImageView();\r
- if (backGround == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround new fail");\r
+ // 初始化背景图片\r
+ bool PlayersView::InitBackGround(void)\r
+ {\r
+ if (backGround == nullptr)\r
+ {\r
+ backGround = new UIImageView();\r
+ if (backGround == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround new fail");\r
+ return false;\r
+ }\r
+ }\r
+ backGround->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
+ if (LoadPlayerImage(backGround, PLAYER_BACKGROUND) == false)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround LoadPlayerImage fail");\r
return false;\r
}\r
- }\r
- backGround->SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);\r
- if (LoadPlayerImage(backGround, PLAYER_BACKGROUND) == false) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "backGround LoadPlayerImage fail");\r
- return false;\r
- }\r
- /* -------------------------------------------------------------------------- */\r
- if(elipse == nullptr){\r
- elipse = new UIImageView();\r
- if(elipse ==nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse new fail");\r
+ /* -------------------------------------------------------------------------- */\r
+ if (elipse == nullptr)\r
+ {\r
+ elipse = new UIImageView();\r
+ if (elipse == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse new fail");\r
+ return false;\r
+ }\r
+ }\r
+ elipse->SetPosition(173, 173, 120, 120);\r
+ if (LoadPlayerImage(elipse, PLAYER_ELLIPSE) == false)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse LoadPlayerImage fail");\r
return false;\r
}\r
+ Add(backGround);\r
+ Add(elipse);\r
+ return true;\r
}\r
- elipse->SetPosition(173,173,120,120);\r
- if (LoadPlayerImage(elipse, PLAYER_ELLIPSE) == false) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "elipse LoadPlayerImage fail");\r
- return false;\r
- }\r
- Add(backGround);\r
- Add(elipse);\r
- return true;\r
-}\r
-//创建音乐名,作者名\r
-void PlayersView::CreatePlayerMusicName()\r
-{\r
- if (titleLabel == nullptr) {\r
- titleLabel = new UILabel();\r
- if (titleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");\r
- return;\r
+ // 创建音乐名,作者名\r
+ void PlayersView::CreatePlayerMusicName()\r
+ {\r
+ if (titleLabel == nullptr)\r
+ {\r
+ titleLabel = new UILabel();\r
+ if (titleLabel == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "titleLabel new fail");\r
+ return;\r
+ }\r
}\r
- }\r
- titleLabel->SetPosition(127, 35, 200, 53); // 127:x 35:y 200:width 53:height\r
- titleLabel->SetText("Music Name");\r
- titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
- Add(titleLabel);\r
+ titleLabel->SetPosition(127, 35, 200, 53); // 127:x 35:y 200:width 53:height\r
+ titleLabel->SetText("Music Name");\r
+ titleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, FONT_FORTY_SIZE);\r
+ Add(titleLabel);\r
\r
- if (subTitleLabel == nullptr) {\r
- subTitleLabel = new UILabel();\r
- if (subTitleLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "subTitleLabel new fail");\r
- return;\r
+ if (subTitleLabel == nullptr)\r
+ {\r
+ subTitleLabel = new UILabel();\r
+ if (subTitleLabel == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "subTitleLabel new fail");\r
+ return;\r
+ }\r
}\r
+ subTitleLabel->SetPosition(77, 92, 300, 38); // 77:x 92:y 300:width 38:height\r
+ subTitleLabel->SetText("Musical Authors");\r
+ subTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
+ subTitleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
+ Add(subTitleLabel);\r
+ return;\r
+ }\r
+ // 拖拽监听:从下到上拖拽后显示音乐列表\r
+ bool PlayersView::OnDragEvent(const DragEvent &event)\r
+ {\r
+ /* 300: y limit of drag start point */\r
+ // if ((event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) && (event.GetStartPoint().y > 300)) {\r
+ // PlayersPresenter::GetInstance()->ShowPlayerListGroup();\r
+ // return true;\r
+ // }\r
+ return false;\r
}\r
- subTitleLabel->SetPosition(77, 92, 300, 38); // 77:x 92:y 300:width 38:height\r
- subTitleLabel->SetText("Musical Authors");\r
- subTitleLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30); // 30:font data\r
- subTitleLabel->SetAlign(UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER, UITextLanguageAlignment::TEXT_ALIGNMENT_CENTER);\r
- Add(subTitleLabel);\r
- return;\r
-}\r
-//拖拽监听:从下到上拖拽后显示音乐列表\r
-bool PlayersView::OnDragEvent(const DragEvent& event)\r
-{\r
- /* 300: y limit of drag start point */\r
- // if ((event.GetDragDirection() == DragEvent::DIRECTION_BOTTOM_TO_TOP) && (event.GetStartPoint().y > 300)) {\r
- // PlayersPresenter::GetInstance()->ShowPlayerListGroup();\r
- // return true;\r
- // }\r
- return false;\r
-}\r
\r
-/// @brief 创建音乐来源标签\r
-/// @param \r
-void PlayersView::CreateMusicSourceLabel(void)\r
-{\r
- if (MusciSourceLabel == nullptr) {\r
- MusciSourceLabel = new UILabel();\r
- if (MusciSourceLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusciSourceLabel new fail");\r
- return;\r
+ /// @brief 创建音乐来源标签\r
+ /// @param\r
+ void PlayersView::CreateMusicSourceLabel(void)\r
+ {\r
+ if (MusciSourceLabel == nullptr)\r
+ {\r
+ MusciSourceLabel = new UILabel();\r
+ if (MusciSourceLabel == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MusciSourceLabel new fail");\r
+ return;\r
+ }\r
}\r
+ MusciSourceLabel->SetPosition(163, 90, 140, 41);\r
+ MusciSourceLabel->SetText("本地音乐");\r
+ MusciSourceLabel->SetStyle(STYLE_TEXT_FONT, 35);\r
+ MusciSourceLabel->SetStyle(STYLE_LINE_HEIGHT, 41);\r
+ MusciSourceLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ MusciSourceLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ MusciSourceLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35);\r
+ Add(MusciSourceLabel);\r
+ }\r
+\r
+ /// @brief 设置音乐来源标签内容\r
+ /// @param text 文本内容\r
+ void PlayersView::MusicSourceLabelSetText(const char *text)\r
+ {\r
+ MusciSourceLabel->SetText(text);\r
+ MusciSourceLabel->Invalidate();\r
}\r
- MusciSourceLabel->SetPosition(163, 90, 140, 41);\r
- MusciSourceLabel->SetText("本地音乐");\r
- MusciSourceLabel->SetStyle(STYLE_TEXT_FONT, 35);\r
- MusciSourceLabel->SetStyle(STYLE_LINE_HEIGHT, 41);\r
- MusciSourceLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- MusciSourceLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- MusciSourceLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 35);\r
- Add(MusciSourceLabel);\r
-}\r
\r
-/// @brief 设置音乐来源标签内容\r
-/// @param text 文本内容\r
-void PlayersView::MusicSourceLabelSetText(const char *text)\r
-{\r
- MusciSourceLabel->SetText(text);\r
- MusciSourceLabel->Invalidate();\r
-}\r
-\r
-/// @brief 创建手机音乐连接状态标签\r
-/// @param \r
-void PlayersView::CreatePhoneMusicConnectStatusLabel(void)\r
-{\r
- if (PhoneMusicConnectStatusLabel == nullptr) {\r
- PhoneMusicConnectStatusLabel = new UILabel();\r
- if (PhoneMusicConnectStatusLabel == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PhoneMusicConnectStatusLabel new fail");\r
- return;\r
+ /// @brief 创建手机音乐连接状态标签\r
+ /// @param\r
+ void PlayersView::CreatePhoneMusicConnectStatusLabel(void)\r
+ {\r
+ if (PhoneMusicConnectStatusLabel == nullptr)\r
+ {\r
+ PhoneMusicConnectStatusLabel = new UILabel();\r
+ if (PhoneMusicConnectStatusLabel == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PhoneMusicConnectStatusLabel new fail");\r
+ return;\r
+ }\r
}\r
+ PhoneMusicConnectStatusLabel->SetPosition(188, 40, 90, 35);\r
+ PhoneMusicConnectStatusLabel->SetText("未连接");\r
+ PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));\r
+ PhoneMusicConnectStatusLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
+ PhoneMusicConnectStatusLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ PhoneMusicConnectStatusLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
+ PhoneMusicConnectStatusLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ PhoneMusicConnectStatusLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
+ PhoneMusicConnectStatusLabel->SetVisible(false);\r
+ Add(PhoneMusicConnectStatusLabel);\r
+ }\r
+\r
+ /// @brief 设置手机音乐连接状态标签内容\r
+ /// @param text 文本内容\r
+ void PlayersView::PhoneMusicConnectStatusLabelSetText(const char *text)\r
+ {\r
+ PhoneMusicConnectStatusLabel->SetText(text);\r
+ PhoneMusicConnectStatusLabel->Invalidate();\r
}\r
- PhoneMusicConnectStatusLabel->SetPosition(188, 40, 90, 35);\r
- PhoneMusicConnectStatusLabel->SetText("未连接");\r
- PhoneMusicConnectStatusLabel->SetTextColor(Color::GetColorFromRGBA(0xff, 0x5a, 0x36, 0xff));\r
- PhoneMusicConnectStatusLabel->SetStyle(STYLE_TEXT_FONT, 30);\r
- PhoneMusicConnectStatusLabel->SetStyle(STYLE_LINE_HEIGHT, 35);\r
- PhoneMusicConnectStatusLabel->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- PhoneMusicConnectStatusLabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- PhoneMusicConnectStatusLabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
- PhoneMusicConnectStatusLabel->SetVisible(false);\r
- Add(PhoneMusicConnectStatusLabel);\r
-}\r
-\r
-/// @brief 设置手机音乐连接状态标签内容\r
-/// @param text 文本内容\r
-void PlayersView::PhoneMusicConnectStatusLabelSetText(const char *text)\r
-{\r
- PhoneMusicConnectStatusLabel->SetText(text);\r
- PhoneMusicConnectStatusLabel->Invalidate();\r
-}\r
-\r
-/// @brief 设置手机连接状态标签是否可见\r
-/// @param status \r
-void PlayersView::PhoneMusicConnectStatusLabelIsSetVisible(bool status)\r
-{\r
- PhoneMusicConnectStatusLabel->SetVisible(status);\r
-}\r
-\r
-/// @brief 设置音乐列表按钮是否可见\r
-/// @param status \r
-void PlayersView::MusicListButtonIsSetVisible(bool status)\r
-{\r
- music_list_button->SetVisible(status);\r
-}\r
\r
-/// @brief 设置选项按钮的图片样式:点击该按钮后进入音乐来源视图,点击里面的按钮,改选项按钮会被替换相应图片\r
-/// @param image 图片信息\r
-void PlayersView::OptionsButtonSetImageStyle(ImageInfo *image)\r
-{\r
- optionsButton->SetImageSrc(image, image);\r
- optionsButton->Invalidate();\r
-}\r
-//初始化音乐播放器主视图\r
-bool PlayersView::InitView(void)\r
-{\r
- int ret;\r
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " PlayersView InitView");\r
+ /// @brief 设置手机连接状态标签是否可见\r
+ /// @param status\r
+ void PlayersView::PhoneMusicConnectStatusLabelIsSetVisible(bool status)\r
+ {\r
+ PhoneMusicConnectStatusLabel->SetVisible(status);\r
+ }\r
\r
- if (InitBackGround() == false) {\r
- return false;\r
+ /// @brief 设置音乐列表按钮是否可见\r
+ /// @param status\r
+ void PlayersView::MusicListButtonIsSetVisible(bool status)\r
+ {\r
+ music_list_button->SetVisible(status);\r
}\r
\r
- //CreatePlayerMusicName();\r
- CreatePhoneMusicConnectStatusLabel();\r
- CreateMusicSourceLabel();\r
- // changeView\r
- CreateJumpView();\r
- // OnClick\r
- CreatePlayersPresenter();\r
- // OnDrag\r
- CreatePlayerOnDragListener();\r
- // 按键设置\r
- ret = ShowUpButtonView();\r
- if (ret == OHOS_FAILURE) {\r
- return false;\r
+ /// @brief 设置选项按钮的图片样式:点击该按钮后进入音乐来源视图,点击里面的按钮,改选项按钮会被替换相应图片\r
+ /// @param image 图片信息\r
+ void PlayersView::OptionsButtonSetImageStyle(ImageInfo *image)\r
+ {\r
+ optionsButton->SetImageSrc(image, image);\r
+ optionsButton->Invalidate();\r
}\r
- // 需要一个模拟信息,假装发生了按键点击,开始播放音乐\r
- // 调用 OnClick 回调函数来处理点击事件\r
- //playerButton.OnClick(,);\r
- // 遍历文件名到list链表\r
- PlayersListGroup::GetInstance()->SetUpListCase();\r
- PlayersModel::GetInstance()->PlayerInit();\r
- ShowUpListView();\r
- ShowUpDelSongView();\r
- SetTouchable(true);\r
- SetDraggable(true);\r
- return true;\r
-}\r
+ // 初始化音乐播放器主视图\r
+ bool PlayersView::InitView(void)\r
+ {\r
+ int ret;\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " PlayersView InitView");\r
\r
-void PlayersView::PreLoad(void)\r
-{\r
- if (!viewiInitStatus) {\r
- if (InitView()) {\r
- viewiInitStatus = true;\r
+ if (InitBackGround() == false)\r
+ {\r
+ return false;\r
+ }\r
+\r
+ // CreatePlayerMusicName();\r
+ CreatePhoneMusicConnectStatusLabel();\r
+ CreateMusicSourceLabel();\r
+ // changeView\r
+ CreateJumpView();\r
+ // OnClick\r
+ CreatePlayersPresenter();\r
+ // OnDrag\r
+ CreatePlayerOnDragListener();\r
+ // 按键设置\r
+ ret = ShowUpButtonView();\r
+ if (ret == OHOS_FAILURE)\r
+ {\r
+ return false;\r
+ }\r
+ // 需要一个模拟信息,假装发生了按键点击,开始播放音乐\r
+ // 调用 OnClick 回调函数来处理点击事件\r
+ // playerButton.OnClick(,);\r
+ // 遍历文件名到list链表\r
+ PlayersListGroup::GetInstance()->SetUpListCase();\r
+ PlayersModel::GetInstance()->PlayerInit();\r
+ ShowUpListView();\r
+ ShowUpDelSongView();\r
+ SetTouchable(true);\r
+ SetDraggable(true);\r
+ return true;\r
+ }\r
+\r
+ void PlayersView::PreLoad(void)\r
+ {\r
+ if (!viewiInitStatus)\r
+ {\r
+ if (InitView())\r
+ {\r
+ viewiInitStatus = true;\r
+ }\r
}\r
}\r
-}\r
\r
-void PlayersView::UnLoad(void)\r
-{\r
- // Players's usage scenes is complicated, so we do not release it's resources inner slice.\r
-}\r
-//加载音乐图片\r
-bool PlayersView::LoadPlayerImage(UIImageView *view, uint32_t resId)\r
-{\r
- std::string file = PLAYER_IAMGES;\r
- ImageInfo* image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
- if (image == nullptr) {\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage %x fail", resId);\r
- return false;\r
+ void PlayersView::UnLoad(void)\r
+ {\r
+ // Players's usage scenes is complicated, so we do not release it's resources inner slice.\r
+ }\r
+ // 加载音乐图片\r
+ bool PlayersView::LoadPlayerImage(UIImageView *view, uint32_t resId)\r
+ {\r
+ std::string file = PLAYER_IAMGES;\r
+ ImageInfo *image = ImageCacheManager::GetInstance().LoadOneInMultiRes(resId, file);\r
+ if (image == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PlayersView::LoadPlayerImage %x fail", resId);\r
+ return false;\r
+ }\r
+ view->SetSrc(image);\r
+ return true;\r
}\r
- view->SetSrc(image);\r
- return true;\r
-}\r
}\r
// 重启
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "REBOOTDEVICE_BUTTON OnClick");
RebootView::GetInstance()->ChangeView(REBOOTDEVICEVIEW, SHUTDOWNANIMATORVIEW);
+ start_shutdown_or_reboot();
+ shutdown_reboot_prejobs();
+
ShutDownAnimatorView::GetInstance()->GeShutDownImageAnimatorView()->Start();
isShutDownOperation = false;
}
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SHUTDOWNDEVICE_BUTTON OnClick");
// GetPMSDefaultInterface()->ShutDownDevice(NULL, NULL);
RebootView::GetInstance()->ChangeView(SHUTDOWNDEVICEVIEW, SHUTDOWNANIMATORVIEW);
+ start_shutdown_or_reboot();
+ shutdown_reboot_prejobs();
+
ShutDownAnimatorView::GetInstance()->GeShutDownImageAnimatorView()->Start();
isShutDownOperation = true;
}
if (QuickAccessRadioButton[0]->GetState() == UICheckBox::SELECTED)\r
{\r
SecondaryFunctionModel::GetInstance()->KeepHeartRateOrBloodOxygenQuickAccessRadioButtonSelectState(0);\r
- ConfigModel::GetInstance()->WriteJsonData_Int(ConfigModel::GetInstance()->GetcJSON(), "HeartRateOrBloodOxygenQuickAccessSwitch", 0);\r
+ // ConfigModel::GetInstance()->WriteJsonData_Int(ConfigModel::GetInstance()->GetcJSON(), "HeartRateOrBloodOxygenQuickAccessSwitch", 0);\r
}\r
else if (QuickAccessRadioButton[1]->GetState() == UICheckBox::SELECTED)\r
{\r
SecondaryFunctionModel::GetInstance()->KeepHeartRateOrBloodOxygenQuickAccessRadioButtonSelectState(1);\r
- ConfigModel::GetInstance()->WriteJsonData_Int(ConfigModel::GetInstance()->GetcJSON(), "HeartRateOrBloodOxygenQuickAccessSwitch", 1);\r
+ // ConfigModel::GetInstance()->WriteJsonData_Int(ConfigModel::GetInstance()->GetcJSON(), "HeartRateOrBloodOxygenQuickAccessSwitch", 1);\r
}\r
\r
// 循环删除 UIImageView 和 UIRadioButton指针数组\r
SecondaryFunctionModel::SecondaryFunctionModel()
{
ConfigModel *p_ConfigModel = ConfigModel::GetInstance();
- HeartRateOrBloodOxygenQuickAccessSwitch = p_ConfigModel->GetHeartRateOrBloodOxygenQuickAccessSwitch();
+ // HeartRateOrBloodOxygenQuickAccessSwitch = p_ConfigModel->GetHeartRateOrBloodOxygenQuickAccessSwitch();
}
SecondaryFunctionModel::~SecondaryFunctionModel() {}
.text = "",\r
.lineBreakMode = UILabel::LINE_BREAK_ELLIPSIS,\r
};\r
- Config.text = ConfigModel::GetInstance()->Getimei();\r
+ Config.text = const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());\r
+\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Imei %s , %s \r\n",Config.text,ConfigModel::GetInstance()->Getimei().c_str());\r
+\r
+\r
+\r
AlgorithmVersion = InitLabel(Config);\r
if (AlgorithmVersion == nullptr)\r
{\r
/* -------------------------------------------------------------------------- */\r
uint8_t btaddr[6] ={0};\r
uint8_t btaddr_str[64]={0};\r
- uint32_t len = 64;\r
+ uint32_t len = 6;\r
errcode_t ret = uapi_get_nv_btaddr((uint8_t*)btaddr,&len);\r
sprintf((char*)btaddr_str , "%02X:%02X:%02X:%02X:%02X:%02X",btaddr[0],btaddr[1],btaddr[2],btaddr[3],btaddr[4],btaddr[5]);\r
\r
SystemAboutTheWatchScrollView->Add(LANAddressTitle);\r
/* -------------------------------------------------------------------------- */\r
\r
- uint8_t ble_name[20] = {0};\r
- uint32_t ble_name_len ;\r
+ uint8_t ble_name[20] = {0};\r
+ uint32_t ble_name_len = sizeof(ble_name) ;\r
ret = uapi_get_nv_btname(ble_name, &ble_name_len);\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"get btname %s ,ret 0x%X\n",ble_name,ret);\r
\r
.text = "HarmonyOS Sans",\r
.lineBreakMode = UILabel::LINE_BREAK_WRAP,\r
};\r
- Config.text=ConfigModel::GetInstance()->GetmoderVer();\r
+ Config.text=const_cast<char*>(ConfigModel::GetInstance()->GetmoderVer().c_str());\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "modemver %s , %s \r\n",Config.text,ConfigModel::GetInstance()->GetmoderVer().c_str());\r
+\r
CAT1mode = InitLabel(Config);\r
if (CAT1mode == nullptr)\r
{\r
.height = 30,\r
.fontSize = 26,\r
.lineHeigh = 30,\r
- .text = "HarmonyOS Sans",\r
+ .text = "PyVer_3",\r
.lineBreakMode = UILabel::LINE_BREAK_WRAP,\r
};\r
- Config.text=ConfigModel::GetInstance()->GetpyVer();\r
+ Config.text=const_cast<char*>(ConfigModel::GetInstance()->GetpyVer().c_str());\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "pyver %s , %s \r\n",Config.text,ConfigModel::GetInstance()->GetpyVer().c_str());\r
+\r
pymode = InitLabel(Config);\r
if (CAT1mode == nullptr)\r
{\r
{
display_api->turn_on_screen();
}
- int t=ConfigModel::GetInstance()->GetScreenDurationRadioButtonSlectValue();
- if(t>2)
- t=1;
- display_api->set_screen_set_keepon_timeout(5000+t*5000);
+ int t=ConfigModel::GetInstance()->GetScreenDuration();
+ display_api->set_screen_set_keepon_timeout(t);
// }
}
{
if(is_new_cat1_version)
{
- char *imei_str= ConfigModel::GetInstance()->Getimei();
- char * version_buf=ConfigModel::GetInstance()->GetmoderVer();
+ char *imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
+ char * version_buf=const_cast<char*>(ConfigModel::GetInstance()->GetmoderVer().c_str());
sprintf((char *)uri,"http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=%s&imei=%s",version_buf,imei_str);
cat1_ota_update((char *)"0");
container_updating->SetVisible(true);
}
- char *imei_str= ConfigModel::GetInstance()->Getimei();
- char * version_buf=ConfigModel::GetInstance()->GetmoderVer();
+ char *imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
+ char * version_buf=const_cast<char*>(ConfigModel::GetInstance()->GetmoderVer().c_str());
sprintf((char *)uri,
"http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=%s&imei=%s",
version_buf,imei_str);
}
display_api->set_screen_set_keepon_timeout(-1);
memset(uri,0,256);
- char *imei_str= ConfigModel::GetInstance()->Getimei();
+ char *imei_str= const_cast<char*>(ConfigModel::GetInstance()->Getimei().c_str());
sprintf((char *)uri,"http://icfota.snicker.com.cn:8089/fd230ota.jsp?product=FD230&pkgver=%s&imei=%s",version_buf,imei_str);
custom_start_ota_download_ui_1(uri,(uint8_t*)Path,true);
#if 0
switch (request->msgId)
{
- case TOPIC_EVENT_TREADMILL_UPDATE:
+ case TOPIC_EVENT_ACTIVITY_UPDATE:
cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
if (rets != EOK)
}
TraingModel::GetInstance()->AnalysisData(cyweeInfo);
break;
- case TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE:
+ case TOPIC_EVENT_INACTIVITY_UPDATE:
cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
if (rets != EOK)
}
TraingModel::GetInstance()->AnalysisData(cyweeInfo);
break;
- case TOPIC_EVENT_INDOOR_RUNNING_UPDATE:
- cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
- rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
- if (rets != EOK)
- {
- delete cyweeInfo; // 处理内存分配失败的情况
- cyweeInfo = NULL;
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_activity_result_t fail! ret = %d", rets);
- return;
- }
- TraingModel::GetInstance()->AnalysisData(cyweeInfo);
- break;
- case TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE:
- cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
- rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
- if (rets != EOK)
- {
- delete cyweeInfo; // 处理内存分配失败的情况
- cyweeInfo = NULL;
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_activity_result_t fail! ret = %d", rets);
- return;
- }
- TraingModel::GetInstance()->AnalysisData(cyweeInfo);
- break;
- case TOPIC_EVENT_FREE_TRAINING_UPDATE:
- cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
- rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
- if (rets != EOK)
- {
- delete cyweeInfo; // 处理内存分配失败的情况
- cyweeInfo = NULL;
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_result_t fail! ret = %d", rets);
- return;
- }
- TraingModel::GetInstance()->AnalysisData(cyweeInfo);
- break;
default:
// 处理未知msgId的情况
break;
TraingModel ::~TraingModel()
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::~TraingModel()");
-#if 0
// 取消订阅
- TraingUnsubscribeTopic(TOPIC_EVENT_TREADMILL_UPDATE);
- TraingUnsubscribeTopic(TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE);
- TraingUnsubscribeTopic(TOPIC_EVENT_INDOOR_RUNNING_UPDATE);
- TraingUnsubscribeTopic(TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE);
- TraingUnsubscribeTopic(TOPIC_EVENT_FREE_TRAINING_UPDATE);
-#endif
+ TraingUnsubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE);
}
TraingModel *TraingModel::GetInstance(void)
{
void TraingModel ::Init()
{
-#if 0
// 进行消息订阅
- TraingSubscribeTopic(TOPIC_EVENT_TREADMILL_UPDATE);
- TraingSubscribeTopic(TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE);
- TraingSubscribeTopic(TOPIC_EVENT_INDOOR_RUNNING_UPDATE);
- TraingSubscribeTopic(TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE);
- TraingSubscribeTopic(TOPIC_EVENT_FREE_TRAINING_UPDATE);
-#endif
+ TraingSubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE);
}
/* -------------------------------------------------------------------------- */
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-03-30 09:14:38\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-12 16:22:24\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/GetWeatherDataErrorView.h\r
+ */\r
#ifndef Get_WEATHER_DATA_ERROR_VIEW_H\r
#define Get_WEATHER_DATA_ERROR_VIEW_H\r
\r
#include "BaseView.h"\r
#include "View.h"\r
-#include "components/ui_view_group.h"\r
#include "components/ui_scroll_view.h"\r
#include "components/ui_label.h"\r
#include "components/ui_label_ext.h"\r
#include "components/ui_image_view.h"\r
namespace OHOS\r
{\r
- class GetWeatherDataErrorPresenter;\r
- class GetWeatherDataErrorView : public View<GetWeatherDataErrorPresenter>\r
+\r
+ static constexpr const char *GETWEATHERDATAERRORVIEW = "GetWeatherDataErrorView";\r
+ class GetWeatherDataErrorView\r
{\r
\r
public:\r
GetWeatherDataErrorView();\r
virtual ~GetWeatherDataErrorView();\r
static GetWeatherDataErrorView *GetInstance(void);\r
-\r
- void OnStart() override;\r
- void OnSetUpView() override;\r
- void OnTearDownView() override;\r
- void OnStop() override;\r
+ UIScrollView *GetWeatherDataErrorViewInit(void);\r
\r
private:\r
- void InitView(void);\r
- void DeInitView(void);\r
- void PreLoad(void);\r
+ void ClearAll();\r
\r
- private:\r
- UIView::OnDragListener *draglistener{nullptr};\r
- UIViewGroup *container_ = nullptr;\r
- UIScrollView *scrollView1_ = nullptr;\r
- UILabel *label1_ = nullptr;\r
- UIImageView *image1_ = nullptr;\r
- bool viewInitStatus{false};\r
+ UIScrollView *scrollView = nullptr;\r
+ UILabel *label = nullptr;\r
+ UIImageView *image = nullptr;\r
};\r
-} // namespace OHOS\r
-#endif // GetWeatherDataError_PRESENTER_H
\ No newline at end of file
+} \r
+#endif
\ No newline at end of file
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-01-29 15:37:44\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-12 19:45:12\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/MainWeatherView.h\r
+ */\r
#ifndef MAIN_WEATHER_VIEW_H\r
#define MAIN_WEATHER_VIEW_H\r
\r
\r
#include "weather/include/WeatherView.h"\r
#include "weather/include/WeatherReportView.h"\r
+#include "weather/include/GetWeatherDataErrorView.h"\r
namespace OHOS\r
{\r
typedef enum\r
private:\r
WeatherView *weatherView{nullptr};\r
WeatherReportView *weatherReportView{nullptr};\r
-\r
+ GetWeatherDataErrorView *g_GetWeatherDataErrorView{nullptr};\r
private:\r
int16_t maxPage = MAX_WEATHERVIEW;\r
UISwipeView *weatherSwipeViewList{nullptr}; // 天气滑动视图列表\r
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-04-08 18:40:20
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-11 15:51:19
+ * @LastEditTime: 2024-04-12 18:57:44
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherModel.h
*/
#ifndef WEATHER_MODEL_H
#define WEATHER_MODEL_H
#include "wearable_log.h"
-#if __cplusplus
-extern "C"
+#include "iostream"
+namespace OHOS
{
+#if __cplusplus
+ extern "C"
+ {
#endif /* __cplusplus */
#include "string.h"
- static int WEATHER_DATA_VALID = 0; //天气数据是否有效
- /*天气数据*/
- struct Weather_data
- {
- int humidity; // 湿度
- char windScale[16]; // 风速
- char textNight[16]; // 夜间天气文本
- int uvIndex; // 紫外线指数
- int temp; // 温度
- int iconNight; // 夜间天气图标
- };
- //"address": { "lat" : 225737664, "atm" : "1010", "city" : "深圳", "subLocality" : "宝安", "lon" : 1138535138 }
- /*天气数据的地址信息*/
- struct Weather_data_address
- {
- int lat; // 纬度
- char atm[16]; // 大气压
- char city[32]; // 城市
- char subLocality[32]; // 子地区
- int lon; // 经纬度
- };
+ static uint8_t WEATHER_DATA_VALID = 0; // 天气数据是否有效
+ /*天气数据*/
+ struct Weather_data
+ {
+ int humidity; // 湿度
+ char windScale[16]; // 风速
+ char textNight[16]; // 夜间天气文本
+ int uvIndex; // 紫外线指数
+ int temp; // 温度
+ int iconNight; // 夜间天气图标
+ };
+ //"address": { "lat" : 225737664, "atm" : "1010", "city" : "深圳", "subLocality" : "宝安", "lon" : 1138535138 }
+ /*天气数据的地址信息*/
+ struct Weather_data_address
+ {
+ int lat; // 纬度
+ char atm[16]; // 大气压
+ char city[32]; // 城市
+ char subLocality[32]; // 子地区
+ int lon; // 经纬度
+ };
- //{"tempMin":22,"iconDay":6,"fxDate":1712505600,"textDay":"阵雨","tempMax":29},
- /*一天内天气数据*/
- struct ONE_DAY_DATA
- {
- int tempMin; // 最低温度
- int iconDay; // 白天天气图标
- int fxDate; // 日期
- char textDay[16]; // 白天天气文本
- int tempMax; // 最高温度
- };
-
- extern Weather_data Weather_data_t_now;
- extern Weather_data_address Weather_data_t_address;
- extern ONE_DAY_DATA Weather_data_seven_data[];
+ //{"tempMin":22,"iconDay":6,"fxDate":1712505600,"textDay":"阵雨","tempMax":29},
+ /*一天内天气数据*/
+ struct ONE_DAY_DATA
+ {
+ int tempMin; // 最低温度
+ int iconDay; // 白天天气图标
+ int fxDate; // 日期
+ char textDay[16]; // 白天天气文本
+ int tempMax; // 最高温度
+ };
- void UI_set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight);
+ void UI_set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight);
- void UI_set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon);
+ void UI_set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon);
- void UI_set_weather_seven_day_data(struct ONE_DAY_DATA *t);
+ void UI_set_weather_seven_day_data(struct ONE_DAY_DATA *t);
#if __cplusplus
-}
+ }
#endif /* __cplusplus */
-namespace OHOS
-{
+
+ static constexpr const char *WeatherBackground = "WEATHER_BACKGROUND.bin"; // 天气背景
+ static constexpr const char *weather130x130[] =
+ {
+ "/user/res/weather/weather130x130/WEATHER_CLEAR-CLOUDY.bin",
+ "/user/res/weather/weather130x130/WEATHER_CLEAR-SUNNY.bin", //晴
+ "/user/res/weather/weather130x130/WEATHER_DUSTSTORM.bin",
+ "/user/res/weather/weather130x130/WEATHER_FOGGY.bin",
+ "/user/res/weather/weather130x130/WEATHER_HAZE.bin",
+ "/user/res/weather/weather130x130/WEATHER_OVERCAST.bin",
+ "/user/res/weather/weather130x130/WEATHER_RAIN.bin",
+ "/user/res/weather/weather130x130/WEATHER_SNOW.bin",
+ "/user/res/weather/weather130x130/WEATHER_SUNNY.bin",
+ "/user/res/weather/weather130x130/WEATHER_SUNNY-CLOUNDY.bin",
+ "/user/res/weather/weather130x130/WEATHER_THUNDERSHOWER.bin",
+ "/user/res/weather/weather130x130/WEATHER_UNKNOWN.bin",
+ };
+ /* -------------------------------------------------------------------------- */
class WeatherModel
{
public:
static WeatherModel &GetInstance(void);
+ std::string GetWeatherImage();
+ std::string GetWeatherTemperature();
+ std::string GetWeatherDescription();
+ std::string GetWeatherArea();
+ std::string GetWeatherMaxAndMinTemperature();
+
private:
WeatherModel();
WeatherModel(const WeatherModel &) = delete;
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-03-30 09:14:38\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-12 16:41:27\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherReportView.h\r
+ */\r
#ifndef WEATHER_REPORT_VIEW_H\r
#define WEATHER_REPORT_VIEW_H\r
\r
#include "components/ui_view_group.h"\r
#include "components/ui_scroll_view.h"\r
#include "components/ui_label_ext.h"\r
-#include"language/font/ui_resource_string.h"\r
+#include "language/font/ui_resource_string.h"\r
#include "components/ui_image_animator.h"\r
#include "config/include/ConfigModel.h"\r
namespace OHOS\r
}\r
\r
private:\r
+ const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages);\r
+ void FreeImagePathsArray(const char **imagePaths, const int numImages);\r
UILabelExt *SetUpLabel(LabelConfig &labelconfig); // 设置标签\r
bool WeatherReportViewLabelInit(void);\r
bool WeatherReportViewImageAnimatorViewInit(void);\r
UIImageAnimatorView *UVImageAnimatorView{nullptr}; // 紫外线动画\r
UIImageAnimatorView *WindSpeedImageAnimatorView{nullptr}; // 风速动画\r
UIImageAnimatorView *HumidityImageAnimatorView{nullptr}; // 湿度动画\r
- ImageAnimator *p_ImageAnimator{nullptr};\r
- ImageAnimatorInfo *UVimageAnimatorInfo{nullptr};\r
- ImageAnimatorInfo *WindSpeedimageAnimatorInfo{nullptr};\r
- ImageAnimatorInfo *HumidityimageAnimatorInfo{nullptr};\r
+ \r
const char **UVPathsArray{nullptr};\r
const char **WindSpeedPathsArray{nullptr};\r
const char **HumidityPathsArray{nullptr};\r
+/*
+ * @Author: luozheng 1732036298@qq.com
+ * @Date: 2024-03-30 09:14:38
+ * @LastEditors: luozheng 1732036298@qq.com
+ * @LastEditTime: 2024-04-12 15:06:35
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/include/WeatherView.h
+ */
#ifndef WEATHER_VIEW_H
#define WEATHER_VIEW_H
#include "wearable_log.h"
#include "AppGroupView.h"
#include <iostream>
-#include "config/include/ConfigModel.h"
-
-namespace OHOS
-{
- static constexpr char *WeatherBackground = "WEATHER_BACKGROUND.bin"; // 天气背景
- static constexpr const char *weather130x130[] =
- {
- "/user/res/weather/weather130x130/WEATHER_CLEAR-CLOUDY.bin",
- "/user/res/weather/weather130x130/WEATHER_CLEAR-SUNNY.bin",
- "/user/res/weather/weather130x130/WEATHER_DUSTSTORM.bin",
- "/user/res/weather/weather130x130/WEATHER_FOGGY.bin",
- "/user/res/weather/weather130x130/WEATHER_HAZE.bin",
- "/user/res/weather/weather130x130/WEATHER_OVERCAST.bin",
- "/user/res/weather/weather130x130/WEATHER_RAIN.bin",
- "/user/res/weather/weather130x130/WEATHER_SNOW.bin",
- "/user/res/weather/weather130x130/WEATHER_SUNNY.bin",
- "/user/res/weather/weather130x130/WEATHER_SUNNY-CLOUNDY.bin",
- "/user/res/weather/weather130x130/WEATHER_THUNDERSHOWER.bin",
- "/user/res/weather/weather130x130/WEATHER_UNKNOWN.bin"};
-}
namespace OHOS
{
UILabelExt *InitLabelExt(int x, int y, int w, int h, const char *text, int textfont, int lineheight);
private:
- std::string GetTime();
- std::string GetWeatherImage();
- std::string GetWeatherTemperature();
- std::string GetWeatherDescription();
- std::string GetWeatherArea();
- std::string GetWeatherMaxAndMinTemperature();
-
+ const char **CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages);
+ void FreeImagePathsArray(const char **imagePaths, const int numImages);
+ void DumpWeatherInfo();
std::string WeatherImag; // 天气图片
std::string Temperature; // 温度
std::string WeatherDescription; // 天气描述
UILabelExt *showWeatherAreaLabel{nullptr}; // 显示天气地区
UILabelExt *showMaxandMinTemperatureLabel{nullptr}; // 显示最高与最低气温
UIImageAnimatorView *PullUpAnimatorView{nullptr}; // 上拉动画
- ImageAnimator *p_ImageAnimator{nullptr};
- ImageAnimatorInfo *PullUpimageAnimatorInfo{nullptr};
const char **PullUpPathsArray{nullptr};
bool viewInitStatus{false};
};
+/*\r
+ * @Author: luozheng 1732036298@qq.com\r
+ * @Date: 2024-01-29 15:37:44\r
+ * @LastEditors: luozheng 1732036298@qq.com\r
+ * @LastEditTime: 2024-04-12 20:00:56\r
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/GetWeatherDataErrorView.cpp\r
+ */\r
#include "weather/include/GetWeatherDataErrorView.h"\r
-#include "weather/include/GetWeatherDataErrorPresenter.h"\r
-#include "UiConfig.h"\r
+#include "wearable_log.h"\r
+#include "weather/include/MainWeatherPresenter.h"\r
\r
/* 天气获取数据失败后会调用该视图*/\r
namespace OHOS\r
\r
GetWeatherDataErrorView::GetWeatherDataErrorView()\r
{\r
-\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetWeatherDataErrorView::GetWeatherDataErrorView");\r
g_pGetWeatherDataErrorView = this;\r
}\r
\r
GetWeatherDataErrorView::~GetWeatherDataErrorView()\r
{\r
- if (viewInitStatus == true)\r
- {\r
- DeInitView();\r
- }\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "GetWeatherDataErrorView::~GetWeatherDataErrorView");\r
+ ClearAll();\r
g_pGetWeatherDataErrorView = nullptr;\r
}\r
\r
GetWeatherDataErrorView *GetWeatherDataErrorView::GetInstance()\r
{\r
-\r
return g_pGetWeatherDataErrorView;\r
}\r
\r
- void GetWeatherDataErrorView::InitView()\r
+ UIScrollView *GetWeatherDataErrorView::GetWeatherDataErrorViewInit()\r
{\r
- // Add ScrollView to App\r
- if (scrollView1_ == nullptr)\r
- {\r
- scrollView1_ = new UIScrollView();\r
- }\r
- scrollView1_->SetPosition(0, 0);\r
- scrollView1_->Resize(466, 466);\r
- scrollView1_->SetViewId("scrollView1");\r
- scrollView1_->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
- container_->Add(scrollView1_);\r
- scrollView1_->SetVisible(true);\r
-\r
- // Add Label to App\r
- if (label1_ == nullptr)\r
+ if (scrollView == nullptr)\r
{\r
- label1_ = new UILabel();\r
+ scrollView = new UIScrollView();\r
+ if (scrollView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "scrollView is new fail!!");\r
+ return nullptr;\r
+ }\r
+ scrollView->SetPosition(0, 0, Screen::GetInstance().GetWidth(), Screen::GetInstance().GetHeight());\r
+ scrollView->SetViewId(GETWEATHERDATAERRORVIEW);\r
+ scrollView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ UIView::OnDragListener *listener = static_cast<UIView::OnDragListener *>(MainWeatherPresenter::GetInstance());\r
+ if (listener == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "listener is nullptr!!");\r
+ return nullptr;\r
+ }\r
+ scrollView->SetOnDragListener(listener);\r
+ /* -------------------------------------------------------------------------- */\r
+ image = new UIImageView();\r
+ if (image == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "image is new fail!!");\r
+ return nullptr;\r
+ }\r
+ image->SetPosition(168, 127, 130, 130);\r
+ const char * ImgSr = "/user/res/weather/weather130x130/WEATHER_UNKNOWN.bin"; //天气数据获取失败\r
+ image->SetSrc(ImgSr);\r
+ scrollView->Add(image);\r
+ /* -------------------------------------------------------------------------- */\r
+ label = new UILabel();\r
+ if (label == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "label is new fail!!");\r
+ return nullptr;\r
+ }\r
+ label->SetPosition(33, 268, 400, 70);\r
+ label->SetStyle(STYLE_TEXT_FONT, 26);\r
+ label->SetStyle(STYLE_LINE_HEIGHT, 35);\r
+ label->SetText("未获取到天气信息\n请前往APP更新");\r
+ label->SetLineBreakMode(UILabel::LINE_BREAK_WRAP);\r
+ label->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
+ label->SetRollSpeed(40);\r
+ label->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 26);\r
+ scrollView->Add(label);\r
}\r
- label1_->SetPosition(113, 268);\r
- label1_->Resize(240, 70);\r
- label1_->SetViewId("label1");\r
- label1_->SetStyle(STYLE_TEXT_FONT, 30);\r
- label1_->SetStyle(STYLE_LINE_HEIGHT, 35);\r
-\r
- // Set additional property\r
- label1_->SetText("未获取到天气信息\n请前往APP更新");\r
- label1_->SetLineBreakMode(UILabel::LINE_BREAK_ADAPT);\r
- label1_->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER);\r
- label1_->SetRollSpeed(0);\r
- label1_->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 30);\r
-\r
- // Add to scrollView1\r
- scrollView1_->Add(label1_);\r
- label1_->SetVisible(true);\r
-\r
- // Add ImageView to App\r
- if (image1_ == nullptr)\r
- {\r
- image1_ = new UIImageView();\r
- }\r
- image1_->SetPosition(168, 127);\r
- image1_->Resize(130, 130);\r
- image1_->SetViewId("image1");\r
- image1_->SetSrc("/user/res/weather/WEATHER_UNKNOWN.bin");\r
-\r
- // Add to scrollView1\r
- scrollView1_->Add(image1_);\r
- image1_->SetVisible(true);\r
+ return scrollView;\r
}\r
\r
- void GetWeatherDataErrorView::DeInitView()\r
- {\r
- container_->RemoveAll();\r
- scrollView1_->RemoveAll();\r
- if (label1_ != nullptr)\r
- {\r
- delete label1_;\r
- label1_ = nullptr;\r
- }\r
- if (image1_ != nullptr)\r
- {\r
- delete image1_;\r
- image1_ = nullptr;\r
- }\r
- if (scrollView1_ != nullptr)\r
- {\r
- delete scrollView1_;\r
- scrollView1_ = nullptr;\r
- }\r
- if (container_ != nullptr)\r
- {\r
- delete container_;\r
- container_ = nullptr;\r
- }\r
- }\r
- \r
- void GetWeatherDataErrorView::PreLoad(void)\r
+ void GetWeatherDataErrorView::ClearAll()\r
{\r
- if (!viewInitStatus)\r
+ scrollView->RemoveAll();\r
+\r
+ if (label != nullptr)\r
{\r
- InitView();\r
- viewInitStatus = true;\r
+ delete label;\r
+ label = nullptr;\r
}\r
- }\r
- void GetWeatherDataErrorView::OnStart()\r
- {\r
- container_ = new UIViewGroup();\r
- if (container_ == nullptr)\r
+\r
+ if (image != nullptr)\r
{\r
- return;\r
+ delete image;\r
+ image = nullptr;\r
}\r
- // container_容器属性 扩展\r
- container_->SetPosition(0, 0);\r
- container_->SetWidth(Screen::GetInstance().GetWidth());\r
- container_->SetHeight(Screen::GetInstance().GetHeight());\r
\r
- draglistener = static_cast<UIView::OnDragListener *>(GetWeatherDataErrorPresenter::GetInstance());\r
- if (draglistener == nullptr)\r
+ if (scrollView != nullptr)\r
{\r
- return;\r
+ delete scrollView;\r
+ scrollView = nullptr;\r
}\r
- container_->SetOnDragListener(draglistener);\r
- container_->SetTouchable(true);\r
- container_->SetDraggable(true);\r
- PreLoad();\r
- RootView::GetInstance()->Add(container_);\r
}\r
\r
- void GetWeatherDataErrorView::OnSetUpView()\r
- {\r
-\r
- View<GetWeatherDataErrorPresenter>::OnSetUpView();\r
- Draw();\r
- }\r
-\r
- void GetWeatherDataErrorView::OnTearDownView()\r
- {\r
-\r
- View<GetWeatherDataErrorPresenter>::OnTearDownView();\r
- return;\r
- }\r
-\r
- void GetWeatherDataErrorView::OnStop()\r
- {\r
-\r
- View<GetWeatherDataErrorPresenter>::OnStop();\r
- RootView::GetInstance()->RemoveAll();\r
- return;\r
- }\r
}
\ No newline at end of file
\r
bool MainWeatherPresenter::OnDragEnd(UIView &view, const DragEvent &event)\r
{\r
- UNUSED(view);\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " MainWeatherPresenter::OnDragEnd");\r
if (event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT)\r
{\r
NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
return true;\r
}\r
+ if(strcmp(view.GetViewId(),GETWEATHERDATAERRORVIEW) == 0)\r
+ {\r
+ NativeAbility::GetInstance().ChangeSlice(VIEW_APPLIST);\r
+ }\r
return true;\r
}\r
\r
#include "weather/include/MainWeatherView.h"\r
#include "weather/include/MainWeatherPresenter.h"\r
+#include "weather/include/WeatherModel.h"\r
namespace OHOS\r
{\r
static MainWeatherView *g_pMainWeatherView{nullptr};\r
\r
void MainWeatherView::ClearAll(void)\r
{\r
- for (int32_t i = 0; i < maxPage; i++)\r
+ if (weatherSwipeViewList != nullptr)\r
{\r
- recordCard[i] = nullptr;\r
- }\r
- weatherSwipeViewList->RemoveAll();\r
+ for (int32_t i = 0; i < maxPage; i++)\r
+ {\r
+ recordCard[i] = nullptr;\r
+ }\r
+ weatherSwipeViewList->RemoveAll();\r
\r
- delete weatherView;\r
- weatherView = nullptr;\r
+ delete weatherView;\r
+ weatherView = nullptr;\r
\r
- delete weatherReportView;\r
- weatherReportView = nullptr;\r
+ delete weatherReportView;\r
+ weatherReportView = nullptr;\r
\r
- delete weatherSwipeViewList;\r
- weatherSwipeViewList = nullptr;\r
+ delete weatherSwipeViewList;\r
+ weatherSwipeViewList = nullptr;\r
+ }\r
+ \r
+ if (g_GetWeatherDataErrorView != nullptr)\r
+ {\r
+ delete g_GetWeatherDataErrorView;\r
+ g_GetWeatherDataErrorView = nullptr;\r
+ }\r
}\r
\r
/*\r
recordCard[i]->InitView(this);\r
weatherSwipeViewList->Add(recordCard[i]);\r
}\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainWeatherView InitPage over!!");\r
- return weatherSwipeViewList;\r
- }\r
-\r
- void MainWeatherView::OnStart()\r
- {\r
- View<MainWeatherPresenter>::OnStart();\r
- MainWeatherViewInit();\r
-\r
+ /* -------------------------------------------------------------------------- */\r
if (weatherSwipeViewList != nullptr)\r
{\r
UIView::OnClickListener *weatherOnClickListener = (UIView::OnClickListener *)OHOS::MainWeatherPresenter::GetInstance();\r
if (weatherOnClickListener == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnClickListener new fail");\r
- return;\r
+ return nullptr;\r
}\r
\r
UIView::OnDragListener *weatherOnDragListener = (UIView::OnDragListener *)OHOS::MainWeatherPresenter::GetInstance();\r
if (weatherOnDragListener == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnDragListener new fail");\r
- return;\r
+ return nullptr;\r
}\r
\r
UISwipeView::OnSwipeListener *weatherOnSwipeListener = (UISwipeView::OnSwipeListener *)OHOS::MainWeatherPresenter::GetInstance();\r
if (weatherOnSwipeListener == nullptr)\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "weatherOnSwipeListener new fail");\r
- return;\r
+ return nullptr;\r
}\r
\r
weatherSwipeViewList->SetOnClickListener(weatherOnClickListener);\r
weatherSwipeViewList->SetOnDragListener(weatherOnDragListener);\r
weatherSwipeViewList->SetOnSwipeListener(weatherOnSwipeListener);\r
}\r
+ /* -------------------------------------------------------------------------- */\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MainWeatherView InitPage over!!");\r
+ return weatherSwipeViewList;\r
+ }\r
+\r
+ void MainWeatherView::OnStart()\r
+ {\r
+ View<MainWeatherPresenter>::OnStart();\r
+ if (WEATHER_DATA_VALID)\r
+ {\r
+ MainWeatherViewInit();\r
+ RootView::GetInstance()->Add(weatherSwipeViewList);\r
+ }\r
+ else\r
+ {\r
+ g_GetWeatherDataErrorView = new GetWeatherDataErrorView();\r
+ if (g_GetWeatherDataErrorView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "g_GetWeatherDataErrorView new fail!!");\r
+ return;\r
+ }\r
+ RootView::GetInstance()->Add(g_GetWeatherDataErrorView->GetWeatherDataErrorViewInit());\r
+ }\r
RootView::OnKeyActListener *keyactListener = (RootView::OnKeyActListener *)OHOS::MainWeatherPresenter::GetInstance();\r
RootView::GetInstance()->SetOnKeyActListener(keyactListener);\r
}\r
void MainWeatherView::OnSetUpView()\r
{\r
View<MainWeatherPresenter>::OnSetUpView();\r
- RootView::GetInstance()->Add(weatherSwipeViewList);\r
+\r
Draw();\r
}\r
\r
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-04-08 18:40:09
* @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-04-11 15:51:28
+ * @LastEditTime: 2024-04-12 16:34:46
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/WeatherModel.cpp
*/
#include "weather/include/WeatherModel.h"
-#if __cplusplus
-extern "C"
+namespace OHOS
{
-#endif /* __cplusplus */
- Weather_data Weather_data_t_now;
- Weather_data_address Weather_data_t_address;
- ONE_DAY_DATA Weather_data_seven_data[7];
-
- /*
- * @brief 设置当前天气数据
- * @param {int} humidity 湿度
- * @param {char} *windScale 风力
- * @param {char} *textNight 夜间天气文本
- * @param {int} uvIndex 紫外线指数
- * @param {int} temp 温度
- * @param {int} iconNight 夜间天气图标
- */
- void UI_set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight)
+#if __cplusplus
+ extern "C"
{
- Weather_data_t_now.humidity = humidity;
- memset((void *)Weather_data_t_now.windScale, 0, 16);
- strcpy(Weather_data_t_now.windScale, windScale);
- memset((void *)Weather_data_t_now.textNight, 0, 16);
- strcpy(Weather_data_t_now.textNight, textNight);
- Weather_data_t_now.uvIndex = uvIndex;
- Weather_data_t_now.temp = temp;
- Weather_data_t_now.iconNight = iconNight;
+#endif /* __cplusplus */
+ static Weather_data Weather_data_t_now;
+ static Weather_data_address Weather_data_t_address;
+ static ONE_DAY_DATA Weather_data_seven_data[7];
- WEATHER_DATA_VALID = 1;
- }
+ /*
+ * @brief 设置当前天气数据
+ * @param {int} humidity 湿度
+ * @param {char} *windScale 风力
+ * @param {char} *textNight 夜间天气文本
+ * @param {int} uvIndex 紫外线指数
+ * @param {int} temp 温度
+ * @param {int} iconNight 夜间天气图标
+ */
+ void UI_set_weather_now_data(int humidity, char *windScale, char *textNight, int uvIndex, int temp, int iconNight)
+ {
+ Weather_data_t_now.humidity = humidity;
+ memset((void *)Weather_data_t_now.windScale, 0, 16);
+ strcpy(Weather_data_t_now.windScale, windScale);
+ memset((void *)Weather_data_t_now.textNight, 0, 16);
+ strcpy(Weather_data_t_now.textNight, textNight);
+ Weather_data_t_now.uvIndex = uvIndex;
+ Weather_data_t_now.temp = temp;
+ Weather_data_t_now.iconNight = iconNight;
- /*
- * @brief 设置天气地址信息
- * @param {int} lat 纬度
- * @param {char} *atm 大气压
- * @param {char} *city 城市
- * @param {char} *subLocality 子地区
- * @param {int} lon 经度
- */
- void UI_set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon)
- {
- Weather_data_t_address.lat = lat;
- Weather_data_t_address.lon = lon;
- memset((void *)Weather_data_t_address.atm, 0, 16);
- strcpy(Weather_data_t_address.atm, atm);
- memset((void *)Weather_data_t_address.city, 0, 32);
- strcpy(Weather_data_t_address.city, city);
- memset((void *)Weather_data_t_address.subLocality, 0, 32);
- strcpy(Weather_data_t_address.subLocality, subLocality);
+ WEATHER_DATA_VALID = 1;
+ }
- WEATHER_DATA_VALID = 1;
- }
+ /*
+ * @brief 设置天气地址信息
+ * @param {int} lat 纬度
+ * @param {char} *atm 大气压
+ * @param {char} *city 城市
+ * @param {char} *subLocality 子地区
+ * @param {int} lon 经度
+ */
+ void UI_set_weather_address_data(int lat, char *atm, char *city, char *subLocality, int lon)
+ {
+ Weather_data_t_address.lat = lat;
+ Weather_data_t_address.lon = lon;
+ memset((void *)Weather_data_t_address.atm, 0, 16);
+ strcpy(Weather_data_t_address.atm, atm);
+ memset((void *)Weather_data_t_address.city, 0, 32);
+ strcpy(Weather_data_t_address.city, city);
+ memset((void *)Weather_data_t_address.subLocality, 0, 32);
+ strcpy(Weather_data_t_address.subLocality, subLocality);
+ }
- /*
- * @brief 设置七天天气数据
- */
- void UI_set_weather_seven_day_data(struct ONE_DAY_DATA *t)
- {
- for (int i = 0; i < 7; i++)
+ /*
+ * @brief 设置七天天气数据
+ */
+ void UI_set_weather_seven_day_data(struct ONE_DAY_DATA *t)
{
- Weather_data_seven_data[i].fxDate = t[i].fxDate;
- Weather_data_seven_data[i].iconDay = t[i].iconDay;
- Weather_data_seven_data[i].tempMax = t[i].tempMax;
- Weather_data_seven_data[i].tempMin = t[i].tempMin;
- Weather_data_seven_data[i].fxDate = t[i].fxDate;
- memset((void *)Weather_data_seven_data[i].textDay, 0, 16);
- strcpy(Weather_data_seven_data[i].textDay, t[i].textDay);
+ for (int i = 0; i < 7; i++)
+ {
+ Weather_data_seven_data[i].fxDate = t[i].fxDate;
+ Weather_data_seven_data[i].iconDay = t[i].iconDay;
+ Weather_data_seven_data[i].tempMax = t[i].tempMax;
+ Weather_data_seven_data[i].tempMin = t[i].tempMin;
+ Weather_data_seven_data[i].fxDate = t[i].fxDate;
+ memset((void *)Weather_data_seven_data[i].textDay, 0, 16);
+ strcpy(Weather_data_seven_data[i].textDay, t[i].textDay);
+ }
}
- WEATHER_DATA_VALID = 1;
- }
+ void jsonCheck_weather(uint8_t *buf);
#if __cplusplus
-}
+ }
#endif /* __cplusplus */
-namespace OHOS
-{
+
+ static constexpr const char json_data[] =
+ "{\"now\": {\"humidity\":89,\"windScale\":\"2\",\"textNight\":\"多云\",\"uvIndex\":3,\"temp\":24,\"iconNight\":4},"
+ "\"address\": {\"lat\":225737664,\"atm\":\"1010\",\"city\":\"深圳\",\"subLocality\":\"宝安\",\"lon\":1138535138},"
+ "\"daily\": [{\"tempMin\":22,\"iconDay\":6,\"fxDate\":1712505600,\"textDay\":\"阵雨\",\"tempMax\":29},"
+ "{\"tempMax\":27,\"textDay\":\"多云\",\"iconDay\":3,\"fxDate\":1712592000,\"tempMin\":22},"
+ "{\"tempMax\":29,\"fxDate\":1712678400,\"textDay\":\"多云\",\"iconDay\":3,\"tempMin\":22},"
+ "{\"tempMin\":23,\"textDay\":\"多云\",\"fxDate\":1712764800,\"tempMax\":30,\"iconDay\":3},"
+ "{\"fxDate\":1712851200,\"textDay\":\"多云\",\"iconDay\":3,\"tempMax\":31,\"tempMin\":24},"
+ "{\"fxDate\":1712937600,\"iconDay\":3,\"tempMax\":31,\"tempMin\":24,\"textDay\":\"多云\"},"
+ "{\"fxDate\":1713024000,\"textDay\":\"多云\",\"iconDay\":3,\"tempMax\":29,\"tempMin\":25}],"
+ "\"code\":1}";
+
+ /* -------------------------------------------------------------------------- */
WeatherModel::WeatherModel()
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "WeatherModel::WeatherModel");
+ jsonCheck_weather((uint8_t *)json_data);
}
WeatherModel::~WeatherModel()
return instance;
}
+ // 获取天气图片
+ std::string WeatherModel::GetWeatherImage()
+ {
+ int size = Weather_data_t_now.iconNight;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "iconNight:%d", size);
+ return weather130x130[size];
+ }
+
+ // 获取温度
+ std::string WeatherModel::GetWeatherTemperature()
+ {
+ int temperature = Weather_data_t_now.temp;
+ return std::to_string(temperature) + "°";
+ }
+
+ // 获取天气描述
+ std::string WeatherModel::GetWeatherDescription()
+ {
+ std::string WeatherDescription = Weather_data_t_now.textNight;
+ return WeatherDescription;
+ }
+
+ // 获取天气地区
+ std::string WeatherModel::GetWeatherArea()
+ {
+ std::string city = Weather_data_t_address.city;
+ std::string subLocality = Weather_data_t_address.city;
+ return (city + subLocality);
+ }
+
+ // 获取最高气温和最低气温
+ std::string WeatherModel::GetWeatherMaxAndMinTemperature()
+ {
+ int maxtemperature = Weather_data_seven_data[0].tempMax;
+ int mintemperature = Weather_data_seven_data[0].tempMin;
+ std::string MaxandMinTemperature = "最高" + std::to_string(maxtemperature) + "°" + " " + "最低" + std::to_string(mintemperature) + "°";
+ return MaxandMinTemperature;
+ }
}
\ No newline at end of file
static constexpr int16_t UV_IMAGE_ANIMATOR_VIEW_H = 60;\r
static constexpr int16_t UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 24; // 图片帧数\r
static constexpr int16_t UV_IMAGE_ANIMATOR_TIME = 100; // 图片更新间隔\r
+ static ImageAnimatorInfo UVimageAnimatorInfo[UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES];\r
\r
static constexpr int16_t WINDSPEED_IMAGE_ANIMATOR_VIEW_X = 203;\r
static constexpr int16_t WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 24; // 图片帧数\r
+ static ImageAnimatorInfo WindSpeedimageAnimatorInfo[WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES];\r
\r
static constexpr int16_t HUMIDITY_IMAGE_ANIMATOR_VIEW_X = 353;\r
static constexpr int16_t HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES = 20; // 图片帧数\r
+ static ImageAnimatorInfo HumidityimageAnimatorInfo[HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES];\r
\r
- static constexpr char *UVPaths = "/user/res/weather/weather60x60gif/UV/";\r
- static constexpr char *WindSpeedPaths = "/user/res/weather/weather60x60gif/WindSpeed/";\r
- static constexpr char *HumidityPaths = "/user/res/weather/weather60x60gif/Humidity/";\r
+ static constexpr const char *UVPaths = "/user/res/weather/weather60x60gif/UV/";\r
+ static constexpr const char *WindSpeedPaths = "/user/res/weather/weather60x60gif/WindSpeed/";\r
+ static constexpr const char *HumidityPaths = "/user/res/weather/weather60x60gif/Humidity/";\r
\r
static WeatherReportView *g_pWeatherReportView{nullptr};\r
\r
delete HumidityImageAnimatorView;\r
HumidityImageAnimatorView = nullptr;\r
\r
- if (p_ImageAnimator != nullptr)\r
- {\r
- p_ImageAnimator->FreeImagePathsArray(UVPathsArray, UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
- p_ImageAnimator->DeleteImageAnimatorInfo(UVimageAnimatorInfo);\r
-\r
- p_ImageAnimator->FreeImagePathsArray(WindSpeedPathsArray, WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
- p_ImageAnimator->DeleteImageAnimatorInfo(WindSpeedimageAnimatorInfo);\r
+ FreeImagePathsArray(UVPathsArray, UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
\r
- p_ImageAnimator->FreeImagePathsArray(HumidityPathsArray, HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
- p_ImageAnimator->DeleteImageAnimatorInfo(HumidityimageAnimatorInfo);\r
+ FreeImagePathsArray(WindSpeedPathsArray, WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
\r
- delete p_ImageAnimator;\r
- p_ImageAnimator = nullptr;\r
- }\r
+ FreeImagePathsArray(HumidityPathsArray, HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
}\r
}\r
\r
/* ----------------------------------- Add ---------------------------------- */\r
\r
Add(title);\r
-\r
Add(UV_Number);\r
Add(WindSpeed_Number);\r
Add(Humidity_Number);\r
{\r
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherReportView::WeatherReportViewImageAnimatorViewInit");\r
\r
- p_ImageAnimator = new ImageAnimator();\r
- if (p_ImageAnimator == nullptr)\r
+ /* ----------------------------- UVImageAnimatorView---------------------------- */\r
+ UVPathsArray = CreateImagePathsArray(UVPaths, "bin", UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+ if (UVImageAnimatorView == nullptr)\r
{\r
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_ImageAnimator new fail!!");\r
- return false;\r
+ UVImageAnimatorView = new UIImageAnimatorView();\r
+ if (UVImageAnimatorView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "UVImageAnimatorView new fail");\r
+ return false;\r
+ }\r
+ for (uint8_t i = 0; i < UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++)\r
+ {\r
+ UVimageAnimatorInfo[i].imagePath = (UVPathsArray[i]);\r
+ UVimageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;\r
+ UVimageAnimatorInfo[i].pos.x = UV_IMAGE_ANIMATOR_VIEW_X;\r
+ UVimageAnimatorInfo[i].pos.y = UV_IMAGE_ANIMATOR_VIEW_Y;\r
+ UVimageAnimatorInfo[i].width = UV_IMAGE_ANIMATOR_VIEW_W;\r
+ UVimageAnimatorInfo[i].height = UV_IMAGE_ANIMATOR_VIEW_H;\r
+ }\r
+ UVImageAnimatorView->SetPosition(UV_IMAGE_ANIMATOR_VIEW_X, UV_IMAGE_ANIMATOR_VIEW_Y, UV_IMAGE_ANIMATOR_VIEW_W, UV_IMAGE_ANIMATOR_VIEW_H);\r
+ UVImageAnimatorView->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ UVImageAnimatorView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ UVImageAnimatorView->SetImageAnimatorSrc(UVimageAnimatorInfo, UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, UV_IMAGE_ANIMATOR_TIME);\r
+ UVImageAnimatorView->SetRepeat(true);\r
+ UVImageAnimatorView->Start();\r
+ }\r
+ /* ----------------------- WindSpeedImageAnimatorView ----------------------- */\r
+ WindSpeedPathsArray = CreateImagePathsArray(WindSpeedPaths, "bin", WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+ if (WindSpeedImageAnimatorView == nullptr)\r
+ {\r
+ WindSpeedImageAnimatorView = new UIImageAnimatorView();\r
+ if (WindSpeedImageAnimatorView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WindSpeedImageAnimatorView new fail");\r
+ return false;\r
+ }\r
+ for (uint8_t i = 0; i < WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++)\r
+ {\r
+ WindSpeedimageAnimatorInfo[i].imagePath = (WindSpeedPathsArray[i]);\r
+ WindSpeedimageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;\r
+ WindSpeedimageAnimatorInfo[i].pos.x = WINDSPEED_IMAGE_ANIMATOR_VIEW_X;\r
+ WindSpeedimageAnimatorInfo[i].pos.y = UV_IMAGE_ANIMATOR_VIEW_Y;\r
+ WindSpeedimageAnimatorInfo[i].width = UV_IMAGE_ANIMATOR_VIEW_W;\r
+ WindSpeedimageAnimatorInfo[i].height = UV_IMAGE_ANIMATOR_VIEW_H;\r
+ }\r
+ WindSpeedImageAnimatorView->SetPosition(WINDSPEED_IMAGE_ANIMATOR_VIEW_X, UV_IMAGE_ANIMATOR_VIEW_Y, UV_IMAGE_ANIMATOR_VIEW_W, UV_IMAGE_ANIMATOR_VIEW_H);\r
+ WindSpeedImageAnimatorView->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ WindSpeedImageAnimatorView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ WindSpeedImageAnimatorView->SetImageAnimatorSrc(WindSpeedimageAnimatorInfo, WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, UV_IMAGE_ANIMATOR_TIME);\r
+ WindSpeedImageAnimatorView->SetRepeat(true);\r
+ WindSpeedImageAnimatorView->Start();\r
+ }\r
+ /* ------------------------ HumidityImageAnimatorView ----------------------- */\r
+ HumidityPathsArray = CreateImagePathsArray(HumidityPaths, "bin", HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
+ if (HumidityImageAnimatorView == nullptr)\r
+ {\r
+ HumidityImageAnimatorView = new UIImageAnimatorView();\r
+ if (HumidityImageAnimatorView == nullptr)\r
+ {\r
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "HumidityImageAnimatorView new fail");\r
+ return false;\r
+ }\r
+ for (uint8_t i = 0; i < HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES; i++)\r
+ {\r
+ HumidityimageAnimatorInfo[i].imagePath = (HumidityPathsArray[i]);\r
+ HumidityimageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;\r
+ HumidityimageAnimatorInfo[i].pos.x = HUMIDITY_IMAGE_ANIMATOR_VIEW_X;\r
+ HumidityimageAnimatorInfo[i].pos.y = UV_IMAGE_ANIMATOR_VIEW_Y;\r
+ HumidityimageAnimatorInfo[i].width = UV_IMAGE_ANIMATOR_VIEW_W;\r
+ HumidityimageAnimatorInfo[i].height = UV_IMAGE_ANIMATOR_VIEW_H;\r
+ }\r
+ HumidityImageAnimatorView->SetPosition(HUMIDITY_IMAGE_ANIMATOR_VIEW_X, UV_IMAGE_ANIMATOR_VIEW_Y, UV_IMAGE_ANIMATOR_VIEW_W, UV_IMAGE_ANIMATOR_VIEW_H);\r
+ HumidityImageAnimatorView->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);\r
+ HumidityImageAnimatorView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);\r
+ HumidityImageAnimatorView->SetImageAnimatorSrc(HumidityimageAnimatorInfo, HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES, UV_IMAGE_ANIMATOR_TIME);\r
+ HumidityImageAnimatorView->SetRepeat(true);\r
+ HumidityImageAnimatorView->Start();\r
}\r
-\r
- p_ImageAnimator->imageAnimatorConfig = {\r
- .x = UV_IMAGE_ANIMATOR_VIEW_X,\r
- .y = UV_IMAGE_ANIMATOR_VIEW_Y,\r
- .w = UV_IMAGE_ANIMATOR_VIEW_W,\r
- .h = UV_IMAGE_ANIMATOR_VIEW_H,\r
- .numFrames = UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES,\r
- .time = UV_IMAGE_ANIMATOR_TIME,\r
- };\r
- UVPathsArray = p_ImageAnimator->CreateImagePathsArray(UVPaths, "bin", UV_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
- p_ImageAnimator->InitImageAnimatorSource(UVImageAnimatorView, UVimageAnimatorInfo, UVPathsArray, p_ImageAnimator->imageAnimatorConfig);\r
-\r
- p_ImageAnimator->imageAnimatorConfig.x = WINDSPEED_IMAGE_ANIMATOR_VIEW_X;\r
- WindSpeedPathsArray = p_ImageAnimator->CreateImagePathsArray(WindSpeedPaths, "bin", WINDSPEED_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
- p_ImageAnimator->InitImageAnimatorSource(WindSpeedImageAnimatorView, WindSpeedimageAnimatorInfo, WindSpeedPathsArray, p_ImageAnimator->imageAnimatorConfig);\r
-\r
- p_ImageAnimator->imageAnimatorConfig.x = HUMIDITY_IMAGE_ANIMATOR_VIEW_X;\r
- p_ImageAnimator->imageAnimatorConfig.numFrames = HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES;\r
- HumidityPathsArray = p_ImageAnimator->CreateImagePathsArray(HumidityPaths, "bin", HUMIDITY_IMAGE_ANIMATOR_VIEW_NUM_FRAMES);\r
- p_ImageAnimator->InitImageAnimatorSource(HumidityImageAnimatorView, HumidityimageAnimatorInfo, HumidityPathsArray, p_ImageAnimator->imageAnimatorConfig);\r
-\r
- /* ---------------------------------- Start --------------------------------- */\r
- UVImageAnimatorView->Start();\r
- WindSpeedImageAnimatorView->Start();\r
- HumidityImageAnimatorView->Start();\r
/* ----------------------------------- Add ---------------------------------- */\r
Add(UVImageAnimatorView);\r
Add(WindSpeedImageAnimatorView);\r
return true;\r
}\r
\r
+ const char **WeatherReportView::CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages)\r
+ {\r
+ const char **imagePaths = new const char *[numImages];\r
+ char buffer[256];\r
+ for (int i = 0; i < numImages; i++)\r
+ {\r
+ snprintf(buffer, sizeof(buffer), "%s%d.%s", basePath, i + 1, fileExtension);\r
+ imagePaths[i] = strdup(buffer);\r
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " imagePaths[%d] = %s", i, imagePaths[i]);\r
+ }\r
+ return imagePaths;\r
+ }\r
+\r
+ /*\r
+ * @brief: 释放图片路径数组指针\r
+ * @param {char} imagePaths 图片路径数组\r
+ * @param {int} numImages 图片数量\r
+ */\r
+ void WeatherReportView::FreeImagePathsArray(const char **imagePaths, const int numImages)\r
+ {\r
+ for (int i = 0; i < numImages; i++)\r
+ {\r
+ delete imagePaths[i];\r
+ imagePaths[i] = nullptr;\r
+ }\r
+ }\r
+\r
}
\ No newline at end of file
static constexpr int16_t PULLUP_ANIMATOR_VIEW_Y = 400;
static constexpr int16_t PULLUP_ANIMATOR_VIEW_W = 40;
static constexpr int16_t PULLUP_ANIMATOR_VIEW_H = 40;
- static constexpr int16_t PULLUP_ANIMATOR_VIEW_NUM_FRAMES = 74;
- static constexpr int16_t PULLUP_ANIMATOR_VIEW_TIME = 50;
- static constexpr char *PullUpPaths = "/user/res/weather/PullUp/PullUp_";
+ static constexpr int16_t PULLUP_ANIMATOR_VIEW_NUM_FRAMES = 70;
+ static constexpr int16_t PULLUP_ANIMATOR_VIEW_TIME = 100;
+ ImageAnimatorInfo PullUpimageAnimatorInfo[PULLUP_ANIMATOR_VIEW_NUM_FRAMES];
+ static constexpr const char *PullUpPaths = "/user/res/weather/PullUp/PullUp_";
static WeatherView *g_pWeatherView{nullptr};
WeatherView::WeatherView()
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherView::WeatherView");
SetPosition(0, 0, HORIZONTAL_RESOLUTION, VERTICAL_RESOLUTION);
SetViewIndex(0); // 视图索引
- WeatherImag = GetWeatherImage();
- Temperature = GetWeatherTemperature();
- WeatherDescription = GetWeatherDescription();
- WeatherArea = GetWeatherArea();
- MaxandMinTemperature = GetWeatherMaxAndMinTemperature();
+ if (WEATHER_DATA_VALID)
+ {
+ WeatherModel *p_WeatherModel = &WeatherModel::GetInstance();
+ WeatherImag = p_WeatherModel->GetWeatherImage();
+ Temperature = p_WeatherModel->GetWeatherTemperature();
+ WeatherDescription = p_WeatherModel->GetWeatherDescription();
+ WeatherArea = p_WeatherModel->GetWeatherArea();
+ MaxandMinTemperature = p_WeatherModel->GetWeatherMaxAndMinTemperature();
+ }
g_pWeatherView = this;
}
delete PullUpAnimatorView;
PullUpAnimatorView = nullptr;
}
- if (p_ImageAnimator != nullptr)
- {
- p_ImageAnimator->FreeImagePathsArray(PullUpPathsArray, PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
- p_ImageAnimator->DeleteImageAnimatorInfo(PullUpimageAnimatorInfo);
- delete p_ImageAnimator;
- p_ImageAnimator = nullptr;
- }
+ FreeImagePathsArray(PullUpPathsArray, PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
}
}
return g_pWeatherView;
}
- // 获取天气图片
- std::string WeatherView::GetWeatherImage()
- {
- int size = sizeof(weather130x130) / sizeof(weather130x130[0]);
- return weather130x130[8];
- }
- // 获取温度
-
- std::string WeatherView::GetWeatherTemperature()
- {
- // 使用系统时间作为种子
- srand(time(0));
- int temperature = rand() % 50;
- return std::to_string(22) + "°";
- }
- // 获取天气描述
-
- std::string WeatherView::GetWeatherDescription()
- {
- srand(time(0));
- std::string area[] = {"晴", "雨夹雪", "雷阵雨伴有冰雹"};
- int num = rand() % (sizeof(area) / sizeof(area[0]));
- return area[0];
- }
- // 获取天气地区
-
- std::string WeatherView::GetWeatherArea()
- {
- srand(time(0));
- std::string area[] = {"北京市东城区", "深圳市宝安区"};
- int num = rand() % (sizeof(area) / sizeof(area[0]));
- return area[1];
- }
- // 获取最高气温和最低气温
-
- std::string WeatherView::GetWeatherMaxAndMinTemperature()
- {
- // 使用系统时间作为种子
- srand(time(0));
- // 生成随机数
- int maxtemperature = 20 + rand() % 40; // 最高气温:20°~60°
- int mintemperature = -5 + rand() % 20;
- std::string MaxandMinTemperature = "最高" + std::to_string(22) + "°" + " " + "最低" + std::to_string(18) + "°";
- return MaxandMinTemperature;
- }
-
// 初始化标签
UILabelExt *WeatherView::InitLabelExt(int x, int y, int w, int h, const char *text, int textfont, int lineheight)
{
}
showMaxandMinTemperatureLabel->SetTextColor(Color::GetColorFromRGBA(0x99, 0x99, 0x99, 0xff));
/* -------------------------------------------------------------------------- */
-
- p_ImageAnimator = new ImageAnimator();
- if (p_ImageAnimator == nullptr)
+ PullUpPathsArray = CreateImagePathsArray(PullUpPaths, "bin", PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
+ if (PullUpAnimatorView == nullptr)
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "p_ImageAnimator new fail!!");
- return false;
+ PullUpAnimatorView = new UIImageAnimatorView();
+ if (PullUpAnimatorView == nullptr)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "PullUpAnimatorView new fail");
+ return false;
+ }
+ for (uint8_t i = 0; i < PULLUP_ANIMATOR_VIEW_NUM_FRAMES; i++)
+ {
+ PullUpimageAnimatorInfo[i].imagePath = (PullUpPathsArray[i]);
+ PullUpimageAnimatorInfo[i].imageType = IMG_SRC_FILE_PATH;
+ PullUpimageAnimatorInfo[i].pos.x = PULLUP_ANIMATOR_VIEW_X;
+ PullUpimageAnimatorInfo[i].pos.y = PULLUP_ANIMATOR_VIEW_Y;
+ PullUpimageAnimatorInfo[i].width = PULLUP_ANIMATOR_VIEW_W;
+ PullUpimageAnimatorInfo[i].height = PULLUP_ANIMATOR_VIEW_H;
+ }
+ PullUpAnimatorView->SetPosition(PULLUP_ANIMATOR_VIEW_X, PULLUP_ANIMATOR_VIEW_Y, PULLUP_ANIMATOR_VIEW_W, PULLUP_ANIMATOR_VIEW_H);
+ PullUpAnimatorView->SetStyle(STYLE_BACKGROUND_COLOR, 0xffffffff);
+ PullUpAnimatorView->SetStyle(STYLE_BACKGROUND_OPA, 0xff);
+ PullUpAnimatorView->SetImageAnimatorSrc(PullUpimageAnimatorInfo, PULLUP_ANIMATOR_VIEW_NUM_FRAMES, PULLUP_ANIMATOR_VIEW_TIME);
+ PullUpAnimatorView->SetRepeat(true);
+ PullUpAnimatorView->Start();
}
-
- p_ImageAnimator->imageAnimatorConfig.x = PULLUP_ANIMATOR_VIEW_X;
- p_ImageAnimator->imageAnimatorConfig.y = PULLUP_ANIMATOR_VIEW_Y;
- p_ImageAnimator->imageAnimatorConfig.w = PULLUP_ANIMATOR_VIEW_W;
- p_ImageAnimator->imageAnimatorConfig.h = PULLUP_ANIMATOR_VIEW_H;
- p_ImageAnimator->imageAnimatorConfig.numFrames = PULLUP_ANIMATOR_VIEW_NUM_FRAMES;
- p_ImageAnimator->imageAnimatorConfig.time = PULLUP_ANIMATOR_VIEW_TIME;
- PullUpPathsArray = p_ImageAnimator->CreateImagePathsArray(PullUpPaths, "bin", PULLUP_ANIMATOR_VIEW_NUM_FRAMES);
- p_ImageAnimator->InitImageAnimatorSource(PullUpAnimatorView, PullUpimageAnimatorInfo, PullUpPathsArray, p_ImageAnimator->imageAnimatorConfig);
- PullUpAnimatorView->Start();
-
/* -------------------------------- 将组件添加到根视图 ------------------------------- */
Add(showWeatherImage);
Add(showCurrentTimeLabel);
showCurrentTimeLabel->SetText(stringtime.c_str());
}
}
+
+ const char **WeatherView::CreateImagePathsArray(const char *basePath, const char *fileExtension, int numImages)
+ {
+ const char **imagePaths = new const char *[numImages];
+ char buffer[256];
+ for (int i = 0; i < numImages; i++)
+ {
+ snprintf(buffer, sizeof(buffer), "%s%d.%s", basePath, i + 1, fileExtension);
+ imagePaths[i] = strdup(buffer);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " imagePaths[%d] = %s", i, imagePaths[i]);
+ }
+ return imagePaths;
+ }
+
+ /*
+ * @brief: 释放图片路径数组指针
+ * @param {char} imagePaths 图片路径数组
+ * @param {int} numImages 图片数量
+ */
+ void WeatherView::FreeImagePathsArray(const char **imagePaths, const int numImages)
+ {
+ for (int i = 0; i < numImages; i++)
+ {
+ delete imagePaths[i];
+ imagePaths[i] = nullptr;
+ }
+ }
+
+ void WeatherView::DumpWeatherInfo()
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherInfo:");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherImag:%s", WeatherImag.c_str());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Temperature:%s", Temperature.c_str());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherDescription:%s", WeatherDescription.c_str());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "WeatherArea:%s", WeatherArea.c_str());
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MaxandMinTemperature:%s\n", MaxandMinTemperature.c_str());
+ }
}
\ No newline at end of file
void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight)
{
- return UI_set_weather_now_data(humidity, windScale, textNight,uvIndex,temp,iconNight);
+ return OHOS::UI_set_weather_now_data(humidity, windScale, textNight,uvIndex,temp,iconNight);
}
void set_weather_address_data(int lat, char* atm, char* city,char* subLocality,int lon)
{
- return UI_set_weather_address_data(lat, atm, city,subLocality,lon);
+ return OHOS::UI_set_weather_address_data(lat, atm, city,subLocality,lon);
}
// struct ONE_DAY_DATA
// {
// int tempMax;
// };
-static struct ONE_DAY_DATA data_t[7];
+static OHOS::ONE_DAY_DATA data_t[7];
void set_weather_one_data(int tempMin, int iconDay,int fxDate, int tempMax, char *textDay,int x)
{
data_t[x].tempMin=tempMin;
TOPIC_EVENT_HFP_PHONE_TO_WATCH,
TOPIC_EVENT_HFP_WATCH_TO_PHONE,
#ifdef CYWEE_SPORT
- TOPIC_EVENT_NORMAL_UPDATE,
- TOPIC_EVENT_TREADMILL_UPDATE,
- TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE,
- TOPIC_EVENT_INDOOR_RUNNING_UPDATE,
- TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE,
- TOPIC_EVENT_FREE_TRAINING_UPDATE,
+ TOPIC_EVENT_ACTIVITY_UPDATE,
+ TOPIC_EVENT_INACTIVITY_UPDATE,
#endif
- TOPIC_EVENT_AR_ALERT_UPDATE,
- TOPIC_EVENT_EXTRA_INFO_UPDATE,
#ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
TOPIC_EVENT_CHARGE_PLUG,
TOPIC_EVENT_CHARGE_UNPLUG,
/* topic数量 */
#ifndef MAX_BROACCAST_TOPIC_NUMBER
-#define MAX_BROACCAST_TOPIC_NUMBER 32
+#define MAX_BROACCAST_TOPIC_NUMBER 64
#endif
/* 每个topic 对应的bitmap长度 */
{TOPIC_EVENT_STEPDATA_UPDATE, A_CORE_MASK, 1},
{TOPIC_EVENT_SHUTDOWN, A_CORE_MASK, 1},
{TOPIC_EVENT_HEARTRATE_UPDATA, A_CORE_MASK, 1},
- {TOPIC_EVENT_NORMAL_UPDATE, A_CORE_MASK, 1},
- {TOPIC_EVENT_TREADMILL_UPDATE, A_CORE_MASK, 1},
- {TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE, A_CORE_MASK, 1},
- {TOPIC_EVENT_INDOOR_RUNNING_UPDATE, A_CORE_MASK, 1},
- {TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE, A_CORE_MASK, 1},
- {TOPIC_EVENT_FREE_TRAINING_UPDATE, A_CORE_MASK, 1},
- {TOPIC_EVENT_AR_ALERT_UPDATE, A_CORE_MASK, 1},
- {TOPIC_EVENT_EXTRA_INFO_UPDATE, A_CORE_MASK, 1},
+ {TOPIC_EVENT_ACTIVITY_UPDATE, A_CORE_MASK, 1},
+ {TOPIC_EVENT_INACTIVITY_UPDATE, A_CORE_MASK, 1},
#ifdef SUPPORT_SPO2_NOTIFICATION
{TOPIC_EVENT_SPO2_UPDATE, A_CORE_MASK, 1},
{TOPIC_EVENT_START_HRS_MONITORING, A_CORE_MASK, 1},
const PriorityMapper g_pri_mapper[] = {
{TOPIC_EVENT_ALARM_RING, PRIORITY_TWO},
{TOPIC_EVENT_NEXTDAY_UPDATE, PRIORITY_TWO},
- {TOPIC_EVENT_NORMAL_UPDATE,PRIORITY_TWO},
- {TOPIC_EVENT_TREADMILL_UPDATE,PRIORITY_TWO},
- {TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE,PRIORITY_TWO},
- {TOPIC_EVENT_INDOOR_RUNNING_UPDATE,PRIORITY_TWO},
- {TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE,PRIORITY_TWO},
- {TOPIC_EVENT_FREE_TRAINING_UPDATE,PRIORITY_TWO},
- {TOPIC_EVENT_AR_ALERT_UPDATE,PRIORITY_TWO},
- {TOPIC_EVENT_EXTRA_INFO_UPDATE,PRIORITY_TWO},
+ {TOPIC_EVENT_ACTIVITY_UPDATE,PRIORITY_TWO},
+ {TOPIC_EVENT_INACTIVITY_UPDATE,PRIORITY_TWO},
#ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
{TOPIC_EVENT_CHARGE_PLUG, PRIORITY_TWO},
{TOPIC_EVENT_CHARGE_UNPLUG, PRIORITY_TWO},
MsgCenterSubscribeTopic(TOPIC_EVENT_HFP_PHONE_TO_WATCH);
MsgCenterSubscribeTopic(TOPIC_EVENT_HFP_WATCH_TO_PHONE);
#ifdef CYWEE_SPORT
- MsgCenterSubscribeTopic(TOPIC_EVENT_NORMAL_UPDATE);
- MsgCenterSubscribeTopic(TOPIC_EVENT_TREADMILL_UPDATE);
- MsgCenterSubscribeTopic(TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE);
- MsgCenterSubscribeTopic(TOPIC_EVENT_INDOOR_RUNNING_UPDATE);
- MsgCenterSubscribeTopic(TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE);
- MsgCenterSubscribeTopic(TOPIC_EVENT_FREE_TRAINING_UPDATE);
- MsgCenterSubscribeTopic(TOPIC_EVENT_AR_ALERT_UPDATE);
- MsgCenterSubscribeTopic(TOPIC_EVENT_EXTRA_INFO_UPDATE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_INACTIVITY_UPDATE);
+
#endif
#ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
MsgCenterSubscribeTopic(TOPIC_EVENT_CHARGE_PLUG);
/*显示绑定通知*/
static OHOS::UIViewGroup* showDeviceBindingNotify(void)
{
- PairingViewEventListener::GetInstance().Pairing_StartTimer();
return OHOS::CreateDeviceBindingView();
}
}
FindWatchViewEventListener::GetInstance().SetFindWatchNotifyFlag(false);
}
+void MsgCenterNotifyActivityProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+}
+void MsgCenterNotifyInactivityProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+}
/* 订阅事件通知逻辑可定制 */
static msg_center_notify_table_t g_msg_center_notify_table[] = {
{TOPIC_EVENT_ALARM_RING, MsgCenterNotifyAlarmProc},
{TOPIC_EVENT_HFP_PHONE_TO_WATCH, MsgCenterNotifyHfpWatchProc},
{TOPIC_EVENT_FIND_WATCH,MsgCenterNotifyFindWatchProc},
{TOPIC_EVENT_CANCEL_FIND_WATCH,MsgCenterNotifyCanCelFindWatchProc},
- {TOPIC_EVENT_NORMAL_UPDATE, MsgCenterNotifyNormalProc},
- {TOPIC_EVENT_TREADMILL_UPDATE, MsgCenterNotifyTreadmillProc},
- {TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE, MsgCenterNotifyOutdoorRunningProc},
- {TOPIC_EVENT_INDOOR_RUNNING_UPDATE, MsgCenterNotifyIndoorRunningProc},
- {TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE, MsgCenterNotifyFitnessPedometerProc},
- {TOPIC_EVENT_FREE_TRAINING_UPDATE, MsgCenterNotifyFreeTrainingProc},
- {TOPIC_EVENT_AR_ALERT_UPDATE, MsgCenterNotifyArAlertProc},
- {TOPIC_EVENT_EXTRA_INFO_UPDATE, MsgCenterNotifyExtraInfoProc},
+ {TOPIC_EVENT_ACTIVITY_UPDATE, MsgCenterNotifyActivityProc},
+ {TOPIC_EVENT_INACTIVITY_UPDATE, MsgCenterNotifyInactivityProc},
#ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
{TOPIC_EVENT_CHARGE_PLUG, MsgCenterNotifyChargePlugProc},
{TOPIC_EVENT_CHARGE_UNPLUG, MsgCenterNotifyChargeUnPlugProc},
# image_list.append("=".join([info.nv_bin, "nv"]))
# 资源文件
-
+ info.res_delfile = []
+ # 多个文件删除例子
+ # info.res_delfile = ["/user/userdata/ConfigModel.json","/user/res/APPLIST_COMPASS_IMAGE.bin"]
+
+ info.res_rmdir = []
+ # 删除路径例子
+ # info.res_rmdir = ["/user/res/dials"]
+
if os.path.exists(info.res_dir) :
- result = res_pack(info.res_dir, info.res_index, info.res_data)
- #result = res_pack(info.res_dir, info.res_index, info.res_data,info.res_delfile,info.res_rmdir)
+ result = res_pack(info.res_dir, info.res_index, info.res_data,info.res_delfile,info.res_rmdir)
if not result:
sys.exit("[ERROR] resource file pack failed!!!")
image_list.append("=".join([info.res_index, "res_index"]))
#else
{ HAL_PIO_FUNC_TE, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L22 MIPI TE
#endif
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源 拉高有效
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L23 CAT_1_PWR_ON 控制CAT_1开机脚,或者控制 CAT1电源 拉高有效
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L24 LCM_EN
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L25 //////////// audio pa reset
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L26 心率复位 PPG reset
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L27 LCM reset
- { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_NONE, HAL_PIO_IE_DISABLE }, // S_AGPIO_L28 CAT_1复位 CAT1_RESET_N 拉低有效
+ { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L28 CAT_1复位 CAT1_RESET_N 拉低有效
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L29 charge done info 检测是否充满电
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L30 KP_MKIN1 唤醒 CAT1 ,输出
{ HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L31 KP_MKOUIT1 唤醒 蓝牙 ,输入
*/
-#define DEFAULT_POWERON_CAT1 0
+//默认开启Cat1 然后再根据配置决定是否关闭.
+#define DEFAULT_POWERON_CAT1 1
+
//需要配置默认输出的,以及需要配置默认输入中断函数的。
const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = {
#define SPORT_ACTIVE_MODE_INDOOR_RUNNING 1006 // 室內跑步 indoor running 1006
#define SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR 1008 // 防誤觸計步 fitness_pedometer 1008
#define SPORT_ACTIVE_MODE_FREE_TRAINING 5001 // 自由運動 FreeTraining 5001
-#define SPORT_ACTIVE_MODE_AR_ALERT 1001 // 長時間動作偵測 AR alert 1001
+//#define SPORT_ACTIVE_MODE_AR_ALERT 1001 // 長時間動作偵測 AR alert 1001
+#define SPORT_ACTIVE_MODE_AR_ALERT 102 // 長時間動作偵測 AR alert 1001
+#define SPORT_ACTIVE_MODE_EXTRA_INFO 100 // 额外信息 AR alert 1001
#define INACTIVITY_MODE_NOTHING 0 // 无作用
#define INACTIVITY_MODE_SEDENTARY 1 // 久坐和有效站立
#define INACTIVITY_MODE_SEDENTARY_AND_NAP 3 // 久坐、有效站立和小睡
#define INACTIVITY_MODE_NAP 4 // 小睡
+#define INACTIVITY_MODE_SEDENTARY_OUTPUT 20 // 久坐和有效站立
+#define INACTIVITY_MODE_SLEEPING_OUTPUT 21 // 睡眠
+#define INACTIVITY_MODE_SLEEPING_ACCUMULATE_TIME_OUTPUT 31 // 久坐、有效站立和小睡
+#define INACTIVITY_MODE_NAP_OUTPUT 22 // 小睡
+#define INACTIVITY_MODE_NAP_ACCUMULATE_TIME_OUTPUT 32
#pragma pack(1)
typedef struct
{
int activity_mode;
- int calories;
- int duration;
int steps;
int distance;
+ int calories;
+ int duration;
int step_frequency;
int step_length;
int pace;
int max_pace;
int ar_alert_type;
int MHR_zone;
+ int hrs;
}cywee_activity_result_t;
typedef struct
#pragma pack()
typedef enum{
- CYWEE_MSG_TYPE_NORMAL_UPDATE,
- CYWEE_MSG_TYPE_TREADMILL_UPDATE,
- CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE,
- CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE,
- CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE,
- CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE,
- CYWEE_MSG_TYPE_AR_ALERT_UPDATE,
- CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE,
- CYWEE_MSG_TYPE_SEDENTARY_UPDATE,
- CYWEE_MSG_TYPE_SLEEPING_UPDATE,
- CYWEE_MSG_TYPE_SLEEPING_ACCUMULATE_TIME_UPDATE,
- CYWEE_MSG_TYPE_NAP_UPDATE,
- CYWEE_MSG_TYPE_NAP_ACCUMULATE_TIME_UPDATE
+ CYWEE_MSG_TYPE_ACTIVITY_UPDATE,
+ CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,
+ CYWEE_MSG_TYPE_INACTIVITY_UPDATE,
+ CYWEE_MSG_TYPE_INACTIVITY_EXTRA_INFO_UPDATE,
} cywee_msg_type_t;
PRINT("cywee_msg_callback\r\n");
cywee_activity_result_t c_activity_result_t;
cywee_inactivity_result_t c_inactivity_result_t;
- switch(msg_type)
+
+ if(msg_type == CYWEE_MSG_TYPE_ACTIVITY_UPDATE)
{
- //一般模式
- case CYWEE_MSG_TYPE_NORMAL_UPDATE:
- PRINT("CYWEE_MSG_TYPE_NORMAL_UPDATE\r\n");
- memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
- c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
- c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_NORMAL_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //跑步机模式
- case CYWEE_MSG_TYPE_TREADMILL_UPDATE:
- PRINT("CYWEE_MSG_TYPE_TREADMILL_UPDATE\r\n");
- memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
- c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
- c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_TREADMILL_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //户外跑步模式
- case CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE:
- PRINT("CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE\r\n");
- memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
- c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
- c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //室内跑步模式
- case CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE:
- PRINT("CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE\r\n");
- memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
- c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
- c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_INDOOR_RUNNING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //防误触计步模式
- case CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE:
- PRINT("CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE\r\n");
- memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
- c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
- c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //自由运动模式
- case CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE:
- PRINT("CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE\r\n");
- memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("activit_mode[%d], calories[%d], duration[%d], MHR_zone[%d],len[%d]\n",
- c_activity_result_t.activity_mode,c_activity_result_t.calories,c_activity_result_t.duration,c_activity_result_t.MHR_zone,sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_FREE_TRAINING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //长时间动作侦测模式
- case CYWEE_MSG_TYPE_AR_ALERT_UPDATE:
- PRINT("CYWEE_MSG_TYPE_AR_ALERT_UPDATE\r\n");
- memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("activit_mode[%d], ar alert type[%d], len[%d]\n",
- c_activity_result_t.activity_mode,c_activity_result_t.ar_alert_type,sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_AR_ALERT_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //额外信息
- case CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE:
- PRINT("CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE\r\n");
- memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
- PRINT("average step frequency[%d], average step length[%d], average pace[%d], max step frequency[%d], max pace[%d], len[%d]\n",
- c_activity_result_t.avg_step_freq,c_activity_result_t.avg_step_len,c_activity_result_t.avg_pace,c_activity_result_t.max_step_freq,c_activity_result_t.max_pace,sizeof(cywee_activity_result_t));
- CustomEventPublish(TOPIC_EVENT_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //久坐
- case CYWEE_MSG_TYPE_SEDENTARY_UPDATE:
- PRINT("CYWEE_MSG_TYPE_SEDENTARY_UPDATE\r\n");
- memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
- PRINT("inactivity_mode_number[%d], sedentary status[%d], stand freq[%d], len[%d]\n",
- c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.sedentary_status,
- c_inactivity_result_t.stand_freq,sizeof(cywee_inactivity_result_t));
- //CustomEventPublish(TOPIC_EVENT_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //睡眠
- case CYWEE_MSG_TYPE_SLEEPING_UPDATE:
- PRINT("CYWEE_MSG_TYPE_SLEEPING_UPDATE\r\n");
- memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
- PRINT("inactivity_mode_number[%d], sleep status[%d], month[%d], day[%d], hour[%d], min[%d], len[%d]\n",
- c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.sleep_status,
- c_inactivity_result_t.month,c_inactivity_result_t.day,
- c_inactivity_result_t.hour,c_inactivity_result_t.minute,
- sizeof(cywee_inactivity_result_t));
- //CustomEventPublish(TOPIC_EVENT_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //睡眠累计
- case CYWEE_MSG_TYPE_SLEEPING_ACCUMULATE_TIME_UPDATE:
- PRINT("CYWEE_MSG_TYPE_SLEEPING_ACCUMULATE_TIME_UPDATE\r\n");
- memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
- PRINT("inactivity_mode_number[%d], total sleep time[%d], total nap time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d], len[%d]\n",
- c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.total_sleep_time,c_inactivity_result_t.total_mild_sleep_time,
- c_inactivity_result_t.total_deep_sleep_time,c_inactivity_result_t.total_wake_time,c_inactivity_result_t.total_rem_sleep_time,
- c_inactivity_result_t.stand_freq,sizeof(cywee_inactivity_result_t));
- //CustomEventPublish(TOPIC_EVENT_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- //小睡
- case CYWEE_MSG_TYPE_NAP_UPDATE:
- PRINT("CYWEE_MSG_TYPE_NAP_UPDATE\r\n");
+ memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+ switch (c_activity_result_t.activity_mode)
+ {
+ case SPORT_ACTIVE_MODE_NORMAL:
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+ c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
+ c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
+ CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+ case SPORT_ACTIVE_MODE_TREADMILL:
+ PRINT("CYWEE_MSG_TYPE_TREADMILL_UPDATE\r\n");
+ memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+ c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
+ c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
+ CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+ case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
+ memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+ c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
+ c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
+ CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+ case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
+ PRINT("CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE\r\n");
+ memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+ c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
+ c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
+ CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+ case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
+ PRINT("CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE\r\n");
+ memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+ c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
+ c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
+ CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+ case SPORT_ACTIVE_MODE_FREE_TRAINING:
+ PRINT("CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE\r\n");
+ memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+ PRINT("activit_mode[%d], calories[%d], duration[%d], MHR_zone[%d],len[%d]\n",
+ c_activity_result_t.activity_mode,c_activity_result_t.calories,c_activity_result_t.duration,c_activity_result_t.MHR_zone,sizeof(cywee_activity_result_t));
+ CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+
+ //长时间动作侦测
+ case SPORT_ACTIVE_MODE_AR_ALERT:
+ PRINT("CYWEE_MSG_TYPE_AR_ALERT_UPDATE\r\n");
+ memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+ PRINT("activit_mode[%d], ar alert type[%d], len[%d]\n",
+ c_activity_result_t.activity_mode,c_activity_result_t.ar_alert_type,sizeof(cywee_activity_result_t));
+ CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+
+ //额外信息
+ case SPORT_ACTIVE_MODE_EXTRA_INFO:
+ PRINT("CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE\r\n");
+ memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+ PRINT("average step frequency[%d], average step length[%d], average pace[%d], max step frequency[%d], max pace[%d], len[%d]\n",
+ c_activity_result_t.avg_step_freq,c_activity_result_t.avg_step_len,c_activity_result_t.avg_pace,c_activity_result_t.max_step_freq,c_activity_result_t.max_pace,sizeof(cywee_activity_result_t));
+ CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+ default:
+ break;
+ }
+ }else if(msg_type == CYWEE_MSG_TYPE_INACTIVITY_UPDATE){
memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
- PRINT("inactivity_mode_number[%d], nap status[%d], month[%d], day[%d], hour[%d], min[%d], len[%d]\n",
- c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.nap_status,c_inactivity_result_t.month,
- c_inactivity_result_t.day,c_inactivity_result_t.hour,c_inactivity_result_t.minute,sizeof(cywee_inactivity_result_t));
- //CustomEventPublish(TOPIC_EVENT_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
+ switch (c_inactivity_result_t.inactivity_mode)
+ {
+ //久坐
+ case INACTIVITY_MODE_SEDENTARY_OUTPUT:
+ memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+ PRINT("inactivity_mode_number[%d], sedentary status[%d], stand freq[%d], len[%d]\n",
+ c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.sedentary_status,
+ c_inactivity_result_t.stand_freq,sizeof(cywee_inactivity_result_t));
+ CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+
+ //睡眠
+ case INACTIVITY_MODE_SLEEPING_OUTPUT:
+ memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+ PRINT("inactivity_mode_number[%d], sleep status[%d], month[%d], day[%d], hour[%d], min[%d], len[%d]\n",
+ c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.sleep_status,
+ c_inactivity_result_t.month,c_inactivity_result_t.day,
+ c_inactivity_result_t.hour,c_inactivity_result_t.minute,
+ sizeof(cywee_inactivity_result_t));
+ CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+
+ //睡眠累计
+ case INACTIVITY_MODE_SLEEPING_ACCUMULATE_TIME_OUTPUT:
+ memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+ PRINT("inactivity_mode_number[%d], total sleep time[%d], total nap time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d], len[%d]\n",
+ c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.total_sleep_time,c_inactivity_result_t.total_mild_sleep_time,
+ c_inactivity_result_t.total_deep_sleep_time,c_inactivity_result_t.total_wake_time,c_inactivity_result_t.total_rem_sleep_time,
+ c_inactivity_result_t.stand_freq,sizeof(cywee_inactivity_result_t));
+ CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+
+ //小睡
+ case INACTIVITY_MODE_NAP_OUTPUT:
+ memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+ PRINT("inactivity_mode_number[%d], nap status[%d], month[%d], day[%d], hour[%d], min[%d], len[%d]\n",
+ c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.nap_status,c_inactivity_result_t.month,
+ c_inactivity_result_t.day,c_inactivity_result_t.hour,c_inactivity_result_t.minute,sizeof(cywee_inactivity_result_t));
+ CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
- //小睡累计
- case CYWEE_MSG_TYPE_NAP_ACCUMULATE_TIME_UPDATE:
- PRINT("CYWEE_MSG_TYPE_NAP_ACCUMULATE_TIME_UPDATE\r\n");
- memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
- PRINT("inactivity_mode_number[%d], total nap time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d], len[%d]\n",
- c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.total_nap_time,c_inactivity_result_t.total_mild_sleep_time,
- c_inactivity_result_t.total_deep_sleep_time,c_inactivity_result_t.total_wake_time,c_inactivity_result_t.total_rem_sleep_time,
- c_inactivity_result_t.stand_freq,sizeof(cywee_inactivity_result_t));
- //CustomEventPublish(TOPIC_EVENT_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- default:
-
+ //小睡累计
+ case INACTIVITY_MODE_NAP_ACCUMULATE_TIME_OUTPUT:
+ memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+ PRINT("inactivity_mode_number[%d], total nap time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d], len[%d]\n",
+ c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.total_nap_time,c_inactivity_result_t.total_mild_sleep_time,
+ c_inactivity_result_t.total_deep_sleep_time,c_inactivity_result_t.total_wake_time,c_inactivity_result_t.total_rem_sleep_time,
+ c_inactivity_result_t.stand_freq,sizeof(cywee_inactivity_result_t));
+ CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ break;
+ }
+ }
+ else
PRINT("Unknown sensor message type");
- break;
- }
}
}
+// int CWM_setGpio(uint16_t sensortype, uint16_t sensorPin, uint16_t pintype)
+// {
+
+// return ERRCODE_SUCC;
+// }
+
+// int CWM_securityCodeWrite(uint32_t sensortype, uint8_t* data, uint32_t len)
+// {
+// return ERRCODE_SUCC;
+// }
+
// int CWM_enableGpioIRQ(uint16_t sensorType, uint16_t sensorPin, PFN_IRQHANDLE callback)
// {
+// CWM_OS_dbgPrintf("CWM_enableGpioIRQ sensorType %d, sensorPin %d, callback 0x%X\n",sensorType,sensorPin,callback);
-// return 1;
+// return ERRCODE_SUCC;
// }
// int CWM_disableGpioIRQ(uint16_t sensorType, uint16_t sensorPin)
// {
-
-// return 1;
+// CWM_OS_dbgPrintf("CWM_disableGpioIRQ sensorType %d, sensorPin %d\n",sensorType,sensorPin);
+// return ERRCODE_SUCC;
// }
CWM_OS_dbgOutput(InputBuff);
return 0;
}
-
+#define CWM_DATA_PATH "/system/cyweedata"
void CWM_OS_saveData(uint8_t* data, uint32_t len){
-
+
+ FILE * fp = fopen(CWM_DATA_PATH,"wb");
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("open fail\n");
+ return;
+ }
+ int ret =fwrite(data,1,len,fp);
+ if(ret==0)
+ {
+ CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+ }
+ fclose(fp);
}
void CWM_OS_restoreData(uint8_t* data, uint32_t len){
-
+ FILE * fp = fopen(CWM_DATA_PATH,"rb");
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("open fail\n");
+ return;
+ }
+ int ret =fread(data,1,len,fp);
+ if(ret==0)
+ {
+ CWM_OS_dbgPrintf("fread failed %d\n",ret);
+ }
+ fclose(fp);
}
\ No newline at end of file
CustomSensorData csd;
+static uint8_t hrs = 0;
+static uint8_t wearstatus = 0;
+
+void set_user_info(int age,int gender,double weight,int height,int wearing_method)
+{
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = age;
+ scl.iData[2] = weight;
+ scl.iData[3] = (int)weight;
+ scl.iData[4] = weight;
+ scl.iData[5] = wearing_method;
+ CWM_SettingControl(SCL_USER_INFO, &scl);
+}
+
void time_sync(void)
{
time_t rawtime;
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
- scl.iData[1] = timeinfo->tm_year;
- scl.iData[2] = timeinfo->tm_mon;
+ scl.iData[1] = timeinfo->tm_year + 1900;
+ scl.iData[2] = timeinfo->tm_mon + 1;
scl.iData[3] = timeinfo->tm_mday;
scl.iData[4] = timeinfo->tm_hour;
scl.iData[5] = timeinfo->tm_min;
void cywee_hrs_check_timer_callback(void)
{
- uint8_t hrs,wearstatus;
get_hrs_wearstatus(&hrs,&wearstatus);
CWM_OS_dbgPrintf("hrs : %d,wearstatus : %d \r\n",hrs,wearstatus);
memset(&csd, 0, sizeof(CUSTOM_HEARTRATE));
//久坐和有效站立
case INACTIVITY_MODE_SEDENTARY:
+ PRINT("INACTIVITY_MODE_SEDENTARY\r\n");
+ //training_mode_init();
+ //配置久坐相关参数
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[2] = 1;
+ scl.iData[3] = 1;
+ CWM_SettingControl(SCL_SEDENTARY, &scl);
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = 1;
//久坐、有效站立和小睡
case INACTIVITY_MODE_SEDENTARY_AND_NAP:
+ /*
+ SCL_REQ_SLEEPING_DATA
+ int[0] = 1
+ int[1] = terminate_sleep
+ (0: 立刻輸出狀態,但不中止此段睡眠偵測,
+ 1: 立刻輸出狀態,並中止此段睡眠偵測)
+ */
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = 1;
+ CWM_SettingControl(SCL_REQ_SLEEPING_DATA, &scl);
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = 3;
c_inactivity_result_t.inactivity_mode = (int)sensorEVT->fData[15];
c_inactivity_result_t.sedentary_status = (int)sensorEVT->fData[2];
c_inactivity_result_t.stand_freq = (int)sensorEVT->fData[3];
- cywee_func(CYWEE_MSG_TYPE_SEDENTARY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+ cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
}else if((int)sensorEVT->fData[0] == 21){
CWM_OS_dbgPrintf("inactivity_mode_number[%d], sleep status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
c_inactivity_result_t.day = (int)sensorEVT->fData[4];
c_inactivity_result_t.hour = (int)sensorEVT->fData[5];
c_inactivity_result_t.minute = (int)sensorEVT->fData[6];
- cywee_func(CYWEE_MSG_TYPE_SLEEPING_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+ cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
}else if((int)sensorEVT->fData[0] == 31){
CWM_OS_dbgPrintf("inactivity_mode_number[%d], total sleep time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n",
c_inactivity_result_t.total_deep_sleep_time = (int)sensorEVT->fData[3];
c_inactivity_result_t.total_wake_time = (int)sensorEVT->fData[4];
c_inactivity_result_t.total_rem_sleep_time = (int)sensorEVT->fData[5];
- cywee_func(CYWEE_MSG_TYPE_SLEEPING_ACCUMULATE_TIME_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+ cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
}else if((int)sensorEVT->fData[0] == 22){
CWM_OS_dbgPrintf("inactivity_mode_number[%d], nap status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
c_inactivity_result_t.day = (int)sensorEVT->fData[4];
c_inactivity_result_t.hour = (int)sensorEVT->fData[5];
c_inactivity_result_t.minute = (int)sensorEVT->fData[6];
- cywee_func(CYWEE_MSG_TYPE_NAP_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+ cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
}else if((int)sensorEVT->fData[0] == 32){
CWM_OS_dbgPrintf("inactivity_mode_number[%d], total nap time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n",
c_inactivity_result_t.total_deep_sleep_time = (int)sensorEVT->fData[3];
c_inactivity_result_t.total_wake_time = (int)sensorEVT->fData[4];
c_inactivity_result_t.total_rem_sleep_time = (int)sensorEVT->fData[5];
- cywee_func(CYWEE_MSG_TYPE_NAP_ACCUMULATE_TIME_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+ cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
}
break;
case IDX_ALGO_ACTIVITY_OUTPUT:
(int)sensorEVT->fData[5]);
memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t));
+ c_activity_result_t.activity_mode = (int)sensorEVT->fData[0];
c_activity_result_t.avg_step_freq = (int)sensorEVT->fData[1];
c_activity_result_t.avg_step_len = (int)sensorEVT->fData[2];
c_activity_result_t.avg_pace = (int)sensorEVT->fData[3];
c_activity_result_t.max_step_freq = (int)sensorEVT->fData[4];
c_activity_result_t.max_pace = (int)sensorEVT->fData[5];
- cywee_func(CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ c_activity_result_t.hrs = hrs;
+ cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
}else if((int)sensorEVT->fData[0] == 5001)
{
c_activity_result_t.calories = (int)sensorEVT->fData[1];
c_activity_result_t.duration = (int)sensorEVT->fData[5];
c_activity_result_t.MHR_zone = (int)sensorEVT->fData[6];
- cywee_func(CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ c_activity_result_t.hrs = hrs;
+ cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
}else if((int)sensorEVT->fData[0] == 102)
{
memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t));
c_activity_result_t.activity_mode = (int)sensorEVT->fData[0];
c_activity_result_t.ar_alert_type = (int)sensorEVT->fData[1];
- cywee_func(CYWEE_MSG_TYPE_AR_ALERT_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+ cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
}else{
CWM_OS_dbgPrintf("activity_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d]\n",
c_activity_result_t.pace = (int)sensorEVT->fData[7];
c_activity_result_t.BMR_calories = (int)sensorEVT->fData[8];
c_activity_result_t.is_pause = (int)sensorEVT->fData[14];
-
- switch ((int)sensorEVT->fData[0])
- {
- case SPORT_ACTIVE_MODE_NORMAL:
- cywee_func(CYWEE_MSG_TYPE_NORMAL_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- case SPORT_ACTIVE_MODE_TREADMILL:
- cywee_func(CYWEE_MSG_TYPE_TREADMILL_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
- cywee_func(CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
- cywee_func(CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
- cywee_func(CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- break;
-
- default:
- break;
- }
+ c_activity_result_t.hrs = hrs;
+ cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
CustomEventPublish(TOPIC_EVENT_STEPDATA_UPDATE,&stepcount,sizeof(int));
}
break;
+
case IDX_ALGO_ANY_MOTION:
CWM_OS_dbgPrintf("IDX_ALGO_ANY_MOTION\n");
hx3695_brust_read_reg(0x22, databuf, 3); \r
read_fifo_first_flg = 0;\r
} \r
- hx3695_brust_read_reg(0x22, fifo_data_buf, fifo_read_bytes); \r
-// for(ii=0; ii<fifo_read_bytes; ii++)\r
-// {\r
-// SEGGER_RTT_printf(0,"%d/%d, %d\r\n", ii+1,fifo_read_bytes,fifo_data_buf[ii]); \r
-// }\r
+ hx3695_brust_read_reg(0x22, fifo_data_buf, fifo_read_bytes);\r
+ PRINT("hx3695_brust_read_reg !!! \r\n"); \r
+ for(ii=0; ii<fifo_read_bytes; ii++)\r
+ {\r
+ PRINT("%d/%d, %d\r\n", ii+1,fifo_read_bytes,fifo_data_buf[ii]); \r
+ }\r
for(ii=0; ii<fifo_read_length; ii++)\r
{\r
if(sig==0)\r
\r
// PRINT("===> touch_cnt: %d, notouch_cnt: %d, wear status: %d, \r\n", touch_cnt, notouch_cnt, hx3695_wear_status);\r
\r
-// PRINT("hx3695_wear_ppg_Int_handle wearstatus = %d\r\n", hrsresult.wearstatus);\r
- \r
-// for(int i=0;i<*count;i++)\r
-// {\r
-// DEBUG_PRINTF("%d,%d,%d,%d,%d,%d\r\n",1+i,*count,ir_buf[i],ppg_s_data.s_buf[i*2],ppg_s_data.s_buf[i*2+1],hx3695_wear_status);\r
-// }\r
+ PRINT("hx3695_wear_ppg_Int_handle wearstatus = %d\r\n", hrsresult.wearstatus);\r
+ PRINT("count : %d \r\n",*count);\r
+ for(int i=0;i<*count;i++)\r
+ {\r
+ PRINT("%d,%d,%d,%d,%d,%d\r\n",1+i,*count,ir_buf[i],ppg_s_data.s_buf[i*2],ppg_s_data.s_buf[i*2+1],hx3695_wear_status);\r
+ }\r
}\r
#endif\r
\r
// if (size && size <= 256)\r
// {\r
fifo_out_size = hx3695_read_fifo_data(s_buf,hrs_phase_num,2);\r
+ PRINT("fifo_out_size : %d\r\n",fifo_out_size);\r
s_dat->count = fifo_out_size;\r
for (i=0; i<fifo_out_size; i++)\r
{ \r
\r
hx3695_wear_msg_code_t check_touch_alg(int32_t ir_data)\r
{\r
+ PRINT("ir_data : %d \r\n",ir_data);\r
if(ir_data>check_mode_wear_thre)\r
{\r
notouch_cnt = 0;\r
* @Author: penglei 1624952103@qq.com
* @Date: 2024-03-13 15:08:38
* @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-03-29 10:51:50
+ * @LastEditTime: 2024-04-12 20:23:58
* @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
* @Description:
*
md = FT_GRAY_CARD_MODE;
} else if (strcmp(mode, "ledoff") == 0) {
md = FT_LED_OFF_MODE;
+ } else if (strcmp(mode, "wear") == 0) {
+ md = WEAR_MODE;
}
cmd = "leaklight";
enable = 1;
}else if (mail == PPG_SERVICE_CMD_TYPE_DO_GRAYCARD_TEST){
- cmd = "graycard";
+ cmd = "wear";
enable = 1;
}else if (mail == PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST){
void uapi_cat1_remove_audio_vote(void)
{
- uint8_t cnt = pm_veto_get_id_cnt(PM_ID_AUDIO);
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
if (cnt == 1) {
- uapi_pm_remove_sleep_veto(PM_ID_AUDIO);
+ uapi_pm_remove_sleep_veto(PM_ID_CAT1);
} else {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has delete pm_id_audio vote\r\n");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has delete pm_id_cat1 vote\r\n");
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"\r\nCAT1 SERVICE MCU SLEEP SUCCESS\r\n");
}
void uapi_cat1_add_audio_vote(void)
{
- uint8_t cnt = pm_veto_get_id_cnt(PM_ID_AUDIO);
+ uint8_t cnt = pm_veto_get_id_cnt(PM_ID_CAT1);
if (cnt == 0) {
- uapi_pm_add_sleep_veto(PM_ID_AUDIO);
+ uapi_pm_add_sleep_veto(PM_ID_CAT1);
} else {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_audio vote\r\n");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"CAT1 SERVICE MCU has got pm_id_cat1 vote\r\n");
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"\r\nCAT1 SERVICE MCU WAKEUP SUCCESS\r\n");
}
#include <string.h>
-
+#include "config/include/ConfigModelC.h"
#include "wearable_log.h"
{
cat1_getsignal();
cat1_handle_version_msg(msg);
- // restart_time_sync();
+ restart_time_sync();
}
break;
g_timer_time_sync = osTimerNew((osTimerFunc_t)time_sync_func, osTimerPeriodic, NULL, NULL);
- if (g_timer_time_sync != NULL)
- restart_time_sync();
- else
+ // if ( poweron_cat1_on_bootup_flag() )
+ // {
+ // uapi_cat1_power_on(1);
+ // uapi_cat1_reset(0);
+ // }
+ if (g_timer_time_sync == NULL)
printf("g_timer_time_sync create failed\n");
g_timer_cat1_sleep = osTimerNew((osTimerFunc_t)timeout_handler_sleep_cat1, osTimerPeriodic, NULL, NULL);
+ if (g_timer_cat1_sleep == NULL)
+ printf("g_timer_cat1_sleep create failed\n");
return ERRCODE_SUCC;
}
}
-extern uint32_t mcu_os_sys_reset(uint8_t *para, uint32_t para_len);
-extern void uapi_sys_shipmode(uint32_t arg);
-
+extern uint32_t mcu_os_sys_reset(uint8_t *para, uint32_t para_len);
+extern void uapi_sys_shipmode(uint32_t arg);
+extern void sync_all_config_to_disk(void);
void uapi_poweroff_device(void)
{
+
uapi_sys_shipmode(0);
}
void uapi_reboot_device(void)
{
mcu_os_sys_reset(NULL,NULL);
}
+static bool doing_shutdown_or_reboot = false;
+void shutdown_reboot_prejobs(void)
+{
+ PRINT("shutdown_reboot_prejobs !\r\n");
+ app_task_definition_t taskcfg={0};
+ taskcfg.create_queue_handle = NULL;
+ taskcfg.attr.name="shutdown_reboot_prejobs";
+ taskcfg.attr.priority = osPriorityNormal;
+ taskcfg.attr.stack_size = 0x1000;
+ taskcfg.func = sync_all_config_to_disk;
+ taskcfg.use_mem = USE_EXTEND_MEM;
+
+ errcode_t ret=uapi_create_osThread_custom(&taskcfg);
+ if(ret != ERRCODE_SUCC)
+ {
+ PRINT("create shutdown_reboot_prejobs thread failed %d!\r\n",ret);
+
+ }
+}
+void start_shutdown_or_reboot(void)
+{
+ doing_shutdown_or_reboot = true;
+}
+
+bool is_doing_shutdown_or_reboot(void)
+{
+ return doing_shutdown_or_reboot;
+}
+
+void startup_post_init_task(void)
+{
+
+ PRINT("startup_post_init_task !\r\n");
+
+ LOS_Msleep(5000);
+ if ( poweron_cat1_on_bootup_flag() )
+ {
+ PRINT("PowerOn Cat1 !\r\n");
+
+ uapi_cat1_power_on(1);
+ uapi_cat1_reset(0);
+ }else{
+ PRINT("PowerOff Cat1 !\r\n");
+
+ uapi_cat1_power_on(0);
+ uapi_cat1_reset(1);
+ }
+
+}
+
+void startup_post_init(void)
+{
+ PRINT("startup_post_init !\r\n");
+ app_task_definition_t taskcfg={0};
+ taskcfg.create_queue_handle = NULL;
+ taskcfg.attr.name="startup_post_init_task";
+ taskcfg.attr.priority = osPriorityNormal;
+ taskcfg.attr.stack_size = 0x1000;
+ taskcfg.func = startup_post_init_task;
+ taskcfg.use_mem = USE_EXTEND_MEM;
+
+ errcode_t ret=uapi_create_osThread_custom(&taskcfg);
+ if(ret != ERRCODE_SUCC)
+ {
+ PRINT("create shutdown_reboot_prejobs thread failed %d!\r\n",ret);
+
+ }
+}
#include "upg.h"
#include "upg_porting.h"
{
errcode_t ret ;
- srand(time(0));
uint8_t bd_addr[BD_ADDR_LEN]={0};
uint8_t name[BTSDK_DEVNAME_LEN]={0};
uint32_t addrlen = sizeof(bd_addr);
printf("uapi_get_nv_btaddr failed ret %d , addrlen %d\n",ret,addrlen);
return ERRCODE_FAIL;
}
+
//如果 281106856959
if ( bd_addr[5] == 0x59 &&
bd_addr[4] == 0x69 &&
bd_addr[1] == 0x11 &&
bd_addr[0] == 0x28 )
{
+
+ uint8_t soc_id[20]; // 20 is soc id length
+ uapi_soc_read_id(soc_id, 20); // 20 is soc id length
+ uint16_t sum = 0x0;
+ printf("[soc id:]\r\n");
+ for (uint8_t i = 0; i < 20; i += 2) { // 20 is soc id length, 2 means use 16bits
+ uint16_t ptmp16= *((uint16_t *)&soc_id[i]);
+ sum += ptmp16;
+ printf("0x%04X ", ptmp16);
+ if ((i + 2) % 8 == 0) { printf("\r\n"); } // 2&8 will word wrap
+ }
+ printf("get socid sum 0x%04X\r\n",sum);
+ srand(sum);
//默认是:281106856959
printf("是默认值,修改地址\n");
- bd_addr[5] = rand() % 0xFF;
- bd_addr[4] = rand() % 0xFF;
bd_addr[3] = rand() % 0xFF;
+ bd_addr[4] = rand() % 0xFF;
+ bd_addr[5] = rand() % 0xFF;
+
printf("uapi_set_nv_btaddr : ******%02x%02x%02x\n", bd_addr[3], bd_addr[4], bd_addr[5]);
ret = uapi_set_nv_btaddr(bd_addr, addrlen);
}
-
+
+#if 0
uint32_t namelen = sizeof(name);
ret = uapi_get_nv_btname(name,&namelen);
if (ret != ERRCODE_SUCC) {
printf("uapi_get_nv_btname failed ret %d , namelen %d\n",ret,namelen);
return ERRCODE_FAIL;
}
-
if ( strcmp((char*)name,"WatchSoar") == 0)
{
//默认是:WatchSoar
return ERRCODE_FAIL;
}
}
+#endif
return ERRCODE_SUCC;
}
void get_gsensor_single(uint8_t *databuf);
+
+void shutdown_reboot_prejobs(void);
+void start_shutdown_or_reboot(void);
+bool is_doing_shutdown_or_reboot(void);
#ifdef __cplusplus
}
#endif /* __cplusplus */
"key_status": "alive",
"structure_type": "btsrv_local_device_info_t",
"attributions": 1,
- "value": [[40,17,6,133,105, 89],0,0,["W","a","t","c","h","S","o","a","r",0]]
+ "value": [[40,17,6,133,105, 89],0,0,["W","a","t","c","h","D","e","m","o",0]]
},
"btsrv_paired_device_info":{
"key_id": "0x2102",
PM_ID_HEART,//新增,心率芯片
PM_ID_MOTOR,//新增,马达
PM_ID_GSENSOR,//新增,加速计
+ PM_ID_CAT1,//Cat1 communication
PM_ID_MAX,
} pm_id_t;
chunkSize = get_pagesize(g_pagetype);
spareSize = sel_oob_info->oobsize;
+ printf("chunkSize %d spareSize %d\n",chunkSize,spareSize);
printf("Processing directory %s into image file %s\n",argv[1],argv[2]);