TOPIC_EVENT_HFP_FINISHED,
TOPIC_EVENT_HFP_PHONE_TO_WATCH,
TOPIC_EVENT_HFP_WATCH_TO_PHONE,
+ TOPIC_EVENT_NORMAL_UPDATE,
+ TOPIC_EVENT_TREADMILL_UPDATE,
+ TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE,
+ TOPIC_EVENT_INDOOR_RUNNING_UPDATE,
+ TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE,
+ TOPIC_EVENT_FREE_TRAINING_UPDATE,
+ TOPIC_EVENT_AR_ALERT_UPDATE,
+ TOPIC_EVENT_EXTRA_INFO_UPDATE,
#ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
TOPIC_EVENT_CHARGE_PLUG,
TOPIC_EVENT_CHARGE_UNPLUG,
{TOPIC_EVENT_STEPDATA_UPDATE, A_CORE_MASK, 1},
{TOPIC_EVENT_SHUTDOWN, A_CORE_MASK, 1},
{TOPIC_EVENT_HEARTRATE_UPDATA, A_CORE_MASK, 1},
+ {TOPIC_EVENT_NORMAL_UPDATE, A_CORE_MASK, 1},
+ {TOPIC_EVENT_TREADMILL_UPDATE, A_CORE_MASK, 1},
+ {TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE, A_CORE_MASK, 1},
+ {TOPIC_EVENT_INDOOR_RUNNING_UPDATE, A_CORE_MASK, 1},
+ {TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE, A_CORE_MASK, 1},
+ {TOPIC_EVENT_FREE_TRAINING_UPDATE, A_CORE_MASK, 1},
+ {TOPIC_EVENT_AR_ALERT_UPDATE, A_CORE_MASK, 1},
+ {TOPIC_EVENT_EXTRA_INFO_UPDATE, A_CORE_MASK, 1},
#ifdef SUPPORT_SPO2_NOTIFICATION
{TOPIC_EVENT_SPO2_UPDATE, A_CORE_MASK, 1},
{TOPIC_EVENT_START_HRS_MONITORING, A_CORE_MASK, 1},
case BLE_TEST_CMD_COMMON_SUB_MODE_SYSTEM_VERSION:\r
if (testitem == 0x02)\r
{\r
-\r
+ //获取软件版本\r
uint8_t buildversion[128]={0};\r
uint16_t versionlen = 128;\r
ret = uapi_get_buildversion(buildversion,versionlen);\r
send_data,\r
7);\r
}\r
- //获取蓝牙信号强度(未完成)\r
+ //获取蓝牙信号强度\r
if (testitem == 0x03)\r
{\r
uint8_t send_data = 0x00;\r
&send_data,\r
1);\r
}\r
- //发射功率(未完成)\r
+ //发射功率\r
if (testitem == 0x05)\r
{\r
uint8_t send_data = 0x00;\r
\r
printf("crc16 0x%04X vs 0x%04X\n",crc16,crc16_2);\r
\r
- //if( crc16 == crc16_2) //校验通过,开始正式解析\r
+ if( crc16 == crc16_2) //校验通过,开始正式解析\r
{\r
printf("mode %d\n",header.mode);\r
switch(header.mode)\r
const PriorityMapper g_pri_mapper[] = {
{TOPIC_EVENT_ALARM_RING, PRIORITY_TWO},
{TOPIC_EVENT_NEXTDAY_UPDATE, PRIORITY_TWO},
+ {TOPIC_EVENT_NORMAL_UPDATE,PRIORITY_TWO},
+ {TOPIC_EVENT_TREADMILL_UPDATE,PRIORITY_TWO},
+ {TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE,PRIORITY_TWO},
+ {TOPIC_EVENT_INDOOR_RUNNING_UPDATE,PRIORITY_TWO},
+ {TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE,PRIORITY_TWO},
+ {TOPIC_EVENT_FREE_TRAINING_UPDATE,PRIORITY_TWO},
+ {TOPIC_EVENT_AR_ALERT_UPDATE,PRIORITY_TWO},
+ {TOPIC_EVENT_EXTRA_INFO_UPDATE,PRIORITY_TWO},
#ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
{TOPIC_EVENT_CHARGE_PLUG, PRIORITY_TWO},
{TOPIC_EVENT_CHARGE_UNPLUG, PRIORITY_TWO},
MsgCenterSubscribeTopic(TOPIC_EVENT_HFP_FINISHED);
MsgCenterSubscribeTopic(TOPIC_EVENT_HFP_PHONE_TO_WATCH);
MsgCenterSubscribeTopic(TOPIC_EVENT_HFP_WATCH_TO_PHONE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_NORMAL_UPDATE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_TREADMILL_UPDATE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_INDOOR_RUNNING_UPDATE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_FREE_TRAINING_UPDATE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_AR_ALERT_UPDATE);
+ MsgCenterSubscribeTopic(TOPIC_EVENT_EXTRA_INFO_UPDATE);
#ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
MsgCenterSubscribeTopic(TOPIC_EVENT_CHARGE_PLUG);
MsgCenterSubscribeTopic(TOPIC_EVENT_CHARGE_UNPLUG);
#endif
MsgCenterSubscribeTopic(TOPIC_EVENT_FIND_WATCH);
MsgCenterSubscribeTopic(TOPIC_EVENT_CANCEL_FIND_WATCH);
+
}
static OHOS::UIViewGroup* showAlarmNotify(void)
NotificationManager::GetInstance()->ShowNotify(showCallingNotify, (uint16_t)topic, true);
}
}
+//一般模式
+void MsgCenterNotifyNormalProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+}
+//跑步机模式
+void MsgCenterNotifyTreadmillProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+}
+//户外跑步模式
+void MsgCenterNotifyOutdoorRunningProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+}
+//室内跑步模式
+void MsgCenterNotifyIndoorRunningProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+}
+//防误触计步
+void MsgCenterNotifyFitnessPedometerProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+}
+//自由运动模式
+void MsgCenterNotifyFreeTrainingProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+}
+//长时间动作侦测模式
+void MsgCenterNotifyArAlertProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+}
+
+void MsgCenterNotifyExtraInfoProc(const Topic topic, Request* req)
+{
+ unused(topic);
+ unused(req);
+}
#ifdef SUPPORT_SPO2_NOTIFICATION_TEST
uint32_t md = PPG_SERVICE_CMD_TYPE_DO_PPG_TEST;
//灰卡测试
-void MsgCenterNotifyCardhProc(const Topic topic, Request* req)
+void MsgCenterNotifyCardProc(const Topic topic, Request* req)
{
unused(topic);
unused(req);
}
//漏光测试
-void MsgCenterNotifyleaklighthProc(const Topic topic, Request* req)
+void MsgCenterNotifyleaklightProc(const Topic topic, Request* req)
{
unused(topic);
unused(req);
{TOPIC_EVENT_HFP_WATCH_TO_PHONE, MsgCenterNotifyHfpPhoneProc},
{TOPIC_EVENT_HFP_WATCH_ACTIVE, MsgCenterNotifyHfpWatchProc},
{TOPIC_EVENT_HFP_PHONE_TO_WATCH, MsgCenterNotifyHfpWatchProc},
+ {TOPIC_EVENT_FIND_WATCH,MsgCenterNotifyFindWatchProc},
+ {TOPIC_EVENT_CANCEL_FIND_WATCH,MsgCenterNotifyCanCelFindWatchProc},
+ {TOPIC_EVENT_NORMAL_UPDATE, MsgCenterNotifyNormalProc},
+ {TOPIC_EVENT_TREADMILL_UPDATE, MsgCenterNotifyTreadmillProc},
+ {TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE, MsgCenterNotifyOutdoorRunningProc},
+ {TOPIC_EVENT_INDOOR_RUNNING_UPDATE, MsgCenterNotifyIndoorRunningProc},
+ {TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE, MsgCenterNotifyFitnessPedometerProc},
+ {TOPIC_EVENT_FREE_TRAINING_UPDATE, MsgCenterNotifyFreeTrainingProc},
+ {TOPIC_EVENT_AR_ALERT_UPDATE, MsgCenterNotifyArAlertProc},
+ {TOPIC_EVENT_EXTRA_INFO_UPDATE, MsgCenterNotifyExtraInfoProc},
#ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
{TOPIC_EVENT_CHARGE_PLUG, MsgCenterNotifyChargePlugProc},
{TOPIC_EVENT_CHARGE_UNPLUG, MsgCenterNotifyChargeUnPlugProc},
{TOPIC_EVENT_STOP_HRS_MONITORING, MsgCenterNotifyStopHRMonitoringProc},
{TOPIC_EVENT_START_SPO2_MONITORING, MsgCenterNotifyStartSPO2MonitoringProc},
{TOPIC_EVENT_STOP_SPO2_MONITORING, MsgCenterNotifyStopSPO2MonitoringProc},
- {TOPIC_EVENT_GRAYCARD_UPDATA, MsgCenterNotifyCardhProc},
- {TOPIC_EVENT_LEAKLIGHT_UPDATA, MsgCenterNotifyleaklighthProc},
+ {TOPIC_EVENT_GRAYCARD_UPDATA, MsgCenterNotifyCardProc},
+ {TOPIC_EVENT_LEAKLIGHT_UPDATA, MsgCenterNotifyleaklightProc},
#endif
#ifdef SUPPORT_CAT1_MODEM
{TOPIC_EVENT_CAT1_INCOMMING, MsgCenterNotifyCatIncomingCallProc},
{TOPIC_EVENT_DEVICE_UNBIND, MsgCenterNotifyDeviceUnBindProc},
{TOPIC_EVENT_DEVICE_UNBINDING_REQUEST, MsgCenterNotifyDeviceUnBindingRequestProc},
#endif
- {TOPIC_EVENT_FIND_WATCH,MsgCenterNotifyFindWatchProc},
- {TOPIC_EVENT_CANCEL_FIND_WATCH,MsgCenterNotifyCanCelFindWatchProc},
};
static msg_center_notify_table_t *MsgCenterGetNotifyTblCb(uint8_t idx)
${CMAKE_CURRENT_SOURCE_DIR}/src/board_yh601s.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}/../acc/lis2doc_STdC/examples/lis2doc_read_data_single.c
# ${CMAKE_CURRENT_SOURCE_DIR}/../acc/lis2doc_STdC/lis2doc_porting.c
)
#define SPORT_ACTIVE_MODE_NORMAL 1001 // 一般模式(生活模式) normal(base) 1001
#define SPORT_ACTIVE_MODE_TREADMILL 1002 // 跑步機 treadmill 1002
-#define SPORT_ACTIVE_MODE_OUTDORR_RUNNING 1003 // 戶外跑步 outdoor running 1003
-#define SPORT_ACTIVE_MODE_INDOR_RUNNING 1006 // 室內跑步 indoor running 1006
+#define SPORT_ACTIVE_MODE_OUTDOOR_RUNNING 1003 // 戶外跑步 outdoor running 1003
+#define SPORT_ACTIVE_MODE_INDOOR_RUNNING 1006 // 室內跑步 indoor running 1006
#define SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR 1008 // 防誤觸計步 fitness_pedometer 1008
#define SPORT_ACTIVE_MODE_FREE_TRAINING 5001 // 自由運動 FreeTraining 5001
#define SPORT_ACTIVE_MODE_AR_ALERT 1001 // 長時間動作偵測 AR alert 1001
int mag_axis_setting;// int[2] = mag_axis setting (0: default, 1-24: axis_mode)
}input_sensor_config_t;
+#pragma pack(1)
+typedef struct
+{
+ int activity_mode;
+ int calories;
+ int duration;
+ int steps;
+ int distance;
+ int step_frequency;
+ int step_length;
+ int pace;
+ int BMR_calories;
+ int is_pause;
+ int avg_step_freq;
+ int avg_step_len;
+ int avg_pace;
+ int max_step_freq;
+ int max_pace;
+ int ar_alert_type;
+}cywee_result_t;
+#pragma pack()
+typedef enum{
+ CYWEE_MSG_TYPE_NORMAL_UPDATE,
+ CYWEE_MSG_TYPE_TREADMILL_UPDATE,
+ CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE,
+ CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE,
+ CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE,
+ CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE,
+ CYWEE_MSG_TYPE_AR_ALERT_UPDATE,
+ CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE,
+} cywee_msg_type_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_setstatus(int cmd);
+void activity_exit(void);
#pragma pack()
-int cywee_main_dml(void);
+int cywee_main_dml(int cmd);
void cywee_int_handler(void);
+void watch_hand_updown(int fdata);
#ifdef __cplusplus
+/*
+ * @Author: penglei 1624952103@qq.com
+ * @Date: 2024-03-26 20:29:58
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-04-09 09:18:51
+ * @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
+ * @Description:
+ *
+ * Copyright (c) 2024 by ${git_name_email}, All Rights Reserved.
+ */
/**
* Copyright (c) @CompanyNameMagicTag 2022-2022. All rights reserved. \n
*
#include "stdint.h"
#include "errcode.h"
+// #define CYWEE_SERVICE_CMD_TYPE_DO_PPG_40TIMER_CALLBACK 0x0A
+// #define PPG_SERVICE_CMD_TYPE_DO_PPG_320TIMER_CALLBACK 0x10
+// #define PPG_SERVICE_CMD_TYPE_DO_PPG_TEST 0x11
+// #define PPG_SERVICE_CMD_TYPE_DO_HRV_TEST 0x12
+// #define PPG_SERVICE_CMD_TYPE_DO_SPO2_TEST 0x13
+// #define PPG_SERVICE_CMD_TYPE_DO_LEAKLIGHT_TEST 0x14
+// #define PPG_SERVICE_CMD_TYPE_DO_GRAYCARD_TEST 0x15
+// #define PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST 0x1E
+// #define PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST 0x1F
+
#define CYWEE_SERVICE_CMD_TIMER_CHECK 0x11
#define CYWEE_SERVICE_CMD_START_CHECK 0x12
#define CYWEE_SERVICE_CMD_STOP_CHECK 0x13
#define CYWEE_SERVICE_CMD_TEST 0x14
+#define CYWEE_SERVICE_CMD_NORMAL_MODE 0x15
+#define CYWEE_SERVICE_CMD_TREADMILL_MODE 0x16
+#define CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE 0x17
+#define CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE 0x18
+#define CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE 0x19
+#define CYWEE_SERVICE_CMD_FREE_TRAINING_MODE 0x20
+#define CYWEE_SERVICE_CMD_AR_ALERT_MODE 0x21
+
+#define CYWEE_SERVICE_CMD_PAUSE 0x22
+#define CYWEE_SERVICE_CMD_RESUME 0x23
+
+#define CYWEE_SERVICE_CMD_EXIT 0x24
+
errcode_t uapi_cywee_service_init(void);
void uapi_cywee_service_deinit(void);
+
/**
* 测试指令 参数cmd 选项: ACC_SERVICE_CMD_START_CHECK,ACC_SERVICE_CMD_STOP_CHECK
*/
} else if (strcmp(mode, "test") == 0) {
PRINT("cywee test\n");
do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TEST);
- }
+ } else if (strcmp(mode, "normal") == 0) {
+ PRINT("cywee normal mode\n");
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_NORMAL_MODE);
+ } else if (strcmp(mode, "treadmill") == 0) {
+ PRINT("cywee treadmill mode\n");
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TREADMILL_MODE);
+ } else if (strcmp(mode, "outdoor") == 0) {
+ PRINT("cywee outdoor running mode\n");
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE);
+ } else if (strcmp(mode, "indoor") == 0) {
+ PRINT("cywee indoor running mode\n");
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE);
+ } else if (strcmp(mode, "pedometer") == 0) {
+ PRINT("cywee fitness pedometer mode\n");
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE);
+ } else if (strcmp(mode, "free") == 0) {
+ PRINT("cywee free training mode\n");
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_FREE_TRAINING_MODE);
+ } else if (strcmp(mode, "pause") == 0) {
+ PRINT("cywee pause\n");
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_PAUSE);
+ } else if (strcmp(mode, "resume") == 0) {
+ PRINT("cywee resume\n");
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_RESUME);
+ } else if (strcmp(mode, "exit") == 0) {
+ PRINT("cywee exit\n");
+ do_cywee_service_check_msg(CYWEE_SERVICE_CMD_EXIT);
+ }
return ERRCODE_SUCC;
}
static const at_cmd_table_t g_cywee_cmd[] = {
{ (char *)"AT^CYWEETEST", cywee_do_test, (char *)"test" },
+ { (char *)"AT^CYWEETEST", cywee_do_test, (char *)"normal" },
+ { (char *)"AT^CYWEETEST", cywee_do_test, (char *)"free" },
+ { (char *)"AT^CYWEETEST", cywee_do_test, (char *)"pause" },
+ { (char *)"AT^CYWEETEST", cywee_do_test, (char *)"resume" },
+ { (char *)"AT^CYWEETEST", cywee_do_test, (char *)"exit" },
};
at_cmd_table_t *get_cywee_cmd_table(uint32_t *cmd_count)
--- /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;
+}
+
+
* History: \n
* 2022-08-16, Create file. \n
*/
-
#include "pinctrl.h"
#include "debug_print.h"
#include "soc_osal.h"
#include "los_printf.h"
#include "custom_utils.h"
+#include "cywee_hal.h"
+
+#include "broadcast_service.h"
+#include "broadcast_feature.h"
+
+#include "ppg_service.h"
+
+
typedef struct
{
uint8_t cmd;
static bool cywee_service_running_stat = false;
static void cywee_service_check_timer_callback(void* data);
+void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen)
+{
+ PRINT("cywee_msg_callback\r\n");
+ cywee_result_t c_result_t;
+ memcpy(&c_result_t, msg_data, sizeof(cywee_result_t));
+ switch(msg_type)
+ {
+ //一般模式
+ case CYWEE_MSG_TYPE_NORMAL_UPDATE:
+ PRINT("CYWEE_MSG_TYPE_NORMAL_UPDATE");
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+ c_result_t.activity_mode,c_result_t.steps,c_result_t.distance,c_result_t.calories,c_result_t.step_frequency,
+ c_result_t.step_length,c_result_t.pace,c_result_t.BMR_calories,c_result_t.is_pause,sizeof(c_result_t));
+ CustomEventPublish(TOPIC_EVENT_NORMAL_UPDATE,&c_result_t,sizeof(c_result_t));
+ break;
+
+ //跑步机模式
+ case CYWEE_MSG_TYPE_TREADMILL_UPDATE:
+ PRINT("CYWEE_MSG_TYPE_TREADMILL_UPDATE");
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+ c_result_t.activity_mode,c_result_t.steps,c_result_t.distance,c_result_t.calories,c_result_t.step_frequency,
+ c_result_t.step_length,c_result_t.pace,c_result_t.BMR_calories,c_result_t.is_pause,sizeof(c_result_t));
+ CustomEventPublish(TOPIC_EVENT_TREADMILL_UPDATE,&c_result_t,sizeof(c_result_t));
+ break;
+
+ //户外跑步模式
+ case CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE:
+ PRINT("CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE");
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+ c_result_t.activity_mode,c_result_t.steps,c_result_t.distance,c_result_t.calories,c_result_t.step_frequency,
+ c_result_t.step_length,c_result_t.pace,c_result_t.BMR_calories,c_result_t.is_pause,sizeof(c_result_t));
+ CustomEventPublish(TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE,&c_result_t,sizeof(c_result_t));
+ break;
+
+ //室内跑步模式
+ case CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE:
+ PRINT("CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE");
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+ c_result_t.activity_mode,c_result_t.steps,c_result_t.distance,c_result_t.calories,c_result_t.step_frequency,
+ c_result_t.step_length,c_result_t.pace,c_result_t.BMR_calories,c_result_t.is_pause,sizeof(c_result_t));
+ CustomEventPublish(TOPIC_EVENT_INDOOR_RUNNING_UPDATE,&c_result_t,sizeof(c_result_t));
+ break;
+
+ //防误触计步模式
+ case CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE:
+ PRINT("CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE");
+ PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+ c_result_t.activity_mode,c_result_t.steps,c_result_t.distance,c_result_t.calories,c_result_t.step_frequency,
+ c_result_t.step_length,c_result_t.pace,c_result_t.BMR_calories,c_result_t.is_pause,sizeof(c_result_t));
+ CustomEventPublish(TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE,&c_result_t,sizeof(c_result_t));
+ break;
+
+ //自由运动模式
+ case CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE:
+ PRINT("CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE");
+ PRINT("activit_mode[%d], calories[%d], duration[%d],len[%d]\n",
+ c_result_t.activity_mode,c_result_t.calories,c_result_t.duration,sizeof(c_result_t));
+ CustomEventPublish(TOPIC_EVENT_FREE_TRAINING_UPDATE,&c_result_t,sizeof(c_result_t));
+ break;
+
+ //长时间动作侦测模式
+ case CYWEE_MSG_TYPE_AR_ALERT_UPDATE:
+ PRINT("CYWEE_MSG_TYPE_AR_ALERT_UPDATE");
+ PRINT("activit_mode[%d], ar alert type[%d], len[%d]\n",
+ c_result_t.activity_mode,c_result_t.ar_alert_type,sizeof(c_result_t));
+ CustomEventPublish(TOPIC_EVENT_AR_ALERT_UPDATE,&c_result_t,sizeof(c_result_t));
+ break;
+
+ //额外信息
+ case CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE:
+ PRINT("CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE");
+ PRINT("average step frequency[%d], average step length[%d], average pace[%d], max step frequency[%d], max pace[%d]\n",
+ c_result_t.avg_step_freq,c_result_t.avg_step_len,c_result_t.avg_pace,c_result_t.max_step_freq,c_result_t.max_pace,sizeof(c_result_t));
+ CustomEventPublish(TOPIC_EVENT_EXTRA_INFO_UPDATE,&c_result_t,sizeof(c_result_t));
+ break;
+ default:
+ PRINT("Unknown sensor message type");
+ break;
+ }
+}
+
static void cywee_service_timer_start_check(uint32_t rtc_ms)
{
test_api();
}else if (mail.cmd == CYWEE_SERVICE_CMD_START_CHECK){
cywee_service_running_stat = true;
- cywee_main_dml();
+ cywee_main_dml(SPORT_ACTIVE_MODE_NORMAL);
cywee_service_timer_start_check(CYWEE_CHECK_MS);
}else if (mail.cmd == CYWEE_SERVICE_CMD_STOP_CHECK){
cywee_service_running_stat = false;
if (g_cywee_service_timer != NULL) osTimerStop(g_cywee_service_timer);
-
+ activity_exit();
+ }
+
+ else if (mail.cmd == CYWEE_SERVICE_CMD_NORMAL_MODE){
+ cywee_service_running_stat = true;
+ cywee_main_dml(SPORT_ACTIVE_MODE_NORMAL);
+ cywee_service_timer_start_check(CYWEE_CHECK_MS);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_TREADMILL_MODE){
+ cywee_service_running_stat = true;
+ cywee_main_dml(SPORT_ACTIVE_MODE_TREADMILL);
+ cywee_service_timer_start_check(CYWEE_CHECK_MS);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE){
+ cywee_service_running_stat = true;
+ cywee_main_dml(SPORT_ACTIVE_MODE_OUTDOOR_RUNNING);
+ cywee_service_timer_start_check(CYWEE_CHECK_MS);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE){
+ cywee_service_running_stat = true;
+ cywee_main_dml(SPORT_ACTIVE_MODE_INDOOR_RUNNING);
+ cywee_service_timer_start_check(CYWEE_CHECK_MS);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE){
+ cywee_service_running_stat = true;
+ cywee_main_dml(SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR);
+ cywee_service_timer_start_check(CYWEE_CHECK_MS);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_FREE_TRAINING_MODE){
+ cywee_service_running_stat = true;
+ cywee_main_dml(SPORT_ACTIVE_MODE_FREE_TRAINING);
+ cywee_service_timer_start_check(CYWEE_CHECK_MS);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_AR_ALERT_MODE){
+ cywee_service_running_stat = true;
+ cywee_main_dml(SPORT_ACTIVE_MODE_AR_ALERT);
+ cywee_service_timer_start_check(CYWEE_CHECK_MS);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_PAUSE){
+ activity_setstatus(1);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_RESUME){
+ activity_setstatus(0);
+ }else if(mail.cmd == CYWEE_SERVICE_CMD_EXIT){
+ activity_exit();
+ osTimerStop(g_cywee_service_timer);
}
+
+ #define CYWEE_SERVICE_CMD_PAUSE 0x22
+#define CYWEE_SERVICE_CMD_RESUME 0x23
+
}
}
#define CYWEE_APP_BOARD_MSG_COUNT 50
g_cywee_service_timer = osTimerNew((osTimerFunc_t)cywee_service_check_timer_callback, osTimerPeriodic, NULL, NULL);
- do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_CHECK);
+ cywee_register_msg_callback(cywee_msg_callback);
+ //do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_CHECK);
return ERRCODE_SUCC;
}
+// void cywee_service_service_resume(void)
+// {
+// PRINT("cywee_service_service resume!\r\n");
+// cywee_service_check_timer_callback(0);
+// }
+// void cywee_service_service_suspend(void)
+// {
+// PRINT("cywee_service_service suspend!\r\n");
+// }
+
// void cywee_service_service_resume(void)
// {
// PRINT("cywee_service_service resume!\r\n");
#include <cwm_lib_dml.h>
#include "cywee_hal.h"
#include "power_display_service.h"
-#include "ppg_service.h"
#include "broadcast_feature.h"
#include "cmsis_os2.h"
#include "osal_msgqueue.h"
#include "osal_mutex.h"
+#include "ppg_service.h"
+
#define AP_ENABLE_DML_SDO_LISTEN
int16_t gsensor_x[24] = {0};
int16_t gsensor_z[24] = {0};
#define GSENSON_MSG_COUNT 16
-osal_mutex mutex_gsenson_queue;
-osal_mutex mutex_gsensor_queue_ext;
-static unsigned long gsenson_queue;
+static gsenson_t gxyz_t;
+static uint8_t gsenson_falg=0;
+
+static uint16 num_falg=0;
+static gsenson_t gxyz_t_queue[16]={0};
+static int16 left_falg=0;
+static int16 right_falg=-1;
+
+SettingControl_t scl;
+cywee_result_t c_result_t;
-void uapi_GSENSON_create_queue(void)
+static int cywee_installized = 0 ;
+
+void watch_hand_updown(int fdata)
{
- if ( (osal_msg_queue_create("gsensor_queue", GSENSON_MSG_COUNT, &gsenson_queue,0, sizeof(gsenson_t)) )!= ERRCODE_SUCC)
- {
- CWM_OS_dbgPrintf("gsensor_queue create fail\r\n");
+ #if defined(SUPPORT_POWER_MANAGER)
+ const power_display_svr_api_t *display_api = power_display_svr_get_api();
+ #endif
+ if (fdata == 2)
+ {
+ #if defined(SUPPORT_POWER_MANAGER)
+ display_api->set_screen_set_keepon_timeout(0);
+ CWM_OS_dbgPrintf("[cwyee] turn_off_screen");
+ #endif
+ }else if (fdata == 1)
+ {
+ #if defined(SUPPORT_POWER_MANAGER)
+ if (display_api->get_screen_state() != SCREEN_ON) {
+ CWM_OS_dbgPrintf("[cwyee] turn_on_screen");
+ display_api->turn_on_screen();
+ }
+ display_api->set_screen_set_keepon_timeout(5000);
+ #endif
}
+}
- osal_mutex_init(&mutex_gsenson_queue);
+//0:resume , 1:pause
+void activity_setstatus(int cmd)
+{
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = cmd;
+ CWM_SettingControl(SCL_ACTIVITY_PAUSE, &scl);
}
-static gsenson_t gxyz_t;
-static uint8_t gsenson_falg=0;
+void activity_exit(void)
+{
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ CWM_SettingControl(SCL_REQ_ACTIVITY_EXIT, &scl);
+ cywee_installized = 0;
+}
-static uint16 num_falg=0;
-static gsenson_t gxyz_t_queue[16]={0};
-static int16 left_falg=0;
-static int16 right_falg=-1;
+void cyw_mode_init(int mode)
+{
+ switch (mode)
+ {
+ //一般模式(生活模式)
+ case SPORT_ACTIVE_MODE_NORMAL:
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = SPORT_ACTIVE_MODE_NORMAL;
+ CWM_SettingControl(SCL_SET_ACTIVITY_MODE, &scl);
+ // CWM_SettingControl(SCL_SET_INACTIVITY_MODE, &scl);
+ //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
+
+ break;
+
+ //跑步机
+ case SPORT_ACTIVE_MODE_TREADMILL:
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = SPORT_ACTIVE_MODE_TREADMILL;
+ CWM_SettingControl(SCL_SET_ACTIVITY_MODE, &scl);
+
+ break;
+
+ //户外跑步
+ case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = SPORT_ACTIVE_MODE_OUTDOOR_RUNNING;
+ CWM_SettingControl(SCL_SET_ACTIVITY_MODE, &scl);
+ break;
+
+ //室内跑步
+ case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = SPORT_ACTIVE_MODE_INDOOR_RUNNING;
+ CWM_SettingControl(SCL_SET_ACTIVITY_MODE, &scl);
+ break;
+
+ //防误触计步
+ case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR;
+ CWM_SettingControl(SCL_SET_ACTIVITY_MODE, &scl);
+ break;
+
+ //自由运动
+ case SPORT_ACTIVE_MODE_FREE_TRAINING:
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[1] = SPORT_ACTIVE_MODE_FREE_TRAINING;
+ CWM_SettingControl(SCL_SET_ACTIVITY_MODE, &scl);
+ break;
+ //长时间动作侦测
+ // case SPORT_ACTIVE_MODE_AR_ALERT:
+ // break;
+
+ default:
+ break;
+ }
+}
void get_gsonsen_xyz(gsenson_t *t)
{
}
}
+
//static int flag=32;
void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
+
+ cywee_msg_callback_t cywee_func;
+
switch (sensorEVT->sensorType) {
case IDX_ACCEL:
break;
case IDX_ALGO_WATCH_HANDUP:
CWM_OS_dbgPrintf("HANDUP_DOWN MSG [%d]\n",(int)sensorEVT->fData[1]);
- #if defined(SUPPORT_POWER_MANAGER)
- const power_display_svr_api_t *display_api = power_display_svr_get_api();
- #endif
- if ((int)sensorEVT->fData[1] == 2)
- {
- #if defined(SUPPORT_POWER_MANAGER)
- display_api->set_screen_set_keepon_timeout(0);
- CWM_OS_dbgPrintf("[cwyee] turn_off_screen");
- #endif
- }else if ((int)sensorEVT->fData[1] == 1)
- {
- #if defined(SUPPORT_POWER_MANAGER)
- if (display_api->get_screen_state() != SCREEN_ON) {
- CWM_OS_dbgPrintf("[cwyee] turn_on_screen");
- display_api->turn_on_screen();
- }
- display_api->set_screen_set_keepon_timeout(5000);
- #endif
- }
- break;
+ watch_hand_updown((int)sensorEVT->fData[1]);
+
+ break;
case IDX_ALGO_SLEEP:
CWM_OS_dbgPrintf("IDX_ALGO_SLEEP\n");
break;
case IDX_ALGO_ACTIVITY_OUTPUT:
if((int)sensorEVT->fData[0] == 100)
{
- CWM_OS_dbgPrintf("average step frequency[%d], average step length[%d], average pace[%d], max step frequency[%d], max pace[%d]\n",
+ CWM_OS_dbgPrintf("average step frequency[%d], average step length[%d], average pace[%d], max step frequency[%d], max pace[%d]\n",
(int)sensorEVT->fData[1],
(int)sensorEVT->fData[2],
(int)sensorEVT->fData[3],
(int)sensorEVT->fData[4],
(int)sensorEVT->fData[5]);
+
+ memset(&c_result_t,0,sizeof(cywee_result_t));
+ c_result_t.avg_step_freq = (int)sensorEVT->fData[1];
+ c_result_t.avg_step_len = (int)sensorEVT->fData[2];
+ c_result_t.avg_pace = (int)sensorEVT->fData[3];
+ c_result_t.max_step_freq = (int)sensorEVT->fData[4];
+ c_result_t.max_pace = (int)sensorEVT->fData[5];
+ cywee_func = cywee_get_send_msg_callback_func();
+ cywee_func(CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE,&c_result_t,sizeof(cywee_result_t));
+
+ }else if((int)sensorEVT->fData[0] == 5001)
+ {
+ CWM_OS_dbgPrintf("Free_Training : calories[%d], duration[%d]\n",
+ (int)sensorEVT->fData[1],
+ (int)sensorEVT->fData[5]);
+
+ memset(&c_result_t,0,sizeof(cywee_result_t));
+ c_result_t.activity_mode = (int)sensorEVT->fData[0];
+ c_result_t.calories = (int)sensorEVT->fData[1];
+ c_result_t.duration = (int)sensorEVT->fData[5];
+ cywee_func = cywee_get_send_msg_callback_func();
+ cywee_func(CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE,&c_result_t,sizeof(cywee_result_t));
+
+ }else if((int)sensorEVT->fData[0] == 102)
+ {
+ CWM_OS_dbgPrintf("ar alert type : %d\n",(int)sensorEVT->fData[1]);
+
+ memset(&c_result_t,0,sizeof(cywee_result_t));
+ c_result_t.activity_mode = (int)sensorEVT->fData[0];
+ c_result_t.ar_alert_type = (int)sensorEVT->fData[1];
+ cywee_func = cywee_get_send_msg_callback_func();
+ cywee_func(CYWEE_MSG_TYPE_AR_ALERT_UPDATE,&c_result_t,sizeof(cywee_result_t));
+
}else{
CWM_OS_dbgPrintf("activity_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d]\n",
(int)sensorEVT->fData[0],
(int)sensorEVT->fData[8],
(int)sensorEVT->fData[14]);
int stepcount = (int)sensorEVT->fData[1];
+ memset(&c_result_t,0,sizeof(cywee_result_t));
+ c_result_t.activity_mode = (int)sensorEVT->fData[0];
+ c_result_t.steps = (int)sensorEVT->fData[1];
+ c_result_t.distance = (int)sensorEVT->fData[2];
+ c_result_t.calories = (int)sensorEVT->fData[3];
+ c_result_t.step_frequency = (int)sensorEVT->fData[5];
+ c_result_t.step_length = (int)sensorEVT->fData[6];
+ c_result_t.pace = (int)sensorEVT->fData[7];
+ c_result_t.BMR_calories = (int)sensorEVT->fData[8];
+ c_result_t.is_pause = (int)sensorEVT->fData[14];
+ cywee_func = cywee_get_send_msg_callback_func();
+
+ switch ((int)sensorEVT->fData[0])
+ {
+ case SPORT_ACTIVE_MODE_NORMAL:
+ cywee_func(CYWEE_MSG_TYPE_NORMAL_UPDATE,&c_result_t,sizeof(cywee_result_t));
+ break;
+
+ case SPORT_ACTIVE_MODE_TREADMILL:
+ cywee_func(CYWEE_MSG_TYPE_TREADMILL_UPDATE,&c_result_t,sizeof(cywee_result_t));
+ break;
+
+ case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
+ cywee_func(CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE,&c_result_t,sizeof(cywee_result_t));
+ break;
+
+ case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
+ cywee_func(CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE,&c_result_t,sizeof(cywee_result_t));
+ break;
+
+ case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
+ cywee_func(CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE,&c_result_t,sizeof(cywee_result_t));
+ break;
+
+ default:
+ break;
+ }
+
CustomEventPublish(TOPIC_EVENT_STEPDATA_UPDATE,&stepcount,sizeof(int));
}
CWM_OS_dbgPrintf("==acc: x=%.3f, y=%.3f, z=%.3f\n", pSdo->acc_data[0], pSdo->acc_data[1], pSdo->acc_data[2]);
}
#endif
-static int cywee_installized = 0 ;
-int cywee_main_dml(void) {
+
+int cywee_main_dml(int cmd) {
if (cywee_installized==1)
{
}
cywee_installized = 1;
int i;
- SettingControl_t scl;
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
CWM_SettingControl(SCL_GET_LIB_INFO, &scl);
CWM_SettingControl(SCL_CHIP_VENDOR_CONFIG, &scl);
//CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
- uapi_GSENSON_create_queue();
-
CWM_LibPostInit(CWM_AP_SensorListen);
//CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
scl.iData[1] = 18; //00000000000000000000000000010010 高位在前
// CWM_SettingControl(SCL_DML_DEBUG, &scl);
+ //设置acc gyro 相关参数
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[3] = 2;
CWM_SettingControl(SCL_DML_DRV_AG_CONFIG, &scl);
//CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
-
+ //设定搜寻哪种型号的传感器,以及要搜寻的属性
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = 2;
CWM_SettingControl(SCL_DML_DRV_HW_CONFIG, &scl);
//CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
+ //搜寻是否接入传感器
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = 1;
CWM_SettingControl(SCL_DML_DRV_INIT, &scl);
CWM_OS_dbgPrintf("DML device=%d\n", scl.iData[2]);
+ //获取初始化 driver清单
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
CWM_SettingControl(SCL_DML_GET_INITED_LIST, &scl);
CWM_OS_dbgPrintf("DML device[%d]: hw_id=%d hw_attr=%d\n", i, scl.iData[6 + i * 2], scl.iData[7 + i * 2]);
}
+ //设置抬腕功能
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
// scl.iData[1] = 5;
// scl.iData[3] = 5;
// scl.iData[4] = 5;
CWM_SettingControl(SCL_HAND_UPDOWN_CONFIG, &scl);
-
+/*
+int[0] = 1
+int[1] = floor_Height (cm)(設定樓層高度)(default: 380cm = 3.8m)
+ (0: default, 150 - 1000)
+int[2] = Anti-misoperation (一般模式時的防誤計步等級) (default: 4)
+ (0: default, 1: 最容易誤計步, 2, 3, 4:預設等級, 5, 6, 7: 最不容易誤計步)
+int[3] = 戶外跑步和一般模式時距離、配速和步距的調整 (default: 4)
+ (0: default, 1: 距離最短, 2, 3, 4:預設, 5, 6, 7:距離最長)
+int[4] = enable_extra_packet (default: 不發送)
+ (0: default, 1: 發送, 2: 不發送)
+int[5] = Treadmill__steps (跑步機校正參數)(steps) (default: 不校正)
+ (0: 不校正)
+int[6] = Treadmill__average_step_frequency (跑步機校正參數) (steps/minute) (default: 不校正)
+ (0: 不校正)
+int[7] = Treadmill__uncalibration_distance (跑步機校正參數)(meters) (default: 不校正)
+ (0: 不校正)
+int[8] = Treadmill__ground_truth_distance (跑步機校正參數: 真實的跑步距離)(meters) (default: 不校正)
+ (0: 不校正)
+int[9] = floor_sensitivity (樓層計算嚴謹度)(default: 3)
+ (0: default, 1:寬容, 2, 3, 4, 5, 7: 嚴格)
+int[10] = 防高頻誤觸 (default: 開啟)
+ (0: default, 1: 開啟, 2: 關閉)
+int[11] = 高步頻走路步距修正 (default: 開啟)
+ (0: default, 1: 開啟, 2: 關閉)
+int[12] = 活動程度區間的中度活動步頻 (default: 60)
+ (0: default, 60 - 270)
+int[13] = 活動程度區間的高度活動步頻 (default: 120)
+ (0: default, 60 - 270)
+
+*/
+ //配置跑步机模式相关参数(进入跑步机模式自动生效)
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ scl.iData[2] = 4;
+ scl.iData[3] = 4;
+
+ scl.iData[5] = 0;
+ scl.iData[6] = 0;
+ scl.iData[7] = 0;
+ scl.iData[8] = 0;
+
+ scl.iData[10] = 1;
+ scl.iData[11] = 1;
+ scl.iData[12] = 60;
+ scl.iData[13] = 120;
+ CWM_SettingControl(SCL_PEDO_CONFIG, &scl);
+
+/*
+int[0] = 1
+int[1] = 卡路里計算是否包含基礎卡路里 (default: 不包含基礎卡路里)
+ (0: default, 1:包含基礎卡路里, 2:不包含基礎卡路里)
+int[2] = 一般模式1001是否使用心率來計算卡路里 (default: 不使用心率)
+ (0: default, 1: 使用心率, 2:不使用心率)
+int[3] = 靜態運動時是否持續計算卡路里 (default: 停止計算)
+ (0: default, 1: 持續計算, 2: 停止計算)
+int[4] = 運動模式(包含一般模式1001)時,脫錶後是否持續計算卡路里 (default: 持續計算)
+ (0: default, 1: 持續計算, 2: 停止計算)
+int[5] = ar_model (default: on)
+ (0: default, 1: on, 2: off)
+int[6] = ar_pedo_mode (default: 平衡)
+ (0: 平衡, 1: 計步優先, 2: 防誤觸優先)
+int[7] = 靜止時是否持續計算卡路里 (default: 持續計算)
+ (0: default, 1: 持續計算, 2: 停止計算)
+int[8] = motionSensScale活動量的靈敏度 (default: 4)
+ (0: default, 1: 最靈敏, 2, 3, 4, 5, 6, 7: 最不靈敏)
+int[9] = 軸向判斷 (default: 有軸向判斷)
+ (0: default, 1: 無軸向判斷, 2: 有軸向判斷)
+int[10] = 感測器雜訊度等級 (default: 低雜訊)
+ (0: 低雜訊, 1: 高雜訊A, 2 - 4, 5: 高雜訊E)
+*/
+ memset(&scl, 0, sizeof(scl));
+ scl.iData[0] = 1;
+ CWM_SettingControl(SCL_PEDO_CONFIG, &scl);
+
+
+ //呼叫任一個CWM_Sensor_Enable 前呼叫此指令 设置手动或自动模式
memset(&scl, 0, sizeof(scl));
scl.iData[0] = 1;
scl.iData[1] = 1;
+ // int[2] = 3,代表開啟acc和gyro感測器 1代表开启acc
scl.iData[2] = 1;
CWM_SettingControl(SCL_DML_DRV_ENABLE, &scl);
//CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
//CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);
CWM_Sensor_Enable(IDX_ALGO_WATCH_HANDUP);
- memset(&scl, 0, sizeof(scl));
- scl.iData[0] = 1;
- scl.iData[1] = SPORT_ACTIVE_MODE_NORMAL; //ACTIVITY_MODE_NORMAL 1001
- CWM_SettingControl(SCL_SET_ACTIVITY_MODE, &scl);
+ /*
+ SPORT_ACTIVE_MODE_NORMAL 1001 // 一般模式(生活模式) normal(base) 1001
+ SPORT_ACTIVE_MODE_TREADMILL 1002 // 跑步機 treadmill 1002
+ SPORT_ACTIVE_MODE_OUTDOOR_RUNNING 1003 // 戶外跑步 outdoor running 1003
+ SPORT_ACTIVE_MODE_INDOOR_RUNNING 1006 // 室內跑步 indoor running 1006
+ SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR 1008 // 防誤觸計步 fitness_pedometer 1008
+ SPORT_ACTIVE_MODE_FREE_TRAINING 5001 // 自由運動 FreeTraining 5001
+ SPORT_ACTIVE_MODE_AR_ALERT 1001 // 長時間動作偵測 AR alert 1001
+ */
+
+
+ cyw_mode_init(cmd);
+
+ // memset(&scl, 0, sizeof(scl));
+ // scl.iData[0] = 1;
+ // scl.iData[1] = SPORT_ACTIVE_MODE_NORMAL; //ACTIVITY_MODE_NORMAL 1001
+ // CWM_SettingControl(SCL_SET_ACTIVITY_MODE, &scl);
// CWM_SettingControl(SCL_SET_INACTIVITY_MODE, &scl);
//CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);