"custom_runtime.h": "c",
"hx3695.h": "c",
"configmodelc.h": "c",
- "factorytest_protocol.h": "c"
+ "factorytest_protocol.h": "c",
+ "sleepmodelc.h": "c",
+ "bluetoothmodelc.h": "c",
+ "errcode.h": "c",
+ "cst86xx_touch1.h": "c",
+ "__split_buffer": "cpp",
+ "initializer_list": "cpp",
+ "list": "cpp",
+ "queue": "cpp",
+ "stack": "cpp",
+ "stat.h": "c",
+ "gnss_ctl.h": "c",
+ "stdlib.h": "c"
}
}
\ No newline at end of file
#include "custom_utils.h"
-#ifdef PPG_HX3695
+#ifdef SUPPORT_PPG_SERVICE
#include "ppg_service.h"
#endif
{
// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startspo2 End");
// uint16_t md = PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST;
+#ifdef SUPORT_PPG_SERVICE
// send_ppg_cmd_msg(md);
+#endif
// startspo2 = false;
// uapi_save_runtime_log(RUNTIME_LOG_OXYGEN_MEASURE_END);
// }
// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "startspo2 Start");
// uint16_t md = PPG_SERVICE_CMD_TYPE_DO_SPO2_TEST;
+#ifdef SUPORT_PPG_SERVICE
// send_ppg_cmd_msg(md);
+#endif
// startspo2 = true;
// uapi_save_runtime_log(RUNTIME_LOG_OXYGEN_MEASURE);
#include <thread>
#include <sys/time.h>
-#ifdef PPG_HX3695
+#ifdef SUPPORT_PPG_SERVICE
#include "ppg_service.h"
#endif
/*
* @Author: luozheng 1732036298@qq.com
* @Date: 2024-04-08 18:40:09
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-12-04 16:28:23
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-20 10:36:33
* @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/weather/src/GoalModel.cpp
*/
#include "goal/include/goalmodel.h"
// #include "cywee_hal.h"
// #include "goal_notification.h"
#include "custom_utils.h"
-// #include "cywee_ble_Service.h"
+// #include "cywee_ble_service.h"
// #include "goalmodel.h"
namespace OHOS
{
// calories_goal=ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_CALORIES);
// stand_goal=ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_SPORTS_GOAL_STANDUP_TIMES);
- // standdata_now=get_now_stand_count();
+ // standdata_now=cywee_get_now_stand_count();
// show_step=goal_parse_step_data();
// show_calories=goal_parse_calories_data();
uint8_t GoalModel::getstepvalue()
{
int stepgoal = step_goal;
- int stepdata = show_data_step_refresh();//get_step_data();//OHOS::ActivityModel::GetInstance()->GetStepCounter();
+ int stepdata = show_data_step_refresh();//cywee_get_step_data();//OHOS::ActivityModel::GetInstance()->GetStepCounter();
// WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d %d %f ",stepdata,stepgoal,((float)stepdata/(float)stepgoal) * 100);
uint8_t value = ((float)stepdata / (float)stepgoal) * 100;
// uint32_t toal_date;
// toal_date=show_step;
- // get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP);
+ // cywee_get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP);
// if(value>0)
// toal_date+=value;
// return toal_date;
// float _f_value=0;
// float toal_date;
// toal_date=show_calories;
- // get_now_hour_data(&_f_value,CYWEE_SAVE_DATA_CALORIES);
+ // cywee_get_now_hour_data(&_f_value,CYWEE_SAVE_DATA_CALORIES);
// if(_f_value>0)
// toal_date+=_f_value;
// float _f_value=0;
// float toal_date;
// toal_date=show_distance;
- // get_now_hour_data(&_f_value,CYWEE_SAVE_DATA_DISTANCE);
+ // cywee_get_now_hour_data(&_f_value,CYWEE_SAVE_DATA_DISTANCE);
// if(_f_value>0)
// toal_date+=_f_value;
// uint16_t _16_value=0;
// uint32_t toal_date;
// toal_date=show_fat;
- // get_now_hour_data(&_16_value,CYWEE_SAVE_DATA_FAT);
+ // cywee_get_now_hour_data(&_16_value,CYWEE_SAVE_DATA_FAT);
// if(_16_value>0)
// toal_date+=_16_value;
#include <thread>
#include <sys/time.h>
-#ifdef PPG_HX3695
+#ifdef SUPPORT_PPG_SERVICE
#include "ppg_service.h"
#endif
#include <thread>
#include <sys/time.h>
-#ifdef PPG_HX3695
+#ifdef SUPORT_PPG_SERVICE
#include "ppg_service.h"
#endif
\r
#include "heart_blood/health_service/health_service.h"\r
\r
-#ifdef PPG_HX3695\r
+#ifdef SUPORT_PPG_SERVICE\r
#include "ppg_service.h"\r
#endif\r
\r
#include "languagecode/LanguageInit.h"\r
#include "ui_service.h"\r
\r
-#ifdef PPG_HX3695\r
-#include "hx3695.h"\r
-#endif\r
-\r
\r
#include <custom_save_runtime.h>\r
\r
HeartResult HeartModel::GetResult() { return heartresult_; }\r
// 控制心率检测\r
void HeartModel::Heart_Control(HeartState state, HeartCheck check) {\r
- #ifdef PPG_HX3695\r
+ #ifdef SUPORT_PPG_SERVICE\r
//优先级低不对高优先级处理\r
if (check < checkstate) {\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,\r
display_counter_ = 0;\r
displayheart = 0;\r
uint8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;\r
+#ifdef SUPORT_PPG_SERVICE\r
errcode_t ret = send_ppg_cmd_msg(md);\r
if(ret != ERRCODE_SUCC)\r
{\r
send_ppg_cmd_msg(md);\r
}\r
+#endif\r
heartstate = false;\r
if (checkstate == HeartCheck::CARDCHECK) {\r
//重置传感器状态\r
return;\r
}\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "HeartState Start");\r
+#ifdef SUPORT_PPG_SERVICE\r
uint8_t md = PPG_SERVICE_CMD_TYPE_DO_PPG_TEST;\r
send_ppg_cmd_msg(md);\r
+#endif\r
heartstate = true;\r
checkstate = check;\r
\r
#include <thread>
#include <sys/time.h>
-#ifdef PPG_HX3695
+#ifdef SUPPORT_PPG_SERVICE
#include "ppg_service.h"
#endif
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-05-15 11:27:16
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-20 10:33:14
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230/nativeapp/nativeui/main/src/dial/DialModelCalorie.cpp
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
/***
* @Date: 2024-07-31 18:33:13
* @LastEditors: Caisking 3449750381@qq.com
OHOS::DialModelCalorie::GetInstance());
// #include "cywee_hal.h"
-// extern "C" int get_calories_data();
+// extern "C" int cywee_get_calories_data();
namespace OHOS {
bool DialModelCalorie::GetDialFloatData(DialDataType &type, float &out) {
REGIST_DIAL_MODULE(DialDataType::DATA_TYPE_DISTANCE, OHOS::DialModelDistance::GetInstance());
#include "goal/include/goalmodel.h"
// #include "cywee_hal.h"
-// extern "C" int get_distance_data();
+// extern "C" int cywee_get_distance_data();
namespace OHOS
{
// 训练数据相关配置
#ifdef CYWEE_ACTIVITY_ENABLE
- void AnalysisData(cywee_activity_result_t *cyweeInfo); /*解析传输过来的数据*/
- void AnalysisExtraData(cywee_activity_result_extre_info_t *cyweeInfo); /*解析运动额外数据*/
+ void AnalysisData(act_result_t *cyweeInfo); /*解析传输过来的数据*/
+ void AnalysisExtraData(act_ext_result_t *cyweeInfo); /*解析运动额外数据*/
#endif
void AnalysisHeartData(uint8_t hrs); /*解析运动心率数据*/
(training_ble *)request->data, request->len);
if (rets != EOK) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
- "memcpy_s cywee_activity_result_t fail ret = %d", rets);
+ "memcpy_s act_result_t fail ret = %d", rets);
return;
}
// GraphicService::GetInstance()->PostGraphicEvent(
}
//训练基本信息更新
if (request->msgId == TOPIC_EVENT_ACTIVITY_UPDATE) {
- cywee_activity_result_t *cyweeInfo = new cywee_activity_result_t();
- int rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t),
- (cywee_activity_result_t *)request->data, request->len);
+ act_result_t *cyweeInfo = new act_result_t();
+ int rets = memcpy_s(cyweeInfo, sizeof(act_result_t),
+ (act_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);
+ "memcpy_s act_result_t fail ret = %d", rets);
return;
}
TraingModel::GetInstance()->AnalysisData(cyweeInfo);
}
//训练额外信息
if (request->msgId == TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE) {
- cywee_activity_result_extre_info_t *cyweeInfo_ext =
- new cywee_activity_result_extre_info_t();
+ act_ext_result_t *cyweeInfo_ext =
+ new act_ext_result_t();
int rets = memcpy_s(
- cyweeInfo_ext, sizeof(cywee_activity_result_extre_info_t),
- (cywee_activity_result_extre_info_t *)request->data, request->len);
+ cyweeInfo_ext, sizeof(act_ext_result_t),
+ (act_ext_result_t *)request->data, request->len);
if (rets != EOK) {
delete cyweeInfo_ext; // 处理内存分配失败的情况
cyweeInfo_ext = NULL;
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
- "memcpy_s cywee_activity_result_extre_info_t fail ret = %d",
+ "memcpy_s act_ext_result_t fail ret = %d",
rets);
return;
}
}
#ifdef CYWEE_ACTIVITY_ENABLE
/*分析数据*/
-void TraingModel::AnalysisData(cywee_activity_result_t *cyweeInfo) {
+void TraingModel::AnalysisData(act_result_t *cyweeInfo) {
// 不同的运动类型解析不同的数据
// 通用数据
sportdata->steps = cyweeInfo->steps;
/*分析activity extra info数据*/
#ifdef CYWEE_ACTIVITY_ENABLE
void TraingModel::AnalysisExtraData(
- cywee_activity_result_extre_info_t *cyweeInfo) {
+ act_ext_result_t *cyweeInfo) {
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[apc:%d fpc:%d cdc:%d std:%d]",
cyweeInfo->avg_pace, cyweeInfo->max_pace,
TOPIC_EVENT_HFP_PHONE_TO_WATCH,\r
TOPIC_EVENT_HFP_WATCH_TO_PHONE,\r
TOPIC_EVENT_HFP_HINT,\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+// #ifdef SUPPORT_CYWEE_SERVICE\r
TOPIC_EVENT_ACTIVITY_UPDATE,\r
TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE,\r
TOPIC_EVENT_AR_ALERT_TYPE_UPDATE,\r
TOPIC_EVENT_BLE_TRAINING,\r
TOPIC_EVENT_BLE_TRANSMIT,\r
TOPIC_EVENT_GOAL_SHOW_VIEW,\r
-#endif\r
+// #endif\r
#ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION\r
TOPIC_EVENT_CHARGE_PLUG,\r
TOPIC_EVENT_CHARGE_UNPLUG,\r
#include "touch_screen_def.h"\r
#include "time.h"\r
#include "tcxo.h"\r
+#include "rotary_encoder_def.h"\r
+\r
/* GBL_CTL_M中SOFT_RST_4寄存器 */\r
#define DISPLAY_LOGIC_CRG_RESET 0x570000c0\r
/**\r
NotifyScreenOn(); // Instruct the uikit to start the display operation.\r
#endif\r
if ((g_pms_lcd_on_first_flag == false) && (g_pms_dpu_ready == false)) {\r
- touch_screen_resume(); // open touch\r
+ #if 1\r
+ touch_screen_resume();// open touch/\r
+ #else\r
+ ret = hal_custom_resume_touch(); // 更高优先级处理touch\r
+ if ( ret != 0)\r
+ {\r
+ POWER_DISPLAY_PRINT_ERR(0, "hal_custom_resume_touch error ret=%x , resume touch in graphic thread\r\n", ret);\r
+ touch_screen_resume();// post_func_to_graphic(touch_screen_resume); // open touch 太耗时,放到GraphicService里延迟执行,加快亮屏速度。\r
+ }\r
+ #endif\r
+ rotary_encoder_resume();\r
}\r
#ifdef CONFIG_CLDO1PD_SUPPORT\r
pmu_control_cldo1_sleep_bypass(TURN_ON);\r
\r
osDelay(100); // Wait 100ms for the uikit to complete display.\r
touch_screen_suspend(); // close touch\r
+ rotary_encoder_suspend();\r
ext_errno ret = drv_vau_suspend(NULL);\r
if (ret != 0) {\r
POWER_DISPLAY_PRINT_ERR(0, "drv vau suspend error ret=%x\r\n", ret);\r
# 'CONFIG_DFX_SUPPORT_DIAG_UP_MACHINE=1',
#"MEM_CHECK",
#'ENABLE_WEBSOCKET',
- 'SUPPORT_CYWEE_SERVICE',
'CYWEE_MAC_ACTIVE',
'SUPPORT_CAT1_SERVICE',
#'SUPPORT_TCPIP',
"custom_config",
"rotary_encoder",
"nativelauncher",
- "ppg_service",
- "cywee",
+ #"ppg_service",
+ #"cywee_service",
"batterry_service",
"bleservice",
"blemoder",
"ppg_hal",
"mag_hal",
"mag_service",
+ "cywee_dml",
+ "cywee_hal",
+ #"cyweeBleService",
],
'image_analysis': False,
'fs_image_path':'fd230',
MG_TEST_FALG++;
gsenson_t t;
- get_gsonsen_xyz(&t);
+ // get_gsonsen_xyz(&t);
char buf[124]={0};
float x_t=t.x;
float y_t=t.y;
static bool button_falg=true;
void testhrsenson1View:: setgrayvalue(int g,int r,int ir)
{
-#ifdef PPG_HX3695
+
if(label_hrsenson_value_vison!=NULL)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",buf);
label_hrsenson_value_vison->SetText(buf);
RootView::GetInstance()->Invalidate();
+#ifdef SUPORT_PPG_SERVICE
int8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;
send_ppg_cmd_msg(md);
+#endif
button_falg=true;
}
-#endif
}
void testhrsenson1View:: setlightvalue(int g,int r,int ir)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",buf);
label_hrsenson_value_vison->SetText(buf);
RootView::GetInstance()->Invalidate();
+#ifdef SUPORT_PPG_SERVICE
int8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;
send_ppg_cmd_msg(md);
+#endif
button_falg=true;
#elif defined PPG_VC9202
//漏光测试
uint32_t apre_val = 0;
uint32_t aps_val = 9;
vc9202_get_leaklight_data(&led_cur,&apre_val,&aps_val);
+#ifdef SUPORT_PPG_SERVICE
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);
+#endif
sprintf(buf,"leaklight:\ngreen:%d\nred:%d\nir:%d",led_cur,apre_val,aps_val);
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%s",buf);
label_hrsenson_value_vison->SetText(buf);
{
if(button_1!=NULL)
{
+#ifdef SUPORT_PPG_SERVICE
int8_t md = PPG_SERVICE_CMD_TYPE_DO_GRAYCARD_TEST;
send_ppg_cmd_msg(md);
+#endif
button_falg=false;
}
}
{
if(button_2!=NULL)
{
+#ifdef SUPORT_PPG_SERVICE
int8_t md = PPG_SERVICE_CMD_TYPE_DO_LEAKLIGHT_TEST;
send_ppg_cmd_msg(md);
+#endif
button_falg=false;
#ifdef PPG_VC9202
testhrsenson1View::setlightvalue(0,0,0);
testhrsensonScrollView->SetTouchable(true);
testhrsensonScrollView->SetDraggable(true);
-
+#ifdef SUPORT_PPG_SERVICE
int8_t md = PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST;
send_ppg_cmd_msg(md);
-
+#endif
uint8_t cnt = pm_veto_get_id_cnt(PM_ID_P_TEST);
if (cnt == 0) {
uapi_pm_add_sleep_veto(PM_ID_P_TEST);
-#===============================================================================
-# @brief cmake file
-# Copyright (c) @CompanyNameMagicTag 2022-2023. All rights reserved.
-#===============================================================================
-set(COMPONENT_NAME "cywee")
-
-set(SOURCES ${SOURCES}
- # ${CMAKE_CURRENT_SOURCE_DIR}/src/main.c
- ${CMAKE_CURRENT_SOURCE_DIR}/src/main_dml.c
- ${CMAKE_CURRENT_SOURCE_DIR}/src/test_api.c
- ${CMAKE_CURRENT_SOURCE_DIR}/src/board_yh601s.c
- ${CMAKE_CURRENT_SOURCE_DIR}/src/custom_factory_core.c
- ${CMAKE_CURRENT_SOURCE_DIR}/src/custom_factory_impl.c
- ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_service.c
- ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_at_cmd.c
- ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_hal.c
- ${CMAKE_CURRENT_SOURCE_DIR}/service/cywee_ble_Service.c
-
- # ${CMAKE_CURRENT_SOURCE_DIR}/../acc/lis2doc_STdC/examples/lis2doc_read_data_single.c
- # ${CMAKE_CURRENT_SOURCE_DIR}/../acc/lis2doc_STdC/lis2doc_porting.c
-)
-set(PUBLIC_HEADER
- ${CMAKE_CURRENT_SOURCE_DIR}/Inc
-)
-if("FD230" IN_LIST DEFINES)
-set(PRIVATE_HEADER
- ${PRIVATE_HEADER}
- ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativeui/bluetooth/include
- ${ROOT_DIR}/application/wearable/fd230/CustomUIComponentTool/uicomponents
- ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativeui
- ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativelauncher/include
- ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativeui/screennotify/include
-)
-else()
-set(PRIVATE_HEADER
- ${PRIVATE_HEADER}
- ${ROOT_DIR}/application/wearable/nativeapp/nativeui/bluetooth/include
- ${ROOT_DIR}/application/wearable/fd230/CustomUIComponentTool/uicomponents
- ${ROOT_DIR}/application/wearable/nativeapp/nativeui
- ${ROOT_DIR}/application/wearable/nativeapp/nativelauncher/include
- ${ROOT_DIR}/application/wearable/nativeapp/nativeui/screennotify/include
-)
-endif()
-set(PRIVATE_DEFINES
-)
-
-set(PUBLIC_DEFINES
-SUPPORT_AT_CYWEE
-)
-
-# use this when you want to add ccflags like -include xxx
-set(COMPONENT_PUBLIC_CCFLAGS
-)
-
-set(COMPONENT_CCFLAGS
-
-)
-
-set(WHOLE_LINK
- true
-)
-
-set(MAIN_COMPONENT
- false
-)
-
-if("SUPPORT_CYWEE_SERVICE" IN_LIST DEFINES)
- find_library(LIB_PATH_CWM_LIB_DML Lib/CWM_LIB_DML_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
- if("CYWEE_MAC_ACTIVE" IN_LIST DEFINES)
- find_library(LIB_PATH_CWM_LIB Lib/CWM_LIB_clang_riscv_mac.a ${CMAKE_CURRENT_SOURCE_DIR})
- else()
- find_library(LIB_PATH_CWM_LIB Lib/CWM_LIB_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
- endif()
- target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_CWM_LIB_DML} ${LIB_PATH_CWM_LIB} PRIVATE -Wl,--whole-archive)
- #target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_CWM_LIB} PRIVATE -Wl,--whole-archive)
-endif()
-
-build_component()
+add_subdirectory_if_exist(service)
+add_subdirectory_if_exist(hal)
+add_subdirectory_if_exist(dml)
+add_subdirectory_if_exist(ble_service)
\ No newline at end of file
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
+#===============================================================================
+
+set(COMPONENT_NAME "cyweeBleService")
+
+set(PUBLIC_HEADER
+${CMAKE_CURRENT_SOURCE_DIR}
+)
+if("FD230" IN_LIST DEFINES)
+set(PRIVATE_HEADER
+ ${ROOT_DIR}/application/wearable/fd230/nativeapp/nativeui/bluetooth/include
+)
+else()
+set(PRIVATE_HEADER
+ ${ROOT_DIR}/application/wearable/nativeapp/nativeui/bluetooth/include
+)
+endif()
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/cywee_ble_service.c
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+set(PUBLIC_DEFINES
+SUPPORT_CYWEE_BLE_SERVICE
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
#define BLE_CYWEE_SERVER_H
-#define CWM_HISTORY_DATA_PATH "/user/userdata/goal/step/step_"
-
-#define CWM_HISTORY_DATA_CALORIES_PATH "/user/userdata/goal/calories/calories_"
-
-#define CWM_HISTORY_DATA_DISTANCE_PATH "/user/userdata/goal/distance/distance_"
-
-#define CWM_HISTORY_STAND_DATA_PATH "/user/userdata/goal/stand/stand_"
-
-#define CWM_HISTORY_DATA_FAT_PATH "/user/userdata/goal/fat/fat_"
-
-#define GOAL_DATA_CONFIG_DIR "/user/userdata/goal"
-
-
-#define GOAL_DATA_CONFIG_DIR_STEP "/user/userdata/goal/step"
-
-#define GOAL_DATA_CONFIG_DIR_DISTANCE "/user/userdata/goal/distance"
-
-#define GOAL_DATA_CONFIG_DIR_STAND "/user/userdata/goal/stand"
-
-#define GOAL_DATA_CONFIG_DIR_FAT "/user/userdata/goal/fat"
-
-#define GOAL_DATA_CONFIG_DIR_CALORIES "/user/userdata/goal/calories"
-
-
#include "errcode.h"
#ifdef __cplusplus
--- /dev/null
+/*
+ * Copyright (c) @CompanyNameMagicTag 2022. All rights reserved.
+ * Description: BT HID Service Server Module.
+ */
+
+#include "cywee_ble_service.h"
+
+#ifdef SUPPORT_BLE_SERVICE
+#include "bleService.h"
+#include "bts_gatt_stru.h"
+#include "bts_gatt_server.h"
+#endif
+#include "securec.h"
+#include "wearable_log.h"
+#ifdef SUPPORT_OHOSFWK
+#include "BluetoothWrapper.h"
+#endif
+
+/* HID gatt notification flag, do not need confirm */
+#define GATT_NOTIFICATION_FLAG 0
+/* HID gatt indication flag, need confirm */
+#define GATT_INDICATION_FLAG 1
+#define INVALID_SERVER_ID 0
+/* Client Characteristic Configuration UUID */
+#define BLE_UUID_CLIENT_CHARACTERISTIC_CONF 0x2902
+/*user Characteristic Configuration UUID*/
+#define BLE_UUID_USER_CHARACTERISTIC_CONF 0x2901
+/* gatt server ID */
+static uint8_t g_server_id = INVALID_SERVER_ID;
+// RX定为Notify属性,TX为Write属性
+enum {
+ /* HID input report characteristic properties */
+ FACTORYTEST_INPUT_REPORT_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_NOTIFY|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP|GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_READ,
+ /* HID output report characteristic properties */
+ FACTORYTEST_OUTPUT_REPORT_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,
+};
+
+#define uint16_to_byte(n) ((uint8_t)(n)), ((uint8_t)((n) >> 8))
+
+/* hid input report att handle */
+uint32_t g_cywee_notify_report_att_hdl = 0;
+uint32_t cywee_ate_write_handl = 0;
+
+/* 创建服务 */
+static void ble_cywee_add_service(uint8_t server_id)
+{
+ bt_uuid_t cywee_service_uuid = {0};
+ bts_data_to_uuid_len2(BLE_UUID_CYWEE_REPORT_SERVICE, &cywee_service_uuid);
+ //只有一个服务,永远是1
+ errcode_t ret = 0;
+#ifndef SUPPORT_OHOSFWK
+ ret = gatts_add_service(server_id, &cywee_service_uuid, true);
+ printf("ble_cywee_add_service gatts_add_service ret: 0x%x serverId = 0x%x uuid.uuid_len:%d\n", ret, server_id,cywee_service_uuid.uuid_len);
+#else
+ ret = wrapper_gatts_add_service(server_id, &cywee_service_uuid, true);
+ printf("ble_cywee_add_service wrapper_gatts_add_service ret: 0x%x serverId = 0x%x uuid.uuid_len:%d\n", ret, server_id,cywee_service_uuid.uuid_len);
+#endif
+
+}
+static void ble_cywee_add_descriptor_report_reference(uint8_t server_id, uint16_t srvc_handle, bool is_notify_report)
+{
+ /* HID input report reference value for test [report id 1, input] */
+ static uint8_t report_reference_val_input[] = {0, 0};
+ gatts_add_desc_info_t descriptor;
+ if (is_notify_report)
+ {
+ bts_data_to_uuid_len2(BLE_UUID_CLIENT_CHARACTERISTIC_CONF, &descriptor.desc_uuid);
+ descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE ;
+ }else{
+ bts_data_to_uuid_len2(BLE_UUID_USER_CHARACTERISTIC_CONF, &descriptor.desc_uuid);
+ descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ ;
+
+ }
+ descriptor.value = report_reference_val_input;
+ descriptor.value_len = (uint16_t)sizeof(report_reference_val_input);
+
+ gatts_add_descriptor(server_id, srvc_handle, &descriptor);
+}
+
+/* 添加特征:HID information */
+static void ble_cywee_add_character_and_information(uint8_t server_id, uint16_t srvc_handle)
+{
+ /* HID information value for test */
+ gatts_add_chara_info_t character={0};
+
+ memset_s(&character,sizeof(gatts_add_chara_info_t),0,sizeof(gatts_add_chara_info_t));
+ bts_data_to_uuid_len2(BLE_UUID_CYWEE_RX, &character.chara_uuid);
+ character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;
+ character.properties = FACTORYTEST_INPUT_REPORT_PROPERTIES;
+ character.value_len = 0;//(uint16_t)sizeof(hid_information_val);
+ character.value = NULL;//hid_information_val;
+ gatts_add_characteristic(server_id, srvc_handle, &character);
+ ble_cywee_add_descriptor_report_reference(server_id,srvc_handle,true);
+ ble_cywee_add_descriptor_report_reference(server_id,srvc_handle,false);
+
+}
+
+/* device向host发送数据:input report */
+errcode_t ble_cywee_server_send_input_report(const uint8_t *data, uint8_t len)
+{
+ // printf("ble_hid_server_send_input_report:%d %d %d",data[0],data[1],len);
+ if (g_cywee_notify_report_att_hdl==0)
+ return ERRCODE_BT_FAIL;
+
+ gatts_ntf_ind_t param = {0};
+ param.attr_handle = (uint16_t)g_cywee_notify_report_att_hdl;
+ param.value_len = len;
+ param.value = bt_os_new(len);
+ if (param.value == NULL) {
+ printf( "[cywee][ERROR]send input report new fail\r\n");
+ return ERRCODE_BT_MALLOC_FAIL;
+ }
+ if (memcpy_s(param.value, param.value_len, data, len) != EOK) {
+ printf( "[cywee][ERROR]send input report memcpy fail\r\n");
+ bt_os_free(param.value);
+ return ERRCODE_BT_FAIL;
+ }
+ errcode_t ret = 0;
+ ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, ¶m);
+ printf("ble_cywee_server_send_input_report: 0x%x g_ble_conn_id:%d g_cywee_notify_report_att_hdl:%d\r\n",ret,g_ble_conn_id,g_cywee_notify_report_att_hdl);
+ bt_os_free(param.value);
+ return ERRCODE_BT_SUCCESS;
+}
+
+
+void ble_cywee_store_report_handle(uint16_t srvc_handle)
+{
+ printf("g_cywee_notify_report_att_hdl: 0x%X\r\n",srvc_handle);
+ if(g_cywee_notify_report_att_hdl == 0){
+ g_cywee_notify_report_att_hdl = srvc_handle;
+ }
+}
+void ble_cywee_store_recv_handle(uint16_t srvc_handle)
+{
+ printf("cywee_ate_write_handl : 0x%X\r\n",srvc_handle);
+ if(cywee_ate_write_handl == 0)
+ {
+ cywee_ate_write_handl = srvc_handle;
+ }
+
+}
+
+uint32_t get_cywee_ate_write_handl(void)
+{
+ return cywee_ate_write_handl;
+}
+
+
+void ble_cywee_add_characters_and_descriptors(uint8_t server_id, uint16_t srvc_handle)
+{
+ ble_cywee_add_character_and_information(server_id, srvc_handle);
+}
+
+void ble_cywee_server_init(uint8_t server_id)
+{
+ ble_cywee_add_service(server_id);
+}
+
+
+//协议接收client下发的数据接口
+void cywee_recv_cmd_data(uint8_t *buf, uint16_t event_size,uint16_t handle)
+{
+ if(buf != NULL)
+ printf("cywee_recv_cmd_data len %d , handle 0x%X ,*buf 0x%02X\r\n",event_size,handle,*buf);
+ /****此处为接收指令,处理后反馈结果的参考**/
+ // cywee_log_switch(*buf);
+ /*****参考结束****/
+}
+
+
+void CWM_OS_saveData_history(void* new_data,void *history ,uint32_t len,uint8_t type,uint32_t time)
+{
+#ifdef SUPPORT_CYWEE_BLE_SERVICE
+ struct stat info;
+
+ if (stat(GOAL_DATA_CONFIG_DIR, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ if (stat(GOAL_DATA_CONFIG_DIR_STEP, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_STEP, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ if (stat(GOAL_DATA_CONFIG_DIR_DISTANCE, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_DISTANCE, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ if (stat(GOAL_DATA_CONFIG_DIR_STAND, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_STAND, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ if (stat(GOAL_DATA_CONFIG_DIR_FAT, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_FAT, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ if (stat(GOAL_DATA_CONFIG_DIR_CALORIES, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_CALORIES, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+
+
+ char path_[64]={0};
+ char timeday[12] = {0};
+ uapi_get_TIME_STR(time,timeday, '_','\0',DATE_Y_M_D);
+
+ int i_data=0;
+ float f_data=0;
+ int16_t i_data_16=0;
+
+ switch (type)
+ {
+ case CYWEE_DATA_CALORIES:
+ sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_CALORIES_PATH,timeday);
+
+ f_data=*(float*)new_data-*(float*)history;
+
+ break;
+ case CYWEE_DATA_STEP:
+ sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_PATH,timeday);
+
+ i_data= *(int*)new_data-*(int*)history;//新数据减去旧数据,作为这一个小时的值
+ // {
+ // FILE *fp= fopen("/user/userdata/i_data_test.txt","ab+");
+ // fwrite("x",1,1,fp);
+ // fclose(fp);
+ // }
+
+
+ break;
+ case CYWEE_DATA_DISTANCE:
+ sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_DISTANCE_PATH,timeday);
+ f_data=*(float*)new_data-*(float*)history;
+
+ break;
+ case CYWEE_DATA_FAT:
+ sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_FAT_PATH,timeday);
+ i_data_16= *(int16_t*)new_data-*(int16_t*)history;//新数据减去旧数据,作为这一个小时的值
+
+ break;
+
+ default:
+ break;
+ }
+
+ CWM_OS_dbgPrintf(" save path %s \n",path_);
+
+ if(i_data<0 || f_data<0 ||i_data_16<0)
+ {
+ i_data=0;
+ f_data=0;
+ *(int*)history=0;
+ return;
+ }
+
+ if(type==CYWEE_DATA_STEP && i_data!=0)
+ {
+ #ifdef GOAL_DATA_AMEND
+ time_and_32_date_t array[25]={0};
+
+ for(int i=0;i<25;i++)
+ {
+ array[i].data=0;
+ array[i].time=0;
+ }
+
+
+ if(time_is_repetition(time,&i_data,path_,array,0))
+ {
+
+
+ FILE * fp = fopen(path_,"wb+");
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("open fail\n");
+ return;
+ }
+
+ for(int i=0;i<25;i++)
+ {
+ if(array[i].time && array[i].data)
+ {
+ fwrite(&array[i].time,sizeof(array[i].time),1,fp);
+ fwrite(&array[i].data,sizeof(array[i].data),1,fp);
+ }
+
+ }
+ fclose(fp);
+
+ }
+ else
+ #endif
+ {
+
+ FILE * fp = fopen(path_,"ab+");
+ if(fp)
+ {
+ uint32_t creationTime;
+ creationTime=time;//当前值计入上小时
+
+ int ret =fwrite(&creationTime,1,4,fp);
+ if(ret==0)
+ {
+ CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+ }
+ if(i_data)
+ ret =fwrite(&i_data,1,sizeof(i_data),fp);
+ fclose(fp);
+ }
+ else
+ {
+ msleep(5);
+ FILE * fp = fopen(path_,"ab+");
+ uint32_t creationTime;
+ creationTime=time;//当前值计入上小时
+
+ int ret =fwrite(&creationTime,1,4,fp);
+ if(ret==0)
+ {
+ CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+ }
+ if(i_data)
+ ret =fwrite(&i_data,1,sizeof(i_data),fp);
+ fclose(fp);
+ }
+
+
+
+
+ }
+
+ }
+ if((type==CYWEE_DATA_CALORIES|| type==CYWEE_DATA_DISTANCE) && f_data!=0)
+ {
+
+ #ifdef GOAL_DATA_AMEND
+ time_and_float_date_t array[25]={0};
+
+ for(int i=0;i<25;i++)
+ {
+ array[i].data=0;
+ array[i].time=0;
+ }
+
+ if(time_is_repetition(time,&i_data,path_,array,1))
+ {
+
+ FILE * fp = fopen(path_,"wb+");
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("open fail\n");
+ return;
+ }
+
+ for(int i=0;i<25;i++)
+ {
+ if(array[i].time && array[i].data)
+ {
+ fwrite(&array[i].time,sizeof(array[i].time),1,fp);
+ fwrite(&array[i].data,sizeof(array[i].data),1,fp);
+ }
+
+ }
+ fclose(fp);
+
+ }
+ else
+ #endif
+ {
+
+ FILE * fp = fopen(path_,"ab+");
+ if(fp)
+ {
+ uint32_t creationTime;
+ creationTime=time;//当前值计入上小时
+
+ int ret =fwrite(&creationTime,1,4,fp);
+ if(ret==0)
+ {
+ CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+ }
+ if(f_data)
+ ret =fwrite(&f_data,1,sizeof(f_data),fp);
+
+ fclose(fp);
+
+ }
+ }
+ }
+
+ if((type==CYWEE_DATA_FAT) && i_data_16!=0)
+ {
+
+ #ifdef GOAL_DATA_AMEND
+ time_and_16_date_t array[25]={0};
+
+ for(int i=0;i<25;i++)
+ {
+ array[i].data=0;
+ array[i].time=0;
+ }
+
+ if(time_is_repetition(time,&i_data,path_,array,2))
+ {
+
+ FILE * fp = fopen(path_,"wb+");
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("open fail\n");
+ return;
+ }
+
+ for(int i=0;i<25;i++)
+ {
+ if(array[i].time && array[i].data)
+ {
+ fwrite(&array[i].time,sizeof(array[i].time),1,fp);
+ fwrite(&array[i].data,sizeof(array[i].data),1,fp);
+ }
+
+ }
+ fclose(fp);
+
+ }
+ else
+ #endif
+
+ {
+ FILE * fp = fopen(path_,"ab+");
+ if(fp)
+ {
+ uint32_t creationTime;
+ creationTime=time;//当前值计入上小时
+
+ int ret =fwrite(&creationTime,1,4,fp);
+ if(ret==0)
+ {
+ CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+ }
+ if(i_data_16)
+ ret =fwrite(&i_data_16,1,sizeof(i_data_16),fp);
+
+ fclose(fp);
+
+ }
+ }
+ }
+
+
+ if(i_data)
+ *(int*)history=*(int*)new_data;
+ else if(i_data_16)
+ *(int16_t*)history=*(int16_t*)new_data;
+ else if(f_data)
+ *(float*)history=*(float*)new_data;
+#endif
+
+}
+
+void CWM_OS_saveData_STAND_history(uint8_t *falg,uint32_t len,uint32_t time)
+{
+#ifdef SUPPORT_CYWEE_BLE_SERVICE
+ if(*falg)
+ {
+ struct stat info;
+
+ if (stat(GOAL_DATA_CONFIG_DIR, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ if (stat(GOAL_DATA_CONFIG_DIR_STAND, &info) != 0)
+ {
+ if (mkdir(GOAL_DATA_CONFIG_DIR_STAND, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+
+ char path_[64]={0};
+ char timeday[12] = {0};
+ uapi_get_TIME_STR(time,timeday, '_','\0',DATE_Y_M_D);
+
+
+ sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_STAND_DATA_PATH,timeday);
+ CWM_OS_dbgPrintf(" save path %s \n",path_);
+
+ FILE * fp = fopen(path_,"ab+");
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("open fail\n");
+ return;
+ }
+ uint32_t ret;
+
+ uint32_t creationTime;
+ creationTime=time;//当前值计入上小时
+
+ CWM_OS_dbgPrintf("uapi_get_timestampe_ss %d\n",ret);
+
+ ret =fwrite(&creationTime,1,len,fp);
+ if(ret==0)
+ {
+ CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
+ }
+
+ fclose(fp);
+
+ *falg=0;
+ }
+ else
+ {
+ return;
+ }
+#endif
+}
+ // calories 数据存储
+
+uint8_t get_stand_count(void)
+{
+ char path_[64]={0};
+ char timeday[12] = {0};
+ uapi_get_YYMMDD_Time(timeday, '_');
+
+
+ sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_STAND_DATA_PATH,timeday);
+ CWM_OS_dbgPrintf(" save path %s \n",path_);
+
+ FILE * fp = fopen(path_,"rb+");
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("open fail\n");
+ return 0;
+ }
+ fseek(fp, 0, SEEK_END);
+ uint8_t size = ftell(fp);
+ fseek(fp, 0, SEEK_SET);
+
+ uint32_t array[25]={0};
+ uint8_t read_size=0;
+ fread(array,sizeof(uint32_t),size/4,fp);
+ uint8_t is_repetition=0;
+ for(int x=0;x<size/4;x++)
+ {
+ if(array[x])
+ {
+ for(int y=0;y<size/4;y++)
+ {
+ if(array[y]==array[x] && y!=x)
+ {
+ is_repetition++;
+ }
+ }
+ }
+
+ }
+
+
+
+ fclose(fp);
+ return size/4-is_repetition;
+
+}
+
+
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2023-2023. All rights reserved.
+#===============================================================================
+set(COMPONENT_NAME "cywee_dml")
+
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/main_dml.c
+${CMAKE_CURRENT_SOURCE_DIR}/test_api.c
+${CMAKE_CURRENT_SOURCE_DIR}/board_yh601s.c
+${CMAKE_CURRENT_SOURCE_DIR}/custom_factory_core.c
+${CMAKE_CURRENT_SOURCE_DIR}/custom_factory_impl.c
+)
+set(PUBLIC_HEADER
+ ${CMAKE_CURRENT_SOURCE_DIR}
+)
+set(PUBLIC_DEFINES
+ CYWEE_DML
+)
+
+set(PRIVATE_HEADER
+)
+
+set(PRIVATE_DEFINES
+)
+
+# use this when you want to add ccflags like -include xxx
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+ -Wno-incompatible-function-pointer-types
+ -Wno-unused-function
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+find_library(LIB_PATH_CWM_LIB_DML CWM_LIB_DML_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
+if("CYWEE_MAC_ACTIVE" IN_LIST DEFINES)
+ find_library(LIB_PATH_CWM_LIB CWM_LIB_clang_riscv_mac.a ${CMAKE_CURRENT_SOURCE_DIR})
+else()
+ find_library(LIB_PATH_CWM_LIB CWM_LIB_clang_riscv.a ${CMAKE_CURRENT_SOURCE_DIR})
+endif()
+target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_CWM_LIB_DML} ${LIB_PATH_CWM_LIB} PRIVATE -Wl,--whole-archive)
+#target_link_libraries(${TARGET_NAME} PRIVATE -Wl,--whole-archive ${LIB_PATH_CWM_LIB} PRIVATE -Wl,--whole-archive)
+
+build_component()
\ No newline at end of file
--- /dev/null
+/*********************/
+/*** Include Files ***/
+/*********************/
+#include <stdarg.h>
+
+#include <stdio.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <math.h>
+
+#include "osal_timer.h"
+#include "osal_mutex.h"
+#include "pinctrl.h"
+#include "chip_io.h"
+#include "time.h"
+#include "i2c.h"
+#include "gpio.h"
+#include "hal_gpio.h"
+#include "hal_i2c.h"
+#include "soc_osal.h"
+#include "tcxo.h"
+#include "debug_print.h"
+#include "platform_core.h"
+#include "los_tick.h"
+
+#include "cwm_lib.h"
+#include "los_typedef.h"
+#include "config.h"
+#include "OsApi.h"
+#include "los_printf.h"
+#ifdef SUPPORT_CYWEE_BLE_SERVICE
+#include "cywee_ble_service.h"
+#endif
+#include "custom_utils.h"
+
+/*********************/
+/*** Macro Defines ***/
+/*********************/
+
+#define CYWEE_I2C_BUS I2C_BUS_2
+#define CYWEE_I2C_RETRY_TIME_MAX 3
+#define G_INT1_PIN S_AGPIO_L11
+#define G_INT2_PIN S_AGPIO_L19
+
+/*************************/
+/*** Variables Defines ***/
+/*************************/
+
+static uint8_t g_cywee_installed = 0;
+
+extern uint8_t cywee_ble_service_flag;
+
+/************************/
+/*** Function Defines ***/
+/************************/
+int CWM_OS_dbgPrintf(const char * format,...);
+
+
+/********************************/
+/*** Function Implementations ***/
+/********************************/
+
+
+
+/*初始化GPIO*/
+int gpio_int_pin_init(void)
+{
+ if ((uapi_pin_set_mode(G_INT1_PIN, (pin_mode_t)HAL_PIO_FUNC_GPIO) != ERRCODE_SUCC) ||
+ (uapi_pin_set_pull(G_INT1_PIN, (pin_pull_t)HAL_PIO_PULL_UP) != ERRCODE_SUCC) ||
+ (uapi_gpio_set_dir(G_INT1_PIN, GPIO_DIRECTION_INPUT) != ERRCODE_SUCC)) {
+ CWM_OS_dbgPrintf("gpio G_INT1_PIN config failed\r\n");
+ return ERRCODE_FAIL;
+ }
+ if ((uapi_pin_set_mode(G_INT2_PIN, (pin_mode_t)HAL_PIO_FUNC_GPIO) != ERRCODE_SUCC) ||
+ (uapi_pin_set_pull(G_INT2_PIN, (pin_pull_t)HAL_PIO_PULL_UP) != ERRCODE_SUCC) ||
+ (uapi_gpio_set_dir(G_INT2_PIN, GPIO_DIRECTION_INPUT) != ERRCODE_SUCC)) {
+ CWM_OS_dbgPrintf("gpio G_INT2_PIN config failed\r\n");
+ return ERRCODE_FAIL;
+ }
+ return ERRCODE_SUCC;
+}
+
+
+// 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 ERRCODE_SUCC;
+// }
+
+// int CWM_disableGpioIRQ(uint16_t sensorType, uint16_t sensorPin)
+// {
+// CWM_OS_dbgPrintf("CWM_disableGpioIRQ sensorType %d, sensorPin %d\n",sensorType,sensorPin);
+// return ERRCODE_SUCC;
+// }
+
+
+
+// int CWM_OS_i2cWrite(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex)
+// {
+// errcode_t ret;
+// uint32_t retry;
+// i2c_data_t data;
+// uint8_t *write_data = NULL;
+// uint16_t send_len;
+// uint8_t *data_buf=writeData;
+// uint16_t data_len=writeDataSize;
+
+// cywee_i2c_init();
+// send_len = data_len + regLength;
+// write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
+// if (write_data == NULL) {
+// CWM_OS_dbgPrintf("cywee CWM_OS_i2cWrite send buff malloc fail %d!\n",send_len);
+// goto error;
+// }
+
+// if( regLength == 2)
+// {
+// write_data[0] = ((uint8_t*)®)[0];
+// write_data[1] = ((uint8_t*)®)[1];
+// }else{
+// write_data[0] = (uint8_t)reg;
+// }
+// ret = (uint32_t)memcpy_s(write_data + regLength, send_len - regLength, data_buf, data_len);
+// if (ret != EOK) {
+// CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
+// goto free_mem;
+// }
+
+// data.send_buf = write_data;
+// data.send_len = send_len;
+// data.receive_buf = NULL;
+// data.receive_len = 0;
+
+// for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
+// ret = uapi_i2c_master_write(CYWEE_I2C_BUS, slaveAddr, &data);
+// if (ret == ERRCODE_SUCC) {
+// break;
+// }
+// }
+// if (ret != ERRCODE_SUCC) {
+// CWM_OS_dbgPrintf("CWM_OS_i2cWrite cywee data write fail! ret=0x%x\n", ret);
+// }
+// free_mem:
+// osal_kfree(write_data);
+// error:
+// return (ret>0) ? ret*-1: ret;
+// }
+
+// int CWM_OS_i2cTransfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex)
+// {
+// errcode_t ret;
+// uint32_t retry;
+// i2c_data_t data;
+// uint8_t *write_data = NULL;
+// int16_t write_len = 0;
+
+// cywee_i2c_init();
+// write_len = regLength + writeDataSize;
+// write_data = (uint8_t *)osal_kmalloc(write_len, OSAL_GFP_KERNEL);
+// if (write_data == NULL) {
+// PRINT_ERR("cywee send buff malloc fail!");
+// goto error;
+// }
+
+// if( regLength == 2)
+// {
+// write_data[0] = ((uint8_t*)®)[0];
+// write_data[1] = ((uint8_t*)®)[1];
+// }else{
+// write_data[0] = (uint8_t)reg;
+// }
+
+// ret = (uint32_t)memcpy_s(write_data + regLength, writeDataSize, writeData, writeDataSize);
+// if (ret != EOK) {
+// CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
+// goto free_mem;
+// }
+// data.send_buf = write_data;
+// data.send_len = write_len;
+// data.receive_buf = readData;
+// data.receive_len = readDataSize;
+
+// for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
+// ret = uapi_i2c_master_writeread(CYWEE_I2C_BUS, slaveAddr, &data);
+// if (ret == ERRCODE_SUCC) {
+// break;
+// }
+// }
+// if (ret != ERRCODE_SUCC) {
+// CWM_OS_dbgPrintf("CWM_OS_i2cTransfer cywee data read fail! ret=0x%x\n", ret);
+// }
+
+// free_mem:
+// osal_kfree(write_data);
+// error:
+// return (ret>0) ? ret*-1: ret;
+// }
+
+//实际精度只能到1ms
+void CWM_OS_uSleep(uint32_t time)
+{
+
+ HalDelayUs(time);
+ // uint32_t ms = time / 1000;
+ // if (ms == 0) ms = 1;
+ // osDelay(ms);
+}
+
+uint64_t CWM_OS_GetTimeNs(void)
+{
+ uint64_t timeNowNs;
+ timeNowNs = LOS_CurrNanosec();
+ return timeNowNs;
+}
+
+void* CWM_OS_malloc(int size)
+{
+ if (size == 0)
+ size = 1;
+ return malloc(size);
+}
+
+void CWM_OS_free(void *ptr)
+{
+ if (ptr == NULL)
+ return;
+
+ free(ptr);
+}
+
+int CWM_OS_dbgOutput(const char * format)
+{
+ PRINT("%s", format);
+#ifdef SUPPORT_CYWEE_BLE_SERVICE
+ if(cywee_ble_service_flag == 1)
+ ble_cywee_server_send_input_report((uint8_t *)format,strlen(format));
+#endif
+ return 0;
+}
+
+int CWM_OS_dbgOutput_checkLog(const char * format)
+{
+ static int s_sn = 0;
+ PRINT("#_#|%d|%s", s_sn, format);
+ s_sn ++;
+ return 0;
+}
+
+int CWM_OS_dbgPrintf(const char * format,...)
+{
+ char InputBuff[255];
+ va_list args;
+
+ va_start(args, format);
+
+ vsprintf(InputBuff, format, args);
+
+ va_end(args);
+ CWM_OS_dbgOutput(InputBuff);
+ return 0;
+}
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2025-05-19 14:25:40
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-20 10:56:40
+ * @FilePath: /FD230/code/sdk/zhihui/drivers/cywee/dml/cywee_dml.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
/**
* Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
*
* 2022-08-16, Create file. \n
*/
-#ifndef CYWEE_HAL_H__
-#define CYWEE_HAL_H__
+#ifndef CYWEE_DML_H__
+#define CYWEE_DML_H__
#ifdef __cplusplus
#if __cplusplus
#include "stdint.h"
#include "errcode.h"
-
-
+#include "cywee_hal.h"
extern uint64_t CWM_OS_GetTimeNs(void);
extern int CWM_OS_dbgOutput(const char * format);
int sub_mode_number;// int[2] = sub_mode_number (預設: 0)
}set_activity_mode_t;
-typedef struct {
- float x;
- float y;
- float z;
-} gsenson_t;
-
#if 1
/**
}input_sensor_config_t;
#pragma pack(1)
-typedef struct
-{
- int activity_mode;//模式
- int steps;//步数
- int distance;//距离
- int calories;//卡路里
- int step_frequency;//步频
- float step_length;//步幅
- int pace;//配速
- int BMR_calories;//基础卡路里
- // int hrs;//心率
- int duration;//持续时间
- int MHR_zone;//心率区间
-}cywee_activity_result_t;
-
-typedef struct
-{
- int avg_step_freq;//平均步频
- float avg_step_len;//平均步长
- int avg_pace;//平均配速
- int max_step_freq;//最大步频
- int max_pace;//最大配速
- int activity_zone;//活动程度区间 0低度 1中度 2高度
- int ativity_zone_moderate_duration;//中度活动时间
- int ativity_zone_high_duration;//高度活动时间
- int MHR_zone;//心率区间
- int distance_motion;//体感距离
-}cywee_activity_result_extre_info_t;
typedef struct
{
} SLEEP_STAT_T;
-#pragma pack()
-typedef enum{
- CYWEE_MSG_TYPE_ACTIVITY_UPDATE,
- CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,
- CYWEE_MSG_TYPE_INACTIVITY_UPDATE,
- CYWEE_MSG_TYPE_INACTIVITY_ACCUMULATE_TIME_UPDATE,
-} cywee_msg_type_t;
-
-extern void get_gsonsen_xyz(gsenson_t *t);
-void gsensor_get_n_data(uint8_t cnt,gsenson_t t[]);
-
-typedef void (*cywee_msg_callback_t)(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen);
-uint32_t cywee_register_msg_callback(cywee_msg_callback_t func);
-cywee_msg_callback_t cywee_get_send_msg_callback_func(void);
-
-void activity_mode_setstatus(int cmd);
-void cywee_oncharging_update(int oncharging_status);
-void cywee_wearstatus_update(int wearstatus);
-void cywee_hrs_update(void);
-void cywee_set_user_info(void);
-void cywee_get_sleep_data(int cmd);
-void cywee_reset_daily_data(void);
-void cywee_inactivity_mode_change(int mode);
-void cywee_activity_mode_change(int mode);
-void cywee_time_sync(void);
-void cywee_hand_updown_switch(int cmd);
-void cywee_ar_alert_switch(int cmd);
-
-void step_history_save(uint32_t);
-uint32_t get_step_data(void);
-void set_step_data(uint32_t data);
-
-void stand_history_save(uint32_t);
-void calories_history_save(uint32_t);
-void distances_history_save(uint32_t);
-void fat_history_save(uint32_t);
-int32_t get_now_hour_data(void*value, uint8_t type);
-
-void cywee_goal_history_save(void);
-
-
-void set_stand_falg(void);
-uint8_t get_stand_falg(void);
-uint8_t get_now_stand_count(void);
-void set_calories_data(uint32_t data);
-int get_calories_data(void);
-
-void set_distance_data(uint32_t data);
-int get_distance_data(void );
-
-void set_fat_time_data(int time);
-int get_fat_time_data(void);
-
-void cywee_get_chipinfo(char *databuf,uint8_t len);
-void cywee_set_sedentary_interval(int interval);
-void cywee_set_sedentary_switch(int cmd);
-void cywee_get_acc_switch(int cmd);
-void cywee_stop(void);
-uint8_t cywee_get_active_state(void);
-uint8_t cywee_get_static_state(void);
-void cywee_restart_acc(void);
-void cywee_log_switch(int cmd);
-void cywee_get_version(char *databuf,uint8_t len);
-void cywee_save_data(void);
-
-void cywee_save_sleep_stat_data(void);
-
-void cywee_custom_save_sleep_data(void);
-void cywee_custom_save_nap_data(void);
-void cywee_reset_history_daily_data(void);
-void cywee_check_acc(void);
-
-void cywee_custom_save_wear_data(void);
-#pragma pack()
+typedef struct
+{
+ uint32_t fall_asleep_timestamp; // 入睡
+ uint32_t wake_up_timestamp; // 出睡
+ uint16_t total_time; // 总时长
+} NAP_T;
+typedef struct
+{
+ uint32_t fall_asleep_timestamp; // 入睡
+ uint32_t wake_up_timestamp; // 出睡
+ uint16_t total_time; // 总时长
+} SLEEP_T;
+#pragma pack()
+void cywee_dml_get_gsensor_data(uint8_t cnt,gsenson_t t[]);
+void cywee_dml_activity_mode_setstatus(int cmd);
+void cywee_dml_oncharging_update(int oncharging_status);
+void cywee_dml_wearstatus_update(int wearstatus);
+void cywee_hrs_update(void);
+void cywee_dml_set_user_info(void);
+void cywee_dml_get_sleep_data(int cmd);
+void cywee_dml_reset_daily_data(void);
+void cywee_inactivity_mode_change(int mode);
+void cywee_dml_activity_mode_change(int mode);
+void cywee_dml_time_sync(void);
+void cywee_dml_hand_updown_switch(int cmd);
+void cywee_dml_ar_alert_switch(int cmd);
+
+void cywee_dml_step_history_save(uint32_t time);
+uint32_t cywee_dml_get_step_data(void);
+void cywee_dml_set_step_data(uint32_t data);
+
+void cywee_dml_stand_history_save(uint32_t time);
+void cywee_dml_calories_history_save(uint32_t time);
+void cywee_dml_distances_history_save(uint32_t time);
+void cywee_dml_fat_history_save(uint32_t time);
+int32_t cywee_dml_get_now_hour_data(void*value, uint8_t type);
+
+void cywee_dml_set_stand_falg(void);
+uint8_t cywee_dml_get_stand_falg(void);
+uint8_t cywee_dml_get_now_stand_count(void);
+void cywee_dml_set_calories_data(uint32_t data);
+int cywee_dml_get_calories_data(void);
+
+void cywee_dml_set_distance_data(uint32_t data);
+int cywee_dml_get_distance_data(void );
+
+void cywee_dml_set_fat_time_data(int time);
+int cywee_dml_get_fat_time_data(void);
+
+void cywee_dml_get_chipinfo(char *databuf,uint8_t len);
+void cywee_dml_set_sedentary_interval(int interval);
+void cywee_dml_set_sedentary_switch(int cmd);
+// void cywee_get_acc_switch(int cmd);
+void cywee_sensor_stop(void);
+uint8_t cywee_dml_get_active_state(void);
+uint8_t cywee_dml_get_static_state(void);
+void cywee_dml_restart_acc(void);
+void cywee_dml_log_switch(int cmd);
+void cywee_dml_get_version(char *databuf,uint8_t len);
+void cywee_dml_save_data(void);
+void cywee_dml_save_sleep_data(void);
+void cywee_dml_save_nap_data(void);
+void cywee_dml_reset_history_daily_data(void);
+void cywee_dml_check_acc(void);
+void cywee_custom_save_wear_data(void);
+#pragma pack()
/********************CYWEE DML*********************/
-
-
-
-
-
-
-
int cywee_main_dml(void);
-void cywee_int_handler(void);
-
-
+void cywee_dml_int_handler(void);
+act_result_t cywee_dml_get_act_data(void);
+act_ext_result_t cywee_dml_get_act_ext_data(void);
#ifdef __cplusplus
#if __cplusplus
#include "cmsis_os2.h"
#include "osal_msgqueue.h"
#include "osal_mutex.h"
-#include "ppg_service.h"
#include "custom_utils.h"
#include "sys/time.h"
#include "time.h"
#include "time.h"
#include "ConfigModelC.h"
#include "battery_hal.h"
-#ifdef FD230
-#include "sleep/include/SleepModelC.h"
-#endif
+
#include "custom_save_runtime.h"
+#include <sys/stat.h>
+
#ifdef SUPPORT_GNSS
#include "gnss_ctl.h"
#include "NMEA0183.h"
#ifdef SUPPORT_PPG_SERVICE
#include "ppg_hal.h"
+#include "ppg_service.h"
#endif
-#ifdef SUPPORT_BLE_SERVICE
-#include "bleInstruct.h"
-#endif
+#include "cywee_dml.h"
+
+#include "cywee_hal.h"
#define AP_ENABLE_DML_SDO_LISTEN
#define GSENSON_MSG_COUNT 64
-#define SLEEP_TIME_PATH "/user/userdata/sleep/%s/sleep_time.bin"
-#define SLEEP_STATUS_PATH "/user/userdata/sleep/%s/sleep_status.bin"
-
-#define NAP_PATH "/user/userdata/sleep/%s/nap.bin"
-#define SLEEP_DIR_PATH "/user/userdata/sleep/%s"
-
-#define SLEEP_DATA_DIR "/user/userdata/sleep/"
-
#define SLEEP_STATUS_LENGTH 50
#define WEAR_FILE_COUNT 50
-static gsenson_t gxyz_t;
static uint8_t gsenson_falg=0;
static uint16 num_falg=0;
static osTimerId_t g_sport_timer = NULL;
static bool g_sport_stat = false;
+
+static act_result_t c_activity_result_t = {0};
+static cywee_inactivity_result_t c_inactivity_result_t = {0};
+static cywee_inactivity_accumulate_time_t c_inactivity_accumulate_time_t = {0};
+static act_ext_result_t c_activity_result_extre_info_t = {0};
+
#define SPORT_CHECK_MS 1000
+
+#ifdef CYWEE_MAC_ACTIVE
+int cm__hs1__mac_c1_init(void);
+int cm__hs1__deinit(void);
+
+#else
+int cm__hs1__init(void);
+int cm__hs1__deinit(void);
+#endif
+
void cywee_gnss_update(void)
{
#ifdef SUPPORT_GNSS
#endif
}
-
void cywee_hrs_update(void)
{
uint8_t hrs_data = 0;
}
}
-
-#ifdef CYWEE_MAC_ACTIVE
-int cm__hs1__mac_c1_init(void);
-int cm__hs1__deinit(void);
-
-#else
-int cm__hs1__init(void);
-int cm__hs1__deinit(void);
-#endif
-
-void get_sleep_file_day(char *day)
+static void get_sleep_file_day(char *day)
{
uint32_t sleep_time = get_sleep_time_from_config_model();
uint32_t wake_up_time = get_wake_up_time_from_config_model();
uapi_get_YYMMDD_Time_extend(day, '\0', 0);
}
-void cywee_check_acc(void)
+void cywee_dml_check_acc(void)
{
if(!timeout)
{
- cywee_restart_acc();
+ cywee_dml_restart_acc();
}
else
{
update_nap_data(fall_asleep_timestamp,wake_up_timestamp,total_time);
}
-void cywee_set_sleep_time_data(cywee_inactivity_accumulate_time_t *sleep_data)
+static void cywee_set_sleep_time_data(cywee_inactivity_accumulate_time_t *sleep_data)
{
memset(&sleep_time, 0, sizeof(cywee_inactivity_accumulate_time_t));
memcpy_s(&sleep_time, sizeof(cywee_inactivity_accumulate_time_t), sleep_data, sizeof(cywee_inactivity_accumulate_time_t));
// CWM_OS_dbgPrintf("total_time[%d], total_deep_sleep_time[%d], total_mild_sleep_time[%d], total_rem_sleep_time[%d], total_wake_time[%d] \n",
// total_time,total_deep_sleep_time,total_mild_sleep_time,total_rem_sleep_time,total_wake_time);
- update_sleep_data(fall_asleep_timestamp,wake_up_timestamp,total_time);
+ // update_sleep_data(fall_asleep_timestamp,wake_up_timestamp,total_time);
}
-void cywee_save_sleep_stat_data(void)
+static void cywee_save_sleep_stat_data(void)
{
memset(status_file_path, 0, sizeof(status_file_path));
char day[12] = {0};
}
}
-void cywee_set_abs_static(void)
+static void cywee_set_abs_static(void)
{
//int time = get_config_heart_from_config_model();
memset(&scl, 0, sizeof(scl));
CWM_SettingControl(SCL_ABS_STATIC_CONFIG, &scl);
}
-void cywee_log_switch(int cmd)
+void cywee_dml_log_switch(int cmd)
{
if(cmd)
{
}
-void cywee_restart_acc(void)
+void cywee_dml_restart_acc(void)
{
uint32_t tm = 0;
uapi_get_timestampe_ss(&tm);
CWM_SettingControl(SCL_DML_DRV_ENABLE, &scl);
}
-uint8_t cywee_get_static_state(void)
+uint8_t cywee_dml_get_static_state(void)
{
return is_static_state;
}
-uint8_t cywee_get_active_state(void)
+uint8_t cywee_dml_get_active_state(void)
{
return cywee_is_active;
}
-void cywee_stop(void)
+void cywee_sensor_stop(void)
{
// cywee_switch = 0;
memset(&scl, 0, sizeof(scl));
CWM_SettingControl(SCL_DML_DRV_ENABLE, &scl);
}
-void cywee_get_acc_switch(int cmd)
-{
-}
-
-void cywee_set_sedentary_switch(int cmd)
+void cywee_dml_set_sedentary_switch(int cmd)
{
// CWM_OS_dbgPrintf("cywee_set_sedentary_switch : %d \n",cmd);
//设置久坐 0关,1开
CWM_SettingControl(SCL_SEDENTARY, &scl);
}
-void cywee_set_sedentary_interval(int interval)
+void cywee_dml_set_sedentary_interval(int interval)
{
sedentary_interval = interval;
}
-void cywee_get_chipinfo(char *databuf,uint8_t len)
+void cywee_dml_get_chipinfo(char *databuf,uint8_t len)
{
memcpy_s(databuf,len,chipInfo,strlen(chipInfo));
}
-void cywee_get_version(char *databuf,uint8_t len)
+void cywee_dml_get_version(char *databuf,uint8_t len)
{
memcpy_s(databuf,len,cywee_version,strlen(cywee_version));
}
-void cywee_save_data(void)
+void cywee_dml_save_data(void)
{
if(uapi_dev_runtime_get_goal_storage_status())
{
}
uapi_dev_runtime_set_goal_storage_status(1);
-#ifdef SUPPORT_BLE_SERVICE
int step=history_step+stepcount;
CWM_OS_saveData(&step,sizeof(int),CYWEE_SAVE_DATA_STEP);
CWM_OS_OneHourAgo_saveData(&history_step_,sizeof(int),CYWEE_SAVE_DATA_STEP);
int fat=history_fat+new_fat;
CWM_OS_saveData(&fat,sizeof(int),CYWEE_SAVE_DATA_FAT);
CWM_OS_OneHourAgo_saveData(&history_fat_,sizeof(uint16_t),CYWEE_SAVE_DATA_FAT);
-#endif
+
uapi_dev_runtime_set_goal_storage_status(0);
}
-void cywee_restoreData(void)
+static void cywee_restoreData(void)
{
-#ifdef SUPPORT_BLE_SERVICE
CWM_OS_restoreData(&history_step,sizeof(int),CYWEE_SAVE_DATA_STEP);
CWM_OS_OneHourAgo_restoreData(&history_step_,sizeof(int),CYWEE_SAVE_DATA_STEP);
CWM_OS_restoreData(&history_fat,sizeof(int),CYWEE_SAVE_DATA_FAT);
CWM_OS_OneHourAgo_restoreData(&history_fat_,sizeof(uint16_t),CYWEE_SAVE_DATA_FAT);
-#endif
- //WM_OS_restoreData(int* data, uint32_t len,uint8_t type)(int* data, uint32_t len,uint8_t type);
+
+ //CWM_OS_restoreData(int* data, uint32_t len,uint8_t type)(int* data, uint32_t len,uint8_t type);
}
-void set_step_data(uint32_t data)
+void cywee_dml_set_step_data(uint32_t data)
{
stepcount=data;
}
-
-uint32_t get_step_data(void)
+uint32_t cywee_dml_get_step_data(void)
{
-
return stepcount+history_step;
}
-
-
-int get_calories_data(void)
+int cywee_dml_get_calories_data(void)
{
return new_calories+history_calories;
}
-void set_calories_data(uint32_t data)
+void cywee_dml_set_calories_data(uint32_t data)
{
new_calories=data;
}
-void set_distance_data(uint32_t data)
+void cywee_dml_set_distance_data(uint32_t data)
{
new_distance=data;
}
-int get_distance_data(void )
+int cywee_dml_get_distance_data(void )
{
return new_distance+history_distances;
}
-void set_fat_time_data(int time)
+void cywee_dml_set_fat_time_data(int time)
{
new_fat += time;
}
-int get_fat_time_data(void)
+int cywee_dml_get_fat_time_data(void)
{
return new_fat+history_fat;
}
-
-
-void set_stand_falg(void)
+void cywee_dml_set_stand_falg(void)
{
stand_falg=1;
}
-uint8_t get_stand_falg(void)
+uint8_t cywee_dml_get_stand_falg(void)
{
return stand_falg;
}
-uint8_t get_now_stand_count(void)
+uint8_t cywee_dml_get_now_stand_count(void)
{
return get_stand_count();
}
-void stand_history_save(uint32_t time) {
+void cywee_dml_stand_history_save(uint32_t time) {
// CWM_OS_dbgPrintf("stand_history is saving\n");
CWM_OS_saveData_STAND_history(&stand_falg,sizeof(int),time);
}
-void step_history_save(uint32_t time)
-{
-#ifdef SUPPORT_BLE_SERVICE
- int data = get_step_data();
- // CWM_OS_dbgPrintf("step_history is saving\n");
- CWM_OS_saveData_history(&data,&history_step_,sizeof(int),CYWEE_SAVE_DATA_STEP,time);
-#endif
-}
-
-
-void calories_history_save(uint32_t time)
-{
-#ifdef SUPPORT_BLE_SERVICE
- int data= get_calories_data();
- float history_calories = (float)data;
- // CWM_OS_dbgPrintf("history_calories is saving\n");
- CWM_OS_saveData_history(&history_calories,&history_calories_,sizeof(float),CYWEE_SAVE_DATA_CALORIES,time);
-#endif
-}
-
-void distances_history_save(uint32_t time)
-{
-#ifdef SUPPORT_BLE_SERVICE
- int data= get_distance_data();
- float history_distances_now = (float)data / 1000.0;
- // CWM_OS_dbgPrintf("history_distances is saving\n");
- CWM_OS_saveData_history(&history_distances_now,&history_distances_,sizeof(float),CYWEE_SAVE_DATA_DISTANCE,time);
-#endif
-}
-
-void fat_history_save(uint32_t time)
-{
-#ifdef SUPPORT_BLE_SERVICE
- int data= get_fat_time_data();
- int16_t temp_data=0;
- temp_data = data / 60;
- // CWM_OS_dbgPrintf("history_fat is saving\n");
- if(temp_data-history_fat_>60 || temp_data-history_fat_<0)
- {
- history_fat_=0;
- return;
- }
- CWM_OS_saveData_history(&temp_data,&history_fat_,sizeof(uint16_t),CYWEE_SAVE_DATA_FAT,time);
-#endif
-}
-int32_t get_now_hour_data(void*value, uint8_t type)
+int32_t cywee_dml_get_now_hour_data(void*value, uint8_t type)
{
int data;
float f_data;
int16_t data_;
switch (type)
{
-#ifdef SUPPORT_BLE_SERVICE
case CYWEE_SAVE_DATA_STEP:
- data= get_step_data()-history_step_;
+ data = cywee_dml_get_step_data()-history_step_;
if(data<0)
return 0;
memcpy_s(value,4,&data,4);
return 1;
case CYWEE_SAVE_DATA_CALORIES:
- data =get_calories_data();
+ data = cywee_dml_get_calories_data();
f_data=(float)data-history_calories_;
if(f_data<0)
return 0;
memcpy_s(value,4,&f_data,4);
return 1;
case CYWEE_SAVE_DATA_DISTANCE:
- data= get_distance_data();
+ data= cywee_dml_get_distance_data();
f_data=(float)data/1000.0-history_distances_;
if(f_data<0)
return 0;
return 1;
case CYWEE_SAVE_DATA_FAT:
- data= get_fat_time_data();
+ data= cywee_dml_get_fat_time_data();
data_=data/60-history_fat_;
if(data_<0 || data_>60)
return 0;
memcpy_s(value,2,&data_,2);
return 1;
-#endif
default:
break;
}
return 0;
}
-void cywee_goal_history_save(void)
+
+void cywee_dml_step_history_save(uint32_t time)
{
- // stand_history_save();
- // calories_history_save();
- // fat_history_save();
- // distances_history_save();
- // step_history_save();
+ int data = get_step_data();
+ // CWM_OS_dbgPrintf("step_history is saving\n");
+ CWM_OS_saveData_history(&data,&history_step_,sizeof(int),CYWEE_SAVE_DATA_STEP,time);
}
+void cywee_dml_calories_history_save(uint32_t time)
+{
+ int data = cywee_dml_get_calories_data();
+ float history_calories = (float)data;
+ // CWM_OS_dbgPrintf("history_calories is saving\n");
+ CWM_OS_saveData_history(&history_calories,&history_calories_,sizeof(float),CYWEE_SAVE_DATA_CALORIES,time);
+}
+
+void cywee_dml_distances_history_save(uint32_t time)
+{
+ int data= cywee_dml_get_distance_data();
+ float history_distances_now = (float)data / 1000.0;
+ // CWM_OS_dbgPrintf("history_distances is saving\n");
+ CWM_OS_saveData_history(&history_distances_now,&history_distances_,sizeof(float),CYWEE_SAVE_DATA_DISTANCE,time);
+}
-void cywee_ar_alert_switch(int cmd)
+void cywee_dml_fat_history_save(uint32_t time)
+{
+ int data= cywee_dml_get_fat_time_data();
+ int16_t temp_data=0;
+ temp_data = data / 60;
+ // CWM_OS_dbgPrintf("history_fat is saving\n");
+ if(temp_data-history_fat_>60 || temp_data-history_fat_<0)
+ {
+ history_fat_=0;
+ return;
+ }
+ CWM_OS_saveData_history(&temp_data,&history_fat_,sizeof(uint16_t),CYWEE_SAVE_DATA_FAT,time);
+}
+
+void cywee_dml_ar_alert_switch(int cmd)
{
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
CWM_SettingControl(SCL_AR_ALERT_CONFIG, &scl);
}
-void cywee_hand_updown_switch(int cmd)
+void cywee_dml_hand_updown_switch(int cmd)
{
if(cmd == 1)
CWM_Sensor_Enable(IDX_ALGO_WATCH_HANDUP);
CWM_Sensor_Disable(IDX_ALGO_WATCH_HANDUP);
}
-void cywee_reset_history_daily_data(void)
+void cywee_dml_reset_history_daily_data(void)
{
stepcount=0;
new_distance=0;
// new_fat = 0; //当前燃脂数据
}
-void cywee_reset_daily_data(void)
+void cywee_dml_reset_daily_data(void)
{
memset(&scl, 0, sizeof(scl));
CWM_SettingControl(SCL_RESET_DAILY_INFO, &scl);
}
//INT[1] : 0 立即输出,但不中止睡眠。 1 立即输出且中止睡眠
-void cywee_get_sleep_data(int cmd)
+void cywee_dml_get_sleep_data(int cmd)
{
// CWM_OS_dbgPrintf("cywee_get_sleep_data\n");
memset(&scl, 0, sizeof(scl));
}
//1.age 2.sex 3.weight 4.height 5.method
-void cywee_set_user_info(void)
+void cywee_dml_set_user_info(void)
{
int user_info[5] = {0};
get_user_info_from_config_model(user_info);
int minute;// int[5] = minute (0 - 59)
int second;// int[6] = second (0 - 59)
*/
-void cywee_time_sync(void)
+void cywee_dml_time_sync(void)
{
time_t rawtime;
struct tm* timeinfo;
uapi_create_folder(dir_path);
}
-void cywee_oncharging_update(int oncharging_status)
+void cywee_dml_oncharging_update(int oncharging_status)
{
// CWM_OS_dbgPrintf("oncharging : %d\r\n",oncharging_status);
memset(&csd, 0, sizeof(CUSTOM_ON_CHARGING));
CWM_CustomSensorInput(&csd);
}
-void cywee_wearstatus_update(int wearstatus)
+void cywee_dml_wearstatus_update(int wearstatus)
{
#if 1
uapi_dev_runtime_set_wear_status(wearstatus);
CWM_CustomSensorInput(&csd);
// CWM_OS_dbgPrintf("111wearstatus : %d\r\n",wearstatus);
- do_custom_fileoperate_service_check_msg(
- CUSTOM_FILEOPERATE_MSG_TYPE_WEAR_DATA_SAVE, NULL, 0);
#endif
}
//0:resume , 1:pause
-void activity_mode_setstatus(int cmd)
+void cywee_dml_activity_mode_setstatus(int cmd)
{
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
if(hrs_mode_state == 0)
{
+#ifdef SUPORT_PPG_SERVICE
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_TEST);
+#endif
hrs_mode_state = 1;
uapi_save_runtime_log(RUNTIME_LOG_HEART_SPORT_MEASURE);
}
else
{
+#ifdef SUPORT_PPG_SERVICE
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);
+#endif
hrs_mode_state = 0;
uapi_save_runtime_log(RUNTIME_LOG_OXYGEN_SPORT_MEASURE_END);
}
}
-void cywee_inactivity_mode_change(int mode)
+void cywee_dml_inactivity_mode_change(int mode)
{
// cywee_time_sync();
clean_sleep_data();
}
}
-void cywee_activity_mode_change(int mode)
+void cywee_dml_activity_mode_change(int mode)
{
if(mode != SPORT_ACTIVE_MODE_NORMAL)
cywee_sport_timer_start_check(SPORT_CHECK_MS);
}
}
-void get_gsonsen_xyz(gsenson_t *t)
+void cywee_dml_get_gsensor_data(uint8_t cnt,gsenson_t t[])
{
- // if(osal_mutex_trylock(&mutex_gsenson_queue)==0)
- // {
- // CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
- // return;
- // }
- t->x = gxyz_t.x;
- t->y = gxyz_t.y;
- t->z = gxyz_t.z;
- //osal_mutex_unlock(&mutex_gsenson_queue);
-}
+ if(t == NULL)
+ return;
-void gsensor_get_n_data(uint8_t cnt,gsenson_t t[])
-{
for(int i=0;i<cnt;i++)
{
// if(osal_mutex_trylock(&mutex_gsenson_queue)==0)
//static int flag=32;
void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
// cywee_msg_callback_t cywee_func;
- cywee_activity_result_t c_activity_result_t;
- cywee_inactivity_result_t c_inactivity_result_t;
- cywee_inactivity_accumulate_time_t c_inactivity_accumulate_time_t;
- cywee_activity_result_extre_info_t c_activity_result_extre_info_t;
uint32_t tm = 0;
switch (sensorEVT->sensorType) {
case IDX_ACCEL:
- gxyz_t.x = sensorEVT->fData[0];
- gxyz_t.y = sensorEVT->fData[1];
- gxyz_t.z = sensorEVT->fData[2];
CWM_OS_dbgPrintf("acc: x=%.3f, y=%.3f, z=%.3f\n",
sensorEVT->fData[0],
CWM_OS_dbgPrintf("CUSTOM_HEARTRATE !!! \r\n");
if((int)sensorEVT->fData[2] == 1)
{
+#ifdef SUPORT_PPG_SERVICE
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_TEST);
+#endif
hrs_mode_state = 1;
uapi_save_runtime_log(RUNTIME_LOG_HEART_SPORT_MEASURE);
// hrs = 0;//运动开始,清零心率
}
else
{
+#ifdef SUPORT_PPG_SERVICE
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);
+#endif
hrs_mode_state = 0;
uapi_save_runtime_log(RUNTIME_LOG_OXYGEN_SPORT_MEASURE_END);
}
// cywee_func = cywee_get_send_msg_callback_func();
if((int)sensorEVT->fData[0] == 100)
{
- memset(&c_activity_result_extre_info_t,0,sizeof(cywee_activity_result_extre_info_t));
+ memset(&c_activity_result_extre_info_t,0,sizeof(act_ext_result_t));
c_activity_result_extre_info_t.avg_step_freq = (int)sensorEVT->fData[1];
c_activity_result_extre_info_t.avg_step_len = (float)sensorEVT->fData[2];
c_activity_result_extre_info_t.MHR_zone = (int)sensorEVT->fData[13];
c_activity_result_extre_info_t.distance_motion = (int)sensorEVT->fData[14];
- // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,&c_activity_result_extre_info_t,sizeof(cywee_activity_result_extre_info_t));
- //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(cywee_activity_result_extre_info_t));
+ // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,&c_activity_result_extre_info_t,sizeof(act_ext_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(act_ext_result_t));
}else if((int)sensorEVT->fData[0] == 5001)
{
- memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t));
+ memset(&c_activity_result_t,0,sizeof(act_result_t));
c_activity_result_t.activity_mode = (int)sensorEVT->fData[0];
c_activity_result_t.calories = (int)sensorEVT->fData[1];
c_activity_result_t.MHR_zone = (int)sensorEVT->fData[6];
// c_activity_result_t.hrs = hrs;
// hrs = 0; //每次上报完 清除心率值
- // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(act_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
}else if((int)sensorEVT->fData[0] == 102)
{
}else{
stepcount = (int)sensorEVT->fData[1];
- memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t));
+ memset(&c_activity_result_t,0,sizeof(act_result_t));
c_activity_result_t.activity_mode = (int)sensorEVT->fData[0];
c_activity_result_t.steps = stepcount;
c_activity_result_t.distance = (int)sensorEVT->fData[2];
c_activity_result_t.pace = (int)(sensorEVT->fData[7] * 60);
// c_activity_result_t.hrs = hrs;
// hrs = 0; //每次上报完 清除心率值
- // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
- //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(act_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
//CustomEventPublish(TOPIC_EVENT_STEPDATA_UPDATE,&stepcount,sizeof(int));
}
break;
// sleep_flag_t.timestamp = abs_static_timestampe;
// uapi_save_sleep_flag(&sleep_flag_t,sizeof(SLEEP_FLAG_T));
uapi_dev_runtime_set_absolute_static_status(1);
- cywee_get_sleep_data(1);
+ cywee_dml_get_sleep_data(1);
}
else
{
- cywee_inactivity_mode_change(INACTIVITY_MODE_NOTHING);
+ cywee_dml_inactivity_mode_change(INACTIVITY_MODE_NOTHING);
LOS_Msleep(50);
- cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
+ cywee_dml_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
}
}
rawdata[AccdataCount].acc_y = pSdo->acc_data[1];
rawdata[AccdataCount].acc_z = pSdo->acc_data[2];
- gxyz_t.x = pSdo->acc_data[0];
- gxyz_t.y = pSdo->acc_data[1];
- gxyz_t.z = pSdo->acc_data[2];
-
-
if(num_falg==GSENSON_MSG_COUNT)
{
left_falg++;
CWM_SettingControl(SCL_INACTIVITY_CONFIG, &scl);
//设置运动识别
- cywee_ar_alert_switch(get_motion_recognition_from_config_model());
+ cywee_dml_ar_alert_switch(get_motion_recognition_from_config_model());
//设置绝对静止
cywee_set_abs_static();
//CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
cywee_restoreData();
- cywee_set_user_info();
+ cywee_dml_set_user_info();
- cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
+ cywee_dml_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
- cywee_oncharging_update(get_charge_stat()); //初始化时检查充电状态
+ cywee_dml_oncharging_update(get_charge_stat()); //初始化时检查充电状态
g_sport_timer = osTimerNew((osTimerFunc_t)cywee_service_check_timer_callback, osTimerPeriodic, NULL, NULL);
//cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP);
#endif
-void cywee_int_handler(void)
+void cywee_dml_int_handler(void)
{
timeout = 1;
// if(cywee_switch == 1)
}
-void cywee_custom_save_sleep_data(void)
+void cywee_dml_save_sleep_data(void)
{
uapi_dev_runtime_set_sleep_storage_status(1);
cywee_save_sleep_time_data(sleep_time);
uapi_dev_runtime_set_sleep_storage_status(0);
}
-void cywee_custom_save_nap_data(void)
+void cywee_dml_save_nap_data(void)
{
uapi_dev_runtime_set_sleep_storage_status(1);
cywee_save_nap_data(sleep_time);
uapi_dev_runtime_set_sleep_storage_status(0);
}
-void wear_file_check(SLEEP_STAT_T newStruct, const char *filename)
+void static wear_file_check(SLEEP_STAT_T newStruct, const char *filename)
{
FILE *fp;
uint16_t count = 0;
fclose(fp);
}
-
void cywee_custom_save_wear_data(void)
{
// int len = uapi_get_file_size("user/userdata/wear.bin");
wear_file_check(data,"user/userdata/wear.bin");
}
-uint8_t cywee_dml_get_steps(void)
-{return 0;}
+act_result_t cywee_dml_get_act_data(void)
+{
+ act_result_t data = {0};
+ memcpy_s(&data,sizeof(act_result_t),&c_activity_result_t,sizeof(act_result_t));
+ return data;
+}
+
+act_ext_result_t cywee_dml_get_act_ext_data(void)
+{
+ act_ext_result_t data = {0};
+ memcpy_s(&data,sizeof(act_ext_result_t),&c_activity_result_t,sizeof(act_ext_result_t));
+ return data;
+}
+
+void CWM_OS_restoreData(int* data, uint32_t len,uint8_t type)
+{
+ FILE * fp=NULL;
+ switch (type)
+ {
+ case CYWEE_SAVE_DATA_CALORIES:
+ fp = fopen(CWM_CALORIES_DATA_PATH,"rb");
+ break;
+ case CYWEE_SAVE_DATA_STEP:
+ fp = fopen(CWM_STEP_DATA_PATH,"rb");
+ break;
+ case CYWEE_SAVE_DATA_DISTANCE:
+ fp = fopen(CWM_DISTANCE_DATA_PATH,"rb");
+ break;
+ case CYWEE_SAVE_DATA_FAT:
+ fp = fopen(CWM_FAT_DATA_PATH,"rb");
+ break;
+ default:
+ break;
+ }
+
+
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("%s open fail\n",CWM_HISTORY_DATA_PATH);;
+ return;
+ }
+ int ret =fread(data,1,len,fp);
+
+ //CWM_OS_dbgPrintf("CWM_OS_restoreData fread failed %d %d\n",ret,*data);
+
+ fclose(fp);
+}
+
+void CWM_OS_OneHourAgo_restoreData(void* data, uint32_t len,uint8_t type){
+
+
+ FILE * fp=NULL;
+ switch (type)
+ {
+ case CYWEE_SAVE_DATA_CALORIES:
+ fp = fopen(CWM_CALORIES_DATA_PATH_AGO,"rb");
+ break;
+ case CYWEE_SAVE_DATA_STEP:
+ fp = fopen(CWM_STEP_DATA_PATH_AGO,"rb");
+ break;
+ case CYWEE_SAVE_DATA_DISTANCE:
+ fp = fopen(CWM_DISTANCE_DATA_PATH_AGO,"rb");
+ break;
+ case CYWEE_SAVE_DATA_FAT:
+ fp = fopen(CWM_FAT_DATA_PATH_AGO,"rb");
+ break;
+ default:
+ break;
+ }
+
+
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("%s open fail\n",CWM_HISTORY_DATA_PATH);;
+ return;
+ }
+ int ret =fread(data,1,len,fp);
+
+ //CWM_OS_dbgPrintf("CWM_OS_restoreData fread failed %d %d\n",ret,*(int*)data);
+
+ fclose(fp);
+}
+
+void CWM_OS_saveData(int* data, uint32_t len,uint8_t type){
+
+ struct stat info;
+
+ if (stat(CWM_DATA_DIR_PATH, &info) != 0)
+ {
+ if (mkdir(CWM_DATA_DIR_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+ FILE * fp=NULL;
+ switch (type)
+ {
+ case CYWEE_SAVE_DATA_CALORIES:
+ fp = fopen(CWM_CALORIES_DATA_PATH,"wb");
+ break;
+ case CYWEE_SAVE_DATA_STEP:
+ fp = fopen(CWM_STEP_DATA_PATH,"wb");
+ break;
+ case CYWEE_SAVE_DATA_DISTANCE:
+ fp = fopen(CWM_DISTANCE_DATA_PATH,"wb");
+ break;
+ case CYWEE_SAVE_DATA_FAT:
+ fp = fopen(CWM_FAT_DATA_PATH,"wb");
+ break;
+
+ default:
+ break;
+ }
+
+
+
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("%s open fail\n",CWM_STEP_DATA_PATH);
+ return;
+ }
+ int ret =fwrite(data,1,len,fp);
+
+ CWM_OS_dbgPrintf("CWM_OS_saveData fwrite failed %d %d\n",ret,*data);
+
+ fclose(fp);
+}
+
+
+void CWM_OS_OneHourAgo_saveData(void* data, uint32_t len,uint8_t type){
+
+ struct stat info;
+
+ if (stat(CWM_DATA_DIR_PATH, &info) != 0)
+ {
+ if (mkdir(CWM_DATA_DIR_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
+ {
+ return ; // Failed to create folder
+ }
+ }
+ FILE * fp=NULL;
+ switch (type)
+ {
+ case CYWEE_SAVE_DATA_CALORIES:
+ fp = fopen(CWM_CALORIES_DATA_PATH_AGO ,"wb");
+ break;
+ case CYWEE_SAVE_DATA_STEP:
+ fp = fopen(CWM_STEP_DATA_PATH_AGO ,"wb");
+ break;
+ case CYWEE_SAVE_DATA_DISTANCE:
+ fp = fopen(CWM_DISTANCE_DATA_PATH_AGO ,"wb");
+ break;
+ case CYWEE_SAVE_DATA_FAT:
+ fp = fopen(CWM_FAT_DATA_PATH_AGO ,"wb");
+ break;
+
+ default:
+ break;
+ }
+
+ if(fp==NULL)
+ {
+ CWM_OS_dbgPrintf("%s open fail\n",CWM_STEP_DATA_PATH_AGO );
+ return;
+ }
+ int ret =fwrite(data,1,len,fp);
+
+ //CWM_OS_dbgPrintf("CWM_OS_saveData fwrite failed %d %d\n",ret,*(int *)data);
+
+ fclose(fp);
+}
+
+uint8_t time_is_repetition(uint32_t time,void *data,char *path,void *data_array,uint8_t type)
+{
+ uint8_t is_repetition=0;
+
+ if(type==0)
+ {
+ time_and_32_date_t * p= (time_and_32_date_t*)data_array;
+ FILE *fp=fopen(path,"rb+");
+ if (fp == NULL) return 0;
+
+ fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+ uint32_t size = ftell(fp); // 获取当前文件指针位置,即文件大小
+ fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+
+ for(int i=0;i<size/8;i++)
+ {
+ fread(&p[i].time,sizeof(uint32_t),1,fp);
+ fread(&p[i].data,sizeof(uint32_t),1,fp);
+ if(p[i].time==time)
+ {
+ is_repetition++;
+ uint32_t _32_data=*(uint32_t *)data;
+ p[i].data+=_32_data;
+ }
+ }
+ fclose(fp);
+
+ }
+ else if(type==1)
+ {
+
+ time_and_float_date_t * p= (time_and_float_date_t*)data_array;
+ FILE *fp=fopen(path,"rb+");
+ if (fp == NULL) return 0;
+
+ fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+ uint32_t size = ftell(fp); // 获取当前文件指针位置,即文件大小
+ fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+
+ for(int i=0;i<size/8;i++)
+ {
+ fread(&p[i].time,sizeof(uint32_t),1,fp);
+ fread(&p[i].data,sizeof(float),1,fp);
+ if(p[i].time==time)
+ {
+ is_repetition++;
+ float _float_data=*(float *)data;
+ p[i].data+=_float_data;
+ }
+ }
+ fclose(fp);
+ }
+ else if(type==2)
+ {
+
+ time_and_16_date_t * p= (time_and_16_date_t*)data_array;
+ FILE *fp=fopen(path,"rb+");
+ if (fp == NULL) return 0;
+
+ fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
+ uint32_t size = ftell(fp); // 获取当前文件指针位置,即文件大小
+ fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
+
+ for(int i=0;i<size/6;i++)
+ {
+ fread(&p[i].time,sizeof(uint32_t),1,fp);
+ fread(&p[i].data,sizeof(uint16_t),1,fp);
+ if(p[i].time==time)
+ {
+ is_repetition++;
+ uint16_t _16_data=*(uint16_t *)data;
+ p[i].data+=_16_data;
+ }
+ }
+ fclose(fp);
+ }
+
+ return is_repetition;
+}
+
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
+#===============================================================================
+
+set(COMPONENT_NAME "cywee_hal")
+
+set(PUBLIC_HEADER
+${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/cywee_hal.c
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+set(PUBLIC_DEFINES
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
--- /dev/null
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-04-08 14:53:31
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2025-05-20 10:45:25
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/service/cywee_hal.c
+ * @Description:
+ *
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
+ */
+
+#include <stdio.h>
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include "cywee_hal.h"
+
+#include "custom_utils.h"
+
+#ifdef CYWEE_DML
+#include "cywee_dml.h"
+#endif
+
+// cywee_msg_callback_t g_cywee_send_msg_toUI = NULL;
+
+// uint32_t cywee_register_msg_callback(cywee_msg_callback_t cywee_func)
+// {
+// g_cywee_send_msg_toUI = cywee_func;
+// return 0;
+// }
+
+// cywee_msg_callback_t cywee_get_send_msg_callback_func(void)
+// {
+// return g_cywee_send_msg_toUI;
+// }
+
+void cywee_start(void)
+{
+#ifdef CYWEE_DML
+ cywee_main_dml();
+#endif
+}
+
+void cywee_stop(void)
+{
+#ifdef CYWEE_DML
+ cywee_sensor_stop();
+#endif
+}
+
+void cywee_int_handler(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_int_handler();
+#endif
+}
+
+act_result_t cywee_get_act_data(void)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_act_data();
+#endif
+}
+act_ext_result_t cywee_get_act_ext_data(void)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_act_ext_data();
+#endif
+}
+
+void cywee_activity_mode_change(int mode)
+{
+#ifdef CYWEE_DML
+ cywee_dml_activity_mode_change(mode);
+#endif
+}
+
+void cywee_inactivity_mode_change(int mode)
+{
+#ifdef CYWEE_DML
+ cywee_dml_inactivity_mode_change(mode);
+#endif
+}
+
+void cywee_activity_mode_setstatus(int mode)
+{
+#ifdef CYWEE_DML
+ cywee_dml_activity_mode_setstatus(mode);
+#endif
+}
+
+void cywee_get_gsensor_data(uint8_t cnt,gsenson_t *data)
+{
+#ifdef CYWEE_DML
+ cywee_dml_get_gsensor_data(cnt,data);
+#endif
+}
+
+void cywee_wearstatus_update(int wearstatus)
+{
+#ifdef CYWEE_DML
+
+ cywee_dml_wearstatus_update(wearstatus);
+
+ do_custom_fileoperate_service_check_msg(
+ CUSTOM_FILEOPERATE_MSG_TYPE_WEAR_DATA_SAVE, NULL, 0);
+#endif
+}
+
+void cywee_oncharging_update(int oncharging_status)
+{
+#ifdef CYWEE_DML
+ cywee_dml_oncharging_update(oncharging_status);
+#endif
+}
+
+void cywee_time_sync(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_time_sync();
+#endif
+}
+
+void cywee_reset_daily_data(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_reset_daily_data();
+#endif
+}
+
+void cywee_hand_updown_switch(int cmd)
+{
+#ifdef CYWEE_DML
+ cywee_dml_hand_updown_switch(cmd);
+#endif
+}
+
+void cywee_get_sleep_data(int cmd)
+{
+#ifdef CYWEE_DML
+ cywee_dml_get_sleep_data(cmd);
+#endif
+}
+
+void cywee_ar_alert_switch(int cmd)
+{
+#ifdef CYWEE_DML
+ cywee_dml_ar_alert_switch(cmd);
+#endif
+}
+
+void cywee_check_acc(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_check_acc();
+#endif
+}
+
+void cywee_log_switch(int cmd)
+{
+#ifdef CYWEE_DML
+ cywee_dml_log_switch(cmd);
+#endif
+}
+
+uint8_t cywee_get_static_state(void)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_static_state();
+#endif
+ return 0;
+}
+
+void cywee_set_sedentary_switch(int cmd)
+{
+#ifdef CYWEE_DML
+ cywee_dml_set_sedentary_switch(cmd);
+#endif
+}
+
+void cywee_set_sedentary_interval(int interval)
+{
+#ifdef CYWEE_DML
+ cywee_dml_set_sedentary_interval(interval);
+#endif
+}
+
+void cywee_get_version(char *databuf,uint8_t len)
+{
+#ifdef CYWEE_DML
+ cywee_dml_get_version(databuf,len);
+#endif
+}
+
+void cywee_get_chipinfo(char *databuf,uint8_t len)
+{
+#ifdef CYWEE_DML
+ cywee_dml_get_chipinfo(databuf,len);
+#endif
+}
+
+uint8_t cywee_get_active_state(void)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_active_state();
+#endif
+ return 0;
+}
+
+void cywee_restart_acc(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_restart_acc();
+#endif
+}
+
+void cywee_custom_save_sleep_data(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_save_sleep_data();
+#endif
+}
+
+void cywee_custom_save_nap_data(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_save_nap_data();
+#endif
+}
+
+void cywee_reset_history_daily_data(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_reset_history_daily_data();
+#endif
+}
+
+void cywee_set_user_info(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_set_user_info();
+#endif
+}
+
+void cywee_fat_history_save(uint32_t time)
+{
+#ifdef CYWEE_DML
+ cywee_dml_fat_history_save(time);
+#endif
+}
+
+void cywee_step_history_save(uint32_t time)
+{
+#ifdef CYWEE_DML
+ cywee_dml_step_history_save(time);
+#endif
+}
+
+uint32_t cywee_get_step_data(void)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_step_data();
+#endif
+}
+
+void cywee_set_step_data(uint32_t data)
+{
+#ifdef CYWEE_DML
+ cywee_dml_set_step_data(data);
+#endif
+}
+
+void cywee_stand_history_save(uint32_t time)
+{
+#ifdef CYWEE_DML
+ cywee_dml_stand_history_save(time);
+#endif
+}
+
+void cywee_calories_history_save(uint32_t time)
+{
+#ifdef CYWEE_DML
+ cywee_dml_calories_history_save(time);
+#endif
+}
+
+void cywee_distances_history_save(uint32_t time)
+{
+#ifdef CYWEE_DML
+ cywee_dml_distances_history_save(time);
+#endif
+}
+
+int32_t cywee_get_now_hour_data(void*value, uint8_t type)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_now_hour_data(value,type);
+#endif
+}
+
+void cywee_set_stand_falg(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_set_stand_falg();
+#endif
+}
+
+uint8_t cywee_get_stand_falg(void)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_stand_falg();
+#endif
+}
+
+uint8_t cywee_get_now_stand_count(void)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_now_stand_count();
+#endif
+}
+
+void cywee_set_calories_data(uint32_t data)
+{
+#ifdef CYWEE_DML
+ cywee_dml_set_calories_data(data);
+#endif
+}
+
+int cywee_get_calories_data(void)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_calories_data();
+#endif
+}
+
+void cywee_set_distance_data(uint32_t data)
+{
+#ifdef CYWEE_DML
+ cywee_dml_set_distance_data(data);
+#endif
+}
+
+int cywee_get_distance_data(void)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_distance_data();
+#endif
+}
+
+void cywee_set_fat_time_data(int time)
+{
+#ifdef CYWEE_DML
+ cywee_dml_set_fat_time_data(time);
+#endif
+}
+
+int cywee_get_fat_time_data(void)
+{
+#ifdef CYWEE_DML
+ return cywee_dml_get_fat_time_data();
+#endif
+}
+
+void cywee_save_data(void)
+{
+#ifdef CYWEE_DML
+ cywee_dml_save_data();
+#endif
+}
\ No newline at end of file
--- /dev/null
+/**
+ * Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
+ *
+ * Description: Test adc header \n
+ * Author: @CompanyNameTag \n
+ * History: \n
+ * 2022-08-16, Create file. \n
+ */
+
+#ifndef CYWEE_HAL_H__
+#define CYWEE_HAL_H__
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#include "stdint.h"
+#include "errcode.h"
+
+
+
+#define SLEEP_TIME_PATH "/user/userdata/sleep/%s/sleep_time.bin"
+#define SLEEP_STATUS_PATH "/user/userdata/sleep/%s/sleep_status.bin"
+#define NAP_PATH "/user/userdata/sleep/%s/nap.bin"
+#define SLEEP_DIR_PATH "/user/userdata/sleep/%s"
+#define SLEEP_DATA_DIR "/user/userdata/sleep/"
+
+#define CWM_STEP_DATA_PATH_AGO "/user/userdata/sport/stepcount_ago.bin"
+#define CWM_CALORIES_DATA_PATH_AGO "/user/userdata/sport/caloriescount_ago.bin"
+#define CWM_DISTANCE_DATA_PATH_AGO "/user/userdata/sport/distancecount_ago.bin"
+#define CWM_FAT_DATA_PATH_AGO "/user/userdata/sport/fatcount_ago.bin"
+
+#define CWM_STEP_DATA_PATH "/user/userdata/sport/stepcount.bin"
+#define CWM_CALORIES_DATA_PATH "/user/userdata/sport/caloriescount.bin"
+#define CWM_DISTANCE_DATA_PATH "/user/userdata/sport/distancecount.bin"
+#define CWM_FAT_DATA_PATH "/user/userdata/sport/fatcount.bin"
+
+
+
+#define CWM_HISTORY_DATA_PATH "/user/userdata/goal/step/step_"
+#define CWM_HISTORY_DATA_CALORIES_PATH "/user/userdata/goal/calories/calories_"
+#define CWM_HISTORY_DATA_DISTANCE_PATH "/user/userdata/goal/distance/distance_"
+#define CWM_HISTORY_STAND_DATA_PATH "/user/userdata/goal/stand/stand_"
+#define CWM_HISTORY_DATA_FAT_PATH "/user/userdata/goal/fat/fat_"
+#define GOAL_DATA_CONFIG_DIR "/user/userdata/goal"
+#define GOAL_DATA_CONFIG_DIR_STEP "/user/userdata/goal/step"
+#define GOAL_DATA_CONFIG_DIR_DISTANCE "/user/userdata/goal/distance"
+#define GOAL_DATA_CONFIG_DIR_STAND "/user/userdata/goal/stand"
+#define GOAL_DATA_CONFIG_DIR_FAT "/user/userdata/goal/fat"
+#define GOAL_DATA_CONFIG_DIR_CALORIES "/user/userdata/goal/calories"
+#define CWM_DATA_DIR_PATH "/user/userdata/sport"
+
+typedef struct {
+ float x;
+ float y;
+ float z;
+} gsenson_t;
+
+typedef enum {
+ CYWEE_SAVE_DATA_STEP,
+ CYWEE_SAVE_DATA_DISTANCE,
+ CYWEE_SAVE_DATA_CALORIES,
+ CYWEE_SAVE_DATA_FAT,
+} CYWEE_SAVE_DATA_TYPE;
+
+
+typedef struct time_and_32_date
+{
+ uint32_t time;
+ uint32_t data;
+
+}time_and_32_date_t;
+
+
+typedef struct time_and_float_date
+{
+ uint32_t time;
+ float data;
+
+}time_and_float_date_t;
+
+typedef struct time_and_16_date
+{
+ uint16_t time;
+ float data;
+
+}time_and_16_date_t;
+
+
+#pragma pack(1)
+
+typedef struct
+{
+ int activity_mode;//模式
+ int steps;//步数
+ int distance;//距离
+ int calories;//卡路里
+ int step_frequency;//步频
+ float step_length;//步幅
+ int pace;//配速
+ int BMR_calories;//基础卡路里
+ // int hrs;//心率
+ int duration;//持续时间
+ int MHR_zone;//心率区间
+}act_result_t;
+
+typedef struct
+{
+ int avg_step_freq;//平均步频
+ float avg_step_len;//平均步长
+ int avg_pace;//平均配速
+ int max_step_freq;//最大步频
+ int max_pace;//最大配速
+ int activity_zone;//活动程度区间 0低度 1中度 2高度
+ int ativity_zone_moderate_duration;//中度活动时间
+ int ativity_zone_high_duration;//高度活动时间
+ int MHR_zone;//心率区间
+ int distance_motion;//体感距离
+}act_ext_result_t;
+
+#pragma pack()
+
+void cywee_activity_mode_setstatus(int cmd);
+void cywee_oncharging_update(int oncharging_status);
+void cywee_wearstatus_update(int wearstatus);
+void cywee_hrs_update(void);
+void cywee_set_user_info(void);
+void cywee_get_sleep_data(int cmd);
+void cywee_reset_daily_data(void);
+void cywee_inactivity_mode_change(int mode);
+void cywee_activity_mode_change(int mode);
+void cywee_time_sync(void);
+void cywee_hand_updown_switch(int cmd);
+void cywee_ar_alert_switch(int cmd);
+
+void cywee_step_history_save(uint32_t time);
+uint32_t cywee_get_step_data(void);
+void cywee_set_step_data(uint32_t data);
+
+void cywee_stand_history_save(uint32_t time);
+void cywee_calories_history_save(uint32_t time);
+void cywee_distances_history_save(uint32_t time);
+void cywee_fat_history_save(uint32_t time);
+int32_t cywee_get_now_hour_data(void*value, uint8_t type);
+
+void cywee_set_stand_falg(void);
+uint8_t cywee_get_stand_falg(void);
+uint8_t cywee_get_now_stand_count(void);
+void cywee_set_calories_data(uint32_t data);
+int cywee_get_calories_data(void);
+
+void cywee_set_distance_data(uint32_t data);
+int cywee_get_distance_data(void );
+
+void cywee_set_fat_time_data(int time);
+int cywee_get_fat_time_data(void);
+
+void cywee_get_chipinfo(char *databuf,uint8_t len);
+void cywee_set_sedentary_interval(int interval);
+void cywee_set_sedentary_switch(int cmd);
+// void cywee_get_acc_switch(int cmd);
+void cywee_sensor_stop(void);
+uint8_t cywee_get_active_state(void);
+uint8_t cywee_get_static_state(void);
+void cywee_restart_acc(void);
+void cywee_log_switch(int cmd);
+void cywee_get_version(char *databuf,uint8_t len);
+void cywee_save_data(void);
+
+void cywee_custom_save_sleep_data(void);
+void cywee_custom_save_nap_data(void);
+void cywee_reset_history_daily_data(void);
+void cywee_check_acc(void);
+
+void cywee_custom_save_wear_data(void);
+#pragma pack()
+
+
+
+
+
+
+
+/********************CYWEE DML*********************/
+
+
+int cywee_main_dml(void);
+void cywee_dml_int_handler(void);
+
+act_result_t cywee_get_act_data(void);
+act_ext_result_t cywee_get_act_ext_data(void);
+
+void cywee_get_gsensor_data(uint8_t cnt,gsenson_t *data);
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#endif
\ No newline at end of file
--- /dev/null
+#===============================================================================
+# @brief cmake file
+# Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved.
+#===============================================================================
+
+set(COMPONENT_NAME "cywee_service")
+
+set(PUBLIC_HEADER
+${CMAKE_CURRENT_SOURCE_DIR}
+)
+
+set(SOURCES
+${CMAKE_CURRENT_SOURCE_DIR}/cywee_at_cmd.c
+${CMAKE_CURRENT_SOURCE_DIR}/cywee_service.c
+)
+
+set(COMPONENT_PUBLIC_CCFLAGS
+)
+
+set(COMPONENT_CCFLAGS
+-Wno-incompatible-function-pointer-types
+-Wno-unused-function
+)
+
+set(WHOLE_LINK
+ true
+)
+
+set(MAIN_COMPONENT
+ false
+)
+
+set(PUBLIC_DEFINES
+ SUPPORT_CYWEE_SERVICE
+ SUPPORT_AT_CYWEE
+)
+
+set(PRIVATE_DEFINES
+)
+
+build_component()
+++ /dev/null
-/*
- * Copyright (c) @CompanyNameMagicTag 2022. All rights reserved.
- * Description: BT HID Service Server Module.
- */
-#ifdef SUPPORT_BLE_SERVICE
-#include "cywee_ble_Service.h"
-#include "bleService.h"
-#include "bts_gatt_stru.h"
-#include "bts_gatt_server.h"
-#include "securec.h"
-#include "wearable_log.h"
-#ifdef SUPPORT_OHOSFWK
-#include "BluetoothWrapper.h"
-#endif
-
-/* HID gatt notification flag, do not need confirm */
-#define GATT_NOTIFICATION_FLAG 0
-/* HID gatt indication flag, need confirm */
-#define GATT_INDICATION_FLAG 1
-#define INVALID_SERVER_ID 0
-/* Client Characteristic Configuration UUID */
-#define BLE_UUID_CLIENT_CHARACTERISTIC_CONF 0x2902
-/*user Characteristic Configuration UUID*/
-#define BLE_UUID_USER_CHARACTERISTIC_CONF 0x2901
-/* gatt server ID */
-static uint8_t g_server_id = INVALID_SERVER_ID;
-// RX定为Notify属性,TX为Write属性
-enum {
- /* HID input report characteristic properties */
- FACTORYTEST_INPUT_REPORT_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_NOTIFY|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP|GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_READ,
- /* HID output report characteristic properties */
- FACTORYTEST_OUTPUT_REPORT_PROPERTIES = GATT_CHARACTER_PROPERTY_BIT_WRITE|GATT_CHARACTER_PROPERTY_BIT_WRITE_NO_RSP,
-};
-
-#define uint16_to_byte(n) ((uint8_t)(n)), ((uint8_t)((n) >> 8))
-
-/* hid input report att handle */
-uint32_t g_cywee_notify_report_att_hdl = 0;
-uint32_t cywee_ate_write_handl = 0;
-
-/* 创建服务 */
-static void ble_cywee_add_service(uint8_t server_id)
-{
- bt_uuid_t cywee_service_uuid = {0};
- bts_data_to_uuid_len2(BLE_UUID_CYWEE_REPORT_SERVICE, &cywee_service_uuid);
- //只有一个服务,永远是1
- errcode_t ret = 0;
-#ifndef SUPPORT_OHOSFWK
- ret = gatts_add_service(server_id, &cywee_service_uuid, true);
- printf("ble_cywee_add_service gatts_add_service ret: 0x%x serverId = 0x%x uuid.uuid_len:%d\n", ret, server_id,cywee_service_uuid.uuid_len);
-#else
- ret = wrapper_gatts_add_service(server_id, &cywee_service_uuid, true);
- printf("ble_cywee_add_service wrapper_gatts_add_service ret: 0x%x serverId = 0x%x uuid.uuid_len:%d\n", ret, server_id,cywee_service_uuid.uuid_len);
-#endif
-
-}
-static void ble_cywee_add_descriptor_report_reference(uint8_t server_id, uint16_t srvc_handle, bool is_notify_report)
-{
- /* HID input report reference value for test [report id 1, input] */
- static uint8_t report_reference_val_input[] = {0, 0};
- gatts_add_desc_info_t descriptor;
- if (is_notify_report)
- {
- bts_data_to_uuid_len2(BLE_UUID_CLIENT_CHARACTERISTIC_CONF, &descriptor.desc_uuid);
- descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE ;
- }else{
- bts_data_to_uuid_len2(BLE_UUID_USER_CHARACTERISTIC_CONF, &descriptor.desc_uuid);
- descriptor.permissions = GATT_ATTRIBUTE_PERMISSION_WRITE | GATT_ATTRIBUTE_PERMISSION_READ ;
-
- }
- descriptor.value = report_reference_val_input;
- descriptor.value_len = (uint16_t)sizeof(report_reference_val_input);
-
- gatts_add_descriptor(server_id, srvc_handle, &descriptor);
-}
-
-/* 添加特征:HID information */
-static void ble_cywee_add_character_and_information(uint8_t server_id, uint16_t srvc_handle)
-{
- /* HID information value for test */
- gatts_add_chara_info_t character={0};
-
- memset_s(&character,sizeof(gatts_add_chara_info_t),0,sizeof(gatts_add_chara_info_t));
- bts_data_to_uuid_len2(BLE_UUID_CYWEE_RX, &character.chara_uuid);
- character.permissions = GATT_ATTRIBUTE_PERMISSION_READ | GATT_ATTRIBUTE_PERMISSION_WRITE;
- character.properties = FACTORYTEST_INPUT_REPORT_PROPERTIES;
- character.value_len = 0;//(uint16_t)sizeof(hid_information_val);
- character.value = NULL;//hid_information_val;
- gatts_add_characteristic(server_id, srvc_handle, &character);
- ble_cywee_add_descriptor_report_reference(server_id,srvc_handle,true);
- ble_cywee_add_descriptor_report_reference(server_id,srvc_handle,false);
-
-}
-
-/* device向host发送数据:input report */
-errcode_t ble_cywee_server_send_input_report(const uint8_t *data, uint8_t len)
-{
- // printf("ble_hid_server_send_input_report:%d %d %d",data[0],data[1],len);
- if (g_cywee_notify_report_att_hdl==0)
- return ERRCODE_BT_FAIL;
-
- gatts_ntf_ind_t param = {0};
- param.attr_handle = (uint16_t)g_cywee_notify_report_att_hdl;
- param.value_len = len;
- param.value = bt_os_new(len);
- if (param.value == NULL) {
- printf( "[cywee][ERROR]send input report new fail\r\n");
- return ERRCODE_BT_MALLOC_FAIL;
- }
- if (memcpy_s(param.value, param.value_len, data, len) != EOK) {
- printf( "[cywee][ERROR]send input report memcpy fail\r\n");
- bt_os_free(param.value);
- return ERRCODE_BT_FAIL;
- }
- errcode_t ret = 0;
- ret = gatts_notify_indicate(g_ble_server_id, g_ble_conn_id, ¶m);
- printf("ble_cywee_server_send_input_report: 0x%x g_ble_conn_id:%d g_cywee_notify_report_att_hdl:%d\r\n",ret,g_ble_conn_id,g_cywee_notify_report_att_hdl);
- bt_os_free(param.value);
- return ERRCODE_BT_SUCCESS;
-}
-
-
-void ble_cywee_store_report_handle(uint16_t srvc_handle)
-{
- printf("g_cywee_notify_report_att_hdl: 0x%X\r\n",srvc_handle);
- if(g_cywee_notify_report_att_hdl == 0){
- g_cywee_notify_report_att_hdl = srvc_handle;
- }
-}
-void ble_cywee_store_recv_handle(uint16_t srvc_handle)
-{
- printf("cywee_ate_write_handl : 0x%X\r\n",srvc_handle);
- if(cywee_ate_write_handl == 0)
- {
- cywee_ate_write_handl = srvc_handle;
- }
-
-}
-
-uint32_t get_cywee_ate_write_handl(void)
-{
- return cywee_ate_write_handl;
-}
-
-
-void ble_cywee_add_characters_and_descriptors(uint8_t server_id, uint16_t srvc_handle)
-{
- ble_cywee_add_character_and_information(server_id, srvc_handle);
-}
-
-void ble_cywee_server_init(uint8_t server_id)
-{
- ble_cywee_add_service(server_id);
-}
-
-
-//协议接收client下发的数据接口
-void cywee_recv_cmd_data(uint8_t *buf, uint16_t event_size,uint16_t handle)
-{
- if(buf != NULL)
- printf("cywee_recv_cmd_data len %d , handle 0x%X ,*buf 0x%02X\r\n",event_size,handle,*buf);
- /****此处为接收指令,处理后反馈结果的参考**/
- cywee_log_switch(*buf);
- /*****参考结束****/
-}
-
-#endif
-
+++ /dev/null
-/*
- * @Author: penglei 1624952103@qq.com
- * @Date: 2024-04-08 14:53:31
- * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-04-08 17:53:40
- * @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/service/cywee_hal.c
- * @Description:
- *
- * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
- */
-
-#include <stdio.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdlib.h>
-
-#include "cywee_hal.h"
-
-cywee_msg_callback_t g_cywee_send_msg_toUI = NULL;
-
-uint32_t cywee_register_msg_callback(cywee_msg_callback_t cywee_func)
-{
- g_cywee_send_msg_toUI = cywee_func;
- return 0;
-}
-
-cywee_msg_callback_t cywee_get_send_msg_callback_func(void)
-{
- return g_cywee_send_msg_toUI;
-}
-
-
void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen)
{
+#if 0
// PRINT("cywee_msg_callback\r\n");
- cywee_activity_result_t c_activity_result_t;
+ act_result_t c_activity_result_t;
cywee_inactivity_result_t c_inactivity_result_t;
- cywee_activity_result_extre_info_t c_activity_result_extre_info_t;
+ act_ext_result_t c_activity_result_extre_info_t;
cywee_inactivity_accumulate_time_t c_inactivity_accumulate_time_t;
if (msg_type == CYWEE_MSG_TYPE_ACTIVITY_UPDATE)
{
- memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+ memcpy(&c_activity_result_t, msg_data, sizeof(act_result_t));
switch (c_activity_result_t.activity_mode)
{
case SPORT_ACTIVE_MODE_NORMAL:
// PRINT("normal mode activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%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);
- //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
break;
case SPORT_ACTIVE_MODE_TREADMILL:
// PRINT("CYWEE_MSG_TYPE_TREADMILL_UPDATE\r\n");
// PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%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);
- //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
break;
case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
// PRINT("CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE\r\n");
// PRINT("outdoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%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);
- //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
break;
case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
// PRINT("CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE\r\n");
// PRINT("indoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%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);
- //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
break;
case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
// PRINT("CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE\r\n");
// PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%.2f], pace[%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);
- //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
break;
case SPORT_ACTIVE_MODE_FREE_TRAINING:
// PRINT("CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE\r\n");
// PRINT("free training activit_mode[%d], calories[%d],MHR_zone[%d]\n",
// c_activity_result_t.activity_mode, c_activity_result_t.calories, c_activity_result_t.MHR_zone);
- //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(act_result_t));
break;
default:
break;
else if (msg_type == CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE)
{
// PRINT("CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE\r\n");
- memcpy(&c_activity_result_extre_info_t, msg_data, sizeof(cywee_activity_result_extre_info_t));
+ memcpy(&c_activity_result_extre_info_t, msg_data, sizeof(act_ext_result_t));
// PRINT("avg_step_freq[%d],avg_step_len[%.2f],avg_pace[%d],max_step_freq[%d],max_pace[%d],activity_zone[%d],ativity_zone_moderate_duration[%d],ativity_zone_high_duration[%d],MHR_zone[%d],distance_motion[%d]\n",
// c_activity_result_extre_info_t.avg_step_freq, c_activity_result_extre_info_t.avg_step_len,
// c_activity_result_extre_info_t.avg_pace,c_activity_result_extre_info_t.max_step_freq,
// c_activity_result_extre_info_t.ativity_zone_high_duration,
// c_activity_result_extre_info_t.MHR_zone,
// c_activity_result_extre_info_t.distance_motion);
- //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(cywee_activity_result_extre_info_t));
+ //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(act_ext_result_t));
}
else if (msg_type == CYWEE_MSG_TYPE_INACTIVITY_UPDATE)
}
else
PRINT("Unknown sensor message type");
-
+#endif
}
static void cywee_service_timer_start_check(uint32_t rtc_ms)
case CYWEE_SERVICE_CMD_NORMAL_MODE:
// PRINT("普通运动模式\r\n");
- cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
+ // cywee_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL);
break;
case CYWEE_SERVICE_CMD_TREADMILL_MODE:
- cywee_activity_mode_change(SPORT_ACTIVE_MODE_TREADMILL);
+ // cywee_activity_mode_change(SPORT_ACTIVE_MODE_TREADMILL);
break;
case CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE:
// PRINT("室外跑步模式\r\n");
- cywee_activity_mode_change(SPORT_ACTIVE_MODE_OUTDOOR_RUNNING);
+ // cywee_activity_mode_change(SPORT_ACTIVE_MODE_OUTDOOR_RUNNING);
break;
case CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE:
// PRINT("室内跑步模式\r\n");
- cywee_activity_mode_change(SPORT_ACTIVE_MODE_INDOOR_RUNNING);
+ // cywee_activity_mode_change(SPORT_ACTIVE_MODE_INDOOR_RUNNING);
break;
case CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE:
- cywee_activity_mode_change(SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR);
+ // cywee_activity_mode_change(SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR);
break;
case CYWEE_SERVICE_CMD_FREE_TRAINING_MODE:
// PRINT("自由训练模式\r\n");
- cywee_activity_mode_change(SPORT_ACTIVE_MODE_FREE_TRAINING);
+ // cywee_activity_mode_change(SPORT_ACTIVE_MODE_FREE_TRAINING);
break;
case CYWEE_SERVICE_CMD_AR_ALERT_MODE:
- cywee_activity_mode_change(SPORT_ACTIVE_MODE_AR_ALERT);
+ // cywee_activity_mode_change(SPORT_ACTIVE_MODE_AR_ALERT);
break;
case CYWEE_SERVICE_CMD_PAUSE:
- activity_mode_setstatus(1);
+ cywee_activity_mode_setstatus(1);
break;
case CYWEE_SERVICE_CMD_RESUME:
- activity_mode_setstatus(0);
+ cywee_activity_mode_setstatus(0);
break;
case CYWEE_SERVICE_CMD_ONCHARGING_CHANGE:
break;
case CYWEE_SERVICE_CMD_SEDENTARY_MODE:
- cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY);
+ // cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY);
break;
case CYWEE_SERVICE_CMD_NAP_MODE:
- cywee_inactivity_mode_change(INACTIVITY_MODE_NAP);
+ // cywee_inactivity_mode_change(INACTIVITY_MODE_NAP);
case CYWEE_SERVICE_CMD_NAP_SEDENTARY_MODE:
- cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP);
+ // cywee_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY_AND_NAP);
break;
case CYWEE_SERVICE_CMD_SLEEPING_MODE:
- cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
+ // cywee_inactivity_mode_change(INACTIVITY_MODE_SLEEPING);
break;
case CYWEE_SERVICE_CMD_OPEN_HAND_UPDOWN:
break;
case CYWEE_SERVICE_CMD_OPEN_GET_ACC:
- cywee_get_acc_switch(1);
+ // cywee_get_acc_switch(1);
break;
case CYWEE_SERVICE_CMD_CLOSE_GET_ACC:
- cywee_get_acc_switch(0);
+ // cywee_get_acc_switch(0);
break;
case CYWEE_SERVICE_CMD_STOP_ACC:
- cywee_stop();
+ cywee_sensor_stop();
break;
case CYWEE_SERVICE_CMD_OPEN_SEDENTARY:
//g_cywee_service_timer = osTimerNew((osTimerFunc_t)cywee_service_check_timer_callback, osTimerPeriodic, NULL, NULL);
- cywee_register_msg_callback(cywee_msg_callback);
+ // cywee_register_msg_callback(cywee_msg_callback);
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_CHECK, NULL);
return ERRCODE_SUCC;
+++ /dev/null
-/*********************/
-/*** Include Files ***/
-/*********************/
-#include <stdarg.h>
-
-#include <stdio.h>
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <math.h>
-
-#include "osal_timer.h"
-#include "osal_mutex.h"
-#include "pinctrl.h"
-#include "chip_io.h"
-#include "time.h"
-#include "i2c.h"
-#include "gpio.h"
-#include "hal_gpio.h"
-#include "hal_i2c.h"
-#include "soc_osal.h"
-#include "tcxo.h"
-#include "debug_print.h"
-#include "platform_core.h"
-#include "los_tick.h"
-
-#include "cwm_lib.h"
-#include "los_typedef.h"
-#include "config.h"
-#include "OsApi.h"
-#include "los_printf.h"
-#include "cywee_ble_Service.h"
-#include "custom_utils.h"
-
-/*********************/
-/*** Macro Defines ***/
-/*********************/
-
-#define CYWEE_I2C_BUS I2C_BUS_2
-#define CYWEE_I2C_RETRY_TIME_MAX 3
-#define G_INT1_PIN S_AGPIO_L11
-#define G_INT2_PIN S_AGPIO_L19
-
-/*************************/
-/*** Variables Defines ***/
-/*************************/
-
-static uint8_t g_cywee_installed = 0;
-
-extern uint8_t cywee_ble_service_flag;
-
-/************************/
-/*** Function Defines ***/
-/************************/
-int CWM_OS_dbgPrintf(const char * format,...);
-
-
-/********************************/
-/*** Function Implementations ***/
-/********************************/
-
-
-
-/*初始化GPIO*/
-int gpio_int_pin_init(void)
-{
- if ((uapi_pin_set_mode(G_INT1_PIN, (pin_mode_t)HAL_PIO_FUNC_GPIO) != ERRCODE_SUCC) ||
- (uapi_pin_set_pull(G_INT1_PIN, (pin_pull_t)HAL_PIO_PULL_UP) != ERRCODE_SUCC) ||
- (uapi_gpio_set_dir(G_INT1_PIN, GPIO_DIRECTION_INPUT) != ERRCODE_SUCC)) {
- CWM_OS_dbgPrintf("gpio G_INT1_PIN config failed\r\n");
- return ERRCODE_FAIL;
- }
- if ((uapi_pin_set_mode(G_INT2_PIN, (pin_mode_t)HAL_PIO_FUNC_GPIO) != ERRCODE_SUCC) ||
- (uapi_pin_set_pull(G_INT2_PIN, (pin_pull_t)HAL_PIO_PULL_UP) != ERRCODE_SUCC) ||
- (uapi_gpio_set_dir(G_INT2_PIN, GPIO_DIRECTION_INPUT) != ERRCODE_SUCC)) {
- CWM_OS_dbgPrintf("gpio G_INT2_PIN config failed\r\n");
- return ERRCODE_FAIL;
- }
- return ERRCODE_SUCC;
-}
-
-
-// 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 ERRCODE_SUCC;
-// }
-
-// int CWM_disableGpioIRQ(uint16_t sensorType, uint16_t sensorPin)
-// {
-// CWM_OS_dbgPrintf("CWM_disableGpioIRQ sensorType %d, sensorPin %d\n",sensorType,sensorPin);
-// return ERRCODE_SUCC;
-// }
-
-
-
-// int CWM_OS_i2cWrite(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, int busIndex)
-// {
-// errcode_t ret;
-// uint32_t retry;
-// i2c_data_t data;
-// uint8_t *write_data = NULL;
-// uint16_t send_len;
-// uint8_t *data_buf=writeData;
-// uint16_t data_len=writeDataSize;
-
-// cywee_i2c_init();
-// send_len = data_len + regLength;
-// write_data = (uint8_t *)osal_kmalloc(send_len, OSAL_GFP_KERNEL);
-// if (write_data == NULL) {
-// CWM_OS_dbgPrintf("cywee CWM_OS_i2cWrite send buff malloc fail %d!\n",send_len);
-// goto error;
-// }
-
-// if( regLength == 2)
-// {
-// write_data[0] = ((uint8_t*)®)[0];
-// write_data[1] = ((uint8_t*)®)[1];
-// }else{
-// write_data[0] = (uint8_t)reg;
-// }
-// ret = (uint32_t)memcpy_s(write_data + regLength, send_len - regLength, data_buf, data_len);
-// if (ret != EOK) {
-// CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
-// goto free_mem;
-// }
-
-// data.send_buf = write_data;
-// data.send_len = send_len;
-// data.receive_buf = NULL;
-// data.receive_len = 0;
-
-// for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
-// ret = uapi_i2c_master_write(CYWEE_I2C_BUS, slaveAddr, &data);
-// if (ret == ERRCODE_SUCC) {
-// break;
-// }
-// }
-// if (ret != ERRCODE_SUCC) {
-// CWM_OS_dbgPrintf("CWM_OS_i2cWrite cywee data write fail! ret=0x%x\n", ret);
-// }
-// free_mem:
-// osal_kfree(write_data);
-// error:
-// return (ret>0) ? ret*-1: ret;
-// }
-
-// int CWM_OS_i2cTransfer(uint16_t slaveAddr, uint16_t reg, int regLength, uint8_t *writeData, int writeDataSize, uint8_t *readData, int readDataSize, int busIndex)
-// {
-// errcode_t ret;
-// uint32_t retry;
-// i2c_data_t data;
-// uint8_t *write_data = NULL;
-// int16_t write_len = 0;
-
-// cywee_i2c_init();
-// write_len = regLength + writeDataSize;
-// write_data = (uint8_t *)osal_kmalloc(write_len, OSAL_GFP_KERNEL);
-// if (write_data == NULL) {
-// PRINT_ERR("cywee send buff malloc fail!");
-// goto error;
-// }
-
-// if( regLength == 2)
-// {
-// write_data[0] = ((uint8_t*)®)[0];
-// write_data[1] = ((uint8_t*)®)[1];
-// }else{
-// write_data[0] = (uint8_t)reg;
-// }
-
-// ret = (uint32_t)memcpy_s(write_data + regLength, writeDataSize, writeData, writeDataSize);
-// if (ret != EOK) {
-// CWM_OS_dbgPrintf("cywee send_buf content copy fail! ret=0x%x\n", ret);
-// goto free_mem;
-// }
-// data.send_buf = write_data;
-// data.send_len = write_len;
-// data.receive_buf = readData;
-// data.receive_len = readDataSize;
-
-// for (retry = 0; retry < CYWEE_I2C_RETRY_TIME_MAX; retry++) {
-// ret = uapi_i2c_master_writeread(CYWEE_I2C_BUS, slaveAddr, &data);
-// if (ret == ERRCODE_SUCC) {
-// break;
-// }
-// }
-// if (ret != ERRCODE_SUCC) {
-// CWM_OS_dbgPrintf("CWM_OS_i2cTransfer cywee data read fail! ret=0x%x\n", ret);
-// }
-
-// free_mem:
-// osal_kfree(write_data);
-// error:
-// return (ret>0) ? ret*-1: ret;
-// }
-
-//实际精度只能到1ms
-void CWM_OS_uSleep(uint32_t time)
-{
-
- HalDelayUs(time);
- // uint32_t ms = time / 1000;
- // if (ms == 0) ms = 1;
- // osDelay(ms);
-}
-
-uint64_t CWM_OS_GetTimeNs(void)
-{
- uint64_t timeNowNs;
- timeNowNs = LOS_CurrNanosec();
- return timeNowNs;
-}
-
-void* CWM_OS_malloc(int size)
-{
- if (size == 0)
- size = 1;
- return malloc(size);
-}
-
-void CWM_OS_free(void *ptr)
-{
- if (ptr == NULL)
- return;
-
- free(ptr);
-}
-
-int CWM_OS_dbgOutput(const char * format)
-{
- PRINT("%s", format);
-#ifdef SUPPORT_BLE_SERVICE
- if(cywee_ble_service_flag == 1)
- ble_cywee_server_send_input_report((uint8_t *)format,strlen(format));
-#endif
- return 0;
-}
-
-int CWM_OS_dbgOutput_checkLog(const char * format)
-{
- static int s_sn = 0;
- PRINT("#_#|%d|%s", s_sn, format);
- s_sn ++;
- return 0;
-}
-
-int CWM_OS_dbgPrintf(const char * format,...)
-{
- char InputBuff[255];
- va_list args;
-
- va_start(args, format);
-
- vsprintf(InputBuff, format, args);
-
- va_end(args);
- CWM_OS_dbgOutput(InputBuff);
- return 0;
-}
-typedef enum {
- CYWEE_DATA_STEP,
- CYWEE_DATA_DISTANCE,
- CYWEE_DATA_CALORIES,
- CYWEE_DATA_FAT,
-} CYWEE_SAVE_DATA_TYPE;
-
-#define CWM_STEP_DATA_PATH "/user/userdata/sport/stepcount.bin"
-#define CWM_CALORIES_DATA_PATH "/user/userdata/sport/caloriescount.bin"
-#define CWM_DISTANCE_DATA_PATH "/user/userdata/sport/distancecount.bin"
-#define CWM_FAT_DATA_PATH "/user/userdata/sport/fatcount.bin"
-
-#define CWM_STEP_DATA_PATH_AGO "/user/userdata/sport/stepcount_ago.bin"
-#define CWM_CALORIES_DATA_PATH_AGO "/user/userdata/sport/caloriescount_ago.bin"
-#define CWM_DISTANCE_DATA_PATH_AGO "/user/userdata/sport/distancecount_ago.bin"
-#define CWM_FAT_DATA_PATH_AGO "/user/userdata/sport/fatcount_ago.bin"
-
-
-#define CWM_DATA_DIR_PATH "/user/userdata/sport"
-#include <sys/stat.h>
-void CWM_OS_saveData(int* data, uint32_t len,uint8_t type){
-
- struct stat info;
-
- if (stat(CWM_DATA_DIR_PATH, &info) != 0)
- {
- if (mkdir(CWM_DATA_DIR_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
- {
- return ; // Failed to create folder
- }
- }
- FILE * fp=NULL;
- switch (type)
- {
- case CYWEE_DATA_CALORIES:
- fp = fopen(CWM_CALORIES_DATA_PATH,"wb");
- break;
- case CYWEE_DATA_STEP:
- fp = fopen(CWM_STEP_DATA_PATH,"wb");
- break;
- case CYWEE_DATA_DISTANCE:
- fp = fopen(CWM_DISTANCE_DATA_PATH,"wb");
- break;
- case CYWEE_DATA_FAT:
- fp = fopen(CWM_FAT_DATA_PATH,"wb");
- break;
-
- default:
- break;
- }
-
-
-
- if(fp==NULL)
- {
- CWM_OS_dbgPrintf("%s open fail\n",CWM_STEP_DATA_PATH);
- return;
- }
- int ret =fwrite(data,1,len,fp);
-
- CWM_OS_dbgPrintf("CWM_OS_saveData fwrite failed %d %d\n",ret,*data);
-
- fclose(fp);
-}
-
-
-void CWM_OS_OneHourAgo_saveData(void* data, uint32_t len,uint8_t type){
-
- struct stat info;
-
- if (stat(CWM_DATA_DIR_PATH, &info) != 0)
- {
- if (mkdir(CWM_DATA_DIR_PATH, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
- {
- return ; // Failed to create folder
- }
- }
- FILE * fp=NULL;
- switch (type)
- {
- case CYWEE_DATA_CALORIES:
- fp = fopen(CWM_CALORIES_DATA_PATH_AGO ,"wb");
- break;
- case CYWEE_DATA_STEP:
- fp = fopen(CWM_STEP_DATA_PATH_AGO ,"wb");
- break;
- case CYWEE_DATA_DISTANCE:
- fp = fopen(CWM_DISTANCE_DATA_PATH_AGO ,"wb");
- break;
- case CYWEE_DATA_FAT:
- fp = fopen(CWM_FAT_DATA_PATH_AGO ,"wb");
- break;
-
- default:
- break;
- }
-
- if(fp==NULL)
- {
- CWM_OS_dbgPrintf("%s open fail\n",CWM_STEP_DATA_PATH_AGO );
- return;
- }
- int ret =fwrite(data,1,len,fp);
-
- //CWM_OS_dbgPrintf("CWM_OS_saveData fwrite failed %d %d\n",ret,*(int *)data);
-
- fclose(fp);
-}
-
-typedef struct time_and_32_date
-{
- uint32_t time;
- uint32_t data;
-
-}time_and_32_date_t;
-
-
-typedef struct time_and_float_date
-{
- uint32_t time;
- float data;
-
-}time_and_float_date_t;
-
-typedef struct time_and_16_date
-{
- uint16_t time;
- float data;
-
-}time_and_16_date_t;
-
-
-
-uint8_t time_is_repetition(uint32_t time,void *data,char *path,void *data_array,uint8_t type)
-{
- uint8_t is_repetition=0;
-
- if(type==0)
- {
- time_and_32_date_t * p= (time_and_32_date_t*)data_array;
- FILE *fp=fopen(path,"rb+");
- if (fp == NULL) return 0;
-
- fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
- uint32_t size = ftell(fp); // 获取当前文件指针位置,即文件大小
- fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-
- for(int i=0;i<size/8;i++)
- {
- fread(&p[i].time,sizeof(uint32_t),1,fp);
- fread(&p[i].data,sizeof(uint32_t),1,fp);
- if(p[i].time==time)
- {
- is_repetition++;
- uint32_t _32_data=*(uint32_t *)data;
- p[i].data+=_32_data;
- }
- }
- fclose(fp);
-
- }
- else if(type==1)
- {
-
- time_and_float_date_t * p= (time_and_float_date_t*)data_array;
- FILE *fp=fopen(path,"rb+");
- if (fp == NULL) return 0;
-
- fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
- uint32_t size = ftell(fp); // 获取当前文件指针位置,即文件大小
- fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-
- for(int i=0;i<size/8;i++)
- {
- fread(&p[i].time,sizeof(uint32_t),1,fp);
- fread(&p[i].data,sizeof(float),1,fp);
- if(p[i].time==time)
- {
- is_repetition++;
- float _float_data=*(float *)data;
- p[i].data+=_float_data;
- }
- }
- fclose(fp);
- }
- else if(type==2)
- {
-
- time_and_16_date_t * p= (time_and_16_date_t*)data_array;
- FILE *fp=fopen(path,"rb+");
- if (fp == NULL) return 0;
-
- fseek(fp, 0, SEEK_END); // 将文件指针移动到文件末尾
- uint32_t size = ftell(fp); // 获取当前文件指针位置,即文件大小
- fseek(fp, 0, SEEK_SET); // 将文件指针移回文件开头
-
- for(int i=0;i<size/6;i++)
- {
- fread(&p[i].time,sizeof(uint32_t),1,fp);
- fread(&p[i].data,sizeof(uint16_t),1,fp);
- if(p[i].time==time)
- {
- is_repetition++;
- uint16_t _16_data=*(uint16_t *)data;
- p[i].data+=_16_data;
- }
- }
- fclose(fp);
- }
-
- return is_repetition;
-}
-
-
-
-
-void CWM_OS_saveData_history(void* new_data,void *history ,uint32_t len,uint8_t type,uint32_t time){
-
- struct stat info;
-
- if (stat(GOAL_DATA_CONFIG_DIR, &info) != 0)
- {
- if (mkdir(GOAL_DATA_CONFIG_DIR, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
- {
- return ; // Failed to create folder
- }
- }
-
- if (stat(GOAL_DATA_CONFIG_DIR_STEP, &info) != 0)
- {
- if (mkdir(GOAL_DATA_CONFIG_DIR_STEP, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
- {
- return ; // Failed to create folder
- }
- }
-
- if (stat(GOAL_DATA_CONFIG_DIR_DISTANCE, &info) != 0)
- {
- if (mkdir(GOAL_DATA_CONFIG_DIR_DISTANCE, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
- {
- return ; // Failed to create folder
- }
- }
-
- if (stat(GOAL_DATA_CONFIG_DIR_STAND, &info) != 0)
- {
- if (mkdir(GOAL_DATA_CONFIG_DIR_STAND, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
- {
- return ; // Failed to create folder
- }
- }
-
- if (stat(GOAL_DATA_CONFIG_DIR_FAT, &info) != 0)
- {
- if (mkdir(GOAL_DATA_CONFIG_DIR_FAT, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
- {
- return ; // Failed to create folder
- }
- }
-
- if (stat(GOAL_DATA_CONFIG_DIR_CALORIES, &info) != 0)
- {
- if (mkdir(GOAL_DATA_CONFIG_DIR_CALORIES, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
- {
- return ; // Failed to create folder
- }
- }
-
-
-
- char path_[64]={0};
- char timeday[12] = {0};
- uapi_get_TIME_STR(time,timeday, '_','\0',DATE_Y_M_D);
-
- int i_data=0;
- float f_data=0;
- int16_t i_data_16=0;
-
- switch (type)
- {
- case CYWEE_DATA_CALORIES:
- sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_CALORIES_PATH,timeday);
-
- f_data=*(float*)new_data-*(float*)history;
-
- break;
- case CYWEE_DATA_STEP:
- sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_PATH,timeday);
-
- i_data= *(int*)new_data-*(int*)history;//新数据减去旧数据,作为这一个小时的值
- // {
- // FILE *fp= fopen("/user/userdata/i_data_test.txt","ab+");
- // fwrite("x",1,1,fp);
- // fclose(fp);
- // }
-
-
- break;
- case CYWEE_DATA_DISTANCE:
- sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_DISTANCE_PATH,timeday);
- f_data=*(float*)new_data-*(float*)history;
-
- break;
- case CYWEE_DATA_FAT:
- sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_DATA_FAT_PATH,timeday);
- i_data_16= *(int16_t*)new_data-*(int16_t*)history;//新数据减去旧数据,作为这一个小时的值
-
- break;
-
- default:
- break;
- }
-
- CWM_OS_dbgPrintf(" save path %s \n",path_);
-
- if(i_data<0 || f_data<0 ||i_data_16<0)
- {
- i_data=0;
- f_data=0;
- *(int*)history=0;
- return;
- }
-
- if(type==CYWEE_DATA_STEP && i_data!=0)
- {
- #ifdef GOAL_DATA_AMEND
- time_and_32_date_t array[25]={0};
-
- for(int i=0;i<25;i++)
- {
- array[i].data=0;
- array[i].time=0;
- }
-
-
- if(time_is_repetition(time,&i_data,path_,array,0))
- {
-
-
- FILE * fp = fopen(path_,"wb+");
- if(fp==NULL)
- {
- CWM_OS_dbgPrintf("open fail\n");
- return;
- }
-
- for(int i=0;i<25;i++)
- {
- if(array[i].time && array[i].data)
- {
- fwrite(&array[i].time,sizeof(array[i].time),1,fp);
- fwrite(&array[i].data,sizeof(array[i].data),1,fp);
- }
-
- }
- fclose(fp);
-
- }
- else
- #endif
- {
-
- FILE * fp = fopen(path_,"ab+");
- if(fp)
- {
- uint32_t creationTime;
- creationTime=time;//当前值计入上小时
-
- int ret =fwrite(&creationTime,1,4,fp);
- if(ret==0)
- {
- CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
- }
- if(i_data)
- ret =fwrite(&i_data,1,sizeof(i_data),fp);
- fclose(fp);
- }
- else
- {
- msleep(5);
- FILE * fp = fopen(path_,"ab+");
- uint32_t creationTime;
- creationTime=time;//当前值计入上小时
-
- int ret =fwrite(&creationTime,1,4,fp);
- if(ret==0)
- {
- CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
- }
- if(i_data)
- ret =fwrite(&i_data,1,sizeof(i_data),fp);
- fclose(fp);
- }
-
-
-
-
- }
-
- }
- if((type==CYWEE_DATA_CALORIES|| type==CYWEE_DATA_DISTANCE) && f_data!=0)
- {
-
- #ifdef GOAL_DATA_AMEND
- time_and_float_date_t array[25]={0};
-
- for(int i=0;i<25;i++)
- {
- array[i].data=0;
- array[i].time=0;
- }
-
- if(time_is_repetition(time,&i_data,path_,array,1))
- {
-
- FILE * fp = fopen(path_,"wb+");
- if(fp==NULL)
- {
- CWM_OS_dbgPrintf("open fail\n");
- return;
- }
-
- for(int i=0;i<25;i++)
- {
- if(array[i].time && array[i].data)
- {
- fwrite(&array[i].time,sizeof(array[i].time),1,fp);
- fwrite(&array[i].data,sizeof(array[i].data),1,fp);
- }
-
- }
- fclose(fp);
-
- }
- else
- #endif
- {
-
- FILE * fp = fopen(path_,"ab+");
- if(fp)
- {
- uint32_t creationTime;
- creationTime=time;//当前值计入上小时
-
- int ret =fwrite(&creationTime,1,4,fp);
- if(ret==0)
- {
- CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
- }
- if(f_data)
- ret =fwrite(&f_data,1,sizeof(f_data),fp);
-
- fclose(fp);
-
- }
- }
- }
-
- if((type==CYWEE_DATA_FAT) && i_data_16!=0)
- {
-
- #ifdef GOAL_DATA_AMEND
- time_and_16_date_t array[25]={0};
-
- for(int i=0;i<25;i++)
- {
- array[i].data=0;
- array[i].time=0;
- }
-
- if(time_is_repetition(time,&i_data,path_,array,2))
- {
-
- FILE * fp = fopen(path_,"wb+");
- if(fp==NULL)
- {
- CWM_OS_dbgPrintf("open fail\n");
- return;
- }
-
- for(int i=0;i<25;i++)
- {
- if(array[i].time && array[i].data)
- {
- fwrite(&array[i].time,sizeof(array[i].time),1,fp);
- fwrite(&array[i].data,sizeof(array[i].data),1,fp);
- }
-
- }
- fclose(fp);
-
- }
- else
- #endif
-
- {
- FILE * fp = fopen(path_,"ab+");
- if(fp)
- {
- uint32_t creationTime;
- creationTime=time;//当前值计入上小时
-
- int ret =fwrite(&creationTime,1,4,fp);
- if(ret==0)
- {
- CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
- }
- if(i_data_16)
- ret =fwrite(&i_data_16,1,sizeof(i_data_16),fp);
-
- fclose(fp);
-
- }
- }
- }
-
-
- if(i_data)
- *(int*)history=*(int*)new_data;
- else if(i_data_16)
- *(int16_t*)history=*(int16_t*)new_data;
- else if(f_data)
- *(float*)history=*(float*)new_data;
-
-
-}
-
-void CWM_OS_saveData_STAND_history(uint8_t *falg,uint32_t len,uint32_t time){
- if(*falg)
- {
- struct stat info;
-
- if (stat(GOAL_DATA_CONFIG_DIR, &info) != 0)
- {
- if (mkdir(GOAL_DATA_CONFIG_DIR, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
- {
- return ; // Failed to create folder
- }
- }
-
- if (stat(GOAL_DATA_CONFIG_DIR_STAND, &info) != 0)
- {
- if (mkdir(GOAL_DATA_CONFIG_DIR_STAND, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH) != 0)
- {
- return ; // Failed to create folder
- }
- }
-
- char path_[64]={0};
- char timeday[12] = {0};
- uapi_get_TIME_STR(time,timeday, '_','\0',DATE_Y_M_D);
-
-
- sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_STAND_DATA_PATH,timeday);
- CWM_OS_dbgPrintf(" save path %s \n",path_);
-
- FILE * fp = fopen(path_,"ab+");
- if(fp==NULL)
- {
- CWM_OS_dbgPrintf("open fail\n");
- return;
- }
- uint32_t ret;
-
- uint32_t creationTime;
- creationTime=time;//当前值计入上小时
-
- CWM_OS_dbgPrintf("uapi_get_timestampe_ss %d\n",ret);
-
- ret =fwrite(&creationTime,1,len,fp);
- if(ret==0)
- {
- CWM_OS_dbgPrintf("fwrite failed %d\n",ret);
- }
-
- fclose(fp);
-
- *falg=0;
- }
- else
- {
- return;
- }
-
-}
- // calories 数据存储
-
-uint8_t get_stand_count(void)
-{
- char path_[64]={0};
- char timeday[12] = {0};
- uapi_get_YYMMDD_Time(timeday, '_');
-
-
- sprintf_s(path_,64,"%s%s.bin",CWM_HISTORY_STAND_DATA_PATH,timeday);
- CWM_OS_dbgPrintf(" save path %s \n",path_);
-
- FILE * fp = fopen(path_,"rb+");
- if(fp==NULL)
- {
- CWM_OS_dbgPrintf("open fail\n");
- return 0;
- }
- fseek(fp, 0, SEEK_END);
- uint8_t size = ftell(fp);
- fseek(fp, 0, SEEK_SET);
-
- uint32_t array[25]={0};
- uint8_t read_size=0;
- fread(array,sizeof(uint32_t),size/4,fp);
- uint8_t is_repetition=0;
- for(int x=0;x<size/4;x++)
- {
- if(array[x])
- {
- for(int y=0;y<size/4;y++)
- {
- if(array[y]==array[x] && y!=x)
- {
- is_repetition++;
- }
- }
- }
-
- }
-
-
-
- fclose(fp);
- return size/4-is_repetition;
-
-}
-
-
-
-void CWM_OS_restoreData(int* data, uint32_t len,uint8_t type){
-
-
- FILE * fp=NULL;
- switch (type)
- {
- case CYWEE_DATA_CALORIES:
- fp = fopen(CWM_CALORIES_DATA_PATH,"rb");
- break;
- case CYWEE_DATA_STEP:
- fp = fopen(CWM_STEP_DATA_PATH,"rb");
- break;
- case CYWEE_DATA_DISTANCE:
- fp = fopen(CWM_DISTANCE_DATA_PATH,"rb");
- break;
- case CYWEE_DATA_FAT:
- fp = fopen(CWM_FAT_DATA_PATH,"rb");
- break;
- default:
- break;
- }
-
-
- if(fp==NULL)
- {
- CWM_OS_dbgPrintf("%s open fail\n",CWM_HISTORY_DATA_PATH);;
- return;
- }
- int ret =fread(data,1,len,fp);
-
- //CWM_OS_dbgPrintf("CWM_OS_restoreData fread failed %d %d\n",ret,*data);
-
- fclose(fp);
-}
-
-void CWM_OS_OneHourAgo_restoreData(void* data, uint32_t len,uint8_t type){
-
-
- FILE * fp=NULL;
- switch (type)
- {
- case CYWEE_DATA_CALORIES:
- fp = fopen(CWM_CALORIES_DATA_PATH_AGO,"rb");
- break;
- case CYWEE_DATA_STEP:
- fp = fopen(CWM_STEP_DATA_PATH_AGO,"rb");
- break;
- case CYWEE_DATA_DISTANCE:
- fp = fopen(CWM_DISTANCE_DATA_PATH_AGO,"rb");
- break;
- case CYWEE_DATA_FAT:
- fp = fopen(CWM_FAT_DATA_PATH_AGO,"rb");
- break;
- default:
- break;
- }
-
-
- if(fp==NULL)
- {
- CWM_OS_dbgPrintf("%s open fail\n",CWM_HISTORY_DATA_PATH);;
- return;
- }
- int ret =fread(data,1,len,fp);
-
- //CWM_OS_dbgPrintf("CWM_OS_restoreData fread failed %d %d\n",ret,*(int*)data);
-
- fclose(fp);
-}
\ No newline at end of file
#ifdef SUPPORT_CYWEE_SERVICE\r
memset(gsensordata,0.0f,sizeof(gsenson_t) * *count);\r
\r
- gsensor_get_n_data(*count,gsensordata); \r
+ cywee_get_gsensor_data(*count,gsensordata); \r
\r
for(ii=0; ii<*count; ii++)\r
{\r
gsen_fifo_z_send[ii] = gsensordata[ii].z * 4096 / 10;\r
}\r
\r
- // gsensor_get_n_data(8,gsensordata); \r
+ // cywee_get_gsensor_data(8,gsensordata); \r
// for(ii=0; ii<*count; ii++)\r
// {\r
// if(gsensordata[ii].x == 0.0f && gsensordata[ii].y == 0.0f && gsensordata[ii].z == 0.0f)\r
{\r
return;\r
}\r
- //gsensor_get_n_data(8,gsensordata);\r
+ //cywee_get_gsensor_data(8,gsensordata);\r
for(ii=0; ii<*count; ii++)\r
{\r
\r
LOS_Mdelay(ms);
}
-
-
+#ifdef SUPPORT_PPG_SERVICE
#include "ppg_service.h"
+#endif
#include "cmsis_os2.h"
#define BUTTON_APP_TIMER_INTERVAL 20
osTimerId_t g_timer40_timer = NULL;
static void timer40_func(void)
{
+#ifdef SUPPORT_PPG_SERVICE
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_40TIMER_CALLBACK);
+#endif
// agc_timeout_handler(NULL);
}
static void timer320_func(void)
{
+#ifdef SUPPORT_PPG_SERVICE
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_320TIMER_CALLBACK);
+#endif
// heart_rate_meas_timeout_handler(NULL);
}
static void timer5000_func(void)
{
+#ifdef SUPPORT_PPG_SERVICE
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_5000TIMER_CALLBACK);
+#endif
// heart_rate_meas_timeout_handler(NULL);
}
bool tyhx_timer_init(void)
}
-// #include "cywee_ble_Service.h"
+// #include "cywee_ble_service.h"
void delete_before_file(uint8_t type)
{
{
case 0x43: //同步步数历史数据
- if( get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
+ if( cywee_get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
{
if(value>0)
{
break;
case 0x44://同步燃脂时间数据
- if(get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
+ if(cywee_get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
{
if(value_16>0)
{
break;
case 0x45://同步站立历史数据
- // if(get_stand_falg())
+ // if(cywee_get_stand_falg())
// {
// memcpy(buf+size,&creationTime,4);
// size+=4;
break;
case 0x46://同步卡路里历史数据
- if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
+ if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
{
if(f_value>0)
{
break;
case 0x47://同步距离历史数据
- if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
+ if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
{
if(f_value>0)
{
}msg_drink_info_t;
-typedef enum {
- CYWEE_SAVE_DATA_STEP,
- CYWEE_SAVE_DATA_DISTANCE,
- CYWEE_SAVE_DATA_CALORIES,
- CYWEE_SAVE_DATA_FAT,
-} CYWEE_SAVE_DATA_TYPE;
-
-
void read_message_data(void);//读内存信息数据开机读一次
void set_weather_now_data(int humidity, char* windScale, char* textNight,int uvIndex,int temp,int iconNight);
}
-#include "cywee_ble_Service.h"
+#include "cywee_ble_service.h"
void delete_before_file(uint8_t type)
{
{
case 0x43: //同步步数历史数据
- if( get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
+ if( cywee_get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
{
if(value>0)
{
break;
case 0x44://同步燃脂时间数据
- if(get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
+ if(cywee_get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
{
if(value_16>0)
{
break;
case 0x45://同步站立历史数据
- // if(get_stand_falg())
+ // if(cywee_get_stand_falg())
// {
// memcpy(buf+size,&creationTime,4);
// size+=4;
break;
case 0x46://同步卡路里历史数据
- if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
+ if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
{
if(f_value>0)
{
break;
case 0x47://同步距离历史数据
- if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
+ if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
{
if(f_value>0)
{
}
-#include "cywee_ble_Service.h"
+#include "cywee_ble_service.h"
void delete_before_file(uint8_t type)
{
{
case 0x43: //同步步数历史数据
- if( get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
+ if( cywee_get_now_hour_data(&value,CYWEE_SAVE_DATA_STEP))
{
if(value>0)
{
break;
case 0x44://同步燃脂时间数据
- if(get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
+ if(cywee_get_now_hour_data(&value_16,CYWEE_SAVE_DATA_FAT))
{
if(value_16>0)
{
break;
case 0x45://同步站立历史数据
- // if(get_stand_falg())
+ // if(cywee_get_stand_falg())
// {
// memcpy(buf+size,&creationTime,4);
// size+=4;
break;
case 0x46://同步卡路里历史数据
- if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
+ if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_CALORIES))
{
if(f_value>0)
{
break;
case 0x47://同步距离历史数据
- if(get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
+ if(cywee_get_now_hour_data(&f_value,CYWEE_SAVE_DATA_DISTANCE))
{
if(f_value>0)
{
// }\r
// else if(i==2)\r
// {\r
- // // value=get_step_data();\r
+ // // value=cywee_get_step_data();\r
// }\r
// else if(i==3)\r
// {\r
- // value=get_fat_time_data();\r
+ // value=cywee_get_fat_time_data();\r
// }\r
// else if(i==4)\r
// {\r
// }\r
// else if(i==5)\r
// {\r
- // value=get_calories_data();\r
+ // value=cywee_get_calories_data();\r
// }\r
// else if(i==6)\r
// {\r
- // value=get_distance_data();\r
+ // value=cywee_get_distance_data();\r
// }\r
\r
\r
#endif\r
\r
#include "ConfigModelC.h"\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
-#include "cywee_ble_Service.h"\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
+#include "cywee_ble_service.h"\r
#endif\r
#ifdef SUPPORT_OHOSFWK\r
#include "BluetoothWrapper.h"\r
|| uuid_tmp == BLE_UUID_PPG_BLE_SERVICE \r
//|| uuid_tmp == ALIPAYY_SERVICE_ID\r
#endif\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
|| uuid_tmp == BLE_UUID_CYWEE_REPORT_SERVICE\r
#endif\r
) \r
#endif\r
\r
\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
\r
bt_uuid_t cywee_ble_service_uuid = {0};\r
bts_data_to_uuid_len2(BLE_UUID_CYWEE_REPORT_SERVICE, &cywee_ble_service_uuid);\r
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ppg ble service svr_ble_bt_gatts_service_add_cb ret:%d\r\n",ret);\r
}\r
#endif\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
if (ble_gatts_cmp_uuid(uuid, &cywee_ble_service_uuid) == true){\r
ble_cywee_add_characters_and_descriptors(server_id,srv_handle);\r
ret = gatts_start_service(server_id, srv_handle);\r
ble_ppgtest_store_report_handle(result->value_handle);\r
}\r
#endif\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
bt_uuid_t cywee_report_uuid = {0};\r
bts_data_to_uuid_len2(BLE_UUID_CYWEE_RX, &cywee_report_uuid);\r
\r
\r
// ble_ppgtest_server_init(g_ble_server_id);\r
\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
ble_cywee_server_init(g_ble_server_id);\r
#endif\r
gattc_reg_id();\r
// factory_recv_ota_data(p_msgbuf,msg_len,server_handle);\r
// }\r
\r
-#ifdef SUPPORT_CYWEE_SERVICE\r
+#ifdef SUPPORT_CYWEE_BLE_SERVICE\r
else if (server_handle == get_cywee_ate_write_handl())\r
{\r
cywee_recv_cmd_data(p_msgbuf,msg_len,server_handle);\r
* @Author: penglei 1624952103@qq.com\r
* @Date: 2024-06-17 14:31:08\r
* @LastEditors: penglei 1624952103@qq.com\r
- * @LastEditTime: 2025-02-20 18:34:13\r
+ * @LastEditTime: 2025-05-20 11:31:30\r
* @FilePath: /FD230/code/sdk/application/wearable/service/factorytest_service/factorytest_protocol.c\r
* @Description: \r
* \r
return;\r
}\r
uapi_get_timestampe_ss(¤t_time);\r
+#ifdef SUPORT_PPG_SERVICE\r
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_SINGLE_CHECK_MODE_TEST);\r
+#endif\r
LOS_Msleep(200);\r
#ifdef PPG_HX3695\r
FT_RESULTS_t ft_result = hx3695_factroy_test(SINGLE_CHECK_TEST);\r
#endif\r
+#ifdef SUPORT_PPG_SERVICE\r
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);\r
+#endif\r
#ifdef PPG_HX3695\r
PRINT("ft_result.gr_data_final : %d , ft_result.red_data_final : %d , ft_result.ir_data_final : %d\r\n",ft_result.gr_data_final,ft_result.red_data_final,ft_result.ir_data_final);\r
if(!(ft_result.gr_data_final && ft_result.red_data_final && ft_result.ir_data_final))\r
return;\r
}\r
uapi_get_timestampe_ss(¤t_time);\r
- get_gsonsen_xyz(&g);\r
+ cywee_get_gsensor_data(1,&g);\r
if(g.x == 0 && g.y == 0 && g.z == 0)\r
{\r
aging_t.gsensor_error++;\r
#include "custom_utils.h"
#include "custom_save_runtime.h"
#ifdef FD230_650
-#include "cywee_service.h"
#include "microtar.h"
#include "mag_service.h"
#include "ppg_service.h"
#include "bleEvent.h"
#endif
+#ifdef SUPPORT_CYWEE_SERVICE
+#include "cywee_hal.h"
+#include "cywee_service.h"
+#endif
#ifdef SUPORT_MAG_SERVICE
#include "mag_hal.h"
PRINT("startup_post_init_task !\r\n");
- #ifdef FD230_650
+#ifdef SUPPORT_CYWEE_SERVICE
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIME_SYNC,NULL);
- #endif
+#endif
if(!cm_custom_ble_service_on_flag())
{
stop_custom_ble_service();
void get_gsensor_single(uint8_t *databuf) {
- #ifdef FD230_650
+ #ifdef SUPORT_CYWEE_SERVICE
gsenson_t t;
- get_gsonsen_xyz(&t);
+ cywee_get_gsensor_data(1,&t);
int16_t x, y, z;
x = t.x * 2048;
y = t.y * 2048;
#ifdef FD230_650
void gsensor_get_single_data(gsenson_t *t)
{
- get_gsonsen_xyz(t);
+ cywee_get_gsensor_data(1,&t);
}
#endif
void uapi_ppg_get_id(uint8_t *chip_id)
{
-#ifdef PPG_HX3695
- hx3695_get_id(chip_id);
+#ifdef SUPORT_PPG_SERVICE
+ *chip_id = ppg_get_chip_id();
#endif
#ifdef PPG_VC9202
uint8_t id = 0;
#endif
}
-//cywee时间更新
-void uapi_cywee_time_sync(void)
-{
- #ifdef FD230_650
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIME_SYNC,NULL);
- #endif
-}
-
void uapi_cywee_get_id(uint8_t *id)
{
custom_i2c_read_regs(0x19,0x0FU,1,id,1,I2C_BUS_2);
void uapi_cywee_get_version(char *databuf,uint8_t len)
{
- #ifdef FD230_650
+#ifdef SUPPORT_CYWEE_SERVICE
cywee_get_version(databuf,len);
- #endif
+#endif
}
#ifdef SUPPORT_ALIPAY_SEC
uint8_t uapi_get_cywee_active_state(void)
{
- #ifdef FD230_650
+ #ifdef SUPPORT_CYWEE_SERVICE
return cywee_get_active_state();
#endif
return 0;
uapi_check_spk(1);
LOS_Msleep(6000);
uapi_check_spk(0);
-
+#ifdef SUPORT_PPG_SERVICE
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_PPG_TEST);
LOS_Msleep(6000);
send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST);
+#endif
uapi_ppg_get_id(&ppg_id);
//if(ft_result.gr_data_final < 10000 || ft_result.red_data_final < 10000 || ft_result.ir_data_final < 10000)
if(ppg_id != 0x65)
}
// WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"\r\nCAT1 SERVICE MCU WAKEUP SUCCESS\r\n");
#endif
-}
-
\ No newline at end of file
+}
\ No newline at end of file
#include "PhoneServiceC.h"
#include "battery_hal.h"
-#include "cywee_hal.h"
+
#include "Bluetooyhpabpserver.h"
#include "dial_sos_c.h"
#include "battery_service.h"
-#include "cywee_hal.h"
#endif
// #include "msg_center_customerC.h"
#ifdef SUPPORT_A5133_SERVICE
#include "service/a5133_service.h"
#endif
+
+#ifdef SUPPORT_CYWEE_SERVICE
+#include "cywee_hal.h"
+#include "cywee_service.h"
+#endif
+
#define ARRAY_COUNT(array) (sizeof(array) / sizeof(array[0]))
#define CUSTOM_UTILS_MAX_ARGC 8
#define CUSTOM_UTILS_MAX_ARGV_LEN 256
UNUSED(strCommonCmd);
- uapi_cywee_time_sync();
+#ifdef SUPPORT_CYWEE_SERVICE
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIME_SYNC,NULL);
+#endif
return ERRCODE_SUCC;
}
low_power_play_toUI(atoi( (char *)argv[1]));
break;
case 12:
- set_step_data(atoi( (char *)argv[1]));
+ cywee_set_step_data(atoi( (char *)argv[1]));
break;
case 13:
CustomEventPublish(TOPIC_EVENT_BLE_TRANSMIT,(uint8_t *)&type_2,1);