From 82fdca5690d3d2f19a51f4c9ebba10f3dfd7c387 Mon Sep 17 00:00:00 2001 From: SnickerSun Date: Sat, 22 Jun 2024 07:37:13 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96ConfigModel=EF=BC=8C=E4=BF=AE?= =?utf8?q?=E5=A4=8D=E8=AF=BB=E5=86=99keyname=E5=91=BD=E5=90=8D=E8=A7=84?= =?utf8?q?=E5=88=99=20cJSON=E4=B8=8EKVStore=E7=9A=84=E5=85=BC=E5=AE=B9?= =?utf8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../peripheral/config/include/ConfigModel.h | 88 ++++---- .../peripheral/config/src/ConfigModel.cpp | 201 +++++++++++++----- 2 files changed, 197 insertions(+), 92 deletions(-) diff --git a/code/sdk/drivers/peripheral/config/include/ConfigModel.h b/code/sdk/drivers/peripheral/config/include/ConfigModel.h index 0b9360071..9c3f82368 100644 --- a/code/sdk/drivers/peripheral/config/include/ConfigModel.h +++ b/code/sdk/drivers/peripheral/config/include/ConfigModel.h @@ -12,7 +12,7 @@ #endif -// #define USE_KVSTORE_STORE_CONFIG +#define USE_KVSTORE_STORE_CONFIG struct dial_config @@ -264,51 +264,51 @@ namespace OHOS private: configmodel_item configmodel_item_key_name[CONFIGMODEL_ITEM_MAX] = { - {ConfigDataType::DATATYPE_BOOL, "ClassicBT_Service_On", "true" },// 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", "" },//CONFIGMODEL_ITEM_LANGUAGE_CODE, //默认没有选择语言 - {ConfigDataType::DATATYPE_INT, "TimeZone", "32" },//CONFIGMODEL_ITEM_TIMEZONE, //单位刻钟 默认+8 小时 = 4*8 = 32 刻钟 - {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, "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_BOOL, "classicbt_service_on", "true" },// CONFIGMODEL_ITEM_CLASSIC_BT_SERVICE_ON, //关机前经典蓝牙服务状态,启动时仍然恢复其当时状态 + {ConfigDataType::DATATYPE_INT, "screen_brightness", "255" },//CONFIGMODEL_ITEM_SCREEN_BRIGHTNESS_VALUE, //屏幕亮度 + {ConfigDataType::DATATYPE_INT, "screenoff_timeout_value", "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, "language_id", "-1" },//CONFIGMODEL_ITEM_LANGUAGE_ID, //默认没有选择语言 + {ConfigDataType::DATATYPE_STRING, "language_code", "" },//CONFIGMODEL_ITEM_LANGUAGE_CODE, //默认没有选择语言 + {ConfigDataType::DATATYPE_INT, "timezone", "32" },//CONFIGMODEL_ITEM_TIMEZONE, //单位刻钟 默认+8 小时 = 4*8 = 32 刻钟 + {ConfigDataType::DATATYPE_BOOL, "slient_mode", "false" },//CONFIGMODEL_ITEM_SILENT_MODE, + {ConfigDataType::DATATYPE_INT, "vibrator_switch", "1" },//CONFIGMODEL_ITEM_VIBRATOR_SWITCH, // 马达 开关,0 强,1 中,2 弱,3 关 + {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, "standup_times", "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, "activity_timestamp", "0" },// CONFIGMODEL_ITEM_ACTIVITY_VALUES_TIMESTAMP, //活动数据更新时间戳 {ConfigDataType::DATATYPE_INT, "height", "175" },// CONFIGMODEL_ITEM_CUSTOM_DATA_HEIGHT, //用户数据身高 (cm)(身高)(default : 175)(30 - 300) {ConfigDataType::DATATYPE_INT, "weight", "70" },// 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_INT, "GoalDistance", "8" },// CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE, //运动目标距离 8.0(km) - {ConfigDataType::DATATYPE_BOOL, "Dnotdisturb", "false" },// CONFIGMODEL_ITEM_DNOTDISTURB //勿扰模式默认关闭 - {ConfigDataType::DATATYPE_INT, "SystemVolume", "100" },// CONFIGMODEL_ITEM_SYSTEM_VOLUME // - {ConfigDataType::DATATYPE_INT, "CallVolume", "100" },// CONFIGMODEL_ITEM_CALL_VOLUME // + {ConfigDataType::DATATYPE_INT, "wearing_mode", "0" },// CONFIGMODEL_ITEM_CUSTOM_DATA_WEARING_MODE, //用户数据佩戴方式 (default : 左手)(0 : 左手 1 : 右手) + {ConfigDataType::DATATYPE_INT, "goal_stepcount", "10000" },// CONFIGMODEL_ITEM_SPORTS_GOAL_STEPCOUNT, //运动目标步数 10000 + {ConfigDataType::DATATYPE_INT, "goal_calories", "300" },// CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES, //运动目标卡路里 300(kcal) + {ConfigDataType::DATATYPE_INT, "goal_standup_times", "10" },// CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES, //运动目标站立次数 10 + {ConfigDataType::DATATYPE_INT, "goal_duration", "30" },// CONFIGMODEL_ITEM_SPORTS_GOAL_DURATION, //运动目标时长 30(分钟) + {ConfigDataType::DATATYPE_INT, "goal_distance", "8" },// CONFIGMODEL_ITEM_SPORTS_GOAL_DISTANCE, //运动目标距离 8.0(km) + {ConfigDataType::DATATYPE_BOOL, "dnotdisturb", "false" },// CONFIGMODEL_ITEM_DNOTDISTURB //勿扰模式默认关闭 + {ConfigDataType::DATATYPE_INT, "system_volume", "100" },// CONFIGMODEL_ITEM_SYSTEM_VOLUME // + {ConfigDataType::DATATYPE_INT, "call_volume", "100" },// CONFIGMODEL_ITEM_CALL_VOLUME // {ConfigDataType::DATATYPE_BOOL, "VoLTECall", "false" },// CONFIGMODEL_ITEM_VOLTE_CALL - {ConfigDataType::DATATYPE_BOOL, "MotionRecognition", "false" },// CONFIGMODEL_ITEM_MOTIONRECOGNITION - {ConfigDataType::DATATYPE_BOOL, "HFP", "false" },// CONFIGMODEL_ITEM_HFP - {ConfigDataType::DATATYPE_BOOL, "A2DP", "false" },// CONFIGMODEL_ITEM_A2DP - {ConfigDataType::DATATYPE_BOOL, "SPP", "true" },// CONFIGMODEL_ITEM_SPP,//SPP蓝牙开关 + {ConfigDataType::DATATYPE_BOOL, "motion_recognition", "false" },// CONFIGMODEL_ITEM_MOTIONRECOGNITION + {ConfigDataType::DATATYPE_BOOL, "hfp", "false" },// CONFIGMODEL_ITEM_HFP + {ConfigDataType::DATATYPE_BOOL, "a2dp", "false" },// CONFIGMODEL_ITEM_A2DP + {ConfigDataType::DATATYPE_BOOL, "spp", "true" },// CONFIGMODEL_ITEM_SPP,//SPP蓝牙开关 {ConfigDataType::DATATYPE_INT, "traningfreq", "10" },// CONFIGMODEL_ITEM_TRANING_FREQ //训练实时数据上传频率//单位秒 - {ConfigDataType::DATATYPE_BOOL, "traningauto", "0" },//CONFIGMODEL_ITEM_TRANING_AUTO,//开启关闭自动获取实时数据 + {ConfigDataType::DATATYPE_INT, "traningauto", "0" },//CONFIGMODEL_ITEM_TRANING_AUTO,//开启关闭自动获取实时数据 {ConfigDataType::DATATYPE_INT, "traningheart", "190" },//CONFIGMODEL_ITEM_TRAINING_HEART_MAX//训练最高心率 - {ConfigDataType::DATATYPE_INT, "HeartRateDetected", "0" },// CONFIGMODEL_ITEM_HEARTRATE_DETECTED//心率周期检测频率 - {ConfigDataType::DATATYPE_INT, "HeartRateMax", "0" },// CONFIGMODEL_ITEM_HEARTRATE_MAX//最大心率 - {ConfigDataType::DATATYPE_INT, "HeartRateMin", "0" },// CONFIGMODEL_ITEM_HEARTRATE_MIN//最小心率 - {ConfigDataType::DATATYPE_BOOL, "Notify", "0" },// CONFIGMODEL_ITEM_NOTIFY//消息通知开关 - {ConfigDataType::DATATYPE_INT, "QuickAuxilParameter", "0" },// CONFIGMODEL_ITEM_QUICK_AUXILIARY_PARAMETERS//快捷辅助功能参数 + {ConfigDataType::DATATYPE_INT, "heartrate_detected", "0" },// CONFIGMODEL_ITEM_HEARTRATE_DETECTED//心率周期检测频率 + {ConfigDataType::DATATYPE_INT, "heartrate_max", "0" },// CONFIGMODEL_ITEM_HEARTRATE_MAX//最大心率 + {ConfigDataType::DATATYPE_INT, "heartrate_min", "0" },// CONFIGMODEL_ITEM_HEARTRATE_MIN//最小心率 + {ConfigDataType::DATATYPE_INT, "notify", "0" },// CONFIGMODEL_ITEM_NOTIFY//消息通知开关 + {ConfigDataType::DATATYPE_INT, "quick_auxil_parameter", "0" },// CONFIGMODEL_ITEM_QUICK_AUXILIARY_PARAMETERS//快捷辅助功能参数 {ConfigDataType::DATATYPE_INT, "drink", "0" },// CONFIGMODEL_ITEM_DRINK,//开关 0 关闭 1开始 2间隔提醒 {ConfigDataType::DATATYPE_INT, "drinkgoal", "0" },// CONFIGMODEL_ITEM_DRINK_GOAL,//目标。ml {ConfigDataType::DATATYPE_INT, "drinkstart", "0" }, // CONFIGMODEL_ITEM_DRINK_START,//提醒开始时间 int类型 前16位小时,后16位分钟 @@ -318,7 +318,7 @@ namespace OHOS {ConfigDataType::DATATYPE_INT, "sleep_bedtime", "0" }, //CONFIGMODEL_ITEM_SLEEP_BEDTIME,//就寝时间 {ConfigDataType::DATATYPE_INT, "sleep_getup", "0" }, // CONFIGMODEL_ITEM_SLEEP_GET_UP,//起床时间 {ConfigDataType::DATATYPE_INT, "sleep_remide", "0" }, // CONFIGMODEL_ITEM_SLEEP_REMIND,//提前20分钟提醒开关 - {ConfigDataType::DATATYPE_BOOL, "sedentary_switch", "false" }, // CONFIGMODEL_ITEM_SEDENTARY_SWITCH,//久坐提醒开关 + {ConfigDataType::DATATYPE_INT, "sedentary_switch", "0" }, // CONFIGMODEL_ITEM_SEDENTARY_SWITCH,//久坐提醒开关 {ConfigDataType::DATATYPE_INT, "sedentary_interval", "1" }, // CONFIGMODEL_ITEM_SEDENTARY_INTERVAL,//久坐提醒时间间隔 {ConfigDataType::DATATYPE_INT, "sedentary_reminderTime", "0" }, // CONFIGMODEL_ITEM_SEDENTARY_REMINDERTIME,//久坐提醒时间段 前16位是开始时间 前8 为小时 后8为分钟 后16位为结束时间规则同前 例: 1600 0B00 11点开始到 22点结束 {ConfigDataType::DATATYPE_STRING, "password", "000000" }, //CONFIGMODEL_ITEM_PASSWORD //手表密码 CONFIGMODEL_ITEM_SWITCH @@ -346,10 +346,10 @@ namespace OHOS void DumpItem(ConfigItem item); void DumpData(void); #ifdef USE_KVSTORE_STORE_CONFIG - std::string ReadKVData_String(const char *field_name); - double ReadKVData_Double(const char *field_name); - int ReadKVData_Int(const char *field_name); - bool ReadKVData_Bool(const char *field_name); + std::string ReadKVData_String(ConfigItem item,const char *field_name); + double ReadKVData_Double(ConfigItem item,const char *field_name); + int ReadKVData_Int(ConfigItem item,const char *field_name); + bool ReadKVData_Bool(ConfigItem item,const char *field_name); void WriteKVData_Int(const char *field_name, int data); void WriteKVData_Double(const char *field_name, double data); diff --git a/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp b/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp index fdf3f9684..bac562194 100644 --- a/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp +++ b/code/sdk/drivers/peripheral/config/src/ConfigModel.cpp @@ -5,8 +5,12 @@ #include "kv_store.h" #include "kvstore_env.h" - - +#if DEBUG_CONFIGMODEL +#define CONFIG_DEBUG(fmt, arg...) printf("ConfigModel|" fmt, ##arg) +#else +#define CONFIG_DEBUG +#endif +// #define DEBUG_LINE() printf("%s %d\n",__func__,__LINE__) namespace OHOS { #define MAX_NUM_BUF_LEN 32 @@ -73,7 +77,7 @@ namespace OHOS /// @brief 显示读取到的json数据 void ConfigModel::DumpData(void) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "/* -------------------------------- JsonData: ------------------------------- */\n"); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "/* -------------------------------- ConfigData: ------------------------------- */\n"); for (int i = 0; i< ConfigItem::CONFIGMODEL_ITEM_MAX;i++) { DumpItem((ConfigItem)i); @@ -82,10 +86,17 @@ namespace OHOS } #ifdef USE_KVSTORE_STORE_CONFIG - std::string ConfigModel::ReadKVData_String(const char *field_name) + std::string ConfigModel::ReadKVData_String(ConfigItem item,const char *field_name) { char* stringtmp=(char*)malloc(MAX_STRING_DATA_LEN); + if (stringtmp == NULL) return "-2"; int value_len = UtilsGetValue(field_name,stringtmp,MAX_STRING_DATA_LEN); + if (value_len<0) + { + reset_item_to_default(item); + memset(stringtmp,0,MAX_STRING_DATA_LEN); + value_len = UtilsGetValue(field_name,stringtmp,MAX_STRING_DATA_LEN); + } if (value_len<0)//没有变量则用默认值初始化 { free(stringtmp); @@ -98,16 +109,34 @@ namespace OHOS return ret; } } - double ConfigModel::ReadKVData_Double(const char *field_name) + double ConfigModel::ReadKVData_Double(ConfigItem item,const char *field_name) { char *buf = (char*)malloc(MAX_NUM_BUF_LEN); + if (buf == NULL) return 0.0f; int value_len = UtilsGetValue(field_name,buf,MAX_NUM_BUF_LEN); - double ret = 0.0f; + if (value_len<0) + { + reset_item_to_default(item); + memset(buf,0,MAX_NUM_BUF_LEN); + value_len = UtilsGetValue(field_name,buf,MAX_NUM_BUF_LEN); + } + int flag = 1; + char* pchar = buf; + if ( buf[0] == '-') + { + flag=-1; + pchar=pchar+1; + }else if (pchar[0] == '+') + { + flag=1; + pchar=pchar+1; + } + double ret = 0.0f; if (value_len >=0) { - ret = atof(buf); + ret = atof(pchar)*flag; free(buf); return ret; } @@ -117,15 +146,33 @@ namespace OHOS return 0.0f; } } - int ConfigModel::ReadKVData_Int(const char *field_name) + int ConfigModel::ReadKVData_Int(ConfigItem item,const char *field_name) { char *buf = (char*)malloc(MAX_NUM_BUF_LEN); + if (buf == NULL) return 0; int value_len = UtilsGetValue(field_name,buf,MAX_NUM_BUF_LEN); + if (value_len<0) + { + reset_item_to_default(item); + memset(buf,0,MAX_NUM_BUF_LEN); + value_len = UtilsGetValue(field_name,buf,MAX_NUM_BUF_LEN); + } int ret = 0; - + int flag = 1; + char* pchar = buf; + if ( buf[0] == '-') + { + flag=-1; + pchar=pchar+1; + }else if (pchar[0] == '+') + { + flag=1; + pchar=pchar+1; + } if (value_len >=0) { - ret = atoi(buf); + ret = atoi(pchar)*flag; + CONFIG_DEBUG("ReadKVData_Int %s = %s (%d), ret=%d\n",field_name,buf,value_len,ret); free(buf); return ret; } @@ -135,20 +182,40 @@ namespace OHOS return 0; } } - bool ConfigModel::ReadKVData_Bool(const char *field_name) + bool ConfigModel::ReadKVData_Bool(ConfigItem item,const char *field_name) { char *buf = (char*)malloc(MAX_NUM_BUF_LEN); + if (buf == NULL) return false; int value_len = UtilsGetValue(field_name,buf,MAX_NUM_BUF_LEN); + CONFIG_DEBUG("ReadKVData_Bool %s = %s (%d)\n",field_name,buf,value_len); + if (value_len<0) + { + reset_item_to_default(item); + memset(buf,0,MAX_NUM_BUF_LEN); + value_len = UtilsGetValue(field_name,buf,MAX_NUM_BUF_LEN); + CONFIG_DEBUG("ReadKVData_Bool %s = %s (%d)\n",field_name,buf,value_len); + } int ret = 0; - if (value_len >=0) { - ret = atoi(buf); + if (strlen(buf)>0 && strlen(buf)<4) + { + ret = 0; + } + else if (strncmp("true",buf,4) == 0) + { + ret = 1; + } + CONFIG_DEBUG("ReadKVData_Bool %s = %s (%d),ret %d\n",field_name,buf,value_len,ret); free(buf); if(ret > 0) + { return true; + } else + { return false; + } } else { @@ -160,48 +227,56 @@ namespace OHOS void ConfigModel::WriteKVData_Int(const char *field_name, int data) { char *buf = (char*)malloc(MAX_NUM_BUF_LEN); + if (buf == NULL) return ; memset(buf,0,MAX_NUM_BUF_LEN); sprintf_s(buf,32,"%d",data); - UtilsSetValue(field_name,buf); + int ret = UtilsSetValue(field_name,buf); + CONFIG_DEBUG("WriteKVData_Int %s %s,ret %d\n",field_name,buf,ret); free(buf); } void ConfigModel::WriteKVData_Double(const char *field_name, double data) { char *buf = (char*)malloc(MAX_NUM_BUF_LEN); + if (buf == NULL) return ; memset(buf,0,MAX_NUM_BUF_LEN); sprintf_s(buf,32,"%f",data); - UtilsSetValue(field_name,buf); + int ret = UtilsSetValue(field_name,buf); + CONFIG_DEBUG("WriteKVData_Double %s %s,ret %d\n",field_name,buf,ret); free(buf); } void ConfigModel::WriteKVData_Bool(const char *field_name, bool data) { char *buf = (char*)malloc(MAX_NUM_BUF_LEN); + if (buf == NULL) return ; memset(buf,0,MAX_NUM_BUF_LEN); - sprintf_s(buf,32,"%d",data); - UtilsSetValue(field_name,buf); + sprintf_s(buf,32,"%s",data?"true":"false"); + int ret = UtilsSetValue(field_name,buf); + CONFIG_DEBUG("WriteKVData_Bool %s %s,ret %d\n",field_name,buf,ret); free(buf); } void ConfigModel::WriteKVData_String(const char *field_name, const char *data) { char *buf = (char*)malloc(MAX_STRING_DATA_LEN); + if (buf == NULL) return ; memset(buf,0,MAX_STRING_DATA_LEN); sprintf_s(buf,MAX_STRING_DATA_LEN,"%s",data); + CONFIG_DEBUG("%s %s\n",field_name,buf); UtilsSetValue(field_name,buf); free(buf); } bool ConfigModel::LoadKVData() { - char* buf=(char*)malloc(MAX_STRING_DATA_LEN); - for (int i = 0; i< ConfigItem::CONFIGMODEL_ITEM_MAX;i++) - { - ConfigItem item = (ConfigItem)i; - int ret = UtilsGetValue(get_config_name(item),buf,MAX_STRING_DATA_LEN); - if (ret < 0) //没有变量则用默认值初始化 - { - reset_item_to_default(item); - } - } - free(buf); + // char* buf=(char*)malloc(MAX_STRING_DATA_LEN); + // for (int i = 0; i< ConfigItem::CONFIGMODEL_ITEM_MAX;i++) + // { + // ConfigItem item = (ConfigItem)i; + // int ret = UtilsGetValue(get_config_name(item),buf,MAX_STRING_DATA_LEN); + // if (ret < 0) //没有变量则用默认值初始化 + // { + // reset_item_to_default(item); + // } + // } + // free(buf); return true; } #else @@ -570,39 +645,69 @@ namespace OHOS { bool defaultvalue = false; - if (strncmp(configmodel_item_key_name[item].defaultValue,"true",sizeof("true"))==0) defaultvalue = true; + CONFIG_DEBUG("reset item[%d]%s=%s\n",item,configmodel_item_key_name[item].itemname,configmodel_item_key_name[item].defaultValue); + if (strncmp(configmodel_item_key_name[item].defaultValue,"true",4)==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)); + // 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); + + int flag = 1; + char* pchar = configmodel_item_key_name[item].defaultValue; + + if ( pchar[0] == '-') + { + flag=-1; + pchar=pchar+1; + }else if (pchar[0] == '+') + { + flag=1; + pchar=pchar+1; + } + double defaultvalue = atof(pchar)*flag; + CONFIG_DEBUG("item[%d]%s=%s , %f\n",item,configmodel_item_key_name[item].itemname,configmodel_item_key_name[item].defaultValue,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)); + // 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); + + int flag = 1; + char* pchar = configmodel_item_key_name[item].defaultValue; + + if ( pchar[0] == '-') + { + flag=-1; + pchar=pchar+1; + }else if (pchar[0] == '+') + { + flag=1; + pchar=pchar+1; + } + int defaultvalue = atoi(pchar)*flag; + CONFIG_DEBUG("item[%d]%s=%s , %d\n",item,configmodel_item_key_name[item].itemname,configmodel_item_key_name[item].defaultValue,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)); + // 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); + CONFIG_DEBUG("item[%d]%s=%s\n",item,configmodel_item_key_name[item].itemname,configmodel_item_key_name[item].defaultValue); + 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()); + // 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: /** @@ -1082,7 +1187,7 @@ namespace OHOS { #ifdef USE_KVSTORE_STORE_CONFIG - return ReadKVData_Int(get_config_name(item)); + return ReadKVData_Int(item,get_config_name(item)); #else return ReadJsonData_Int(GetcJSON(),get_config_name(item)); #endif @@ -1090,7 +1195,7 @@ namespace OHOS double ConfigModel::get_configData_double(ConfigItem item) { #ifdef USE_KVSTORE_STORE_CONFIG - return ReadKVData_Double(get_config_name(item)); + return ReadKVData_Double(item,get_config_name(item)); #else return ReadJsonData_Double(GetcJSON(),get_config_name(item)); #endif @@ -1099,7 +1204,7 @@ namespace OHOS { #ifdef USE_KVSTORE_STORE_CONFIG - return ReadKVData_Bool(get_config_name(item)); + return ReadKVData_Bool(item,get_config_name(item)); #else return ReadJsonData_Bool(GetcJSON(),get_config_name(item)); #endif @@ -1108,7 +1213,7 @@ namespace OHOS std::string ConfigModel::get_configData_string(ConfigItem item) { #ifdef USE_KVSTORE_STORE_CONFIG - return ReadKVData_String(get_config_name(item)); + return ReadKVData_String(item,get_config_name(item)); #else return ReadJsonData_String(GetcJSON(),get_config_name(item)); #endif -- 2.17.1